diff --git a/.github/workflows/ci_nix.yml b/.github/workflows/ci_nix.yml index 043126c..8b0d1a6 100644 --- a/.github/workflows/ci_nix.yml +++ b/.github/workflows/ci_nix.yml @@ -16,7 +16,7 @@ jobs: fail-fast: false matrix: # macos-15-intel uses x86-64 machine, macos-14 and macos-15 uses aarch64 - os: [macos-15-intel, macos-15, ubuntu-22.04, ubuntu-24.04-arm] + os: [macos-15-intel, macos-15, ubuntu-24.04, ubuntu-24.04-arm] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v4 diff --git a/build.roc b/build.roc index ab24657..f7ed839 100644 --- a/build.roc +++ b/build.roc @@ -51,7 +51,7 @@ run! = |maybe_roc| build_stub_app_lib!(roc_cmd, stub_lib_path)? - cargo_build_host!({})? + cargo_build_host!(os_and_arch)? rust_target_folder = get_rust_target_folder!({})? @@ -98,12 +98,21 @@ get_rust_target_folder! = |{}| Ok("target/release/") -cargo_build_host! : {} => Result {} _ -cargo_build_host! = |{}| +cargo_build_host! : OSAndArch => Result {} _ +cargo_build_host! = |os_and_arch| info!("Building rust host ...")? - Cmd.exec!("cargo", ["build", "--release"]) + cmd = Cmd.new("cargo") |> Cmd.args(["build", "--release"]) + + # Apply RUSTFLAGS only on macOS x64 to fix "Not enough free space" linker error + cmd_with_flags = + when os_and_arch is + MacosX64 -> cmd |> Cmd.env("RUSTFLAGS", "-C link-arg=-Wl,-headerpad,0x1000") + _ -> cmd + + cmd_with_flags + |> Cmd.exec_cmd!() |> Result.map_err(ErrBuildingHostBinaries) copy_host_lib! : OSAndArch, Str => Result {} _