binaryen-sys 0.12.0

Bindings to the binaryen library
Documentation
name: Build Release

# Trigger whenever a release is created
on:
  release:
    types:
      - created

jobs:
  build:
    name: build
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [macos-latest, windows-latest]
    defaults:
      run:
        shell: bash
    steps:
    - uses: actions/setup-python@v1
      with:
        python-version: '3.x'
    - uses: actions/checkout@v1
      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
      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 --config Release --target install

    - 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.event.release.tag_name }}
        PKGNAME="binaryen-$VERSION-x86_64-$OSNAME"
        TARBALL=$PKGNAME.tar.gz
        SHASUM=$PKGNAME.tar.gz.sha256
        mv out/install binaryen-$VERSION
        tar -czf $TARBALL binaryen-$VERSION
        echo "::set-output name=tarball::$TARBALL"
        echo "::set-output name=shasum::$SHASUM"

    - name: upload tarball
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ github.event.release.upload_url }}
        asset_path: ./${{ steps.archive.outputs.tarball }}
        asset_name: ${{ steps.archive.outputs.tarball }}
        asset_content_type: application/gzip

    # We do the shasum as a seprate step because this tool doesn't
    # exist on windows.
    - name: shasum
      id: shasum
      run: shasum -a 256 ${{ steps.archive.outputs.tarball }} > ${{ steps.archive.outputs.shasum }}
      if: matrix.os != 'windows-latest'

    - name: upload shasum
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ github.event.release.upload_url }}
        asset_path: ./${{ steps.archive.outputs.shasum }}
        asset_name: ${{ steps.archive.outputs.shasum }}
        asset_content_type: text/plain
      if: matrix.os != 'windows-latest'

  # Build with gcc 6.3 and run tests on Alpine Linux (inside chroot).
  # Note: Alpine uses musl libc.
  build-alpine:
    name: alpine
    runs-on: ubuntu-latest
    steps:
    - uses: actions/setup-python@v1
      with:
        python-version: '3.x'
    - uses: actions/checkout@v1
    - 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

    - name: install packages
      run: |
        ./alpine.sh apk update
        ./alpine.sh apk add build-base cmake git python3 clang ninja

    - 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

    - name: build
      run: |
        ./alpine.sh ninja install

    - name: test
      run: ./alpine.sh python3 ./check.py

    - name: archive
      id: archive
      run: |
        VERSION=${{ github.event.release.tag_name }}
        PKGNAME="binaryen-$VERSION-x86_64-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
        shasum -a 256 $TARBALL > $SHASUM
        echo "::set-output name=tarball::$TARBALL"
        echo "::set-output name=shasum::$SHASUM"

    - name: upload tarball
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ github.event.release.upload_url }}
        asset_path: ./${{ steps.archive.outputs.tarball }}
        asset_name: ${{ steps.archive.outputs.tarball }}
        asset_content_type: application/gzip

    - name: upload shasum
      uses: actions/upload-release-asset@v1
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      with:
        upload_url: ${{ github.event.release.upload_url }}
        asset_path: ./${{ steps.archive.outputs.shasum }}
        asset_name: ${{ steps.archive.outputs.shasum }}
        asset_content_type: text/plain