diff --git a/.travis.yml b/.travis.yml index d98e36b..1897e7c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,12 @@ matrix: - language: bash sudo: required dist: xenial + env: BUILD_DESTINATION=snapcraft + - language: python + sudo: required + dist: xenial + python: 3.6 + env: BUILD_DESTINATION=appimage branches: only: @@ -12,11 +18,13 @@ branches: script: - if [ "$TRAVIS_OS_NAME" == "osx" ]; then python3 buildPy2app.py py2app ; fi -- if [ "$TRAVIS_OS_NAME" == "linux" ]; then sudo snapcraft cleanbuild ; fi +- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "snapcraft" ]; then sudo snapcraft cleanbuild ; fi +- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "appimage" ]; then travis/appimage-script.sh ; fi install: - if [ "$TRAVIS_OS_NAME" == "osx" ]; then travis/macos-install.sh ; fi -- if [ "$TRAVIS_OS_NAME" == "linux" ]; then travis/linux-install.sh ; fi +- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "snapcraft" ]; then travis/snapcraft-install.sh ; fi +- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "appimage" ]; then ls -al ; fi before_deploy: - ls -al @@ -24,7 +32,8 @@ before_deploy: - python3 bintray_version.py - mkdir dist_bintray - if [ "$TRAVIS_OS_NAME" == "osx" ]; then travis/macos-deploy.sh ; fi -- if [ "$TRAVIS_OS_NAME" == "linux" ]; then mv syncplay_build_amd64.snap dist_bintray/syncplay_${VER}_amd64.snap ; fi +- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "snapcraft" ]; then mv syncplay_build_amd64.snap dist_bintray/syncplay_${VER}_amd64.snap ; fi +- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "appimage" ]; then mv Syncplay*.AppImage dist_bintray/ ; fi deploy: skip_cleanup: true diff --git a/travis/appimage-script.sh b/travis/appimage-script.sh new file mode 100755 index 0000000..fa4dafa --- /dev/null +++ b/travis/appimage-script.sh @@ -0,0 +1,59 @@ +#! /bin/bash + +set -x +set -e + +# use RAM disk if possible +if [ "$CI" == "" ] && [ -d /dev/shm ]; then + TEMP_BASE=/dev/shm +else + TEMP_BASE=/tmp +fi + +BUILD_DIR=$(mktemp -d -p "$TEMP_BASE" appimagelint-build-XXXXXX) + +cleanup () { + if [ -d "$BUILD_DIR" ]; then + rm -rf "$BUILD_DIR" + fi +} + +trap cleanup EXIT + +# store repo root as variable +REPO_ROOT=$(readlink -f $(dirname $(dirname "$0"))) +#REPO_ROOT="." +OLD_CWD=$(readlink -f .) + +pushd "$BUILD_DIR" + +wget https://github.com/TheAssassin/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage +wget https://raw.githubusercontent.com/linuxdeploy/linuxdeploy-plugin-conda/master/linuxdeploy-plugin-conda.sh + +chmod +x linuxdeploy*.AppImage +chmod +x linuxdeploy*.sh + +# set up custom AppRun script +cat > AppRun.sh <<\EAT +#! /bin/sh +# make sure to set APPDIR when run directly from the AppDir +if [ -z $APPDIR ]; then APPDIR=$(readlink -f $(dirname "$0")); fi +export LD_LIBRARY_PATH="$APPDIR"/usr/lib +export PATH="$PATH":"$APPDIR"/usr/bin + +exec "$APPDIR"/usr/bin/python "$APPDIR"/usr/bin/syncplay "$@" +EAT +chmod +x AppRun.sh + +#export CONDA_PACKAGES="Pillow" +export PIP_REQUIREMENTS="." +export PIP_WORKDIR="$REPO_ROOT" +export VERSION="$(cat $REPO_ROOT/syncplay/__init__.py | awk '/version/ {gsub("\047", "", $3); print $NF}')" +export OUTPUT=Syncplay-$VERSION-x86_64.AppImage + +./linuxdeploy-x86_64.AppImage --appdir AppDir --plugin conda \ + -e $(which readelf) \ + -i "$REPO_ROOT"/syncplay/resources/syncplay.png -d "$REPO_ROOT"/syncplay/resources/syncplay.desktop \ + --output appimage --custom-apprun AppRun.sh + +mv Syncplay*.AppImage "$OLD_CWD" \ No newline at end of file diff --git a/travis/linux-install.sh b/travis/snapcraft-install.sh similarity index 100% rename from travis/linux-install.sh rename to travis/snapcraft-install.sh