summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Anton Lundin <glance@acc.umu.se>2017-02-05 23:26:52 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-02-05 14:46:08 -0800
commit3ae9408a4c509a87e17c991afbfccaba082984a7 (patch)
treed077d071e55a19011184aba381ad950d15147448
parentc2ea3c2616d6b622ba66ddd358493690dc227f57 (diff)
downloadsubsurface-3ae9408a4c509a87e17c991afbfccaba082984a7.tar.gz
Add a travis build of subsurface
This runs a subsurface script/build.sh build in travis-ci, and runs the tests afterwards. The build runs on the Ubuntu Trusty image, but due to the fact that the Qt shipped there is to old, it installs a Qt 5.8 from qt.io , and with some trickery caches it. Hacked out are things that doesn't build with Qt 5.8, and the rest is built against WebEngine. The tests currently fail, and I really don't know why, but its a clear indication that they aren't run that often. This cam makes sure they are run at least. The actual testing is just commented out for that reason. Signed-off-by: Anton Lundin <glance@acc.umu.se> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--.travis.yml47
-rw-r--r--qt-installer-noninteractive.qs60
2 files changed, 107 insertions, 0 deletions
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 000000000..6240ffe33
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,47 @@
+language: c++
+
+dist: trusty
+
+cache:
+ directories:
+ - Qt
+
+addons:
+ apt:
+ packages:
+ - git
+ - g++
+ - make
+ - autoconf
+ - automake
+ - libtool
+ - cmake
+ - pkg-config
+ - libxml2-dev
+ - libxslt1-dev
+ - libzip-dev
+ - libsqlite3-dev
+ - libusb-1.0-0-dev
+ - libssl-dev
+ - libssh2-1-dev
+ - libcurl4-openssl-dev
+ # Not a subsurface dependency, but a Qt dependency
+ - mesa-common-dev
+
+before_install:
+ - if [ ! -e Qt/5.8 ] ; then
+ rm -rf Qt ;
+ wget http://download.qt.io/official_releases/qt/5.8/5.8.0/qt-opensource-linux-x64-android-5.8.0.run ;
+ chmod +x ./qt-opensource-linux-x64-android-5.8.0.run ;
+ ./qt-opensource-linux-x64-android-5.8.0.run -platform minimal --script qt-installer-noninteractive.qs --no-force-installations ;
+ fi
+
+script:
+ - perl -pi -e 's/BUILDGRANTLEE=1/BUILDGRANTLEE=0/' scripts/build.sh
+ - perl -pi -e 's/BUILDMARBLE=1/BUILDMARBLE=0/' scripts/build.sh
+ - perl -pi -e 's/-DNO_PRINTING=OFF/-DNO_PRINTING=ON -DNO_MARBLE=ON -DUSE_WEBENGINE=ON/' scripts/build.sh
+ - export CMAKE_PREFIX_PATH=$PWD/Qt/5.8/gcc_64/lib/cmake ;
+ cd .. ;
+ bash -e ./subsurface/scripts/build.sh
+# - cd subsurface/build ; env CTEST_OUTPUT_ON_FAILURE=1 make check
+# - cd subsurface/build-mobile ; env CTEST_OUTPUT_ON_FAILURE=1 make check
diff --git a/qt-installer-noninteractive.qs b/qt-installer-noninteractive.qs
new file mode 100644
index 000000000..b6c6c2a59
--- /dev/null
+++ b/qt-installer-noninteractive.qs
@@ -0,0 +1,60 @@
+// http://stackoverflow.com/a/34032216/78204
+
+function Controller() {
+ installer.autoRejectMessageBoxes();
+ installer.setMessageBoxAutomaticAnswer("OverwriteTargetDirectory", QMessageBox.Yes);
+ installer.installationFinished.connect(function() {
+ gui.clickButton(buttons.NextButton);
+ })
+}
+
+Controller.prototype.WelcomePageCallback = function() {
+ gui.clickButton(buttons.NextButton);
+}
+
+Controller.prototype.CredentialsPageCallback = function() {
+ gui.clickButton(buttons.NextButton);
+}
+
+Controller.prototype.IntroductionPageCallback = function() {
+ gui.clickButton(buttons.NextButton);
+}
+
+Controller.prototype.TargetDirectoryPageCallback = function()
+{
+ //gui.currentPageWidget().TargetDirectoryLineEdit.setText(installer.value("HomeDir") + "/Qt");
+ gui.currentPageWidget().TargetDirectoryLineEdit.setText(installer.value("InstallerDirPath") + "/Qt");
+ //gui.currentPageWidget().TargetDirectoryLineEdit.setText("/scratch/Qt");
+ gui.clickButton(buttons.NextButton);
+}
+
+Controller.prototype.ComponentSelectionPageCallback = function() {
+ var widget = gui.currentPageWidget();
+
+ widget.selectAll();
+ widget.deselectComponent('qt.58.src');
+
+ gui.clickButton(buttons.NextButton);
+}
+
+Controller.prototype.LicenseAgreementPageCallback = function() {
+ gui.currentPageWidget().AcceptLicenseRadioButton.setChecked(true);
+ gui.clickButton(buttons.NextButton);
+}
+
+Controller.prototype.StartMenuDirectoryPageCallback = function() {
+ gui.clickButton(buttons.NextButton);
+}
+
+Controller.prototype.ReadyForInstallationPageCallback = function()
+{
+ gui.clickButton(buttons.NextButton);
+}
+
+Controller.prototype.FinishedPageCallback = function() {
+var checkBoxForm = gui.currentPageWidget().LaunchQtCreatorCheckBoxForm
+if (checkBoxForm && checkBoxForm.launchQtCreatorCheckBox) {
+ checkBoxForm.launchQtCreatorCheckBox.checked = false;
+}
+ gui.clickButton(buttons.FinishButton);
+}