Release version 123 (#7394) #56
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Create Release | |
| # Trigger whenever a tag is created/updated | |
| on: | |
| push: | |
| tags: | |
| - "*" | |
| permissions: | |
| contents: write | |
| jobs: | |
| build: | |
| name: build | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [macos-latest, windows-latest] | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: install ninja (macos) | |
| run: brew install ninja | |
| if: matrix.os == 'macos-latest' | |
| - name: install ninja (win) | |
| run: choco install ninja | |
| if: matrix.os == 'windows-latest' | |
| - name: mkdir | |
| run: mkdir -p out | |
| - name: cmake (macos) | |
| run: | | |
| cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=out/install -DCMAKE_OSX_ARCHITECTURES=x86_64 | |
| cmake -S . -B out-arm64 -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=out-arm64/install -DCMAKE_OSX_ARCHITECTURES=arm64 | |
| if: matrix.os == 'macos-latest' | |
| - name: cmake (win) | |
| # -G "Visual Studio 15 2017" | |
| run: cmake -S . -B out -DCMAKE_INSTALL_PREFIX=out/install | |
| if: matrix.os == 'windows-latest' | |
| - name: build | |
| run: cmake --build out -v --config Release --target install | |
| - name: build-arm64 | |
| run: cmake --build out-arm64 -v --config Release --target install | |
| if: matrix.os == 'macos-latest' | |
| - name: strip | |
| run: find out*/install/ -type f -perm -u=x -exec strip -x {} + | |
| if: matrix.os != 'windows-latest' | |
| - name: archive | |
| id: archive | |
| run: | | |
| OSNAME=$(echo ${{ matrix.os }} | sed 's/-latest//') | |
| VERSION=$GITHUB_REF_NAME | |
| PKGNAME="binaryen-$VERSION-x86_64-$OSNAME" | |
| TARBALL=$PKGNAME.tar.gz | |
| SHASUM=$PKGNAME.tar.gz.sha256 | |
| rm -rf binaryen-$VERSION | |
| mv out/install binaryen-$VERSION | |
| tar -czf $TARBALL binaryen-$VERSION | |
| # on Windows, MSYS2 will strip the carriage return from CMake output | |
| cmake -E sha256sum $TARBALL > $SHASUM | |
| echo "TARBALL=$TARBALL" >> $GITHUB_OUTPUT | |
| echo "SHASUM=$SHASUM" >> $GITHUB_OUTPUT | |
| - name: archive-arm64 | |
| id: archive-arm64 | |
| run: | | |
| OSNAME=$(echo ${{ matrix.os }} | sed 's/-latest//') | |
| VERSION=$GITHUB_REF_NAME | |
| PKGNAME="binaryen-$VERSION-arm64-$OSNAME" | |
| TARBALL=$PKGNAME.tar.gz | |
| SHASUM=$PKGNAME.tar.gz.sha256 | |
| rm -rf binaryen-$VERSION | |
| mv out-arm64/install binaryen-$VERSION | |
| tar -czf $TARBALL binaryen-$VERSION | |
| # on Windows, MSYS2 will strip the carriage return from CMake output | |
| cmake -E sha256sum $TARBALL > $SHASUM | |
| echo "TARBALL=$TARBALL" >> $GITHUB_OUTPUT | |
| echo "SHASUM=$SHASUM" >> $GITHUB_OUTPUT | |
| if: matrix.os == 'macos-latest' | |
| - name: upload tarball | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| draft: true | |
| files: | | |
| ${{ steps.archive.outputs.TARBALL }} | |
| ${{ steps.archive.outputs.SHASUM }} | |
| ${{ steps.archive-arm64.outputs.TARBALL }} | |
| ${{ steps.archive-arm64.outputs.SHASUM }} | |
| # Build with gcc 6.3 and run tests on Alpine Linux (inside chroot). | |
| # Note: Alpine uses musl libc. | |
| build-alpine: | |
| name: alpine | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, ubuntu-24.04-arm] | |
| steps: | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.x' | |
| - uses: actions/checkout@v4 | |
| with: | |
| submodules: true | |
| - name: start docker | |
| run: | | |
| if [[ "${{ matrix.docker_platform }}" == "ubuntu-24.04-arm" ]]; then | |
| platform="--platform=linux/arm64" | |
| fi | |
| docker run -w /src -dit $platform --name alpine -v $PWD:/src node:lts-alpine | |
| echo 'docker exec alpine "$@";' > ./alpine.sh | |
| chmod +x ./alpine.sh | |
| - name: install packages | |
| run: | | |
| ./alpine.sh apk update | |
| ./alpine.sh apk add build-base cmake git python3 clang ninja py3-pip | |
| - name: avoid d8 tests (jsvu is not compatible with alpine) | |
| run: | | |
| ./alpine.sh rm -Rf test/lit/d8 | |
| - name: install python dev dependencies | |
| run: ./alpine.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 -DMIMALLOC_STATIC=ON -DCMAKE_INSTALL_PREFIX=install | |
| - name: build | |
| run: | | |
| ./alpine.sh ninja install | |
| - name: test | |
| run: ./alpine.sh python3 ./check.py | |
| - name: archive | |
| id: archive | |
| run: | | |
| VERSION=$GITHUB_REF_NAME | |
| ARCH=$(./alpine.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 | |
| tar -czf $TARBALL binaryen-$VERSION | |
| cmake -E sha256sum $TARBALL > $SHASUM | |
| echo "TARBALL=$TARBALL" >> $GITHUB_OUTPUT | |
| echo "SHASUM=$SHASUM" >> $GITHUB_OUTPUT | |
| - name: upload tarball | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| draft: true | |
| files: | | |
| ${{ steps.archive.outputs.TARBALL }} | |
| ${{ steps.archive.outputs.SHASUM }} | |
| # Build using Emscripten to JavaScript+WebAssembly. | |
| build-node: | |
| name: node | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.x' | |
| - uses: actions/checkout@v1 | |
| with: | |
| submodules: true | |
| - name: install ninja | |
| run: sudo apt-get install ninja-build | |
| - name: emsdk install | |
| run: | | |
| mkdir $HOME/emsdk | |
| git clone --depth 1 https://github.com/emscripten-core/emsdk.git $HOME/emsdk | |
| $HOME/emsdk/emsdk update-tags | |
| $HOME/emsdk/emsdk install tot | |
| $HOME/emsdk/emsdk activate tot | |
| - name: update path | |
| run: echo "PATH=$PATH:$HOME/emsdk" >> $GITHUB_ENV | |
| # Configure with wasm EH and pthreads for maximal performance. | |
| - name: cmake | |
| run: | | |
| source $HOME/emsdk/emsdk_env.sh | |
| emcmake cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=out/install -DEMSCRIPTEN_ENABLE_WASM_EH=ON -DEMSCRIPTEN_ENABLE_PTHREADS=ON | |
| # Build wasm-opt for now TODO add other tools as desired | |
| - name: build | |
| run: ninja -C out wasm-opt | |
| # Minimal smoke test: roundtrip a file. | |
| # TODO: Add more testing here, but the full test suite is overkill as there | |
| # is a 0.5 second cost to each run of wasm-opt.js | |
| - name: test | |
| run: | | |
| node out/bin/wasm-opt.js test/hello_world.wat --print > out/t.wat | |
| diff test/hello_world.wat out/t.wat | |
| - name: archive | |
| id: archive | |
| run: | | |
| VERSION=$GITHUB_REF_NAME | |
| PKGNAME="binaryen-$VERSION-node" | |
| TARBALL=$PKGNAME.tar.gz | |
| SHASUM=$PKGNAME.tar.gz.sha256 | |
| mkdir binaryen-$VERSION | |
| cp out/bin/wasm-opt* binaryen-$VERSION/ | |
| tar -czf $TARBALL binaryen-$VERSION | |
| cmake -E sha256sum $TARBALL > $SHASUM | |
| echo "TARBALL=$TARBALL" >> $GITHUB_OUTPUT | |
| echo "SHASUM=$SHASUM" >> $GITHUB_OUTPUT | |
| - name: upload tarball | |
| uses: softprops/action-gh-release@v1 | |
| with: | |
| draft: true | |
| files: | | |
| ${{ steps.archive.outputs.TARBALL }} | |
| ${{ steps.archive.outputs.SHASUM }} |