From 70965175561f2cb988411777e58324eb9b65c51d Mon Sep 17 00:00:00 2001 From: Caelan Date: Tue, 1 Oct 2024 10:18:21 -0600 Subject: [PATCH] ci: wip --- .cargo/config.toml | 4 ++-- .github/workflows/build.yml | 26 ++++++++++++++++++------- Cross.toml | 8 +++++++- src/bins/build.rs | 38 +++++++++++-------------------------- 4 files changed, 39 insertions(+), 37 deletions(-) diff --git a/.cargo/config.toml b/.cargo/config.toml index 871a66f1..0793006a 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -7,5 +7,5 @@ tw86 = "test --target i686-pc-windows-msvc --features windows" bw = "build --features windows" bw86 = "build --target i686-pc-windows-msvc --features windows" -[build] -rustflags = ["-C", "target-feature=+crt-static"] \ No newline at end of file +#[build] +#rustflags = ["-C", "target-feature=+crt-static"] \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 539adbaf..35983ae1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,11 +52,17 @@ jobs: - uses: Swatinem/rust-cache@v2 with: key: "rust-build-windows" + - name: Prepare Cargo + run: | + cargo install cargo-edit -f + cargo set-version $NBGV_NuGetPackageVersion - name: Install Windows7 Rust Toolchain run: | rustup toolchain install 1.75.0-x86_64-pc-windows-msvc rustup target add i686-pc-windows-msvc --toolchain 1.75.0-x86_64-pc-windows-msvc - name: Build Rust + env: + RUSTFLAGS: -C target-feature=+crt-static run: cargo +1.75.0-x86_64-pc-windows-msvc build --target i686-pc-windows-msvc --features windows --release - name: Upload Rust Build Artifacts uses: actions/upload-artifact@v4 @@ -82,16 +88,18 @@ jobs: - uses: Swatinem/rust-cache@v2 with: key: "rust-build-linux" - - name: Build Rust (x64) - run: | - cargo build --release --target x86_64-unknown-linux-gnu - cp ./target/x86_64-unknown-linux-gnu/release/update ./target/release/UpdateNix_x64 - - name: Build Rust (arm64) - env: - CROSS_NuGetPackageVersion: ${{ steps.nbgv.outputs.NuGetPackageVersion }} + - name: Prepare Cargo run: | curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash cargo binstall cross --no-confirm --force + cargo binstall cargo-edit --no-confirm --force + cargo set-version $NBGV_NuGetPackageVersion + - name: Build Rust (x64) + run: | + cross build --release --target x86_64-unknown-linux-gnu + cp ./target/x86_64-unknown-linux-gnu/release/update ./target/release/UpdateNix_x64 + - name: Build Rust (arm64) + run: | cross build --release --target aarch64-unknown-linux-gnu cp ./target/aarch64-unknown-linux-gnu/release/update ./target/release/UpdateNix_arm64 - name: Upload Rust Build Artifacts @@ -118,6 +126,10 @@ jobs: - uses: Swatinem/rust-cache@v2 with: key: "rust-build-${{ matrix.os }}" + - name: Prepare Cargo + run: | + cargo install cargo-edit -f + cargo set-version $NBGV_NuGetPackageVersion - name: Build Rust run: | cargo build --release diff --git a/Cross.toml b/Cross.toml index 0c1033a0..86771c35 100644 --- a/Cross.toml +++ b/Cross.toml @@ -1,5 +1,11 @@ -[target.aarch64-unknown-linux-gnu] +[target.x86_64-unknown-linux-gnu] pre-build = [ "dpkg --add-architecture $CROSS_DEB_ARCH", "apt-get update && apt-get install -y libssl-dev:$CROSS_DEB_ARCH", ] + +[target.aarch64-unknown-linux-gnu] +pre-build = [ + "dpkg --add-architecture $CROSS_DEB_ARCH", + "apt-get update && apt-get install -y libssl-dev:$CROSS_DEB_ARCH", +] \ No newline at end of file diff --git a/src/bins/build.rs b/src/bins/build.rs index 81aa3e39..8c055252 100644 --- a/src/bins/build.rs +++ b/src/bins/build.rs @@ -6,7 +6,7 @@ fn main() { #[cfg(target_os = "windows")] delay_load(); - let version = get_package_version(); + let version = env!("CARGO_PKG_VERSION"); let ver = semver::Version::parse(&version).expect("Unable to parse ngbv output as semver version"); let ver: u64 = ver.major << 48 | ver.minor << 32 | ver.patch << 16; let desc = format!("Velopack {}", version); @@ -27,34 +27,18 @@ fn main() { .unwrap(); } -fn get_package_version() -> String { - if let Ok(version) = env::var("NuGetPackageVersion") { - // NuGetPackageVersion is set, return it trimmed - return version.trim().to_string(); - } else if let Ok(version) = env::var("NBGV_NuGetPackageVersion") { - // NBGV_NuGetPackageVersion is set, return it trimmed - return version.trim().to_string(); - } else if let Ok(version) = env::var("CROSS_NuGetPackageVersion") { - // NBGV_NuGetPackageVersion is set, return it trimmed - return version.trim().to_string(); - } else if env::var("CI").is_ok() { - // CI is set, NuGetPackageVersion should be set always in CI - panic!("Error: NuGetPackageVersion must be set in CI"); - } else { - // CI is not set, return "v0.0.0-local" - return "0.0.0-local".to_string(); - } -} - #[cfg(target_os = "windows")] fn delay_load() { - delay_load_exe("update"); - delay_load_exe("setup"); - delay_load_exe("stub"); - println!("cargo:rustc-link-arg=/DEPENDENTLOADFLAG:0x800"); - println!("cargo:rustc-link-arg=/WX"); - println!("cargo:rustc-link-arg=/IGNORE:4099"); // PDB was not found - println!("cargo:rustc-link-arg=/IGNORE:4199"); // delayload ignored, no imports found + let features = env::var("CARGO_CFG_TARGET_FEATURE").unwrap_or_default(); + if features.contains("crt-static") { + delay_load_exe("update"); + delay_load_exe("setup"); + delay_load_exe("stub"); + println!("cargo:rustc-link-arg=/DEPENDENTLOADFLAG:0x800"); + println!("cargo:rustc-link-arg=/WX"); + println!("cargo:rustc-link-arg=/IGNORE:4099"); // PDB was not found + println!("cargo:rustc-link-arg=/IGNORE:4199"); // delayload ignored, no imports found + } } // https://github.com/rust-lang/rustup/blob/master/build.rs#L45