diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 29464ce0..904fc465 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -45,8 +45,8 @@ jobs: uses: fabiocaccamo/create-matrix-action@v5 with: matrix: | - os {linux}, cpu {amd64}, builder {ubuntu-22.04}, nim_version {${{ env.nim_version }}}, shell {bash --noprofile --norc -e -o pipefail} - os {linux}, cpu {arm64}, builder {ubuntu-22.04-arm}, nim_version {${{ env.nim_version }}}, shell {bash --noprofile --norc -e -o pipefail} + os {linux}, cpu {amd64}, builder {ubuntu-24.04}, nim_version {${{ env.nim_version }}}, shell {bash --noprofile --norc -e -o pipefail} + os {linux}, cpu {arm64}, builder {ubuntu-24.04-arm}, nim_version {${{ env.nim_version }}}, shell {bash --noprofile --norc -e -o pipefail} os {macos}, cpu {arm64}, builder {macos-14}, nim_version {${{ env.nim_version }}}, shell {bash --noprofile --norc -e -o pipefail} os {windows}, cpu {amd64}, builder {windows-latest}, nim_version {${{ env.nim_version }}}, shell {msys2} @@ -104,9 +104,22 @@ jobs: echo "storage_binary=${storage_binary}" >>$GITHUB_ENV echo "c_bindings_lib=${c_bindings_lib}" >>$GITHUB_ENV + - name: Compute platform Nim flags + id: platform-nim-flags + shell: bash + run: | + platform_nim_flags="" + # secp256k1's x86_64 inline asm can hit a GCC register-allocation + # failure when -march=native expands against this runner's CPU, so + # pin a fixed baseline instead. arm64/macOS don't use that asm path. + if [[ "${{ matrix.os }}" == "linux" && "${{ matrix.cpu }}" == "amd64" ]]; then + platform_nim_flags="-d:disableMarchNative" + fi + echo "nim_flags=${platform_nim_flags}" >> "$GITHUB_OUTPUT" + - name: Build Logos Storage binary run: | - make NIMFLAGS="--out:${{ env.build_dir }}/${{ env.storage_binary }} ${{ env.nim_flags }}" + make NIMFLAGS="${NIMFLAGS} --out:${{ env.build_dir }}/${{ env.storage_binary }} ${{ env.nim_flags }} ${{ steps.platform-nim-flags.outputs.nim_flags }}" - name: Package ${{ env.storage_binary_base }} Linux (compress and preserve perms) if: matrix.os == 'linux' @@ -153,20 +166,20 @@ jobs: if: matrix.os == 'linux' run: | make -j${ncpu} update - make -j${ncpu} libstorage + make -j${ncpu} NIMFLAGS="${NIMFLAGS} ${{ steps.platform-nim-flags.outputs.nim_flags }}" libstorage - name: Build ${{ env.c_bindings_lib_base }} (MacOS) if: matrix.os == 'macos' run: | make -j${ncpu} update - STORAGE_LIB_PARAMS="--passL:\"-Wl,-install_name,@rpath/${{ env.c_bindings_lib_base }}.dylib\"" make -j${ncpu} libstorage + STORAGE_LIB_PARAMS="--passL:\"-Wl,-install_name,@rpath/${{ env.c_bindings_lib_base }}.dylib\"" make -j${ncpu} NIMFLAGS="${NIMFLAGS} ${{ steps.platform-nim-flags.outputs.nim_flags }}" libstorage - name: Build ${{ env.c_bindings_lib_base }} (Windows) if: matrix.os == 'windows' shell: msys2 {0} run: | make -j${ncpu} update - make -j${ncpu} libstorage + make -j${ncpu} NIMFLAGS="${NIMFLAGS} ${{ steps.platform-nim-flags.outputs.nim_flags }}" libstorage - name: Package ${{ env.c_bindings_lib_base }} Linux if: matrix.os == 'linux'