Update .gitea/workflows/build.yaml
Some checks failed
Build Wownero LWS (Static / Boost 1.90) / macos (arm64, macos-arm64, aarch64-apple-darwin11) (push) Failing after 1m52s
Build Wownero LWS (Static / Boost 1.90) / macos (x86_64, macos-x64, x86_64-apple-darwin11) (push) Failing after 1m18s
Build Wownero LWS (Static / Boost 1.90) / linux-native (push) Failing after 4m11s
Build Wownero LWS (Static / Boost 1.90) / linux-cross (aarch64, aarch64-linux-gnu) (push) Failing after 2m32s
Build Wownero LWS (Static / Boost 1.90) / windows (push) Has been cancelled
Build Wownero LWS (Static / Boost 1.90) / linux-cross (riscv64, riscv64-linux-gnu) (push) Has been cancelled

This commit is contained in:
2026-01-24 16:33:12 -05:00
parent fe7bd88107
commit 4ec4d0b994

View File

@@ -1,4 +1,4 @@
name: Build Wownero LWS (Split Jobs) name: Build Wownero LWS (Static / Boost 1.90)
on: on:
push: push:
branches: [ master, main ] branches: [ master, main ]
@@ -11,7 +11,7 @@ env:
jobs: jobs:
# ================================================================== # ==================================================================
# JOB 1: LINUX NATIVE (x86_64) # JOB 1: LINUX NATIVE (x86_64) - STRICT STATIC
# ================================================================== # ==================================================================
linux-native: linux-native:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -31,13 +31,10 @@ jobs:
git clone http://oauth2:$GITHUB_TOKEN@git.such.software:3000/${{ github.repository }}.git . git clone http://oauth2:$GITHUB_TOKEN@git.such.software:3000/${{ github.repository }}.git .
git submodule update --init --recursive git submodule update --init --recursive
- name: Patch Source (Code + Werror) - name: Patch Source
run: | run: |
# 1. Remove 'final' keyword (Boost 1.90 fix)
perl -pi -e 's/struct\s+rest_server::handler_loop\s+final/struct rest_server::handler_loop/g' src/rest_server.cpp perl -pi -e 's/struct\s+rest_server::handler_loop\s+final/struct rest_server::handler_loop/g' src/rest_server.cpp
# 2. Disable ICU checks (Windows fix)
perl -pi -e 's/find_library\(ICU/# find_library(ICU/g' external/monero/CMakeLists.txt perl -pi -e 's/find_library\(ICU/# find_library(ICU/g' external/monero/CMakeLists.txt
# 3. Disable -Werror (Treat warnings as warnings, not failures)
perl -pi -e 's/-Werror//g' CMakeLists.txt perl -pi -e 's/-Werror//g' CMakeLists.txt
perl -pi -e 's/-Werror//g' external/monero/CMakeLists.txt perl -pi -e 's/-Werror//g' external/monero/CMakeLists.txt
@@ -47,15 +44,26 @@ jobs:
mkdir -p /opt/wownero-sdk mkdir -p /opt/wownero-sdk
tar -xf sdk.tar.gz -C /opt/wownero-sdk tar -xf sdk.tar.gz -C /opt/wownero-sdk
- name: Debug SDK Content - name: Normalize SDK (The "Find It" Fix)
run: ls -R /opt/wownero-sdk/lib
- name: Fix Libraries
run: | run: |
# Alias hidapi cd /opt/wownero-sdk/lib
if [ -f /opt/wownero-sdk/lib/libhidapi-libusb.a ] && [ ! -f /opt/wownero-sdk/lib/libhidapi.a ]; then # Find zstd (handle _pic variant)
cp /opt/wownero-sdk/lib/libhidapi-libusb.a /opt/wownero-sdk/lib/libhidapi.a if [ ! -f libzstd.a ]; then
FOUND=$(find . -name "libzstd*.a" | head -n 1)
if [ ! -z "$FOUND" ]; then cp "$FOUND" libzstd.a; fi
fi fi
# Find zlib
if [ ! -f libz.a ]; then
FOUND=$(find . -name "libz*.a" | head -n 1)
if [ ! -z "$FOUND" ]; then cp "$FOUND" libz.a; fi
fi
# Find hidapi
if [ ! -f libhidapi.a ]; then
FOUND=$(find . -name "libhidapi*.a" | head -n 1)
if [ ! -z "$FOUND" ]; then cp "$FOUND" libhidapi.a; fi
fi
echo "SDK Library contents:"
ls -lh *.a
- name: Install Modern CMake - name: Install Modern CMake
run: | run: |
@@ -68,6 +76,8 @@ jobs:
mkdir build && cd build mkdir build && cd build
SDK_DIR="/opt/wownero-sdk" SDK_DIR="/opt/wownero-sdk"
# Force finding libs in SDK.
# -static flag in linker forces purely static binary.
cmake .. -DCMAKE_BUILD_TYPE=Release \ cmake .. -DCMAKE_BUILD_TYPE=Release \
-DBUILD_STATIC=ON \ -DBUILD_STATIC=ON \
-DCMAKE_PREFIX_PATH="$SDK_DIR" \ -DCMAKE_PREFIX_PATH="$SDK_DIR" \
@@ -86,11 +96,14 @@ jobs:
-DLIBUSB_LIBRARY="$SDK_DIR/lib/libusb-1.0.a" \ -DLIBUSB_LIBRARY="$SDK_DIR/lib/libusb-1.0.a" \
-DHIDAPI_INCLUDE_DIR="$SDK_DIR/include" \ -DHIDAPI_INCLUDE_DIR="$SDK_DIR/include" \
-DHIDAPI_LIBRARY="$SDK_DIR/lib/libhidapi.a" \ -DHIDAPI_LIBRARY="$SDK_DIR/lib/libhidapi.a" \
-DZSTD_LIBRARY=$SDK_DIR/lib/libzstd.a \ -DZSTD_LIBRARY="$SDK_DIR/lib/libzstd.a" \
-DZSTD_INCLUDE_DIR=$SDK_DIR/include \ -DZSTD_INCLUDE_DIR="$SDK_DIR/include" \
-DLIBEVENT_LIBRARY=$SDK_DIR/lib/libevent.a \ -DZLIB_LIBRARY="$SDK_DIR/lib/libz.a" \
-DLIBEVENT_INCLUDE_DIR=$SDK_DIR/include \ -DZLIB_INCLUDE_DIR="$SDK_DIR/include" \
-DUSE_READLINE=OFF -DLIBEVENT_LIBRARY="$SDK_DIR/lib/libevent.a" \
-DLIBEVENT_INCLUDE_DIR="$SDK_DIR/include" \
-DUSE_READLINE=OFF \
-DCMAKE_EXE_LINKER_FLAGS="-static -L$SDK_DIR/lib"
make -j$(nproc) make -j$(nproc)
@@ -106,7 +119,7 @@ jobs:
path: release/*.tar.gz path: release/*.tar.gz
# ================================================================== # ==================================================================
# JOB 2: LINUX CROSS (ARM64 / RISCV64) # JOB 2: LINUX CROSS (ARM64 / RISCV64) - STRICT STATIC
# ================================================================== # ==================================================================
linux-cross: linux-cross:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -138,7 +151,6 @@ jobs:
run: | run: |
perl -pi -e 's/struct\s+rest_server::handler_loop\s+final/struct rest_server::handler_loop/g' src/rest_server.cpp perl -pi -e 's/struct\s+rest_server::handler_loop\s+final/struct rest_server::handler_loop/g' src/rest_server.cpp
perl -pi -e 's/find_library\(ICU/# find_library(ICU/g' external/monero/CMakeLists.txt perl -pi -e 's/find_library\(ICU/# find_library(ICU/g' external/monero/CMakeLists.txt
# IMPORTANT: Remove -Werror for cross builds too
perl -pi -e 's/-Werror//g' CMakeLists.txt perl -pi -e 's/-Werror//g' CMakeLists.txt
perl -pi -e 's/-Werror//g' external/monero/CMakeLists.txt perl -pi -e 's/-Werror//g' external/monero/CMakeLists.txt
@@ -148,11 +160,12 @@ jobs:
mkdir -p /opt/wownero-sdk mkdir -p /opt/wownero-sdk
tar -xf sdk.tar.gz -C /opt/wownero-sdk tar -xf sdk.tar.gz -C /opt/wownero-sdk
- name: Fix Libraries - name: Normalize SDK
run: | run: |
if [ -f /opt/wownero-sdk/lib/libhidapi-libusb.a ] && [ ! -f /opt/wownero-sdk/lib/libhidapi.a ]; then cd /opt/wownero-sdk/lib
cp /opt/wownero-sdk/lib/libhidapi-libusb.a /opt/wownero-sdk/lib/libhidapi.a if [ ! -f libzstd.a ]; then FOUND=$(find . -name "libzstd*.a" | head -n 1); if [ ! -z "$FOUND" ]; then cp "$FOUND" libzstd.a; fi; fi
fi if [ ! -f libz.a ]; then FOUND=$(find . -name "libz*.a" | head -n 1); if [ ! -z "$FOUND" ]; then cp "$FOUND" libz.a; fi; fi
if [ ! -f libhidapi.a ]; then FOUND=$(find . -name "libhidapi*.a" | head -n 1); if [ ! -z "$FOUND" ]; then cp "$FOUND" libhidapi.a; fi; fi
- name: Install Modern CMake - name: Install Modern CMake
run: | run: |
@@ -162,18 +175,19 @@ jobs:
- name: Generate Toolchain - name: Generate Toolchain
run: | run: |
# CROSS TOOLCHAIN - NO SYSROOT (Let compiler find libc) # NO SYSROOT set here to avoid the "compiler broken" error.
# We rely on the compiler wrapper to know where standard libs are.
cat <<EOF > cross.cmake cat <<EOF > cross.cmake
set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR ${{ matrix.proc }}) set(CMAKE_SYSTEM_PROCESSOR ${{ matrix.proc }})
set(CMAKE_C_COMPILER ${{ matrix.target }}-gcc) set(CMAKE_C_COMPILER ${{ matrix.target }}-gcc)
set(CMAKE_CXX_COMPILER ${{ matrix.target }}-g++) set(CMAKE_CXX_COMPILER ${{ matrix.target }}-g++)
# Only look in SDK.
set(CMAKE_FIND_ROOT_PATH /opt/wownero-sdk) set(CMAKE_FIND_ROOT_PATH /opt/wownero-sdk)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# BOTH = Look in SDK first, then System (fixes missing libc/librt) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
EOF EOF
@@ -182,7 +196,8 @@ jobs:
mkdir build && cd build mkdir build && cd build
SDK_DIR="/opt/wownero-sdk" SDK_DIR="/opt/wownero-sdk"
# Explicitly provide ZLIB/ZSTD to prevent it picking up system versions # -static : Force fully static binary
# -lrt : Explicitly link librt (needed for Boost on Linux)
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross.cmake \ cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross.cmake \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DBUILD_STATIC=ON \ -DBUILD_STATIC=ON \
@@ -202,13 +217,14 @@ jobs:
-DLIBUSB_LIBRARY="$SDK_DIR/lib/libusb-1.0.a" \ -DLIBUSB_LIBRARY="$SDK_DIR/lib/libusb-1.0.a" \
-DHIDAPI_INCLUDE_DIR="$SDK_DIR/include" \ -DHIDAPI_INCLUDE_DIR="$SDK_DIR/include" \
-DHIDAPI_LIBRARY="$SDK_DIR/lib/libhidapi.a" \ -DHIDAPI_LIBRARY="$SDK_DIR/lib/libhidapi.a" \
-DZSTD_LIBRARY=$SDK_DIR/lib/libzstd.a \ -DZSTD_LIBRARY="$SDK_DIR/lib/libzstd.a" \
-DZSTD_INCLUDE_DIR=$SDK_DIR/include \ -DZSTD_INCLUDE_DIR="$SDK_DIR/include" \
-DZLIB_LIBRARY="$SDK_DIR/lib/libz.a" \
-DZLIB_INCLUDE_DIR="$SDK_DIR/include" \
-DLIBEVENT_LIBRARY=$SDK_DIR/lib/libevent.a \ -DLIBEVENT_LIBRARY=$SDK_DIR/lib/libevent.a \
-DLIBEVENT_INCLUDE_DIR=$SDK_DIR/include \ -DLIBEVENT_INCLUDE_DIR=$SDK_DIR/include \
-DZLIB_LIBRARY=$SDK_DIR/lib/libz.a \ -DUSE_READLINE=OFF \
-DZLIB_INCLUDE_DIR=$SDK_DIR/include \ -DCMAKE_EXE_LINKER_FLAGS="-static -L$SDK_DIR/lib -lrt"
-DUSE_READLINE=OFF
make -j$(nproc) make -j$(nproc)
@@ -224,7 +240,7 @@ jobs:
path: release/*.tar.gz path: release/*.tar.gz
# ================================================================== # ==================================================================
# JOB 3: WINDOWS (x86_64) # JOB 3: WINDOWS (x86_64) - STRICT STATIC
# ================================================================== # ==================================================================
windows: windows:
runs-on: ubuntu-latest runs-on: ubuntu-latest
@@ -247,7 +263,9 @@ jobs:
- name: Patch Source - name: Patch Source
run: | run: |
perl -pi -e 's/struct\s+rest_server::handler_loop\s+final/struct rest_server::handler_loop/g' src/rest_server.cpp perl -pi -e 's/struct\s+rest_server::handler_loop\s+final/struct rest_server::handler_loop/g' src/rest_server.cpp
# Nuke all ICU checks (icuio, icuin, icuuc)
perl -pi -e 's/find_library\(ICU/# find_library(ICU/g' external/monero/CMakeLists.txt perl -pi -e 's/find_library\(ICU/# find_library(ICU/g' external/monero/CMakeLists.txt
perl -pi -e 's/find_library\(ICONV/# find_library(ICONV/g' external/monero/CMakeLists.txt
perl -pi -e 's/-Werror//g' CMakeLists.txt perl -pi -e 's/-Werror//g' CMakeLists.txt
perl -pi -e 's/-Werror//g' external/monero/CMakeLists.txt perl -pi -e 's/-Werror//g' external/monero/CMakeLists.txt
@@ -257,15 +275,18 @@ jobs:
mkdir -p /opt/wownero-sdk mkdir -p /opt/wownero-sdk
tar -xf sdk.tar.gz -C /opt/wownero-sdk tar -xf sdk.tar.gz -C /opt/wownero-sdk
- name: Fix Libraries & Dummy RT - name: Normalize SDK & Dummy RT
run: | run: |
if [ -f /opt/wownero-sdk/lib/libhidapi-libusb.a ] && [ ! -f /opt/wownero-sdk/lib/libhidapi.a ]; then cd /opt/wownero-sdk/lib
cp /opt/wownero-sdk/lib/libhidapi-libusb.a /opt/wownero-sdk/lib/libhidapi.a if [ ! -f libzstd.a ]; then FOUND=$(find . -name "libzstd*.a" | head -n 1); if [ ! -z "$FOUND" ]; then cp "$FOUND" libzstd.a; fi; fi
fi if [ ! -f libz.a ]; then FOUND=$(find . -name "libz*.a" | head -n 1); if [ ! -z "$FOUND" ]; then cp "$FOUND" libz.a; fi; fi
# Dummy librt for Windows if [ ! -f libhidapi.a ]; then FOUND=$(find . -name "libhidapi*.a" | head -n 1); if [ ! -z "$FOUND" ]; then cp "$FOUND" libhidapi.a; fi; fi
if [ ! -f libiconv.a ]; then FOUND=$(find . -name "libiconv*.a" | head -n 1); if [ ! -z "$FOUND" ]; then cp "$FOUND" libiconv.a; fi; fi
# DUMMY RT FOR WINDOWS
echo "" > dummy.c echo "" > dummy.c
x86_64-w64-mingw32-gcc -c dummy.c -o dummy.o x86_64-w64-mingw32-gcc -c dummy.c -o dummy.o
x86_64-w64-mingw32-ar rcs /opt/wownero-sdk/lib/librt.a dummy.o x86_64-w64-mingw32-ar rcs librt.a dummy.o
- name: Install Modern CMake - name: Install Modern CMake
run: | run: |
@@ -296,7 +317,6 @@ jobs:
mkdir build && cd build mkdir build && cd build
SDK_DIR="/opt/wownero-sdk" SDK_DIR="/opt/wownero-sdk"
# Windows needs explicit ICONV
cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross.cmake \ cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross.cmake \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DBUILD_STATIC=ON \ -DBUILD_STATIC=ON \
@@ -316,11 +336,11 @@ jobs:
-DLIBUSB_LIBRARY="$SDK_DIR/lib/libusb-1.0.a" \ -DLIBUSB_LIBRARY="$SDK_DIR/lib/libusb-1.0.a" \
-DHIDAPI_INCLUDE_DIR="$SDK_DIR/include" \ -DHIDAPI_INCLUDE_DIR="$SDK_DIR/include" \
-DHIDAPI_LIBRARY="$SDK_DIR/lib/libhidapi.a" \ -DHIDAPI_LIBRARY="$SDK_DIR/lib/libhidapi.a" \
-DZSTD_LIBRARY=$SDK_DIR/lib/libzstd.a \ -DZSTD_LIBRARY="$SDK_DIR/lib/libzstd.a" \
-DZSTD_INCLUDE_DIR=$SDK_DIR/include \ -DZSTD_INCLUDE_DIR="$SDK_DIR/include" \
-DLIBEVENT_LIBRARY=$SDK_DIR/lib/libevent.a \ -DLIBEVENT_LIBRARY=$SDK_DIR/lib/libevent.a \
-DLIBEVENT_INCLUDE_DIR=$SDK_DIR/include \ -DLIBEVENT_INCLUDE_DIR=$SDK_DIR/include \
-DICONV_LIBRARY=$SDK_DIR/lib/libiconv.a \ -DICONV_LIBRARY="$SDK_DIR/lib/libiconv.a" \
-DICONV_INCLUDE_DIR=$SDK_DIR/include \ -DICONV_INCLUDE_DIR=$SDK_DIR/include \
-DRT_LIBRARY=$SDK_DIR/lib/librt.a \ -DRT_LIBRARY=$SDK_DIR/lib/librt.a \
-DUSE_READLINE=OFF \ -DUSE_READLINE=OFF \
@@ -381,6 +401,7 @@ jobs:
- name: Download SDK - name: Download SDK
run: | run: |
curl -L -k -o sdk.tar.gz "https://git.such.software/Builds/wownero/releases/download/${{ env.CORE_TAG }}/wownero-core-${{ matrix.target }}.tar.gz" curl -L -k -o sdk.tar.gz "https://git.such.software/Builds/wownero/releases/download/${{ env.CORE_TAG }}/wownero-core-${{ matrix.target }}.tar.gz"
if [ $(stat -f%z sdk.tar.gz) -lt 1000000 ]; then exit 1; fi
mkdir -p wownero-sdk mkdir -p wownero-sdk
tar -xf sdk.tar.gz -C wownero-sdk tar -xf sdk.tar.gz -C wownero-sdk