diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 484e9ef0a4..5da6658d60 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -307,6 +307,41 @@ jobs: path: ./target/x86_64-unknown-linux-musl/${{ env.CARGO_BUILD_PROFILE }}/pixi retention-days: 14 + build-binary-linux-riscv64gc: + needs: determine_changes + if: ${{ needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' }} + runs-on: ubuntu-latest + name: "build binary | linux riscv64gc" + steps: + - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6 + with: + persist-credentials: false + - uses: rui314/setup-mold@725a8794d15fc7563f59595bd9556495c0564878 # v1 + - name: "Setup cross-compilation toolchain" + run: | + sudo apt update + sudo apt install -y gcc-riscv64-linux-gnu + rustup target add riscv64gc-unknown-linux-gnu + - uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2 + with: + save-if: ${{ github.ref == 'refs/heads/main' }} + - name: "Build" + env: + CARGO_TARGET_RISCV64GC_UNKNOWN_LINUX_GNU_LINKER: riscv64-linux-gnu-gcc + CC_riscv64gc_unknown_linux_gnu: riscv64-linux-gnu-gcc + run: > + cargo build + --locked + --target riscv64gc-unknown-linux-gnu + --profile $CARGO_BUILD_PROFILE + --features self_update + - name: "Upload binary" + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 + with: + name: pixi-linux-riscv64gc-${{ github.sha }} + path: ./target/riscv64gc-unknown-linux-gnu/${{ env.CARGO_BUILD_PROFILE }}/pixi + retention-days: 14 + build-binary-macos-aarch64: needs: determine_changes if: ${{ needs.determine_changes.outputs.code == 'true' || github.ref == 'refs/heads/main' }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6538a56d58..2bdc8e8fbf 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -383,6 +383,12 @@ jobs: name: artifacts-pixi-aarch64-pc-windows-msvc.exe path: unpacked-artifacts/pixi-aarch64-pc-windows-msvc.exe + - name: Upload unpacked artifact for pixi-riscv64gc-unknown-linux-gnu + uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 + with: + name: artifacts-pixi-riscv64gc-unknown-linux-gnu + path: unpacked-artifacts/pixi-riscv64gc-unknown-linux-gnu + # Upload installer scripts - name: Upload install.sh uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6 diff --git a/dist-workspace.toml b/dist-workspace.toml index d14d5427cd..bd8064ed73 100644 --- a/dist-workspace.toml +++ b/dist-workspace.toml @@ -18,6 +18,7 @@ targets = [ "aarch64-apple-darwin", "aarch64-unknown-linux-musl", "aarch64-pc-windows-msvc", + "riscv64gc-unknown-linux-gnu", "x86_64-apple-darwin", "x86_64-unknown-linux-musl", "x86_64-pc-windows-msvc", @@ -49,6 +50,7 @@ aarch64-pc-windows-msvc = "windows_x64_2025_large" x86_64-pc-windows-msvc = "windows_x64_2025_large" # Linux targets aarch64-unknown-linux-musl = "8core_ubuntu_latest_runner" +riscv64gc-unknown-linux-gnu = "ubuntu-latest" x86_64-unknown-linux-musl = "8core_ubuntu_latest_runner" [dist.dependencies.apt] @@ -56,3 +58,6 @@ gcc-aarch64-linux-gnu = { version = '*', targets = [ "aarch64-unknown-linux-gnu", "aarch64-unknown-linux-musl", ] } +gcc-riscv64-linux-gnu = { version = '*', targets = [ + "riscv64gc-unknown-linux-gnu", +] }