Skip to content

Commit

Permalink
Build with Docker on Linux
Browse files Browse the repository at this point in the history
Use KDE Neon container to perform Linux builds.
This way we no longer have to worry about old libraries.
  • Loading branch information
plfiorini committed Mar 9, 2018
1 parent b8368cf commit 4412d3c
Show file tree
Hide file tree
Showing 7 changed files with 142 additions and 69 deletions.
8 changes: 1 addition & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,8 @@ matrix:
dist: trusty
- os: osx

before_install:
- ./.travis/update.sh

install:
- . ./.travis/install.sh

script:
- ./.travis/build.sh && ./.travis/package.sh
- ./.travis/build.sh

before_deploy:
- git fetch --unshallow
Expand Down
63 changes: 43 additions & 20 deletions .travis/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,39 +2,62 @@

set -e

source .travis/library.sh

if [[ $TRAVIS_OS_NAME == 'osx' ]]; then
# Update
travis_start "brew_update"
msg "Update..."
brew update
travis_end

# Install
travis_start "brew_install"
msg "Install packages..."
brew install qt5 qbs
brew link qt5 --force
brew link qbs --force
travis_end

# Configure qbs
travis_start "qbs_setup"
qbs setup-toolchains --detect
qbs setup-qt /usr/local/opt/qt/bin/qmake travis-qt5
qbs config profiles.travis-qt5.baseProfile xcode-macosx-x86_64
qbs config preferences.qbsSearchPaths $(pwd)/fluid/qbs/shared
travis_end "qbs_setup"

# Build and install Fluid
cd fluid
sudo qbs -d build -j $(sysctl -n hw.ncpu) profile:travis-qt5 qbs.installRoot:/usr/local qbs.installPrefix:/opt/qt modules.lirideployment.qmlDir:qml project.withDocumentation:false project.withDemo:false
travis_start "build_fluid"
msg "Build Fluid..."
pushd fluid >/dev/null
sudo qbs -d build -j $(sysctl -n hw.ncpu) profile:travis-qt5 modules.qbs.installRoot:/usr/local modules.lirideployment.prefix:/opt/qt modules.lirideployment.qmlDir:/opt/qt/qml project.withDocumentation:false project.withDemo:false
sudo rm -fr build
popd >/dev/null
travis_end "build_fluid"

# Build app
cd ../
travis_start "build_app"
msg "Build..."
qbs -d build -j $(sysctl -n hw.ncpu) profile:travis-qt5 project.withFluid:false
else
# Build qbs
git clone -b v1.9.0 https://code.qt.io/qbs/qbs.git qbs-src
cd qbs-src && qmake -r qbs.pro && make -j$(nproc) && sudo make install && cd ..
travis_end "build_app"

# Configure qbs
qbs setup-toolchains --type gcc /usr/bin/g++ gcc
qbs setup-qt $(which qmake) travis-qt5
qbs config profiles.travis-qt5.baseProfile gcc
qbs config preferences.qbsSearchPaths $(pwd)/fluid/qbs/shared
# Package
travis_start "package"
msg "Package..."
srcdir=$(pwd)/src
pushd build/default/install-root >/dev/null && macdeployqt ./liri-browser.app -dmg -qmldir=$srcdir -verbose=2 && popd >/dev/null
mv ./build/default/install-root/liri-browser.dmg Liri_Browser.dmg
curl --upload-file ./Liri_Browser.dmg https://transfer.sh/Liri_Browser-git-$(date +%Y%m%d-%H%M%S)-$(git rev-parse --short HEAD).dmg
travis_end "package"
else
image=liridev/ci-ubuntu:latest

# Build and install Fluid
cd fluid
sudo $(which qbs) -d build -j $(nproc) profile:travis-qt5 qbs.installRoot:/opt qbs.installPrefix:qt58 modules.lirideployment.qmlDir:qml project.withDocumentation:false project.withDemo:false
sudo rm -fr build
env_vars="-e CC=$CC -e DEBIAN_FRONTEND=noninteractive"
for line in $(env | egrep -e '^(FTP|TRAVIS|CLAZY)'); do
env_vars="$env_vars -e $line"
done

# Build and install app
cd ../
mkdir -p appdir
qbs -d build -j $(nproc) profile:travis-qt5 project.withFluid:false qbs.installRoot:appdir qbs.installPrefix:usr
sudo docker pull $image
sudo docker run --privileged --rm -ti -v $(pwd):/home $env_vars --workdir /home $image ./.travis/docker.sh
fi
84 changes: 84 additions & 0 deletions .travis/docker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#!/bin/bash

set -e

source /home/.travis/library.sh

# Install
travis_start "package_install"
msg "Install packages..."
apt-get install -y \
g++ \
git \
curl \
libfuse2 \
qbs \
qt5-default \
qtbase5-dev qtbase5-dev-tools qtbase5-private-dev \
qtdeclarative5-dev qtdeclarative5-dev-tools qtdeclarative5-private-dev \
qtquickcontrols2-5-dev \
libqt5svg5-dev qtwebengine5-dev qtwebengine5-dev-tools \
qttools5-dev qttools5-dev-tools qttools5-private-dev \
qml-module-qtquick2 qml-module-qtquick-window2 qml-module-qtquick-layouts qml-module-qttest \
qml-module-qtgraphicaleffects qml-module-qtqml-models2 \
qml-module-qtquick-controls2 qml-module-qtquick-templates2 \
qml-module-qt-labs-platform qml-module-qt-labs-calendar \
qml-module-qtwebengine qml-module-qtwebchannel
travis_end "package_install"

# Configure qbs
travis_start "qbs_setup"
msg "Setup qbs..."
qbs setup-toolchains --detect
qbs setup-qt $(which qmake) travis-qt5
qbs config profiles.travis-qt5.baseProfile $CC
travis_end "qbs_setup"

# Install qbs-shared
travis_start "qbs_shared"
msg "Install qbs-shared..."
pushd fluid/qbs/shared >/dev/null
qbs -d build -j $(nproc) profile:travis-qt5 modules.qbs.installRoot:/ project.prefix:/usr
popd >/dev/null
travis_end "qbs_shared"

# Build and install Fluid
travis_start "build_fluid"
msg "Build Fluid..."
pushd fluid >/dev/null
qbs -d build -j $(nproc) profile:travis-qt5 \
modules.qbs.installRoot:/ \
modules.lirideployment.prefix:/usr \
modules.lirideployment.libDir:/usr/lib/x86_64-linux-gnu \
modules.lirideployment.qmlDir:/usr/lib/x86_64-linux-gnu/qt5/qml \
modules.lirideployment.pluginsDir:/usr/lib/x86_64-linux-gnu/qt5/plugins \
project.useSystemQbsShared:true \
project.withDocumentation:false \
project.withDemo:false
popd >/dev/null
travis_end "build_fluid"

# Build and install app
travis_start "build_app"
msg "Build and install app..."
mkdir -p appdir
qbs -d build -j $(nproc) profile:travis-qt5 \
modules.qbs.installRoot:/appdir \
modules.lirideployment.prefix:/usr \
project.withFluid:false
travis_end "build_app"

# Package
travis_start "appimage"
msg "Create AppImage..."
curl -L "https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage" > linuxdeployqt.AppImage
chmod a+x linuxdeployqt*.AppImage
unset QTDIR; unset QT_PLUGIN_PATH ; unset LD_LIBRARY_PATH
./linuxdeployqt.AppImage /appdir/usr/share/applications/*.desktop -bundle-non-qt-libs -qmldir=. -verbose=2
rm /appdir/io.liri.Browser.png # Workaround for linuxedeloyqt bug
./linuxdeployqt.AppImage /appdir/usr/share/applications/*.desktop -appimage -qmldir=. -verbose=2
find ./appdir -executable -type f -exec ldd {} \; | grep " => /usr" | cut -d " " -f 2-3 | sort | uniq
appimage_url="https://transfer.sh/Liri_Browser-git-$(date +%Y%m%d-%H%M%S)-$(git rev-parse --short HEAD)-x86_64.AppImage"
msg "Upload $appimage_url"
curl --upload-file ./Liri_Browser*.AppImage $appimage_url
travis_end "appimage"
15 changes: 0 additions & 15 deletions .travis/install.sh

This file was deleted.

14 changes: 14 additions & 0 deletions .travis/library.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

msg() {
lightblue='\033[1;34m'
reset='\e[0m'
echo -e "${lightblue}$@${reset}"
}

travis_start() {
echo -e "travis_fold:start:$@"
}

travis_end() {
echo -e "travis_fold:end:$@"
}
18 changes: 0 additions & 18 deletions .travis/package.sh

This file was deleted.

9 changes: 0 additions & 9 deletions .travis/update.sh

This file was deleted.

0 comments on commit 4412d3c

Please sign in to comment.