fix: match os argument rules on apple silicon for old versions
This commit is contained in:
parent
a2a3e5b7b1
commit
7c304a2d3a
2 changed files with 29 additions and 11 deletions
|
|
@ -321,7 +321,6 @@ async fn start(
|
||||||
)?;
|
)?;
|
||||||
|
|
||||||
let mut jvm_args = arguments::java_arguments(
|
let mut jvm_args = arguments::java_arguments(
|
||||||
updated,
|
|
||||||
arg_map.get(&ArgumentType::Jvm).map(Vec::as_slice),
|
arg_map.get(&ArgumentType::Jvm).map(Vec::as_slice),
|
||||||
&natives,
|
&natives,
|
||||||
&libraries,
|
&libraries,
|
||||||
|
|
@ -347,7 +346,6 @@ async fn start(
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut mc_args = arguments::minecraft_arguments(
|
let mut mc_args = arguments::minecraft_arguments(
|
||||||
updated,
|
|
||||||
arg_map.get(&ArgumentType::Game).map(Vec::as_slice),
|
arg_map.get(&ArgumentType::Game).map(Vec::as_slice),
|
||||||
version_info.minecraft_arguments.as_deref(),
|
version_info.minecraft_arguments.as_deref(),
|
||||||
&account.access_token,
|
&account.access_token,
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ use oneclient_common::paths;
|
||||||
|
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
pub fn java_arguments(
|
pub fn java_arguments(
|
||||||
version_updated: bool,
|
|
||||||
arguments: Option<&[Argument]>,
|
arguments: Option<&[Argument]>,
|
||||||
natives_path: &Path,
|
natives_path: &Path,
|
||||||
libraries_path: &Path,
|
libraries_path: &Path,
|
||||||
|
|
@ -28,7 +27,6 @@ pub fn java_arguments(
|
||||||
let mut parsed = Vec::new();
|
let mut parsed = Vec::new();
|
||||||
if let Some(args) = arguments {
|
if let Some(args) = arguments {
|
||||||
parse_arguments(
|
parse_arguments(
|
||||||
version_updated,
|
|
||||||
args,
|
args,
|
||||||
&mut parsed,
|
&mut parsed,
|
||||||
|a| {
|
|a| {
|
||||||
|
|
@ -172,7 +170,6 @@ fn split_custom_args(raw: &str) -> Vec<String> {
|
||||||
|
|
||||||
#[allow(clippy::too_many_arguments)]
|
#[allow(clippy::too_many_arguments)]
|
||||||
pub fn minecraft_arguments(
|
pub fn minecraft_arguments(
|
||||||
version_updated: bool,
|
|
||||||
args: Option<&[Argument]>,
|
args: Option<&[Argument]>,
|
||||||
legacy_args: Option<&str>,
|
legacy_args: Option<&str>,
|
||||||
access_token: &str,
|
access_token: &str,
|
||||||
|
|
@ -209,7 +206,6 @@ pub fn minecraft_arguments(
|
||||||
|
|
||||||
if let Some(args) = args {
|
if let Some(args) = args {
|
||||||
parse_arguments(
|
parse_arguments(
|
||||||
version_updated,
|
|
||||||
args,
|
args,
|
||||||
&mut parsed,
|
&mut parsed,
|
||||||
|arg| {
|
|arg| {
|
||||||
|
|
@ -562,7 +558,6 @@ pub fn get_library(libraries_path: &Path, library: &str, allow_missing: bool) ->
|
||||||
}
|
}
|
||||||
|
|
||||||
fn parse_arguments<ParseFn>(
|
fn parse_arguments<ParseFn>(
|
||||||
version_updated: bool,
|
|
||||||
args: &[Argument],
|
args: &[Argument],
|
||||||
parsed: &mut Vec<String>,
|
parsed: &mut Vec<String>,
|
||||||
parse_function: ParseFn,
|
parse_function: ParseFn,
|
||||||
|
|
@ -580,7 +575,7 @@ where
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Argument::Ruled { rules, value } => {
|
Argument::Ruled { rules, value } => {
|
||||||
if validate_rules(rules, java_arch, version_updated) {
|
if validate_rules(rules, java_arch, true) {
|
||||||
match value {
|
match value {
|
||||||
ArgumentValue::Single(arg) => {
|
ArgumentValue::Single(arg) => {
|
||||||
parsed.push(parse_function(&arg.replace(' ', DUMMY_REPLACE_NEWLINE))?);
|
parsed.push(parse_function(&arg.replace(' ', DUMMY_REPLACE_NEWLINE))?);
|
||||||
|
|
@ -1032,7 +1027,6 @@ mod tests {
|
||||||
let natives = std::env::temp_dir();
|
let natives = std::env::temp_dir();
|
||||||
|
|
||||||
let args = java_arguments(
|
let args = java_arguments(
|
||||||
false,
|
|
||||||
Some(&loader_jvm),
|
Some(&loader_jvm),
|
||||||
&natives,
|
&natives,
|
||||||
&natives,
|
&natives,
|
||||||
|
|
@ -1051,6 +1045,34 @@ mod tests {
|
||||||
assert!(args.iter().any(|a| a.starts_with("-Djava.library.path=")));
|
assert!(args.iter().any(|a| a.starts_with("-Djava.library.path=")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn an_osx_ruled_loader_flag_reaches_the_jvm_only_on_macos() {
|
||||||
|
let loader_jvm: Vec<interfrost::api::minecraft::Argument> = serde_json::from_str(
|
||||||
|
r#"["-Dfabric.fixPackageAccess=true", "-Dfabric.gameVersion=1.8.9",
|
||||||
|
{"rules": [{"action": "allow", "os": {"name": "osx"}}], "value": "-XstartOnFirstThread"}]"#,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
let natives = std::env::temp_dir();
|
||||||
|
|
||||||
|
let args = java_arguments(
|
||||||
|
Some(&loader_jvm),
|
||||||
|
&natives,
|
||||||
|
&natives,
|
||||||
|
"/libs/fabric-loader.jar",
|
||||||
|
"1.8.9",
|
||||||
|
2048,
|
||||||
|
String::new(),
|
||||||
|
"aarch64",
|
||||||
|
25,
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
args.contains(&"-XstartOnFirstThread".to_string()),
|
||||||
|
cfg!(target_os = "macos")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn a_loader_game_argument_does_not_replace_the_legacy_string() {
|
fn a_loader_game_argument_does_not_replace_the_legacy_string() {
|
||||||
let loader_game: Vec<interfrost::api::minecraft::Argument> =
|
let loader_game: Vec<interfrost::api::minecraft::Argument> =
|
||||||
|
|
@ -1058,7 +1080,6 @@ mod tests {
|
||||||
let dir = std::env::temp_dir();
|
let dir = std::env::temp_dir();
|
||||||
|
|
||||||
let args = minecraft_arguments(
|
let args = minecraft_arguments(
|
||||||
false,
|
|
||||||
Some(&loader_game),
|
Some(&loader_game),
|
||||||
Some("--username ${auth_player_name} --gameDir ${game_directory}"),
|
Some("--username ${auth_player_name} --gameDir ${game_directory}"),
|
||||||
"token",
|
"token",
|
||||||
|
|
@ -1089,7 +1110,6 @@ mod tests {
|
||||||
let dir = std::env::temp_dir();
|
let dir = std::env::temp_dir();
|
||||||
|
|
||||||
let args = minecraft_arguments(
|
let args = minecraft_arguments(
|
||||||
false,
|
|
||||||
Some(&loader_game),
|
Some(&loader_game),
|
||||||
Some(
|
Some(
|
||||||
"--username ${auth_player_name} --gameDir ${game_directory} --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker",
|
"--username ${auth_player_name} --gameDir ${game_directory} --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker",
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue