From a41e7e05f66fc97ef5833ee0fbb96840bbc035bd Mon Sep 17 00:00:00 2001 From: Fabiana Cecin Date: Thu, 9 Apr 2026 12:59:44 -0300 Subject: [PATCH] Fix BearSSL and NAT lib build reproducibility * pass -mssse3 on x86_64 to BearSSL and NAT C lib builds * add BearSSL.mk and Nat.mk to nimbledeps cache key --- .github/workflows/ci.yml | 6 +++--- .github/workflows/container-image.yml | 2 +- .github/workflows/windows-build.yml | 2 +- BearSSL.mk | 9 ++++++++- Nat.mk | 11 +++++++++-- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b2de4e50e..1f6fcdfec 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -83,7 +83,7 @@ jobs: path: | nimbledeps/ nimble.paths - key: ${{ runner.os }}-nimbledeps-${{ hashFiles('nimble.lock') }} + key: ${{ runner.os }}-nimbledeps-${{ hashFiles('nimble.lock', 'BearSSL.mk', 'Nat.mk') }} - name: Install nimble deps if: steps.cache-nimbledeps.outputs.cache-hit != 'true' @@ -136,7 +136,7 @@ jobs: path: | nimbledeps/ nimble.paths - key: ${{ runner.os }}-nimbledeps-${{ hashFiles('nimble.lock') }} + key: ${{ runner.os }}-nimbledeps-${{ hashFiles('nimble.lock', 'BearSSL.mk', 'Nat.mk') }} - name: Install nimble deps if: steps.cache-nimbledeps.outputs.cache-hit != 'true' @@ -215,7 +215,7 @@ jobs: path: | nimbledeps/ nimble.paths - key: ${{ runner.os }}-nimbledeps-${{ hashFiles('nimble.lock') }} + key: ${{ runner.os }}-nimbledeps-${{ hashFiles('nimble.lock', 'BearSSL.mk', 'Nat.mk') }} - name: Install nimble deps if: steps.cache-nimbledeps.outputs.cache-hit != 'true' diff --git a/.github/workflows/container-image.yml b/.github/workflows/container-image.yml index ae132a477..c2fb9d4d2 100644 --- a/.github/workflows/container-image.yml +++ b/.github/workflows/container-image.yml @@ -69,7 +69,7 @@ jobs: path: | nimbledeps/ nimble.paths - key: ${{ runner.os }}-nimbledeps-${{ hashFiles('nimble.lock') }} + key: ${{ runner.os }}-nimbledeps-${{ hashFiles('nimble.lock', 'BearSSL.mk', 'Nat.mk') }} - name: Install nimble deps if: ${{ steps.secrets.outcome == 'success' && steps.cache-nimbledeps.outputs.cache-hit != 'true' }} diff --git a/.github/workflows/windows-build.yml b/.github/workflows/windows-build.yml index 09ef05a5d..5b0894368 100644 --- a/.github/workflows/windows-build.yml +++ b/.github/workflows/windows-build.yml @@ -87,7 +87,7 @@ jobs: path: | nimbledeps/ nimble.paths - key: ${{ runner.os }}-nimbledeps-${{ hashFiles('nimble.lock') }} + key: ${{ runner.os }}-nimbledeps-${{ hashFiles('nimble.lock', 'BearSSL.mk', 'Nat.mk') }} - name: Install nimble deps if: steps.cache-nimbledeps.outputs.cache-hit != 'true' diff --git a/BearSSL.mk b/BearSSL.mk index 98e933ebd..355e46563 100644 --- a/BearSSL.mk +++ b/BearSSL.mk @@ -22,6 +22,13 @@ BEARSSL_NIMBLEDEPS_DIR := $(shell ls -dt $(CURDIR)/nimbledeps/pkgs2/bearssl-* 2>/dev/null | head -1) BEARSSL_CSOURCES_DIR := $(BEARSSL_NIMBLEDEPS_DIR)/bearssl/csources +BEARSSL_UNAME_M := $(shell uname -m) +ifeq ($(BEARSSL_UNAME_M),x86_64) + PORTABLE_BEARSSL_CFLAGS := -W -Wall -Os -fPIC -mssse3 +else + PORTABLE_BEARSSL_CFLAGS := -W -Wall -Os -fPIC +endif + .PHONY: clean-bearssl-nimbledeps rebuild-bearssl-nimbledeps clean-bearssl-nimbledeps: @@ -36,4 +43,4 @@ ifeq ($(BEARSSL_NIMBLEDEPS_DIR),) $(error No bearssl package found under nimbledeps/pkgs2/ — run 'make update' first) endif @echo "Rebuilding bearssl from $(BEARSSL_CSOURCES_DIR)" - + "$(MAKE)" -C "$(BEARSSL_CSOURCES_DIR)" lib \ No newline at end of file + + "$(MAKE)" -C "$(BEARSSL_CSOURCES_DIR)" CFLAGS="$(PORTABLE_BEARSSL_CFLAGS)" lib \ No newline at end of file diff --git a/Nat.mk b/Nat.mk index 31ad4e018..90d0b2ead 100644 --- a/Nat.mk +++ b/Nat.mk @@ -21,6 +21,13 @@ NAT_TRAVERSAL_NIMBLEDEPS_DIR := $(shell ls -dt $(CURDIR)/nimbledeps/pkgs2/nat_traversal-* 2>/dev/null | head -1) +NAT_UNAME_M := $(shell uname -m) +ifeq ($(NAT_UNAME_M),x86_64) + PORTABLE_NAT_MARCH := -mssse3 +else + PORTABLE_NAT_MARCH := +endif + .PHONY: clean-cross-nimbledeps rebuild-nat-libs-nimbledeps clean-cross-nimbledeps: @@ -47,8 +54,8 @@ ifeq ($(OS), Windows_NT) libnatpmp.a $(HANDLE_OUTPUT) else + "$(MAKE)" -C "$(NAT_TRAVERSAL_NIMBLEDEPS_DIR)/vendor/miniupnp/miniupnpc" \ - CC=$(CC) CFLAGS="-Os -fPIC" build/libminiupnpc.a $(HANDLE_OUTPUT) - + "$(MAKE)" CFLAGS="-Wall -Wno-cpp -Os -fPIC -DENABLE_STRNATPMPERR -DNATPMP_MAX_RETRIES=4 $(CFLAGS)" \ + CC=$(CC) CFLAGS="-Os -fPIC $(PORTABLE_NAT_MARCH)" build/libminiupnpc.a $(HANDLE_OUTPUT) + + "$(MAKE)" CFLAGS="-Wall -Wno-cpp -Os -fPIC $(PORTABLE_NAT_MARCH) -DENABLE_STRNATPMPERR -DNATPMP_MAX_RETRIES=4 $(CFLAGS)" \ -C "$(NAT_TRAVERSAL_NIMBLEDEPS_DIR)/vendor/libnatpmp-upstream" \ CC=$(CC) libnatpmp.a $(HANDLE_OUTPUT) endif