From 8619684c2dd220153cb81d1b0defa904b1d3b128 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Zwing?= Date: Sun, 13 Oct 2024 15:35:35 +0200 Subject: [PATCH] fexpeec --- .github/workflows/deb.yml | 54 +++++++++++++++++++ .packaging/ubuntu2204/Dockerfile | 1 + .packaging/ubuntu2204/fexpe/Dockerfile | 4 +- .packaging/ubuntu2204/fexpeec/DEBIAN/control | 5 ++ .packaging/ubuntu2204/fexpeec/DEBIAN/triggers | 1 + .packaging/ubuntu2204/fexpeec/Dockerfile | 15 ++++++ 6 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 .packaging/ubuntu2204/fexpeec/DEBIAN/control create mode 100644 .packaging/ubuntu2204/fexpeec/DEBIAN/triggers create mode 100644 .packaging/ubuntu2204/fexpeec/Dockerfile diff --git a/.github/workflows/deb.yml b/.github/workflows/deb.yml index f08ca0d0..2727050f 100644 --- a/.github/workflows/deb.yml +++ b/.github/workflows/deb.yml @@ -160,6 +160,60 @@ jobs: path: hangover-libwow64fex_${{ env.HOVERSION }}_arm64.deb + fex-pe-ec: + needs: foundations + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + - name: free disk space + run: | + sudo swapoff -a + sudo rm -f /swapfile + sudo apt clean + df -h + + - name: Cache docker image + id: cache-foundation + uses: actions/cache@v4 + env: + cache-name: cache-foundation + with: + path: foundationubuntu2204.tgz + key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('.packaging/ubuntu2204/Dockerfile') }} + + - name: Import docker image + run: docker image load -i foundationubuntu2204.tgz + + - name: get version + run: git describe --tags | sed "s/hangover-/HOVERSION=/" >> "$GITHUB_ENV"; git describe --tags | sed "s/hangover-/HOVERSION=/" + + - name: get shallow submodule + run: git submodule update --init --recursive --depth 1 fex + + - name: Setup packaging + run: | + cp -r .packaging/ubuntu2204/fexpeec/* fex + cp fex/LICENSE fex/DEBIAN/copyright + sed -i "s/HOVERSION/${HOVERSION}/g" fex/Dockerfile + sed -i "s/HOVERSION/${HOVERSION}/g" fex/DEBIAN/control + sed -i "s/starting FEX based/starting FEX (Hangover ${HOVERSION}) based/g" fex/Source/Windows/ARM64EC/Module.cpp + sed -i "s/starting FEX based/starting FEX (Hangover ${HOVERSION}) based/g" fex/Source/Windows/WOW64/Module.cpp + nproc + + - name: Build package + run: cd fex; docker build -t fexpeec . + + - name: Extract package + run: docker run --rm fexpeec cat /opt/deb/hangover-libarm64ecfex_${{ env.HOVERSION }}_arm64.deb > hangover-libarm64ecfex_${{ env.HOVERSION }}_arm64.deb + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: hangover-libarm64ecfex_${{ env.HOVERSION }}_arm64.deb + path: hangover-libarm64ecfex_${{ env.HOVERSION }}_arm64.deb + + qemu: if: false needs: foundations diff --git a/.packaging/ubuntu2204/Dockerfile b/.packaging/ubuntu2204/Dockerfile index 34c0ca64..90541c9f 100644 --- a/.packaging/ubuntu2204/Dockerfile +++ b/.packaging/ubuntu2204/Dockerfile @@ -65,3 +65,4 @@ RUN apt-get update && apt-get install -y --no-install-recommends \ libwayland-dev:arm64 RUN cd /opt; wget https://github.com/mstorsjo/llvm-mingw/releases/download/20241001/llvm-mingw-20241001-ucrt-ubuntu-20.04-x86_64.tar.xz; tar -xJf llvm-mingw-20241001-ucrt-ubuntu-20.04-x86_64.tar.xz; rm *.tar.xz +RUN cd /opt; wget https://github.com/bylaws/llvm-mingw/releases/download/20240929/llvm-mingw-20240929-ucrt-ubuntu-20.04-x86_64.tar.xz; tar -xJf llvm-mingw-20240929-ucrt-ubuntu-20.04-x86_64.tar.xz; rm *.tar.xz; mv llvm-mingw-20240929-ucrt-ubuntu-20.04-x86_64 bylaws-llvm-mingw-20240929-ucrt-ubuntu-20.04-x86_64 diff --git a/.packaging/ubuntu2204/fexpe/Dockerfile b/.packaging/ubuntu2204/fexpe/Dockerfile index da7be366..89197687 100644 --- a/.packaging/ubuntu2204/fexpe/Dockerfile +++ b/.packaging/ubuntu2204/fexpe/Dockerfile @@ -1,11 +1,9 @@ FROM foundationubuntu2204 -RUN cd /opt; wget https://github.com/bylaws/llvm-mingw/releases/download/20240929/llvm-mingw-20240929-ucrt-ubuntu-20.04-x86_64.tar.xz; tar -xJf llvm-mingw-20240929-ucrt-ubuntu-20.04-x86_64.tar.xz; rm *.tar.xz - RUN rm -rf /opt/fex; mkdir -p /opt/fex/ COPY ./ /opt/fex/ RUN ls -la /opt/fex/ -ENV PATH="/opt/llvm-mingw-20240929-ucrt-ubuntu-20.04-x86_64/bin:$PATH" +ENV PATH="/opt/bylaws-llvm-mingw-20240929-ucrt-ubuntu-20.04-x86_64/bin:$PATH" RUN cd /opt/fex; mkdir build; cd build; cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE=../toolchain_mingw.cmake -DENABLE_LTO=False -DMINGW_TRIPLE=aarch64-w64-mingw32 -DBUILD_TESTS=False ..; make -j `nproc` wow64fex RUN ls -la /opt/fex/build/Bin RUN aarch64-w64-mingw32-strip --strip-unneeded /opt/fex/build/Bin/libwow64fex.dll diff --git a/.packaging/ubuntu2204/fexpeec/DEBIAN/control b/.packaging/ubuntu2204/fexpeec/DEBIAN/control new file mode 100644 index 00000000..94423601 --- /dev/null +++ b/.packaging/ubuntu2204/fexpeec/DEBIAN/control @@ -0,0 +1,5 @@ +Package: hangover-libarm64ecfex +Version: HOVERSION +Architecture: arm64 +Maintainer: André Zwing +Description: FEX based x86-64 emulator library for Hangover diff --git a/.packaging/ubuntu2204/fexpeec/DEBIAN/triggers b/.packaging/ubuntu2204/fexpeec/DEBIAN/triggers new file mode 100644 index 00000000..dd866036 --- /dev/null +++ b/.packaging/ubuntu2204/fexpeec/DEBIAN/triggers @@ -0,0 +1 @@ +activate-noawait ldconfig diff --git a/.packaging/ubuntu2204/fexpeec/Dockerfile b/.packaging/ubuntu2204/fexpeec/Dockerfile new file mode 100644 index 00000000..604fca52 --- /dev/null +++ b/.packaging/ubuntu2204/fexpeec/Dockerfile @@ -0,0 +1,15 @@ +FROM foundationubuntu2204 + +RUN rm -rf /opt/fex; mkdir -p /opt/fex/ +COPY ./ /opt/fex/ +RUN ls -la /opt/fex/ +ENV PATH="/opt/bylaws-llvm-mingw-20240929-ucrt-ubuntu-20.04-x86_64/bin:$PATH" +RUN cd /opt/fex; mkdir build; cd build; cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_TOOLCHAIN_FILE=../toolchain_mingw.cmake -DENABLE_LTO=False -DMINGW_TRIPLE=arm64ec-w64-mingw32 -DBUILD_TESTS=False ..; make -j `nproc` arm64ecfex +RUN ls -la /opt/fex/build/Bin +RUN arm64ec-w64-mingw32-strip --strip-unneeded /opt/fex/build/Bin/libarm64ecfex.dll +RUN mkdir -p /opt/deb/hangover-libarm64ecfex/DEBIAN /opt/deb/hangover-libarm64ecfex/usr/lib/wine/aarch64-windows /opt/deb/hangover-libarm64ecfex/usr/share/doc/hangover-libarm64ecfex +COPY DEBIAN /opt/deb/hangover-libarm64ecfex/DEBIAN/ +RUN cp /opt/deb/hangover-libarm64ecfex/DEBIAN/copyright /opt/deb/hangover-libarm64ecfex/usr/share/doc/hangover-libarm64ecfex/; \ + cp /opt/fex/build/Bin/libarm64ecfex.dll /opt/deb/hangover-libarm64ecfex/usr/lib/wine/aarch64-windows/; \ + cd /opt/deb; mv hangover-libarm64ecfex hangover-libarm64ecfex_HOVERSION_arm64; \ + dpkg-deb --build --root-owner-group hangover-libarm64ecfex_HOVERSION_arm64