| sudo: false |
| dist: trusty |
| language: cpp |
| |
| stages: |
| - name: test |
| - name: build |
| # Don't run build stage for pull requests and other branches than master |
| # to save time and resources. |
| if: type != pull_request AND (branch = master OR tag IS present) |
| |
| jobs: |
| include: |
| # Build with clang and run tests on the host system (Ubuntu). |
| - &test-ubuntu |
| stage: test |
| compiler: clang |
| python: 2.7 |
| node_js: 9 |
| addons: |
| apt: |
| sources: ['ubuntu-toolchain-r-test'] |
| packages: ['cmake', 'g++-5'] |
| before_install: |
| - export ASAN_OPTIONS="symbolize=1" |
| install: |
| - pip install --user flake8==3.4.1 |
| # get jsvu in order to get more js engines |
| - npm install jsvu -g |
| - export PATH="${HOME}/.jsvu:${PATH}" |
| - jsvu --os=linux64 --engines=spidermonkey |
| before_script: |
| # Check the style of a subset of Python code until the other code is updated. |
| - flake8 ./scripts/ |
| - ./check.py --test-waterfall --only-prepare |
| script: |
| - cmake . -DCMAKE_C_FLAGS="$COMPILER_FLAGS" -DCMAKE_CXX_FLAGS="$COMPILER_FLAGS" |
| - make -j2 |
| - ./check.py --test-waterfall |
| |
| - <<: *test-ubuntu |
| env: | |
| COMPILER_FLAGS="-fsanitize=undefined -fno-sanitize-recover=all -fsanitize-blacklist=$(pwd)/ubsan.blacklist" |
| |
| # FIXME we currently must disable LSAN entirely, see #1351 |
| #- <<: *test-ubuntu |
| # env: | |
| # COMPILER_FLAGS="-fsanitize=address" |
| |
| - <<: *test-ubuntu |
| env: | |
| COMPILER_FLAGS="-fsanitize=thread" |
| |
| # Build with gcc 5 and run tests on the host system (Ubuntu). |
| - <<: *test-ubuntu |
| compiler: gcc |
| env: | |
| CC="gcc-5" |
| CXX="g++-5" |
| |
| # Build the .js outputs using emcc |
| - &test-emcc |
| stage: test |
| compiler: clang |
| python: 2.7 |
| node_js: 7 |
| language: node_js |
| node_js: |
| - node |
| sudo: required |
| services: |
| - docker |
| before_install: |
| - docker run -dit --name emscripten -v $(pwd):/src trzeci/emscripten:sdk-incoming-64bit bash |
| script: |
| # run binaryen.js and wasm.js tests before and after building, so we see if the bundled |
| # version is good too |
| - docker exec -it emscripten bash ./travis-emcc-tests.sh |
| |
| # Build with gcc 6.3 and run tests on Alpine Linux (inside chroot). |
| # Note: Alpine uses musl libc. |
| - &test-alpine |
| stage: test |
| sudo: true |
| language: minimal |
| compiler: gcc |
| env: ARCH=x86_64 |
| before_install: |
| - "wget 'https://raw.githubusercontent.com/alpinelinux/alpine-chroot-install/v0.7.0/alpine-chroot-install' \ |
| && echo '090d323d887ef3a2fd4e752428553f22a52b87bb alpine-chroot-install' | sha1sum -c || travis_terminate 1" |
| - alpine() { /alpine/enter-chroot -u "$USER" "$@"; } |
| install: |
| - sudo sh alpine-chroot-install -a "$ARCH" -p 'build-base cmake git nodejs python2' |
| before_script: |
| - alpine ./check.py --test-waterfall --only-prepare |
| script: |
| - alpine cmake . |
| - alpine make -j2 |
| - alpine ./check.py --test-waterfall |
| |
| |
| # Build statically linked release binaries with gcc 6.3 on Alpine Linux |
| # (inside chroot). If building a tagged commit, then deploy release tarball |
| # to GitHub Releases. |
| - &build-alpine |
| <<: *test-alpine |
| stage: build |
| env: ARCH=x86_64 |
| # Don't run before_script inherited from *test-alpine. |
| before_script: skip |
| script: |
| - alpine cmake -DCMAKE_BUILD_TYPE=Release |
| -DCMAKE_VERBOSE_MAKEFILE=ON |
| -DCMAKE_CXX_FLAGS="-static -no-pie" |
| -DCMAKE_C_FLAGS="-static -no-pie" . |
| - alpine make -j2 |
| - alpine find bin/ -type f -perm -u=x -exec strip {} + |
| - alpine ls -lh bin/ |
| # Check if the built executables are really statically linked. |
| - if [ -n "$(find bin/ -type f -perm -u=x -exec file {} + | grep -Fvw 'statically linked')" ]; then |
| file bin/*; false; |
| fi |
| before_deploy: |
| - PKGNAME="binaryen-$TRAVIS_TAG-$ARCH-linux" |
| - mv bin binaryen-$TRAVIS_TAG |
| - tar -czf $PKGNAME.tar.gz binaryen-$TRAVIS_TAG |
| - sha256sum $PKGNAME.tar.gz > $PKGNAME.tar.gz.sha256 |
| deploy: |
| provider: releases |
| api_key: |
| secure: "cu6CD5BaycXdCylvcs+Fho5+OVTkh9mZwH8RTnNpXo9hAQzLJDFgcNBHeXHEHtcp4IWf/YZSMu48UKnpU9sP5iF0AS4rtuEBJk5gOKkgB8GWnuIOePFkfANAZMN+EncuUwhAdN56iOAESXqnlHYgmJjyRVCHOxiezuWTOYui4lxoIAdxvOMJc3E9yfzUq4Epm2GDszSDN7ObmRIJpVgDXD9Sze1Xv4IkbIwc0biCmduGGLp3ow2KM+RZ4tOF0c8P0ki49vOFHr6n2Vmqg0QCiVNd4JJBRBCGn6Tzip2jsTQewnUUvpYCZafLeRV//v//voNA6ZUz91yXR23GIhkfdlyuqnz3/7l335Sa749M1lpYfSRWvwg9mJEqP66mxqTrWzj1xSItr9T+p0WhSmRN/4UEJPuItYPSma6kfv+H7qhLa3ZYKECH8hHW79grYmUWtiX0vQVIgnctJGgboPNLfG/1mNtmCI241wK0S3zvL2okdZH8/PqxfllYHMBTUp9lUrop8eoLKPgHZPm6+V20dgTUgOuGTZzTWwQ7Uk/Pg8JMUgkre5y0eo6pP3z0vDW1NNFNhouJ5oGkAeK/HAznr8Q0zWWF1vGFhoyC8ok/IJ7yKxK9scJVPBDe4oox6tr1zlsxzNEYE0/mY3JjuWV0z8RgjrIAbRe8IpGTkYz5VOM=" |
| file: binaryen-$TRAVIS_TAG-*.tar.gz* |
| file_glob: true |
| skip_cleanup: true |
| on: |
| tags: true |
| |
| # Build binaries for other architectures using QEMU user-mode emulation. |
| # Note: We don't run tests for these architectures, because some fail under |
| # QEMU/binfmt and it takes too long time (hits time limit on Travis). |
| # Note: We had to remove ppc64le, because it takes more than 50 minutes |
| # (Travis limit) to build. :( |
| - <<: *build-alpine |
| env: ARCH=x86 |
| |
| - <<: *build-alpine |
| env: ARCH=aarch64 |
| |
| - <<: *build-alpine |
| env: ARCH=armhf |
| |
| notifications: |
| email: false |