Compile linux binaries with musl

This commit is contained in:
Caelan Sayler
2025-05-19 00:00:31 +01:00
committed by Caelan
parent f9902bb51a
commit a7fabcd237

View File

@@ -34,7 +34,7 @@ jobs:
- name: Update Version
shell: pwsh
run: ./.github/set-nbgv-version.ps1
- name: Build Rust Binaries
- name: Build Rust Binaries (x86)
run: cargo +nightly build --target i686-win7-windows-msvc -Z build-std="core,alloc,std,panic_abort" --features windows --release -p velopack_bins
- name: Upload Rust Build Artifacts
uses: actions/upload-artifact@v4
@@ -84,42 +84,60 @@ jobs:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: Swatinem/rust-cache@v2
with:
key: "rust-build-linux"
- name: Install Dependencies
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
rustup target add aarch64-unknown-linux-gnu
sudo apt update
sudo apt install -y g++-aarch64-linux-gnu gcc-aarch64-linux-gnu
mkdir ./artifacts
# rustup target add x86_64-unknown-linux-musl
# rustup target add aarch64-unknown-linux-musl
# sudo apt install -y g++-aarch64-linux-gnu gcc-aarch64-linux-gnu musl-tools musl:arm64
- name: Update Version
shell: pwsh
run: ./.github/set-nbgv-version.ps1
- name: Build Rust (x64)
- name: Build Rust Binaries (x64)
run: |
cargo build --release --target x86_64-unknown-linux-gnu
ldd ./target/x86_64-unknown-linux-gnu/release/update || true
cp ./target/x86_64-unknown-linux-gnu/release/update ./target/UpdateNix_x64
cp ./target/x86_64-unknown-linux-gnu/release/libvelopack_nodeffi.so ./target/velopack_nodeffi_linux_x64_gnu.node
cp ./target/x86_64-unknown-linux-gnu/release/libvelopack_libc.so ./target/velopack_libc_linux_x64_gnu.so
cp ./target/x86_64-unknown-linux-gnu/release/libvelopack_libc.a ./target/velopack_libc_linux_x64_gnu.a
- name: Build Rust (arm64)
cargo clean
cross build --release --target x86_64-unknown-linux-musl -p velopack_bins
ldd ./target/x86_64-unknown-linux-musl/release/update || true
cp ./target/x86_64-unknown-linux-musl/release/update ./artifacts/UpdateNix_x64
- name: Build Rust Binaries (arm64)
run: |
cargo build --release --target aarch64-unknown-linux-gnu
ldd ./target/aarch64-unknown-linux-gnu/release/update || true
cp ./target/aarch64-unknown-linux-gnu/release/update ./target/UpdateNix_arm64
cp ./target/aarch64-unknown-linux-gnu/release/libvelopack_nodeffi.so ./target/velopack_nodeffi_linux_arm64_gnu.node
cp ./target/aarch64-unknown-linux-gnu/release/libvelopack_libc.so ./target/velopack_libc_linux_arm64_gnu.so
cp ./target/aarch64-unknown-linux-gnu/release/libvelopack_libc.a ./target/velopack_libc_linux_arm64_gnu.a
cargo clean
cross build --release --target aarch64-unknown-linux-musl -p velopack_bins
ldd ./target/aarch64-unknown-linux-musl/release/update || true
cp ./target/aarch64-unknown-linux-musl/release/update ./artifacts/UpdateNix_arm64
- name: Upload Rust Build Artifacts
uses: actions/upload-artifact@v4
with:
name: rust-ubuntu-latest
path: |
target/UpdateNix*
target/*.so
target/*.node
target/*.a
artifacts/UpdateNix*
- name: Build Rust (x64)
run: |
cargo clean
cargo build --release --target x86_64-unknown-linux-gnu -p velopack_nodeffi -p velopack_libc
cp ./target/x86_64-unknown-linux-gnu/release/libvelopack_nodeffi.so ./artifacts/velopack_nodeffi_linux_x64_gnu.node
cp ./target/x86_64-unknown-linux-gnu/release/libvelopack_libc.so ./artifacts/velopack_libc_linux_x64_gnu.so
cp ./target/x86_64-unknown-linux-gnu/release/libvelopack_libc.a ./artifacts/velopack_libc_linux_x64_gnu.a
- name: Build Rust (arm64)
run: |
cargo clean
cargo build --release --target aarch64-unknown-linux-gnu -p velopack_nodeffi -p velopack_libc
cp ./target/aarch64-unknown-linux-gnu/release/libvelopack_nodeffi.so ./artifacts/velopack_nodeffi_linux_arm64_gnu.node
cp ./target/aarch64-unknown-linux-gnu/release/libvelopack_libc.so ./artifacts/velopack_libc_linux_arm64_gnu.so
cp ./target/aarch64-unknown-linux-gnu/release/libvelopack_libc.a ./artifacts/velopack_libc_linux_arm64_gnu.a
- name: Upload Rust Build Artifacts
uses: actions/upload-artifact@v4
with:
name: rust-ubuntu-latest-libs
path: |
artifacts/*.so
artifacts/*.node
artifacts/*.a
- name: Cancel workflow if failed
uses: andymckay/cancel-action@0.5
if: ${{ failure() }}