From 9cf4dac109d90937973b628f040db1fadfa24c54 Mon Sep 17 00:00:00 2001 From: such-gitea Date: Tue, 10 Feb 2026 17:41:58 -0500 Subject: [PATCH] Update .gitea/workflows/build.yaml --- .gitea/workflows/build.yaml | 60 +++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 26 deletions(-) diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index 241296c..c2825a8 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -1,4 +1,4 @@ -name: Build Wownero LWS (All Green) +name: Build Wownero LWS (Aarch64 Patch) on: push: branches: [ master, main ] @@ -11,7 +11,7 @@ env: jobs: # ================================================================== - # JOB 1: LINUX NATIVE (x86_64) - CONFIRMED WORKING + # JOB 1: LINUX NATIVE (x86_64) - KEEPING AS IS (GREEN) # ================================================================== linux-native: runs-on: ubuntu-latest @@ -53,7 +53,6 @@ jobs: find . -name "libzstd*.a" -exec cp -n {} libzstd.a \; || true find . -name "libz*.a" ! -name "*zmq*" -exec cp -n {} libz.a \; || true find . -name "libhidapi*.a" -exec cp -n {} libhidapi.a \; || true - # Symlink system librt.a SYSTEM_RT=$(find /usr -name "librt.a" | head -n 1) if [ -n "$SYSTEM_RT" ]; then ln -s "$SYSTEM_RT" librt.a; fi - name: Install Modern CMake @@ -90,6 +89,7 @@ jobs: -DZLIB_INCLUDE_DIR="$SDK_DIR/include" \ -DLIBEVENT_LIBRARY=$SDK_DIR/lib/libevent.a \ -DLIBEVENT_INCLUDE_DIR=$SDK_DIR/include \ + -DRT_LIBRARY=rt \ -DUSE_READLINE=OFF \ -DCMAKE_EXE_LINKER_FLAGS="-static -Wl,--allow-multiple-definition" make -j$(nproc) @@ -104,7 +104,7 @@ jobs: path: release/*.tar.gz # ================================================================== - # JOB 2: LINUX CROSS (ARM64 / RISCV64) - Fixed LibRT + # JOB 2: LINUX CROSS (ARM64 / RISCV64) - AARCH64 FIX # ================================================================== linux-cross: runs-on: ubuntu-latest @@ -148,30 +148,44 @@ jobs: curl -L -k -o sdk.tar.gz "https://git.such.software/Builds/wownero/releases/download/${{ env.CORE_TAG }}/wownero-core-${{ matrix.target }}.tar.gz" mkdir -p /opt/wownero-sdk tar -xf sdk.tar.gz -C /opt/wownero-sdk - - name: Normalize SDK & Symlink Cross-Sysroot RT + - name: Normalize SDK run: | cd /opt/wownero-sdk/lib find . -name "libhidapi*.a" -exec cp -n {} libhidapi.a \; || true find . -name "libzstd*.a" -exec cp -n {} libzstd.a \; || true find . -name "libz*.a" ! -name "*zmq*" -exec cp -n {} libz.a \; || true - # FIX: Find the ARCHITECTURE SPECIFIC librt.a in the sysroot - # The sysroot is typically at ${{ matrix.sysroot }} + # Symlink Cross RT SYSROOT_RT=$(find ${{ matrix.sysroot }} -name "librt.a" 2>/dev/null | head -n 1) if [ -n "$SYSROOT_RT" ]; then - echo "Symlinking Cross RT: $SYSROOT_RT" ln -s "$SYSROOT_RT" librt.a else - # Fallback search if variable fails FALLBACK=$(find /usr -name "librt.a" | grep ${{ matrix.proc }} | head -n 1) - if [ -n "$FALLBACK" ]; then - echo "Symlinking Fallback RT: $FALLBACK" - ln -s "$FALLBACK" librt.a - else - echo "FATAL: Could not find cross-compiled librt.a" - exit 1 - fi + if [ -n "$FALLBACK" ]; then ln -s "$FALLBACK" librt.a; fi fi + + # FIX FOR AARCH64: INJECT MISSING BOOST CONTEXT ASM + - name: Patch Boost Context (Aarch64) + if: matrix.target == 'aarch64-linux-gnu' + run: | + echo "Downloading and compiling missing Boost Context ASM for aarch64..." + mkdir -p boost_asm && cd boost_asm + # Download the 3 required ASM files + BASE="https://raw.githubusercontent.com/boostorg/context/develop/src/asm" + curl -O $BASE/jump_aarch64_aapcs_elf_gas.S + curl -O $BASE/make_aarch64_aapcs_elf_gas.S + curl -O $BASE/ontop_aarch64_aapcs_elf_gas.S + + # Compile them using the cross-compiler + aarch64-linux-gnu-gcc -c jump_aarch64_aapcs_elf_gas.S -o jump.o + aarch64-linux-gnu-gcc -c make_aarch64_aapcs_elf_gas.S -o make.o + aarch64-linux-gnu-gcc -c ontop_aarch64_aapcs_elf_gas.S -o ontop.o + + # Append them to the existing (broken) static library in the SDK + aarch64-linux-gnu-ar r /opt/wownero-sdk/lib/libboost_context.a jump.o make.o ontop.o + aarch64-linux-gnu-ar s /opt/wownero-sdk/lib/libboost_context.a + echo "Patch applied successfully." + - name: Install Modern CMake run: | curl -L -o cmake.tar.gz https://github.com/Kitware/CMake/releases/download/v3.28.1/cmake-3.28.1-linux-x86_64.tar.gz @@ -196,8 +210,6 @@ jobs: run: | mkdir build && cd build SDK_DIR="/opt/wownero-sdk" - - # Fix: Added -Wl,--allow-multiple-definition for cross compile too cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross.cmake \ -DCMAKE_BUILD_TYPE=Release \ -DBUILD_STATIC=ON \ @@ -238,7 +250,7 @@ jobs: path: release/*.tar.gz # ================================================================== - # JOB 3: WINDOWS (x86_64) - Fix ZMQ + Dummy RT + # JOB 3: WINDOWS - UNTOUCHED # ================================================================== windows: runs-on: ubuntu-latest @@ -268,10 +280,7 @@ jobs: 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' external/monero/CMakeLists.txt - # Fix strptime - HEADER="external/monero/contrib/epee/include/storages/portable_storage_val_converters.h" - sed -i '1i #include \n#ifdef _WIN32\nchar* strptime(const char* s, const char* f, struct tm* tm) { return 0; }\n#endif' $HEADER - # FIX: DISABLE ZMQ_ASYNC ON WINDOWS + sed -i '1i #include \n#ifdef _WIN32\nchar* strptime(const char* s, const char* f, struct tm* tm) { return 0; }\n#endif' external/monero/contrib/epee/include/storages/portable_storage_val_converters.h sed -i '/zmq_async.cpp/d' src/net/CMakeLists.txt - name: Download SDK run: | @@ -285,7 +294,6 @@ jobs: find . -name "libz*.a" ! -name "*zmq*" -exec cp -n {} libz.a \; || true find . -name "libhidapi*.a" -exec cp -n {} libhidapi.a \; || true find . -name "libiconv*.a" -exec cp -n {} libiconv.a \; || true - # Dummy librt echo "" > dummy.c x86_64-w64-mingw32-gcc -c dummy.c -o dummy.o x86_64-w64-mingw32-ar rcs librt.a dummy.o @@ -355,7 +363,7 @@ jobs: path: release/*.zip # ================================================================== - # JOB 4: MACOS - No Upload Step (Manual Retrieval) + # JOB 4: MACOS - UNTOUCHED (Manual Checkout) # ================================================================== macos: runs-on: macos-latest @@ -431,4 +439,4 @@ jobs: run: | mkdir release zip -j release/wownero-lws-${{ matrix.platform }}.zip build/src/wownero-lws-daemon build/src/wownero-lws-admin - # Upload disabled to avoid network crash. Files are on the runner. \ No newline at end of file + # Upload disabled to avoid network crash. \ No newline at end of file