#!/bin/bash set -x export PATH=${TRAVIS_BUILD_DIR}/install/bin:${PATH} export LD_LIBRARY_PATH=${TRAVIS_BUILD_DIR}/install/lib/$(uname -m)-linux-gnu:${TRAVIS_BUILD_DIR}/install/lib:${TRAVIS_BUILD_DIR}/install/lib64:${LD_LIBRARY_PATH} if [ "${EMSCRIPTEN}" = "1" ] ; then git clone https://github.com/emscripten-core/emsdk.git || exit 1 cd emsdk || exit 1 ./emsdk install latest || exit 1 ./emsdk activate latest || exit 1 source ./emsdk_env.sh cd .. sys/emscripten.sh exit $? fi if [ "${INSTALL_SYSTEM}" == "meson" ] ; then echo "Installing with meson + ninja" OPTS="" if [ "${R2_SYS_CAPSTONE}" != "" ] ; then OPTS="${OPTS} -D use_sys_capstone=${R2_SYS_CAPSTONE}" fi if [ "${R2_SYS_MAGIC}" != "" ] ; then OPTS="${OPTS} -D use_sys_magic=${R2_SYS_MAGIC}" fi if [ "${R2_SYS_ZLIB}" != "" ] ; then OPTS="${OPTS} -D use_sys_zlib=${R2_SYS_ZLIB}" fi if [ "${R2_SYS_ZIP}" != "" ] ; then OPTS="${OPTS} -D use_sys_zip=${R2_SYS_ZIP}" fi if [ "${R2_SYS_LZ4}" != "" ] ; then OPTS="${OPTS} -D use_sys_lz4=${R2_SYS_LZ4}" fi if [ "${R2_SYS_OPENSSL}" != "" ] ; then OPTS="${OPTS} -D use_sys_openssl=${R2_SYS_OPENSSL}" fi if [ "${R2_NEWSHELL}" != "" ] ; then OPTS="${OPTS} -D use_treesitter=${R2_NEWSHELL}" fi if [ "${COVERAGE}" == "1" ] ; then OPTS="${OPTS} -Db_coverage=true" fi if [ "${ASAN}" == "1" ] ; then # -Db_lundef=false required for issue with clang+meson (see https://github.com/mesonbuild/meson/issues/764) OPTS="${OPTS} -Db_sanitize=address -Db_lundef=false" fi meson --prefix=${TRAVIS_BUILD_DIR}/install ${OPTS} build || exit 1 pushd build ninja || exit 1 ninja install || exit 1 popd export PKG_CONFIG_PATH=$(pwd)/build/meson-private:${PKG_CONFIG_PATH} elif [ "${INSTALL_SYSTEM}" == "static" ]; then echo "Compiling static with sys/static.sh" ./sys/static.sh || exit 1 echo "Compiling Fuzzing Target" export RADARE2_STATIC_BUILD=$(pwd)/r2-static cd test make fuzz/targets cd fuzz/targets git remote -v git branch git rev-parse HEAD # workaround for now export LIB_FUZZING_ENGINE=" " VERBOSE=1 make -j2 || exit 1 # This is a test key (change to production environment key later) export FUZZIT_KEY=055d9d3ba41a36fe7e33fee3bf411b2102703c60e16b1756a7222ab529f16dbf8c687a35313f0b1666d8687e891e5c83 export ORG_ID=2zv5qI33roZkRm0oO2Mi export TARGET_ID=YVkkS6RPVpKhSixyFWcT wget -O fuzzit https://bin.fuzzit.dev/fuzzit-1.0 chmod a+x fuzzit ./fuzzit auth $FUZZIT_KEY $ORG_ID echo "Creating fuzzing sanity job on fuzzit.dev:" ./fuzzit create job --type sanity --args "-fork=1 -close_fd_mask=3" --revision $TRAVIS_COMMIT --branch $TRAVIS_BRANCH $TARGET_ID ia_fuzz || exit 1 else echo "Installing with acr + make" if [ "${R2_PLUGINS_FILE}" != "" ] ; then cp "plugins.${R2_PLUGINS_FILE}.cfg" plugins.cfg fi if [ "${ASAN}" == "1" ] ; then export CFLAGS="${CFLAGS} -O0 -ggdb -fsanitize=address -fno-omit-frame-pointer" export LDFLAGS="${LDFLAGS} -O0 -ggdb -fsanitize=address -fno-omit-frame-pointer" fi export PKG_CONFIG_PATH=${TRAVIS_BUILD_DIR}/pkgcfg:${PKG_CONFIG_PATH} if [ "${DEBPKG}" == "1" ] ; then sys/static.sh git clean -xdf sys/debian.sh # TODO: upload debian package somewhere exit 0 else if [ "`uname`" = Darwin ]; then cp sys/osx-pkg/*.pkg /tmp sys/osx-pkg.sh git clean -xdf fi ./configure --prefix=${TRAVIS_BUILD_DIR}/install > /dev/null || exit 1 make -s -j2 > /dev/null || exit 1 make install > /dev/null || exit 1 fi fi if [ "${R2_TESTS_DISABLE}" != "1" ] ; then export NOREPORT=1 cd test VERBOSE=1 make -k all || exit 1 if [ "${COVERAGE}" == "1" ] ; then cd ../build curl -s https://codecov.io/bash > ./codecov.sh chmod +x ./codecov.sh ./codecov.sh -K -v 2>/dev/null fi fi