Fix windows build issues

This commit is contained in:
Bjorn Beishline 2026-02-02 07:57:22 -07:00
parent 81e5eaa6ad
commit 6ef6a73e9f
2 changed files with 28 additions and 18 deletions

View File

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
networkTimeout=10000 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

View File

@ -1,9 +1,4 @@
use std::{ use std::{collections::HashSet, error::Error, fs, path::PathBuf};
collections::HashSet,
error::Error,
fs,
path::{Path, PathBuf},
};
use j4rs::{JvmBuilder, LocalJarArtifact, MavenArtifact, MavenArtifactRepo, MavenSettings}; use j4rs::{JvmBuilder, LocalJarArtifact, MavenArtifact, MavenArtifactRepo, MavenSettings};
@ -86,12 +81,17 @@ fn main() -> Result<(), Box<dyn Error>> {
("io.papermc.paper", "paper-api", "1.21.11-R0.1-SNAPSHOT"), ("io.papermc.paper", "paper-api", "1.21.11-R0.1-SNAPSHOT"),
]; ];
let base = PathBuf::from(std::env::var("CARGO_MANIFEST_DIR").unwrap());
let resources = base.join("resources");
let jassets = resources.join("jassets");
let deps = resources.join("deps");
let jvm = JvmBuilder::new() let jvm = JvmBuilder::new()
.with_maven_settings(MavenSettings::new(vec![MavenArtifactRepo::from( .with_maven_settings(MavenSettings::new(vec![MavenArtifactRepo::from(
"papermc::https://repo.papermc.io/repository/maven-public/", "papermc::https://repo.papermc.io/repository/maven-public/",
)])) )]))
.skip_setting_native_lib() .skip_setting_native_lib()
.with_base_path(Path::new("./resources").canonicalize().unwrap()) .with_base_path(resources)
.build() .build()
.map_err(|err| format!("jvm failed to init: {:?}", err)) .map_err(|err| format!("jvm failed to init: {:?}", err))
.unwrap(); .unwrap();
@ -101,7 +101,7 @@ fn main() -> Result<(), Box<dyn Error>> {
.map(|d| format!("{}-{}.jar", d.1, d.2)) .map(|d| format!("{}-{}.jar", d.1, d.2))
.collect(); .collect();
for entry in fs::read_dir("./resources/jassets").unwrap() { for entry in fs::read_dir(&jassets).unwrap() {
let entry = entry.unwrap(); let entry = entry.unwrap();
let file_name = entry.file_name().to_string_lossy().into_owned(); let file_name = entry.file_name().to_string_lossy().into_owned();
@ -115,12 +115,13 @@ fn main() -> Result<(), Box<dyn Error>> {
} }
} }
if Path::new("./resources/deps").exists() { if deps.exists() {
fs::remove_dir_all("./resources/deps").unwrap(); fs::remove_dir_all(&deps).unwrap();
} }
for dep in dependencies { for dep in dependencies {
if !Path::new(&format!("./resources/jassets/{}-{}.jar", dep.1, dep.2)).exists() { let jar_path = jassets.join(format!("{}-{}.jar", dep.1, dep.2));
if !jar_path.exists() {
jvm.deploy_artifact(&MavenArtifact::from(format!( jvm.deploy_artifact(&MavenArtifact::from(format!(
"{}:{}:{}", "{}:{}:{}",
dep.0, dep.1, dep.2 dep.0, dep.1, dep.2
@ -129,21 +130,30 @@ fn main() -> Result<(), Box<dyn Error>> {
} }
} }
if !Path::new("../java/patchbukkit/build/libs/patchbukkit.jar").exists() { let mut java_path = base.clone();
java_path.pop();
let java_path = java_path.join("java");
let patchbukkit_jar = java_path
.join("patchbukkit")
.join("build")
.join("libs")
.join("patchbukkit.jar");
println!("patchbukkit_jar: {:?}", patchbukkit_jar);
if !&patchbukkit_jar.exists() {
panic!( panic!(
"Failed to find patchbukkit.jar, build the java library first by running `gradle build` in the java directory!" "Failed to find patchbukkit.jar, build the java library first by running `gradle build` in the java directory!"
); );
} }
jvm.deploy_artifact(&LocalJarArtifact::new( jvm.deploy_artifact(&LocalJarArtifact::new(&patchbukkit_jar.to_string_lossy()))
"../java/patchbukkit/build/libs/patchbukkit.jar", .unwrap();
))
.unwrap();
let cdylib = std::env::var("CARGO_CDYLIB_FILE_J4RS").unwrap(); let cdylib = std::env::var("CARGO_CDYLIB_FILE_J4RS").unwrap();
let cdylib = PathBuf::from(cdylib); let cdylib = PathBuf::from(cdylib);
let mut cdylib_to = PathBuf::from("./resources/deps"); let mut cdylib_to = deps.clone();
fs::create_dir_all(&cdylib_to).unwrap(); fs::create_dir_all(&cdylib_to).unwrap();
let original_name = cdylib.file_name().unwrap().to_string_lossy(); let original_name = cdylib.file_name().unwrap().to_string_lossy();