Skip to content

feat: add projected compilation #91

feat: add projected compilation

feat: add projected compilation #91

Workflow file for this run

name: CI
on:
- push
jobs:
Build:
strategy:
fail-fast: false
matrix:
target:
- double: aarch64-linux # target we are building for
system: aarch64-linux # system we are building on
emulated: true # whether this build is being emulated
runner: ubuntu-24.04 # GitHub runner the build is running on
flake: bundled # flake package to build
interpreter: /lib/ld-linux-aarch64.so.1 # path to libc interpreter
- double: x86_64-linux
system: x86_64-linux
runner: ubuntu-24.04
flake: d4
interpreter: /lib64/ld-linux-x86-64.so.2
- double: aarch64-darwin
system: aarch64-darwin
runner: macos-latest
flake: bundled
- double: x86_64-darwin
system: x86_64-darwin
runner: macos-13
flake: bundled
- double: x86_64-windows
system: x86_64-linux
runner: ubuntu-24.04
flake: bundled-windows
runs-on: ${{ matrix.target.runner }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: QEMU
if: ${{ matrix.target.emulated }}
run: sudo apt-get install -y qemu-user-static
- name: Nix
uses: DeterminateSystems/nix-installer-action@v10
with:
extra-conf: extra-platforms = ${{ matrix.target.system }}
- name: Cache
uses: DeterminateSystems/magic-nix-cache-action@v4
- name: Build
run: nix build -L .#packages.${{ matrix.target.system }}.${{ matrix.target.flake }}
- name: Set interpreter
if: ${{ matrix.target.interpreter }}
run: |
cp -rL result output
rm -rf result
chmod +w output/bin/*
nix run nixpkgs#patchelf -- --set-interpreter ${{ matrix.target.interpreter }} output/bin/*
chmod -w output/bin/*
mv output result
- name: Upload
uses: actions/upload-artifact@v4
with:
name: d4-${{ matrix.target.double }}
path: result