mirror of
https://github.com/logos-storage/logos-storage-nim.git
synced 2026-06-26 12:29:30 +00:00
fix: harden linux release builds against GCC's -march=native bug on Zen4 (#1466)
Co-authored-by: Marcin Czenko <marcin.czenko@pm.me>
This commit is contained in:
parent
660cab224b
commit
d7c1d69279
25
.github/workflows/release.yml
vendored
25
.github/workflows/release.yml
vendored
@ -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'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user