diff options
| author | theofficialgman <28281419+theofficialgman@users.noreply.github.com> | 2025-09-03 02:10:28 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-09-03 08:10:28 +0200 |
| commit | 2de6058c6adb37cb2333aa653da77ac145cc26b5 (patch) | |
| tree | 6775d7970282329fdf3f624481f52f6f3edc362f | |
| parent | 986e271280272f239a38efc5bbeda80f5717070a (diff) | |
| download | box64-2de6058c6adb37cb2333aa653da77ac145cc26b5.tar.gz box64-2de6058c6adb37cb2333aa653da77ac145cc26b5.zip | |
[CI] Added ARM64-GCC-8 target (Ubuntu Bionic) (#2987)
* add ARM64-GCC-8 target uses taiki-e/checkout-action@v1 instead of actions/checkout@v4 due to ubuntu bionic container not having new enough nodejs or glibc to run most github actions does not build build Trace target due to ubuntu bionic not having the libzydis-dev package adds cmake ppa for a newer cmake version that box64 requires uses gcc-8 specifically (instead of bionic's default gcc-7) due to historically better compatibility with box64 (and it has been used for years now by installation scripts and other ci such as https://github.com/Pi-Apps-Coders/box64-debs) * comptibility for old glibc * nodejs * zstd * exclude static build --------- Co-authored-by: Yang Liu <numbksco@gmail.com>
| -rw-r--r-- | .github/workflows/release.yml | 46 | ||||
| -rw-r--r-- | src/wrapped/wrappedlibc.c | 19 |
2 files changed, 59 insertions, 6 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a6245124..d8c035e9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,12 +25,17 @@ on: - "CMakeLists.txt" - "**/*.yml" +defaults: + run: + # needed on container images which could default to sh + shell: bash + jobs: build: strategy: fail-fast: false matrix: - platform: [X64, RISCV, RK3588, ARM64, ANDROID, TERMUX, LARCH64, ANDROID_GLIBC, WOW64] + platform: [X64, RISCV, RK3588, ARM64, ANDROID, TERMUX, LARCH64, ANDROID_GLIBC, WOW64, ARM64-GCC-8] type: [Release, Trace, StaticBuild, Box32] os: [ubuntu-latest, ubuntu-22.04-arm] exclude: @@ -68,20 +73,37 @@ jobs: type: StaticBuild - platform: WOW64 type: Box32 + - platform: ARM64-GCC-8 + os: ubuntu-latest + - platform: ARM64-GCC-8 + type: Trace + - platform: ARM64-GCC-8 + type: StaticBuild - platform: ANDROID type: Trace - platform: TERMUX type: Trace - platform: LARCH64 type: Trace + include: + - platform: ARM64-GCC-8 + image: arm64v8/ubuntu:18.04 runs-on: ${{ matrix.os }} + container: + image: ${{ matrix.image || '' }} steps: - name: "Checkout Box64 Repository" + if: ${{ matrix.platform != 'ARM64-GCC-8' }} uses: actions/checkout@v4 + - name: "Checkout Box64 Repository (No NodeJS)" + if: ${{ matrix.platform == 'ARM64-GCC-8' }} + uses: taiki-e/checkout-action@v1 + - name: Get all the unique changed directory names id: changed-files-dir-names + if: ${{ matrix.platform != 'ARM64-GCC-8' }} uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46 with: dir_names: "true" @@ -139,9 +161,15 @@ jobs: - name: "Environment preparation" if: steps.early-exit.outcome == 'failure' run: | - sudo apt-get update + if [[ ${{ matrix.platform }} == 'ARM64-GCC-8' ]]; then + apt-get update + apt install -y sudo + else + sudo apt-get update + zydis_package=libzydis-dev + fi if [[ ${{ matrix.platform }} != 'X64' && ${{ matrix.platform }} != 'RISCV' && ${{ matrix.platform }} != 'LARCH64' ]]; then - sudo apt-get -y install git cmake make python3 patchelf libzydis-dev + sudo apt-get -y install git cmake make python3 patchelf $zydis_package if [[ ${{ matrix.platform }} == 'ANDROID' || ${{ matrix.platform }} == 'TERMUX' ]]; then sudo apt-get -y install p7zip wget -q https://dl.google.com/android/repository/android-ndk-r26b-linux.zip @@ -164,6 +192,18 @@ jobs: wget -q https://github.com/mstorsjo/llvm-mingw/releases/download/${LLVM_MINGW_VERSION}/llvm-mingw-${LLVM_MINGW_VERSION}-ucrt-ubuntu-22.04-aarch64.tar.xz tar -xf llvm-mingw-${LLVM_MINGW_VERSION}-ucrt-ubuntu-22.04-aarch64.tar.xz echo "MINGW_COMPILER_PATH=$PWD/llvm-mingw-${LLVM_MINGW_VERSION}-ucrt-ubuntu-22.04-aarch64/bin" >> $GITHUB_ENV + elif [[ ${{ matrix.platform }} == 'ARM64-GCC-8' ]]; then + # some of these dependencies may be unnecessary to explicitly install depending on the image + sudo apt-get -y install git software-properties-common lsb-release \ + wget curl build-essential autoconf automake \ + pkg-config ca-certificates \ + python3 make gettext zstd \ + gcc-8 g++-8 + sudo add-apt-repository ppa:theofficialgman/cmake-bionic -y + sudo apt update + sudo apt install -y cmake + echo "BOX64_PLATFORM_MARCRO=-DARM64=1" >> $GITHUB_ENV + echo "BOX64_COMPILER=aarch64-linux-gnu-gcc-8" >> $GITHUB_ENV else sudo apt-get -y install git gcc-aarch64-linux-gnu echo "BOX64_PLATFORM_MARCRO=-D${{ matrix.platform }}=1" >> $GITHUB_ENV diff --git a/src/wrapped/wrappedlibc.c b/src/wrapped/wrappedlibc.c index 4fa9ed62..08e412d0 100644 --- a/src/wrapped/wrappedlibc.c +++ b/src/wrapped/wrappedlibc.c @@ -3203,7 +3203,20 @@ EXPORT void* my_mallinfo(x64emu_t* emu, void* p) return p; } -typedef struct mallinfo2 (*mallinfo2_fnc)(void); +struct my_mallinfo2_s { + size_t arena; + size_t ordblks; + size_t smblks; + size_t hblks; + size_t hblkhd; + size_t usmblks; + size_t fsmblks; + size_t uordblks; + size_t fordblks; + size_t keepcost; +}; + +typedef struct my_mallinfo2_s (*mallinfo2_fnc)(void); EXPORT void* my_mallinfo2(x64emu_t* emu, void* p) { static mallinfo2_fnc f = NULL; @@ -3213,9 +3226,9 @@ EXPORT void* my_mallinfo2(x64emu_t* emu, void* p) f = (mallinfo2_fnc)dlsym(my_lib->w.lib, "mallinfo2"); } if(f) - *(struct mallinfo2*)p=f(); + *(struct my_mallinfo2_s*)p = f(); else - memset(p, 0, sizeof(struct mallinfo2)); + memset(p, 0, sizeof(struct my_mallinfo2_s)); return p; } |