# travis.yml for testing radare2. # Initially written in 2014-2016 # by jn__. Updated 2018 by damo22 # xvilka, pancake, ret2libc in 2020 language: generic dist: trusty conditions: v1 branches: only: - master - /^release-.*$/ - /^prerelease-.*$/ services: - docker os: osx jobs: fast_finish: true include: # emscripten #- if: (branch = master AND type = push) OR head_branch =~ ^wasm-* # os: linux # name: WASM # env: EMSCRIPTEN=1 # Linux with GCC on PowerPC - if: (branch = master AND type = push) OR head_branch =~ ^ppc64-* os: linux name: PPC64 arch: ppc64le dist: bionic env: NODOCKER=1 COMPILER_NAME=gcc CXX=g++ CC=gcc CFLAGS="-DR2_ASSERT_STDOUT=1" R2_ARM64_AS=aarch64-linux-gnu-as R2_ARM32_AS=arm-linux-gnueabi-as R2_X86_AS=x86_64-linux-gnu-as addons: apt: packages: - binutils-aarch64-linux-gnu - binutils-arm-linux-gnueabi - binutils-x86-64-linux-gnu # Linux with GCC on System Z - if: (branch = master AND type = push) OR head_branch =~ ^s390x-* os: linux name: S390X arch: s390x dist: bionic env: NODOCKER=1 COMPILER_NAME=gcc CXX=g++ CC=gcc CFLAGS="-DR2_ASSERT_STDOUT=1" R2_X86_AS=x86_64-w64-mingw32-as addons: apt: packages: - binutils-mingw-w64-x86-64 # Linux with GCC on ARMv8 (64bit) - if: (branch = master AND type = push) OR head_branch =~ ^arm64-* os: linux name: ARM64 arch: arm64 dist: bionic env: NODOCKER=1 COMPILER_NAME=gcc CXX=g++ CC=gcc CFLAGS="-DR2_ASSERT_STDOUT=1" R2_ARM32_AS=arm-linux-gnueabi-as R2_X86_AS=x86_64-linux-gnu-as R2_PPC_AS=powerpc64le-linux-gnu-as addons: apt: packages: - binutils-arm-linux-gnueabi - binutils-x86-64-linux-gnu - binutils-powerpc64le-linux-gnu # Run Fuzzing Sanity Test on every push # XXX its broken it complains about invalid key #- os: linux # env: COMPILER_NAME=clang CXX=clang++ CC=clang R2_TESTS_DISABLE=1 FUZZIT=0 INSTALL_SYSTEM=static CXXFLAGS="-fsanitize=fuzzer" # TODO: move this as new GitHub workflows # release-only: meson build with system libraries - if: head_branch =~ ^release-* OR head_branch =~ ^prerelease-* OR branch =~ ^release-* OR branch =~ ^prerelease-* os: linux env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson R2_SYS_MAGIC=true R2_SYS_ZIP=true R2_SYS_LZ4=true R2_SYS_ZLIB=true R2_SYS_OPENSSL=true # release-only: nogpl plugins file, just test if it builds - if: head_branch =~ ^release-* OR head_branch =~ ^prerelease-* OR branch =~ ^release-* OR branch =~ ^prerelease-* os: linux env: COMPILER_NAME=gcc CXX=g++ CC=gcc R2_PLUGINS_FILE=nogpl R2_TESTS_DISABLE=1 # release-only: static plugins file, just test if it builds - if: head_branch =~ ^release-* OR head_branch =~ ^prerelease-* OR branch =~ ^release-* OR branch =~ ^prerelease-* os: linux env: COMPILER_NAME=gcc CXX=g++ CC=gcc R2_PLUGINS_FILE=static R2_TESTS_DISABLE=1 # release-only: tiny plugins file, just test if it builds - if: head_branch =~ ^release-* OR head_branch =~ ^prerelease-* OR branch =~ ^release-* OR branch =~ ^prerelease-* os: linux env: COMPILER_NAME=gcc CXX=g++ CC=gcc R2_PLUGINS_FILE=tiny R2_TESTS_DISABLE=1 # release-only: system capstone (capstone3), just test if it builds - if: head_branch =~ ^release-* OR head_branch =~ ^prerelease-* OR branch =~ ^release-* OR branch =~ ^prerelease-* os: linux env: COMPILER_NAME=gcc CXX=g++ CC=gcc INSTALL_SYSTEM=meson R2_SYS_CAPSTONE=true R2_TESTS_DISABLE=1 allow_failures: # Emscripten #- os: linux # name: WASM # env: EMSCRIPTEN=1 # Linux with GCC on PowerPC - os: linux arch: ppc64le env: NODOCKER=1 COMPILER_NAME=gcc CXX=g++ CC=gcc CFLAGS="-DR2_ASSERT_STDOUT=1" R2_ARM64_AS=aarch64-linux-gnu-as R2_ARM32_AS=arm-linux-gnueabi-as R2_X86_AS=x86_64-linux-gnu-as addons: apt: packages: - binutils-aarch64-linux-gnu - binutils-arm-linux-gnueabi - binutils-x86-64-linux-gnu # Linux with GCC on System Z - os: linux arch: s390x env: NODOCKER=1 COMPILER_NAME=gcc CXX=g++ CC=gcc CFLAGS="-DR2_ASSERT_STDOUT=1" R2_X86_AS=x86_64-w64-mingw32-as addons: apt: packages: - binutils-mingw-w64-x86-64 - os: linux env: COMPILER_NAME=clang CXX=clang++ CC=clang ASAN=1 ASAN_OPTIONS=detect_odr_violation=0 LSAN_OPTIONS=detect_leaks=0 CFLAGS="-DR2_ASSERT_STDOUT=1" cache: - ccache addons: homebrew: packages: - libuv - cabextract before_install: - | if [ "${FUZZIT}" == "1" ]; then docker pull gcr.io/fuzzit-public/builders:llvm9.v1 elif [ "$TRAVIS_OS_NAME" != "osx" ] && [ "$NODOCKER" != "1" ]; then docker pull radareorg/r2-travis:latest || docker build -t radareorg/r2-travis:latest -f dist/docker/Dockerfile.travis . fi script: - export PR_NAME=$(echo $TRAVIS_PULL_REQUEST_SLUG | cut -d'/' -f1) - | if [ "$TRAVIS_OS_NAME" != "osx" ] && [ "$NODOCKER" != "1" ]; then $SHELL ./travis-extract-var.sh | tee ${TRAVIS_BUILD_DIR}/docker-env.sh fi - | if [ "${FUZZIT}" == "1" ] ; then docker run -v /home/travis/.ccache:/root/.ccache -v "${TRAVIS_BUILD_DIR}":"${TRAVIS_BUILD_DIR}" --entrypoint "/bin/bash" gcr.io/fuzzit-public/builders:llvm9.v1 -c "cd ${TRAVIS_BUILD_DIR}; . docker-env.sh; bash travis-script" elif [ "$TRAVIS_OS_NAME" != "osx" ] && [ "$NODOCKER" != "1" ] ; then docker run -v /home/travis/.ccache:/root/.ccache -v "${TRAVIS_BUILD_DIR}":"${TRAVIS_BUILD_DIR}" --entrypoint "/bin/bash" radareorg/r2-travis:latest -c "cd ${TRAVIS_BUILD_DIR}; . docker-env.sh; bash travis-script" else pip3 install 'git+https://github.com/radareorg/radare2-r2pipe#egg=r2pipe&subdirectory=python' $SHELL travis-script fi