From 7d755dc2c1b7fdf52b4f04414a605db475f2ab8c Mon Sep 17 00:00:00 2001 From: messense Date: Fri, 22 Jul 2022 11:04:25 +0800 Subject: [PATCH 1/3] Add `cargo-zigbuild metadata` subcommand --- Cargo.lock | 32 ++++++++++++++++---------------- Cargo.toml | 2 +- src/bin/cargo-zigbuild.rs | 14 ++++++++++++++ src/zig.rs | 6 +++--- 4 files changed, 34 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d97b25f..1211c05 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -42,9 +42,9 @@ dependencies = [ [[package]] name = "cargo-options" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05cc50d93e6b63fe87ee694f62a2f85151bed46af13c67fde8544a2bd0034b67" +checksum = "98cdaeae47871a543692dac2ad7cef3efdf1f9559a41e68a42507367e38c424f" dependencies = [ "clap", ] @@ -97,9 +97,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "3.2.8" +version = "3.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190814073e85d238f31ff738fcb0bf6910cedeb73376c87cd69291028966fd83" +checksum = "54635806b078b7925d6e36810b1755f2a4b5b4d57560432c1ecf60bcbe10602b" dependencies = [ "atty", "bitflags", @@ -174,9 +174,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "heck" @@ -223,15 +223,15 @@ checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" [[package]] name = "os_str_bytes" -version = "6.1.0" +version = "6.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21326818e99cfe6ce1e524c2a805c189a99b5ae555a35d19f9a284b427d86afa" +checksum = "648001efe5d5c0102d8cea768e348da85d90af8ba91f0bea908f157951493cd4" [[package]] name = "path-slash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498a099351efa4becc6a19c72aa9270598e8fd274ca47052e37455241c88b696" +checksum = "c54014ba3c1880122928735226f78b6f5bf5bd1fed15e41e92cf7aa20278ce28" [[package]] name = "proc-macro-error" @@ -321,18 +321,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1578c6245786b9d168c5447eeacfb96856573ca56c9d68fdcf394be134882a47" +checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.138" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "023e9b1467aef8a10fb88f25611870ada9800ef7e22afce356bb0d2387b6f27c" +checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da" dependencies = [ "proc-macro2", "quote", @@ -423,9 +423,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" +checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" [[package]] name = "version_check" diff --git a/Cargo.toml b/Cargo.toml index 5e236dd..8f488f9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ cargo_metadata = "0.15.0" clap = { version = "3.1.2", features = ["derive", "env", "wrap_help"] } dirs = "4.0.0" fs-err = "2.6.0" -path-slash = "0.1.4" +path-slash = "0.2.0" rustc_version = "0.4.0" semver = "1.0.5" serde = { version = "1.0.136", features = ["derive"] } diff --git a/src/bin/cargo-zigbuild.rs b/src/bin/cargo-zigbuild.rs index 3b22f49..32fb5fe 100644 --- a/src/bin/cargo-zigbuild.rs +++ b/src/bin/cargo-zigbuild.rs @@ -1,3 +1,5 @@ +use anyhow::Context; +use cargo_options::Metadata; use cargo_zigbuild::{Build, Run, Rustc, Test, Zig}; use clap::Parser; @@ -11,6 +13,8 @@ use clap::Parser; pub enum Opt { #[clap(name = "zigbuild", aliases = &["build", "b"] )] Build(Build), + #[clap(name = "metadata")] + Metadata(Metadata), #[clap(name = "rustc")] Rustc(Rustc), #[clap(name = "run", alias = "r")] @@ -25,6 +29,16 @@ fn main() -> anyhow::Result<()> { let opt = Opt::parse(); match opt { Opt::Build(build) => build.execute()?, + Opt::Metadata(metadata) => { + let mut cmd = metadata.command(); + let mut child = cmd.spawn().context("Failed to run cargo metadata")?; + let status = child + .wait() + .expect("Failed to wait on cargo metadata process"); + if !status.success() { + std::process::exit(status.code().unwrap_or(1)); + } + } Opt::Rustc(rustc) => rustc.execute()?, Opt::Run(run) => run.execute()?, Opt::Test(test) => test.execute()?, diff --git a/src/zig.rs b/src/zig.rs index da03824..395f43e 100644 --- a/src/zig.rs +++ b/src/zig.rs @@ -309,11 +309,11 @@ impl Zig { let (zig_cc, zig_cxx) = prepare_zig_linker(raw_target)?; if is_mingw_shell() { let zig_cc = zig_cc.to_slash_lossy(); - cmd.env(format!("CC_{}", env_target), &zig_cc); - cmd.env(format!("CXX_{}", env_target), &zig_cxx.to_slash_lossy()); + cmd.env(format!("CC_{}", env_target), &*zig_cc); + cmd.env(format!("CXX_{}", env_target), &*zig_cxx.to_slash_lossy()); cmd.env( format!("CARGO_TARGET_{}_LINKER", env_target.to_uppercase()), - &zig_cc, + &*zig_cc, ); } else { cmd.env(format!("CC_{}", env_target), &zig_cc); From 646d79c39fd670d53a16cdcbb2206b743683a10c Mon Sep 17 00:00:00 2001 From: messense Date: Fri, 22 Jul 2022 11:07:29 +0800 Subject: [PATCH 2/3] Bump MSRV to 1.57.0 --- .github/workflows/CI.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index b857e51..a7629e0 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -36,11 +36,11 @@ jobs: fail-fast: ${{ !contains(github.event.pull_request.labels.*.name, 'CI-no-fail-fast') }} matrix: os: [ubuntu-latest, macos-latest, windows-latest] - toolchain: [1.56.1, stable, nightly] + toolchain: [1.57.0, stable, nightly] zig: [0.9.1, master] exclude: # Only test MSRV with zig stable version - - toolchain: 1.56.1 + - toolchain: 1.57.0 zig: master steps: - uses: actions/checkout@v3 From cc0aa1c0352f43c1ae9124ece5a464187e1da9a8 Mon Sep 17 00:00:00 2001 From: messense Date: Fri, 22 Jul 2022 11:20:48 +0800 Subject: [PATCH 3/3] Fix compiling on Windows --- src/zig.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/zig.rs b/src/zig.rs index 395f43e..7273469 100644 --- a/src/zig.rs +++ b/src/zig.rs @@ -565,7 +565,7 @@ fn write_linker_wrapper(path: &Path, command: &str, args: &str) -> Result<()> { env::current_exe()? }; let current_exe = if is_mingw_shell() { - current_exe.to_slash_lossy() + current_exe.to_slash_lossy().to_string() } else { current_exe.display().to_string() };