From d4ac4556241ae8438b5409c5048edda5e5183638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Wr=C3=B3bel?= Date: Mon, 1 Jun 2020 22:41:53 +0200 Subject: [PATCH] Add deb package to Travis CI (#318) * Script for building deb package on Travis * Adding deb build to Travis CI configuration * Remove superflous install step from deb build * Add permissions to execute build script for deb package. * Update deb build environment to use Ubuntu 18.04 * Install the deb package as part of build process * Fix deb location for installation test * Remove installation test Latest Ubuntu available on Travis doesn't meet minimum required version of pyside2. * Fix pyside dependencies to make them more accurate. * Switch deb build to Ubuntu 20.04 * Add installation and runtime test. * Fix location of deb package for upload to bintray. * Separate out testing from build script. * Make the script output visible in Travis CI logs. * Fix permissons for test script. --- .travis.yml | 9 +++++++++ travis/deb-installation-test.sh | 8 ++++++++ travis/deb-script.sh | 27 +++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100755 travis/deb-installation-test.sh create mode 100755 travis/deb-script.sh diff --git a/.travis.yml b/.travis.yml index 13e3617..98a03bf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,10 @@ jobs: dist: xenial os: linux env: BUILD_DESTINATION=snapcraft + - language: minimal + dist: focal + os: linux + env: BUILD_DESTINATION=deb - language: python os: linux dist: xenial @@ -21,12 +25,16 @@ script: - if [ "$TRAVIS_OS_NAME" == "osx" ]; then python3 buildPy2app.py py2app ; 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 +- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "deb" ]; then travis/deb-script.sh ; fi install: - if [ "$TRAVIS_OS_NAME" == "osx" ]; then travis/macos-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 sudo apt-get install libxkbcommon-x11-0 ; fi +after_success: +- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "deb" ]; then travis/deb-installation-test.sh ; fi + before_deploy: - ls -al - export VER="$(cat syncplay/__init__.py | awk '/version/ {gsub("\047", "", $3); print $NF}')" @@ -35,6 +43,7 @@ before_deploy: - if [ "$TRAVIS_OS_NAME" == "osx" ]; then travis/macos-deploy.sh ; 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 travis/appimage-deploy.sh ; fi +- if [ "$TRAVIS_OS_NAME" == "linux" ] && [ "$BUILD_DESTINATION" == "deb" ]; then mv /tmp/syncplay.deb dist_bintray/syncplay_${VER}.deb ; fi deploy: skip_cleanup: true diff --git a/travis/deb-installation-test.sh b/travis/deb-installation-test.sh new file mode 100755 index 0000000..b438b56 --- /dev/null +++ b/travis/deb-installation-test.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +set -x +set -e + +sudo apt install /tmp/syncplay.deb -y +syncplay --no-gui +sudo apt remove syncplay diff --git a/travis/deb-script.sh b/travis/deb-script.sh new file mode 100755 index 0000000..8853d82 --- /dev/null +++ b/travis/deb-script.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +set -x +set -e + +mkdir -p /tmp/syncplay/DEBIAN + +echo "Package: syncplay +Version: "$(sed -n -e "s/^.*version = //p" syncplay/__init__.py | sed "s/'//g")""$(git describe --exact-match --tags HEAD &>/dev/null && echo -git-$(date -u +%y%m%d%H%M))" +Architecture: all +Maintainer: +Depends: python3 (>= 3.4), python3-pyside2.qtwidgets, python3-pyside2.qtcore, python3-twisted (>= 16.4.0), python3-certifi, mpv (>= 0.23) | vlc (>= 2.2.1) +Homepage: https://syncplay.pl +Section: web +Priority: optional +Description: Solution to synchronize video playback across multiple instances of mpv, VLC, MPC-HC and MPC-BE over the Internet. + Syncplay synchronises the position and play state of multiple media players so that the viewers can watch the same thing at the same time. This means that when one person pauses/unpauses playback or seeks (jumps position) within their media player then this will be replicated across all media players connected to the same server and in the same 'room' (viewing session). When a new person joins they will also be synchronised. Syncplay also includes text-based chat so you can discuss a video as you watch it (or you could use third-party Voice over IP software to talk over a video)." \ +> /tmp/syncplay/DEBIAN/control +echo "#!/bin/sh +py3clean -p syncplay +" +> /tmp/syncplay/DEBIAN/prerm +chmod 555 /tmp/syncplay/DEBIAN/prerm + +make install DESTDIR=/tmp/syncplay +dpkg -b /tmp/syncplay/ +