From 9fd5daa43641a0bb8c654475f8a8f25dfdba04b5 Mon Sep 17 00:00:00 2001 From: kaichao Date: Sun, 21 Dec 2025 10:53:49 +0800 Subject: [PATCH] bug: fix windows build (#46) * chore: log build files. * chore: update nwaku * chore: use rln 0.9.0 * chore: fix file name * chore: fix path * chore: log the released file * chore: test log * chore: splite windows test ci * chore: splite windows test * chore: update nwaku * chore: update nwaku * chore: update windows ci deps * chore: update ci * chore: update ci * chore: update ci * chore: update ci * chore: update ci --- .github/workflows/test-windows.yml | 76 ++++++++++++++++++++++++++++++ .github/workflows/test.yml | 2 +- Makefile | 17 ++++++- 3 files changed, 93 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/test-windows.yml diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml new file mode 100644 index 0000000..bfc142c --- /dev/null +++ b/.github/workflows/test-windows.yml @@ -0,0 +1,76 @@ +name: test-windows + +on: + pull_request: + branches: + - main + paths-ignore: + - '**README.md' + - '.gitignore' + - 'LICENSE' +jobs: + tests-tasks: + runs-on: windows-latest + + defaults: + run: + shell: msys2 {0} + + env: + MSYSTEM: MINGW64 + + steps: + - name: Checkout + uses: actions/checkout@v6 + + - name: Setup MSYS2 + uses: msys2/setup-msys2@v2 + with: + update: true + install: >- + git + base-devel + mingw-w64-x86_64-toolchain + make + cmake + upx + mingw-w64-x86_64-rust + mingw-w64-x86_64-postgresql + mingw-w64-x86_64-gcc + mingw-w64-x86_64-gcc-libs + mingw-w64-x86_64-libwinpthread-git + mingw-w64-x86_64-zlib + mingw-w64-x86_64-openssl + mingw-w64-x86_64-python + mingw-w64-x86_64-cmake + mingw-w64-x86_64-llvm + mingw-w64-x86_64-clang + + - name: Add UPX to PATH + run: | + echo "/usr/bin:$PATH" >> $GITHUB_PATH + echo "/mingw64/bin:$PATH" >> $GITHUB_PATH + echo "/usr/lib:$PATH" >> $GITHUB_PATH + echo "/mingw64/lib:$PATH" >> $GITHUB_PATH + + - name: Verify dependencies + run: | + which upx gcc g++ make cmake cargo rustc python make mingw32-make + + - name: Update + run: make update + + - name: Building miniupnpc + run: | + cd vendor/nwaku/vendor/nim-nat-traversal/vendor/miniupnp/miniupnpc + make -f Makefile.mingw CC=gcc CXX=g++ libminiupnpc.a V=1 + cd ../../../../../../.. + + - name: Building libnatpmp + run: | + cd vendor/nwaku/vendor/nim-nat-traversal/vendor/libnatpmp-upstream + make CC="gcc -fPIC -D_WIN32_WINNT=0x0600 -DNATPMP_STATICLIB" libnatpmp.a V=1 + cd ../../../../../../ + + - name: Tests + run: make tests diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8eb7190..46f55d1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,7 @@ jobs: tests-tasks: strategy: matrix: - os: [ubuntu-latest, macOS-latest, windows-latest] + os: [ubuntu-latest, macOS-latest] runs-on: ${{ matrix.os }} steps: - name: Checkout diff --git a/Makefile b/Makefile index 3ba4ebe..9fad87e 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,12 @@ GIT_SUBMODULE_UPDATE := git submodule update --init --recursive else # "variables.mk" was included. Business as usual until the end of this file. +# Determine the OS +detected_OS := $(shell uname -s) +ifneq (,$(findstring MINGW,$(detected_OS))) + detected_OS := Windows +endif + ########## ## Main ## ########## @@ -61,10 +67,19 @@ NIM_PARAMS := $(NIM_PARAMS) -d:git_version=\"$(GIT_VERSION)\" ################## .PHONY: build-waku-librln +LIBRLN_VERSION := v0.7.0 + +ifeq ($(detected_OS),Windows) +LIBRLN_FILE := rln.lib +else +LIBRLN_FILE := librln_$(LIBRLN_VERSION).a +endif + + build-waku-librln: @echo "Start building waku librln" $(MAKE) -C vendor/nwaku librln - $(eval NIM_PARAMS += --passL:./vendor/nwaku/librln_v0.7.0.a --passL:-lm) + $(eval NIM_PARAMS += --passL:./vendor/nwaku/${LIBRLN_FILE} --passL:-lm) @echo "Completed building librln" build-waku-nat: