language: cpp cache: ccache branches: only: - master - debug - /^v\d.*$/ - /^deploy-test(-.*)?$/ matrix: include: - name: Linux QMake + Deploy os: linux env: BUILD_SYSTEM=qmake DEPLOY=1 addons: apt: packages: - ninja-build - name: Linux CMake os: linux env: BUILD_SYSTEM=cmake addons: apt: packages: - ninja-build - libgraphviz-dev before_install: - pyenv global 3.7.1 - pip install meson - name: macOS QMake + Deploy os: osx osx_image: xcode10.3 env: BUILD_SYSTEM=qmake DEPLOY=1 - name: macOS CMake os: osx osx_image: xcode10.3 env: BUILD_SYSTEM=cmake - name: Documentation + Deploy os: linux cache: ~ addons: apt: packages: - doxygen - python3-sphinx - python3-breathe - python3-sphinx-rtd-theme - libgraphviz-dev install: ~ before_script: ~ after_success: ~ script: - cd docs - make html before_deploy: - cd "$TRAVIS_BUILD_DIR" - openssl aes-256-cbc -K $encrypted_bd0ed4c1fd75_key -iv $encrypted_bd0ed4c1fd75_iv -in scripts/deploy_docs_rsa.enc -out scripts/deploy_docs_rsa -d - chmod 600 scripts/deploy_docs_rsa - export GIT_SSH_COMMAND="/usr/bin/ssh -i $TRAVIS_BUILD_DIR/scripts/deploy_docs_rsa" - git config --global user.name "Travis CI" - git config --global user.email "travis@travis-ci.org" deploy: skip_cleanup: true provider: script script: bash scripts/deploy_docs.sh on: repo: radareorg/cutter branch: master sudo: required dist: bionic addons: homebrew: brewfile: scripts/Brewfile install: - scripts/fetch_deps.sh - source cutter-deps/env.sh - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then export PATH=/usr/local/opt/llvm/bin:$PATH; source scripts/prepare_breakpad_macos.sh; sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then export LD_LIBRARY_PATH="`llvm-config --libdir`:$LD_LIBRARY_PATH"; source scripts/prepare_breakpad_linux.sh; fi before_script: - cd radare2 - if [[ "$BUILD_SYSTEM" == "qmake" ]]; then if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then INSTALL_TARGET=install sys/install.sh; else LDFLAGS=-headerpad_max_install_names INSTALL_TARGET=install sys/install.sh; fi fi - cd .. script: - mkdir build - cd build - export PKG_CONFIG_PATH="$CUSTOM_BREAKPAD_PREFIX/lib/pkgconfig:$CUSTOM_PYTHON_PREFIX/lib/pkgconfig:$PKG_CONFIG_PATH" - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then if [[ "$BUILD_SYSTEM" == "qmake" ]]; then qmake CUTTER_ENABLE_PYTHON=true CUTTER_ENABLE_PYTHON_BINDINGS=true CUTTER_ENABLE_CRASH_REPORTS=true PREFIX=/usr APPIMAGE=1 ../src && make -j4; elif [[ "$BUILD_SYSTEM" == "cmake" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_LIBRARY="$CUTTER_DEPS_PYTHON_PREFIX/lib/libpython3.6m.so.1.0" -DPYTHON_INCLUDE_DIR="$CUTTER_DEPS_PYTHON_PREFIX/include/python3.6m" -DPYTHON_EXECUTABLE="$CUTTER_DEPS_PYTHON_PREFIX/bin/python3" -DCUTTER_ENABLE_PYTHON=ON -DCUTTER_ENABLE_PYTHON_BINDINGS=ON -DCUTTER_ENABLE_CRASH_REPORTS=ON -DCUTTER_USE_BUNDLED_RADARE2=ON ../src && make -j4; fi elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then if [[ "$BUILD_SYSTEM" == "qmake" ]]; then qmake CUTTER_ENABLE_PYTHON=true CUTTER_ENABLE_PYTHON_BINDINGS=true CUTTER_BUNDLE_R2_APPBUNDLE=true CUTTER_ENABLE_CRASH_REPORTS=true PYTHON_FRAMEWORK_DIR=$CUTTER_DEPS_PYTHON_FRAMEWORK_DIR BREAKPAD_FRAMEWORK_DIR=$BREAKPAD_FRAMEWORK_DIR ../src && make -j4; elif [[ "$BUILD_SYSTEM" == "cmake" ]]; then cmake -DCMAKE_BUILD_TYPE=Release -DPYTHON_LIBRARY="$CUTTER_DEPS_PYTHON_PREFIX/lib/libpython3.6m.dylib" -DPYTHON_INCLUDE_DIR="$CUTTER_DEPS_PYTHON_PREFIX/include/python3.6m" -DPYTHON_EXECUTABLE="$CUTTER_DEPS_PYTHON_PREFIX/bin/python3" -DCUTTER_ENABLE_PYTHON=ON -DCUTTER_ENABLE_PYTHON_BINDINGS=ON -DCUTTER_ENABLE_CRASH_REPORTS=ON -DCUTTER_USE_BUNDLED_RADARE2=ON -DBREAKPAD_FRAMEWORK_DIR="$BREAKPAD_FRAMEWORK_DIR" ../src && make -j4; fi fi after_success: - export CUTTER_VERSION=$(python ../scripts/get_version.py) - lrelease ../src/Cutter.pro - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then mkdir -p Cutter.app/Contents/Resources/translations && cp ../src/translations/*.qm Cutter.app/Contents/Resources/translations/ && macdeployqt Cutter.app -executable=Cutter.app/Contents/MacOS/Cutter -libpath="../Frameworks" && macdeployqt Cutter.app -executable=Cutter.app/Contents/MacOS/Cutter -libpath="../Frameworks" && cp -a "$QTDIR/lib/QtDBus.framework" "$QTDIR/lib/QtPrintSupport.framework" Cutter.app/Contents/Frameworks && cp -a "$BREAKPAD_FRAMEWORK_DIR/Breakpad.framework" Cutter.app/Contents/Frameworks && "$TRAVIS_BUILD_DIR/scripts/appbundle_embed_python.sh" "$CUTTER_DEPS_PYTHON_FRAMEWORK_DIR/Python.framework" Cutter.app Cutter.app/Contents/MacOS/Cutter && mv Cutter.app/Contents/MacOS/Cutter Cutter.app/Contents/MacOS/Cutter.bin && cp ../src/macos/Cutter.sh Cutter.app/Contents/MacOS/Cutter && chmod +x Cutter.app/Contents/MacOS/Cutter && mkdir -p Cutter.app/Contents/Resources/r2/share && cp -a /usr/local/share/radare2 Cutter.app/Contents/Resources/r2/share/ && "$TRAVIS_BUILD_DIR/scripts/r2ghidra.sh" -DCMAKE_INSTALL_PREFIX="`pwd`/Cutter.app/Contents/Resources/r2" -DBUILD_CUTTER_PLUGIN=ON -DCUTTER_INSTALL_PLUGDIR="`pwd`/Cutter.app/Contents/Resources/plugins/native" -DCUTTER_SOURCE_DIR="$TRAVIS_BUILD_DIR" && mkdir image && cp -a Cutter.app image/ && export VOL_NAME="Cutter v${CUTTER_VERSION}" && export DMG_TMP_FILE="Cutter-v$CUTTER_VERSION-x64.macOS-tmp.dmg" && export DMG_FILE="Cutter-v$CUTTER_VERSION-x64.macOS.dmg" && export SIZE=`du -sh "image" | sed 's/\([0-9\.]*\)M\(.*\)/\1/'` && export SIZE=`echo "${SIZE} + 10.0" | bc | awk '{print int($1+0.5)}'` && hdiutil create -srcfolder image -volname "${VOL_NAME}" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${SIZE}M "$DMG_TMP_FILE" && export DEVICE=$(hdiutil attach -readwrite -noverify "${DMG_TMP_FILE}" | egrep '^/dev/' | sed 1q | awk '{print $1}') && sleep 2 && ../scripts/prepare_package_ui_macos.sh "Cutter" "${PWD}/../src/macos/cutter_mac_app.png" "${VOL_NAME}" && hdiutil detach "${DEVICE}" && hdiutil convert "${DMG_TMP_FILE}" -format UDZO -imagekey zlib-level=9 -o "${DMG_FILE}" && export FILE_TO_UPLOAD="$DMG_FILE" ; fi - if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then make INSTALL_ROOT=appdir install && cp -r /usr/share/radare2 appdir/usr/share/ && mkdir -p appdir/usr/bin/translations && cp ../src/translations/*.qm appdir/usr/bin/translations/ && "$TRAVIS_BUILD_DIR/scripts/appimage_embed_python.sh" appdir && "$TRAVIS_BUILD_DIR/scripts/r2ghidra.sh" -DCMAKE_INSTALL_PREFIX="`pwd`/appdir/usr" -DBUILD_CUTTER_PLUGIN=ON -DCUTTER_SOURCE_DIR="$TRAVIS_BUILD_DIR" && wget -c "https://github.com/probonopd/linuxdeployqt/releases/download/6/linuxdeployqt-6-x86_64.AppImage" && chmod a+x linuxdeployqt*.AppImage && rm -fv "$TRAVIS_BUILD_DIR/cutter-deps/qt/plugins/imageformats/libqjp2.so" && ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -unsupported-allow-new-glibc -bundle-non-qt-libs -no-strip -exclude-libs=libnss3.so,libnssutil3.so,libqjp2.so -ignore-glob=usr/lib/python3.6/**/* -verbose=2 && ./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -unsupported-allow-new-glibc -appimage -no-strip -exclude-libs=libnss3.so,libnssutil3.so,libqjp2.so -ignore-glob=usr/lib/python3.6/**/* -verbose=2 && find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq && export APPIMAGE_FILE="Cutter-v$CUTTER_VERSION-x64.Linux.AppImage" && mv Cutter-*-x86_64.AppImage "$APPIMAGE_FILE" && export FILE_TO_UPLOAD="$APPIMAGE_FILE" ; fi deploy: skip_cleanup: true provider: releases draft: true prerelease: true tag_name: $TRAVIS_TAG api_key: secure: ZXuSX8JXyL0HlJvSIda3ftMkvYsrxoWDcWm2LxO+f0uNFghCHNnISuH/btdipn2mjCBaBQl6/1IK5cg/AZ5OSkiaVsJJqY8kkPsZvR8K+k4oarsr2ApetlLZiZWtydC3J+UyNhsgCt4iuYPsvusANFPZBpVmqT+A5CHS7aPIqP00awbkJYG1uOENe2XVZ0vyotBqU0E7A9f8UO5ps0+qysS8W+NDB+CGLgKLeBfCk3U+IYKGYXcv66xCmSSZ5f7IVIXEjG4voFHGp9XLRY2R/iJgiKQKDbu519vUB3iKPzmLTB/Q9bNz4VMZCREa4SHaLDen730fMHbfm6ZhGZDzXg1DgZoh6RHptWf0WjcHTr1ch8ajpnBMxh/qmoRpaS00FJQMraMT3Il38ekYd+hOhsP58Bj1Db2vjBKopGEHGmVyFQZKuynrdKmpmY+kRNUT3QerIsiAHwHV2QXnMARHYXJrM0T7LNACa2mhiwQD2vNIqLRieIbHbSWgDUrTVTDeII23AAHCzD0YxcCAjSExjun/rc9dJjevgCoBpTM/NHPLCW4big1myx+vRQGPNdlf+dI7igm6bPVWB7znp5uXlI8q5irvqTVtRSvKbcaeDWOz/ki7QgOzaxmGFtaw30hxeY0wFlnSMXc8m42udWLkp/l0b4L0hcoaMTc1TvVU0i4= file: - "${FILE_TO_UPLOAD}" on: tags: true condition: $DEPLOY = 1