From e2b0cb9e28ca812e2f3c9b1207965e6b207ecdde Mon Sep 17 00:00:00 2001 From: Darren Worrall Date: Thu, 22 Feb 2024 09:04:52 +0000 Subject: [PATCH 1/2] Build and release on aarch64 --- .github/workflows/create_release.yml | 31 +++++++++++++++++----------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index 7049549fc8f..21ed39ce682 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -106,6 +106,9 @@ jobs: build-alpine: name: alpine runs-on: ubuntu-latest + strategy: + matrix: + docker_platform: [amd64, arm64] steps: - uses: actions/setup-python@v1 with: @@ -113,40 +116,44 @@ jobs: - uses: actions/checkout@v1 with: submodules: true + - name: Set up QEMU + uses: docker/setup-qemu-action@v3 - name: start docker run: | - docker run -w /src -dit --name alpine -v $PWD:/src node:lts-alpine - echo 'docker exec alpine "$@";' > ./alpine.sh - chmod +x ./alpine.sh + docker run -w /src -dit --platform=linux/${{ matrix.docker_platform }} --name alpine-${{ matrix.docker_platform }} -v $PWD:/src node:lts-alpine + echo 'docker exec alpine-${{ matrix.docker_platform }} "$@";' > ./alpine-${{ matrix.docker_platform }}.sh + chmod +x ./alpine-${{ matrix.docker_platform }}.sh + - name: install packages run: | - ./alpine.sh apk update - ./alpine.sh apk add build-base cmake git python3 clang ninja py3-pip + ./alpine-${{ matrix.docker_platform }}.sh apk update + ./alpine-${{ matrix.docker_platform }}.sh apk add build-base cmake git python3 clang ninja py3-pip - name: install python dev dependencies - run: ./alpine.sh pip3 install -r requirements-dev.txt + run: ./alpine-${{ matrix.docker_platform }}.sh pip3 install --break-system-packages -r requirements-dev.txt - name: cmake run: | - ./alpine.sh cmake . -G Ninja -DCMAKE_CXX_FLAGS="-static" -DCMAKE_C_FLAGS="-static" -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC_LIB=ON -DCMAKE_INSTALL_PREFIX=install + ./alpine-${{ matrix.docker_platform }}.sh cmake . -G Ninja -DCMAKE_CXX_FLAGS="-static" -DCMAKE_C_FLAGS="-static" -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC_LIB=ON -DCMAKE_INSTALL_PREFIX=install-${{ matrix.docker_platform }} - name: build run: | - ./alpine.sh ninja install + ./alpine-${{ matrix.docker_platform }}.sh ninja install - name: test - run: ./alpine.sh python3 ./check.py + run: ./alpine-${{ matrix.docker_platform }}.sh python3 ./check.py - name: archive id: archive run: | VERSION=$GITHUB_REF_NAME - PKGNAME="binaryen-$VERSION-x86_64-linux" + ARCH=$(./alpine-${{ matrix.docker_platform }}.sh uname -m) + PKGNAME="binaryen-$VERSION-$ARCH-linux" TARBALL=$PKGNAME.tar.gz SHASUM=$PKGNAME.tar.gz.sha256 - ./alpine.sh find install/ -type f -perm -u=x -exec strip {} + - mv install binaryen-$VERSION + ./alpine-${{ matrix.docker_platform }}.sh find install-${{ matrix.docker_platform }}/ -type f -perm -u=x -exec strip {} + + mv install-${{ matrix.docker_platform }} binaryen-$VERSION tar -czf $TARBALL binaryen-$VERSION cmake -E sha256sum $TARBALL > $SHASUM echo "::set-output name=tarball::$TARBALL" From a81587c7c283e248456689ddfc8552f26c3b2b45 Mon Sep 17 00:00:00 2001 From: Darren Worrall Date: Fri, 23 Feb 2024 10:12:48 +0000 Subject: [PATCH 2/2] PR feedback --- .github/workflows/create_release.yml | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index 21ed39ce682..8b5bb8ac0fb 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -118,42 +118,44 @@ jobs: submodules: true - name: Set up QEMU uses: docker/setup-qemu-action@v3 + if: matrix.docker_platform != 'amd64' + - name: start docker run: | - docker run -w /src -dit --platform=linux/${{ matrix.docker_platform }} --name alpine-${{ matrix.docker_platform }} -v $PWD:/src node:lts-alpine - echo 'docker exec alpine-${{ matrix.docker_platform }} "$@";' > ./alpine-${{ matrix.docker_platform }}.sh - chmod +x ./alpine-${{ matrix.docker_platform }}.sh + docker run -w /src -dit --platform=linux/${{ matrix.docker_platform }} --name alpine -v $PWD:/src node:lts-alpine + echo 'docker exec alpine "$@";' > ./alpine.sh + chmod +x ./alpine.sh - name: install packages run: | - ./alpine-${{ matrix.docker_platform }}.sh apk update - ./alpine-${{ matrix.docker_platform }}.sh apk add build-base cmake git python3 clang ninja py3-pip + ./alpine.sh apk update + ./alpine.sh apk add build-base cmake git python3 clang ninja py3-pip - name: install python dev dependencies - run: ./alpine-${{ matrix.docker_platform }}.sh pip3 install --break-system-packages -r requirements-dev.txt + run: ./alpine.sh pip3 install --break-system-packages -r requirements-dev.txt - name: cmake run: | - ./alpine-${{ matrix.docker_platform }}.sh cmake . -G Ninja -DCMAKE_CXX_FLAGS="-static" -DCMAKE_C_FLAGS="-static" -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC_LIB=ON -DCMAKE_INSTALL_PREFIX=install-${{ matrix.docker_platform }} + ./alpine.sh cmake . -G Ninja -DCMAKE_CXX_FLAGS="-static" -DCMAKE_C_FLAGS="-static" -DCMAKE_BUILD_TYPE=Release -DBUILD_STATIC_LIB=ON -DCMAKE_INSTALL_PREFIX=install - name: build run: | - ./alpine-${{ matrix.docker_platform }}.sh ninja install + ./alpine.sh ninja install - name: test - run: ./alpine-${{ matrix.docker_platform }}.sh python3 ./check.py + run: ./alpine.sh python3 ./check.py - name: archive id: archive run: | VERSION=$GITHUB_REF_NAME - ARCH=$(./alpine-${{ matrix.docker_platform }}.sh uname -m) + ARCH=$(./alpine.sh uname -m) PKGNAME="binaryen-$VERSION-$ARCH-linux" TARBALL=$PKGNAME.tar.gz SHASUM=$PKGNAME.tar.gz.sha256 - ./alpine-${{ matrix.docker_platform }}.sh find install-${{ matrix.docker_platform }}/ -type f -perm -u=x -exec strip {} + - mv install-${{ matrix.docker_platform }} binaryen-$VERSION + ./alpine.sh find install/ -type f -perm -u=x -exec strip {} + + mv install binaryen-$VERSION tar -czf $TARBALL binaryen-$VERSION cmake -E sha256sum $TARBALL > $SHASUM echo "::set-output name=tarball::$TARBALL"