From 04d0a18c95e4f4bfe40db9cc9231b3e0794e71c3 Mon Sep 17 00:00:00 2001 From: such-gitea Date: Sat, 24 Jan 2026 13:03:55 -0500 Subject: [PATCH] Update .gitea/workflows/build.yaml --- .gitea/workflows/build.yaml | 63 +++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 30 deletions(-) diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 3db0e94..4f7743d 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -55,7 +55,7 @@ jobs: git clone http://oauth2:$GITHUB_TOKEN@git.such.software:3000/${{ github.repository }}.git . git submodule update --init --recursive - # --- FIX 1: Robust Regex Patch (Confirmed Working) --- + # --- FIX 1: Robust Regex Patch (Code is now compiling, keeping this) --- - name: Patch Source Code run: | echo "Patching src/rest_server.cpp..." @@ -97,64 +97,67 @@ jobs: SDK_DIR="/opt/wownero-sdk" PLATFORM_FLAGS="" - # GLOBAL FIX: Always look in SDK/lib for missing deps like zstd/event - # We use -L to force the linker to look here. - GLOBAL_LINKER_FLAGS="-L/opt/wownero-sdk/lib" + # GLOBAL FIX: Force paths for libs that CMake keeps missing + # We manually define the paths so the linker doesn't have to search + SHARED_LIBS="-DZSTD_LIBRARY=$SDK_DIR/lib/libzstd.a \ + -DZSTD_INCLUDE_DIR=$SDK_DIR/include \ + -DLIBEVENT_LIBRARY=$SDK_DIR/lib/libevent.a \ + -DLIBEVENT_INCLUDE_DIR=$SDK_DIR/include \ + -DOPENSSL_ROOT_DIR=$SDK_DIR \ + -DOPENSSL_USE_STATIC_LIBS=TRUE \ + -DUNBOUND_INCLUDE_DIR=$SDK_DIR/include \ + -DUNBOUND_LIBRARY=$SDK_DIR/lib/libunbound.a \ + -DZMQ_INCLUDE_DIR=$SDK_DIR/include \ + -DZMQ_LIBRARY=$SDK_DIR/lib/libzmq.a \ + -DSodium_INCLUDE_DIR=$SDK_DIR/include \ + -DSodium_LIBRARY_RELEASE=$SDK_DIR/lib/libsodium.a \ + -DLIBUSB_INCLUDE_DIR=$SDK_DIR/include \ + -DLIBUSB_LIBRARY=$SDK_DIR/lib/libusb-1.0.a \ + -DHIDAPI_INCLUDE_DIR=$SDK_DIR/include \ + -DHIDAPI_LIBRARY=$SDK_DIR/lib/libhidapi.a" if [ "${{ matrix.target }}" == "x86_64-w64-mingw32" ]; then - # WINDOWS: -static, allow duplicates, and the global path + # WINDOWS: -static, allow duplicates, explicit lib paths PLATFORM_FLAGS="-DCMAKE_SYSTEM_NAME=Windows \ -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \ -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ \ -DCMAKE_RC_COMPILER=x86_64-w64-mingw32-windres \ - -DCMAKE_EXE_LINKER_FLAGS='-static -Wl,--allow-multiple-definition $GLOBAL_LINKER_FLAGS' \ - -DZSTD_LIBRARY=$SDK_DIR/lib/libzstd.a \ - -DZSTD_INCLUDE_DIR=$SDK_DIR/include \ - -DLIBEVENT_LIBRARY=$SDK_DIR/lib/libevent.a \ - -DLIBEVENT_INCLUDE_DIR=$SDK_DIR/include" + -DCMAKE_EXE_LINKER_FLAGS='-static -Wl,--allow-multiple-definition -L/opt/wownero-sdk/lib'" elif [ "${{ matrix.target }}" == "x86_64-linux-gnu" ]; then - # LINUX x86: Just needs the global linker path - PLATFORM_FLAGS="-DCMAKE_EXE_LINKER_FLAGS='$GLOBAL_LINKER_FLAGS'" + # LINUX x86: Just needs explicit libs + PLATFORM_FLAGS="-DCMAKE_EXE_LINKER_FLAGS='-L/opt/wownero-sdk/lib'" elif [ "${{ matrix.target }}" == "aarch64-linux-gnu" ]; then - # ARM64: MUST have explicit linker to prevent x86 ld usage + # ARM64: STRICT CROSS COMPILATION. FORCE LD/AR/RANLIB. PLATFORM_FLAGS="-DCMAKE_SYSTEM_NAME=Linux \ -DCMAKE_SYSTEM_PROCESSOR=aarch64 \ -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \ -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \ -DCMAKE_LINKER=/usr/bin/aarch64-linux-gnu-ld \ - -DCMAKE_EXE_LINKER_FLAGS='$GLOBAL_LINKER_FLAGS'" + -DCMAKE_AR=/usr/bin/aarch64-linux-gnu-ar \ + -DCMAKE_RANLIB=/usr/bin/aarch64-linux-gnu-ranlib \ + -DCMAKE_EXE_LINKER_FLAGS='-L/opt/wownero-sdk/lib'" elif [ "${{ matrix.target }}" == "riscv64-linux-gnu" ]; then - # RISC-V: MUST have explicit linker + # RISC-V: STRICT CROSS COMPILATION. FORCE LD/AR/RANLIB. PLATFORM_FLAGS="-DCMAKE_SYSTEM_NAME=Linux \ -DCMAKE_SYSTEM_PROCESSOR=riscv64 \ -DCMAKE_C_COMPILER=riscv64-linux-gnu-gcc \ -DCMAKE_CXX_COMPILER=riscv64-linux-gnu-g++ \ -DCMAKE_LINKER=/usr/bin/riscv64-linux-gnu-ld \ - -DCMAKE_EXE_LINKER_FLAGS='$GLOBAL_LINKER_FLAGS'" + -DCMAKE_AR=/usr/bin/riscv64-linux-gnu-ar \ + -DCMAKE_RANLIB=/usr/bin/riscv64-linux-gnu-ranlib \ + -DCMAKE_EXE_LINKER_FLAGS='-L/opt/wownero-sdk/lib'" fi - cmake .. $PLATFORM_FLAGS \ + cmake .. $PLATFORM_FLAGS $SHARED_LIBS \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_STATIC=ON \ -DCMAKE_PREFIX_PATH="$SDK_DIR" \ -DBOOST_ROOT="$SDK_DIR" \ -DBoost_NO_SYSTEM_PATHS=ON \ - -DBoost_NO_BOOST_CMAKE=ON \ - -DOPENSSL_ROOT_DIR="$SDK_DIR" \ - -DOPENSSL_USE_STATIC_LIBS=TRUE \ - -DUNBOUND_INCLUDE_DIR="$SDK_DIR/include" \ - -DUNBOUND_LIBRARY="$SDK_DIR/lib/libunbound.a" \ - -DZMQ_INCLUDE_DIR="$SDK_DIR/include" \ - -DZMQ_LIBRARY="$SDK_DIR/lib/libzmq.a" \ - -DSodium_INCLUDE_DIR="$SDK_DIR/include" \ - -DSodium_LIBRARY_RELEASE="$SDK_DIR/lib/libsodium.a" \ - -DLIBUSB_INCLUDE_DIR="$SDK_DIR/include" \ - -DLIBUSB_LIBRARY="$SDK_DIR/lib/libusb-1.0.a" \ - -DHIDAPI_INCLUDE_DIR="$SDK_DIR/include" \ - -DHIDAPI_LIBRARY="$SDK_DIR/lib/libhidapi.a" + -DBoost_NO_BOOST_CMAKE=ON make -j$(nproc)