From 6f071fb93db55ccc2b55caf4cc5e22ae00bfdb22 Mon Sep 17 00:00:00 2001 From: Lucas Nogueira Date: Thu, 22 Aug 2024 23:28:41 -0300 Subject: [PATCH 1/5] test fix --- tooling/cli/Cargo.lock | 3 +-- tooling/cli/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tooling/cli/Cargo.lock b/tooling/cli/Cargo.lock index a17c239e10cb..657ffa6e6d12 100644 --- a/tooling/cli/Cargo.lock +++ b/tooling/cli/Cargo.lock @@ -558,8 +558,7 @@ dependencies = [ [[package]] name = "cargo-mobile2" version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76bd9e694230d442d680f8e578b4f252c67adbfd74cc1dd1caa9e1f1767114dc" +source = "git+https://github.com/tauri-apps/cargo-mobile2/?branch=fix/ensure-gradlew-executable#ed4befb0238a4a59edd4d52d23a90be77db037b6" dependencies = [ "colored", "core-foundation 0.10.0", diff --git a/tooling/cli/Cargo.toml b/tooling/cli/Cargo.toml index 0d3a32b00c28..e3b9e86fc737 100644 --- a/tooling/cli/Cargo.toml +++ b/tooling/cli/Cargo.toml @@ -39,7 +39,7 @@ name = "cargo-tauri" path = "src/main.rs" [dependencies] -cargo-mobile2 = { version = "0.13.5", default-features = false } +cargo-mobile2 = { git = "https://github.com/tauri-apps/cargo-mobile2/", branch = "fix/ensure-gradlew-executable", default-features = false } jsonrpsee = { version = "0.24", features = [ "server" ] } jsonrpsee-core = "0.24" jsonrpsee-client-transport = { version = "0.24", features = [ "ws" ] } From eecd0d0dc2ec2042bafc22170d33d6c2d2a6d52b Mon Sep 17 00:00:00 2001 From: Lucas Nogueira Date: Fri, 23 Aug 2024 08:26:29 -0300 Subject: [PATCH 2/5] ensure gradle is executable and does not use CRLF --- tooling/cli/Cargo.lock | 3 ++- tooling/cli/Cargo.toml | 2 +- tooling/cli/src/mobile/mod.rs | 30 +++++++++++++++++++++++++++++- 3 files changed, 32 insertions(+), 3 deletions(-) diff --git a/tooling/cli/Cargo.lock b/tooling/cli/Cargo.lock index 657ffa6e6d12..a17c239e10cb 100644 --- a/tooling/cli/Cargo.lock +++ b/tooling/cli/Cargo.lock @@ -558,7 +558,8 @@ dependencies = [ [[package]] name = "cargo-mobile2" version = "0.13.5" -source = "git+https://github.com/tauri-apps/cargo-mobile2/?branch=fix/ensure-gradlew-executable#ed4befb0238a4a59edd4d52d23a90be77db037b6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76bd9e694230d442d680f8e578b4f252c67adbfd74cc1dd1caa9e1f1767114dc" dependencies = [ "colored", "core-foundation 0.10.0", diff --git a/tooling/cli/Cargo.toml b/tooling/cli/Cargo.toml index e3b9e86fc737..0d3a32b00c28 100644 --- a/tooling/cli/Cargo.toml +++ b/tooling/cli/Cargo.toml @@ -39,7 +39,7 @@ name = "cargo-tauri" path = "src/main.rs" [dependencies] -cargo-mobile2 = { git = "https://github.com/tauri-apps/cargo-mobile2/", branch = "fix/ensure-gradlew-executable", default-features = false } +cargo-mobile2 = { version = "0.13.5", default-features = false } jsonrpsee = { version = "0.24", features = [ "server" ] } jsonrpsee-core = "0.24" jsonrpsee-client-transport = { version = "0.24", features = [ "ws" ] } diff --git a/tooling/cli/src/mobile/mod.rs b/tooling/cli/src/mobile/mod.rs index f0b1f7bfc3cc..070fab65d1f5 100644 --- a/tooling/cli/src/mobile/mod.rs +++ b/tooling/cli/src/mobile/mod.rs @@ -325,7 +325,10 @@ fn ensure_init( let java_folder = project_dir .join("app/src/main/java") .join(tauri_config_.identifier.replace('.', "/").replace('-', "_")); - if !java_folder.exists() { + if java_folder.exists() { + #[cfg(unix)] + ensure_gradlew(&project_dir)?; + } else { project_outdated_reasons .push("you have modified your \"identifier\" in the Tauri configuration"); } @@ -362,6 +365,31 @@ fn ensure_init( Ok(()) } +#[cfg(unix)] +fn ensure_gradlew(project_dir: &std::path::Path) -> Result<()> { + use std::os::unix::fs::PermissionsExt; + + let gradlew_path = project_dir.join("gradlew"); + if let Ok(metadata) = gradlew_path.metadata() { + let mut permissions = metadata.permissions(); + let is_executable = permissions.mode() & 0o111 != 0; + if !is_executable { + permissions.set_mode(0o755); + std::fs::set_permissions(&gradlew_path, permissions) + .context("failed to change gradlew permissions")?; + } + std::fs::write( + &gradlew_path, + std::fs::read_to_string(&gradlew_path) + .context("failed to read gradlew")? + .replace("\r\n", "\n"), + ) + .context("failed to replace gradlew CRLF with LF")?; + } + + Ok(()) +} + fn log_finished(outputs: Vec, kind: &str) { if !outputs.is_empty() { let mut printable_paths = String::new(); From afa70b6fe5bc26fa010420c2bba2636139c3c635 Mon Sep 17 00:00:00 2001 From: Lucas Nogueira Date: Fri, 23 Aug 2024 08:33:57 -0300 Subject: [PATCH 3/5] fix import --- tooling/cli/src/mobile/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tooling/cli/src/mobile/mod.rs b/tooling/cli/src/mobile/mod.rs index 070fab65d1f5..2886a806e553 100644 --- a/tooling/cli/src/mobile/mod.rs +++ b/tooling/cli/src/mobile/mod.rs @@ -10,7 +10,7 @@ use crate::{ interface::{AppInterface, AppSettings, DevProcess, Interface, Options as InterfaceOptions}, ConfigValue, }; -#[cfg(target_os = "macos")] +#[cfg(unix)] use anyhow::Context; use anyhow::{bail, Result}; use heck::ToSnekCase; From 2060a1400cd52b4105f9fff765522c87e45286f2 Mon Sep 17 00:00:00 2001 From: Lucas Nogueira Date: Fri, 23 Aug 2024 10:02:15 -0300 Subject: [PATCH 4/5] add change file --- .changes/ensure-gradlew-unix.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .changes/ensure-gradlew-unix.md diff --git a/.changes/ensure-gradlew-unix.md b/.changes/ensure-gradlew-unix.md new file mode 100644 index 000000000000..d704dd66ca7f --- /dev/null +++ b/.changes/ensure-gradlew-unix.md @@ -0,0 +1,6 @@ +--- +"tauri-cli": patch:bug +"@tauri-apps/cli": patch:bug +--- + +Ensure gradlew is executable and does not use CRLF so it can be used on UNIX systems. From 4429a9300a7ed75f340877641c0ff64d0c1752b1 Mon Sep 17 00:00:00 2001 From: Lucas Nogueira Date: Fri, 23 Aug 2024 10:05:22 -0300 Subject: [PATCH 5/5] add 0o111 instead --- tooling/cli/src/mobile/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tooling/cli/src/mobile/mod.rs b/tooling/cli/src/mobile/mod.rs index 2886a806e553..343180e60365 100644 --- a/tooling/cli/src/mobile/mod.rs +++ b/tooling/cli/src/mobile/mod.rs @@ -374,9 +374,9 @@ fn ensure_gradlew(project_dir: &std::path::Path) -> Result<()> { let mut permissions = metadata.permissions(); let is_executable = permissions.mode() & 0o111 != 0; if !is_executable { - permissions.set_mode(0o755); + permissions.set_mode(permissions.mode() | 0o111); std::fs::set_permissions(&gradlew_path, permissions) - .context("failed to change gradlew permissions")?; + .context("failed to mark gradlew as executable")?; } std::fs::write( &gradlew_path,