Travis: use our own Qt binaries for AppImage build

This is no longer based on the upstream Qt binaries but completely on
binaries built by ourselves, trying to remove some of the features that
we don't need and trying to avoid some of the issues with certain
libraries (like different OpenSSL dependencies).

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2017-11-09 12:38:04 -08:00
parent 38b2fea30f
commit b425d5641d
2 changed files with 17 additions and 27 deletions

View file

@ -2,22 +2,15 @@
# prep things so we can build for Linux
# we have a custom built Qt some gives us just what we need, including QtWebKit
#
# this is built from the latest version as of 2017-11-09 in the 5.9 branch and
# therefore calls itself Qt-5.9.3
export QT_ROOT=$PWD/Qt/5.9.3
rm -rf Qt
mkdir -p Qt/5.9.1
wget http://subsurface-divelog.org/downloads/Qt-5.9.1.tar.xz
tar -xJ -C Qt/5.9.1 -f Qt-5.9.1.tar.xz
cd Qt/5.9.1
# this should all be handled in the packaged tar file, for now we hack it here
ln -s . gcc_64
cd ..
ln -s 5.9.1/* .
cd ..
# terrifying hack to fix the OpenSSL dependency issue
sed -i -e 's|1.0.1e|1.0.0\x00|g' Qt/lib/libQt5Network.so.5
mkdir -p $QT_ROOT
wget http://subsurface-divelog.org/downloads/Qt-5.9.3-trusty.tar.xz
tar -xJ -C $QT_ROOT -f Qt-5.9.3-trusty.tar.xz
# TestPreferences uses gui calls, so run a xvfb so it has something to talk to
export DISPLAY=:99.0

View file

@ -1,28 +1,28 @@
#!/bin/bash
set -x
# this gets executed by Travis when building an AppImage for Linux
# it gets started from inside the subsurface directory
export QT_ROOT=$PWD/Qt
export PATH=$QT_ROOT/5.9.1/bin:$PATH # Make sure correct qmake is found on the $PATH for linuxdeployqt
export CMAKE_PREFIX_PATH=$QT_ROOT/5.9.1/lib/cmake
export PATH=$QT_ROOT/bin:$PATH # Make sure correct qmake is found on the $PATH for linuxdeployqt
export CMAKE_PREFIX_PATH=$QT_ROOT/lib/cmake
# the global build script expects to be called from the directory ABOVE subsurface
cd ..
bash -e ./subsurface/scripts/build.sh -desktop -create-appdir -build-with-webkit # we need to build 'both' and need to build without BT and other variations that we want to exercise
cd ..
bash -e -x ./subsurface/scripts/build.sh -desktop -create-appdir -build-with-webkit # we need to build 'both' and need to build without BT and other variations that we want to exercise
export QT_PLUGIN_PATH=$QT_ROOT/5.9.1/plugins
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/5.9.1/plugins
export QT_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_DEBUG_PLUGINS=1
# for debugging: find $QT_ROOT/5.9.1/plugins
# for debugging: find $QT_ROOT/plugins
env CTEST_OUTPUT_ON_FAILURE=1 make -C subsurface/build check
# set up the appdir
mkdir -p appdir/usr/plugins/
mv appdir/usr/home/travis/build/*/subsurface/Qt/5.9.1/plugins/* appdir/usr/plugins/
mv appdir/usr/home/travis/build/*/subsurface/Qt/*/plugins/* appdir/usr/plugins/
mv appdir/usr/lib/grantlee/ appdir/usr/plugins/
sudo mv appdir/usr/lib/* /usr/local/lib/ # Workaround for https://github.com/probonopd/linuxdeployqt/issues/160
rm -rf appdir/usr/home/ appdir/usr/include/ appdir/usr/share/man/ # No need to ship developer and man files as part of the AppImage
@ -36,9 +36,6 @@ unset LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib/ # Workaround for https://github.com/probonopd/linuxdeployqt/issues/160
./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -bundle-non-qt-libs -qmldir=./subsurface/map-widget/ -verbose=2
# hack around the gstreamer plugins - this should be fixed with better Qt package
sed -i -e 's|/usr/lib/x86_64-linux-gnu|/usr/lib/x86_64-linux-xxx|g' ./appdir/usr/lib/libgstreamer-1.0.so.0
# create the AppImage
export VERSION=$(cd subsurface/ ; git rev-parse --short HEAD) # linuxdeployqt uses this for naming the file
./linuxdeployqt*.AppImage ./appdir/usr/share/applications/*.desktop -appimage -qmldir=./subsurface/map-widget/ -verbose=2