mirror of
https://github.com/rizinorg/cutter.git
synced 2024-12-19 19:36:11 +00:00
caabf1c739
Brew update takes almost half of the CI time pushing it close to time limit. Newer macOS image contains newer hombrew which doesn't need to be updated.
286 lines
11 KiB
YAML
286 lines
11 KiB
YAML
language: cpp
|
|
|
|
cache: ccache
|
|
|
|
branches:
|
|
only:
|
|
- master
|
|
- debug
|
|
- /^v\d.*$/
|
|
- /^deploy-test(-.*)?$/
|
|
|
|
matrix:
|
|
include:
|
|
- name: Linux QMake
|
|
os: linux
|
|
dist: xenial
|
|
env: BUILD_SYSTEM=qmake
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- mesa-common-dev
|
|
- libgl1-mesa-glx
|
|
- libgl1-mesa-dev
|
|
- libxkbcommon-x11-dev
|
|
- ninja-build/xenial-backports
|
|
|
|
- name: Linux CMake
|
|
os: linux
|
|
env: BUILD_SYSTEM=cmake_nodep
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- mesa-common-dev
|
|
- ninja-build
|
|
- libgraphviz-dev
|
|
- qt5-default
|
|
- libqt5svg5-dev
|
|
- qttools5-dev
|
|
|
|
- name: Linux CMake + Deploy
|
|
os: linux
|
|
env: BUILD_SYSTEM=cmake DEPLOY=1
|
|
dist: xenial
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- mesa-common-dev
|
|
- libgl1-mesa-glx
|
|
- libgl1-mesa-dev
|
|
- libxkbcommon-x11-dev
|
|
- ninja-build/xenial-backports
|
|
|
|
- name: Linux Ubuntu 16.04 # test that Cutter can be built on an old distro using system libraries
|
|
os: linux
|
|
env: BUILD_SYSTEM=cmake_nodep PATH="/usr/bin:$PATH"
|
|
dist: xenial
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- ninja-build
|
|
- libgraphviz-dev
|
|
- qt5-default
|
|
- libqt5svg5-dev
|
|
- qttools5-dev
|
|
- qttools5-dev-tools
|
|
- cmake
|
|
before_install:
|
|
- pyenv install 3.5.2
|
|
- pyenv global 3.5.2
|
|
- pip install meson==0.52.1
|
|
|
|
|
|
- name: macOS QMake + Deploy
|
|
os: osx
|
|
osx_image: xcode11
|
|
env: BUILD_SYSTEM=qmake DEPLOY=1
|
|
before_install: ~
|
|
|
|
- name: macOS CMake
|
|
os: osx
|
|
osx_image: xcode11
|
|
env: BUILD_SYSTEM=cmake
|
|
before_install: ~
|
|
|
|
- name: Documentation + Deploy
|
|
os: linux
|
|
cache: ~
|
|
addons:
|
|
apt:
|
|
packages:
|
|
- doxygen
|
|
- libgraphviz-dev
|
|
before_install:
|
|
- pyenv global 3.7
|
|
- pip install -U sphinx
|
|
- pip install -U breathe
|
|
- pip install -U sphinx-rtd-theme
|
|
- pip install -U recommonmark
|
|
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.com"
|
|
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
|
|
# update: true
|
|
|
|
before_install:
|
|
- pyenv global 3.7
|
|
- pip install meson
|
|
|
|
install:
|
|
- if [[ "$BUILD_SYSTEM" != "cmake_nodep" ]]; then
|
|
scripts/fetch_deps.sh;
|
|
source cutter-deps/env.sh;
|
|
fi
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
|
export PATH=/usr/local/opt/llvm/bin:$PATH;
|
|
source scripts/prepare_breakpad_macos.sh;
|
|
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" ]] || ([[ "$BUILD_SYSTEM" == "cmake" ]] && [[ "$TRAVIS_OS_NAME" == "linux" ]]) ; then
|
|
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
|
|
INSTALL_TARGET=install sys/install.sh /usr;
|
|
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
|
|
../src &&
|
|
make -j4;
|
|
elif [[ "$BUILD_SYSTEM" == "cmake" ]]; then
|
|
cmake
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
-DCMAKE_PREFIX_PATH="$Qt5_ROOT"
|
|
-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=OFF
|
|
-DCUTTER_APPIMAGE_BUILD=ON
|
|
-DCMAKE_INSTALL_PREFIX=appdir/usr
|
|
../src &&
|
|
make -j4;
|
|
elif [[ "$BUILD_SYSTEM" == "cmake_nodep" ]]; then
|
|
cmake
|
|
-DCMAKE_BUILD_TYPE=Release
|
|
-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
|
|
SHIBOKEN_EXTRA_OPTIONS=-isystem/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include
|
|
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
|
|
-DSHIBOKEN_EXTRA_OPTIONS=-isystem/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk/usr/include
|
|
-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)
|
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
|
lrelease ../src/Cutter.pro &&
|
|
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" &&
|
|
"$TRAVIS_BUILD_DIR/scripts/r2dec.sh" --prefix="`pwd`/Cutter.app/Contents/Resources/r2" &&
|
|
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" ]] && [[ $DEPLOY == 1 ]]; then
|
|
export VERSION=$CUTTER_VERSION &&
|
|
make install &&
|
|
cp -r /usr/share/radare2 appdir/usr/share/ &&
|
|
"$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" &&
|
|
"$TRAVIS_BUILD_DIR/scripts/r2dec.sh" --prefix=`pwd`/appdir/usr &&
|
|
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 -executable=./appdir/usr/bin/python3 -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 -executable=./appdir/usr/bin/python3 -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
|
|
|