diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2017-11-11 09:38:41 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-11-11 17:48:57 -0800 |
commit | 4d04f74312dc4a7fe75a442cf22a2901ede28d1a (patch) | |
tree | 3e96341392822a4d4a038b0a72efa174191ce535 | |
parent | a157fa5c6778543be5981bc2384dac563436a1f9 (diff) | |
download | subsurface-4d04f74312dc4a7fe75a442cf22a2901ede28d1a.tar.gz |
Travis: also build an MXE/Windows installer
In the process, simplify our dependency a bit by no longer building
against libssh2 (we don't support ssh based authentication for git
on Windows) and libcurl (since it's proxy implementation doesn't appear
to actually work on Windows, anyway).
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | .travis.yml | 6 | ||||
-rwxr-xr-x | packaging/windows/mxe-based-build.sh | 67 | ||||
-rw-r--r-- | scripts/windows/after_success.sh | 15 | ||||
-rw-r--r-- | scripts/windows/before_install.sh | 79 | ||||
-rw-r--r-- | scripts/windows/travisbuild.sh | 12 |
5 files changed, 118 insertions, 61 deletions
diff --git a/.travis.yml b/.travis.yml index 5a1923a3c..eac6dc385 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,12 @@ matrix: include: + - env: SUBSURFACE_PLATFORM='windows' + os: linux + dist: trusty + sudo: required + language: c++ + - env: SUBSURFACE_PLATFORM='linux' os: linux dist: trusty diff --git a/packaging/windows/mxe-based-build.sh b/packaging/windows/mxe-based-build.sh index 5dceed3ab..8f49582e8 100755 --- a/packaging/windows/mxe-based-build.sh +++ b/packaging/windows/mxe-based-build.sh @@ -41,8 +41,6 @@ # # ~/src/mxe <- MXE git with Qt5, automake (see above) # /grantlee <- Grantlee 5.0.0 sources from git -# /libssh2 <- from git - v1.6 seems to work -# /libcurl <- from git - 7.42.1 seems to work - rename folder! # /subsurface <- current subsurface git # /libdivecomputer <- appropriate libdc/Subsurface-branch branch # /libgit2 <- libgit2 0.23.1 or similar @@ -132,7 +130,7 @@ if [[ ! -d grantlee || -f build.grantlee ]] ; then rm -f build.grantlee mkdir -p grantlee cd grantlee - i686-w64-mingw32.shared-cmake -DCMAKE_TOOLCHAIN_FILE="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/share/cmake/mxe-conf.cmake \ + i686-w64-mingw32.shared-cmake \ -DCMAKE_BUILD_TYPE=$RELEASE \ -DBUILD_TESTS=OFF \ "$BASEDIR"/grantlee @@ -141,61 +139,6 @@ if [[ ! -d grantlee || -f build.grantlee ]] ; then make install fi - -# libssh2: - -cd "$BUILDDIR" -if [[ ! -d libssh2 || -f build.libssh2 ]] ; then - rm -f build.libssh2 - mkdir -p libssh2 - cd libssh2 - - i686-w64-mingw32.shared-cmake -DCMAKE_TOOLCHAIN_FILE="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/share/cmake/mxe-conf.cmake \ - -DCMAKE_BUILD_TYPE=$RELEASE \ - -DBUILD_EXAMPLES=OFF \ - -DBUILD_TESTING=OFF \ - -DBUILD_SHARED_LIBS=ON \ - "$BASEDIR"/libssh2 - make $JOBS - make install - # don't install your dlls in bin, please - cp "$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/bin/libssh2.dll "$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/lib -fi - - -# libcurl - -cd "$BUILDDIR" -if [[ ! -d libcurl || -f build.libcurl ]] ; then - rm -f build.libcurl - mkdir -p libcurl - cd libcurl - ../../libcurl/configure --host=i686-w64-mingw32.shared \ - --prefix="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/ \ - --disable-ftp \ - --disable-ldap \ - --disable-ldaps \ - --disable-rtsp \ - --enable-proxy \ - --enable-dict \ - --disable-telnet \ - --disable-tftp \ - --disable-pop3 \ - --disable-imap \ - --disable-smb \ - --disable-smtp \ - --disable-gopher \ - --disable-manual \ - --with-libssh2="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/ - - # now remove building the executable - sed -i 's/SUBDIRS = lib src include/SUBDIRS = lib include/' Makefile - - make $JOBS - make install -fi - - # libgit2: cd "$BUILDDIR" @@ -203,7 +146,7 @@ if [[ ! -d libgit2 || -f build.libgit2 ]] ; then rm -f build.libgit2 mkdir -p libgit2 cd libgit2 - i686-w64-mingw32.shared-cmake -DCMAKE_TOOLCHAIN_FILE="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/share/cmake/mxe-conf.cmake \ + i686-w64-mingw32.shared-cmake \ -DBUILD_CLAR=OFF -DTHREADSAFE=ON \ -DCMAKE_BUILD_TYPE=$RELEASE \ -DDLLTOOL="$BASEDIR"/"$MXEDIR"/usr/bin/i686-w64-mingw32.shared-dlltool \ @@ -228,7 +171,9 @@ if [[ ! -d libdivecomputer || -f build.libdivecomputer ]] ; then mkdir -p libdivecomputer cd libdivecomputer - "$BASEDIR"/libdivecomputer/configure --host=i686-w64-mingw32.shared \ + "$BASEDIR"/libdivecomputer/configure \ + CC=i686-w64-mingw32.shared-gcc \ + --host=i686-w64-mingw32.shared \ --enable-shared \ --prefix="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared make $JOBS @@ -323,7 +268,7 @@ done cd "$BUILDDIR"/subsurface -i686-w64-mingw32.shared-cmake -DCMAKE_TOOLCHAIN_FILE="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/share/cmake/mxe-conf.cmake \ +i686-w64-mingw32.shared-cmake \ -DCMAKE_PREFIX_PATH="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/qt5 \ -DCMAKE_BUILD_TYPE=$RELEASE \ -DQT_TRANSLATION_DIR="$BASEDIR"/"$MXEDIR"/usr/i686-w64-mingw32.shared/qt5/translations \ diff --git a/scripts/windows/after_success.sh b/scripts/windows/after_success.sh new file mode 100644 index 000000000..9fd38c475 --- /dev/null +++ b/scripts/windows/after_success.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +if [ ! -z $TRAVIS_BRANCH ] && [ "$TRAVIS_BRANCH" != "master" ] ; then + export UPLOADTOOL_SUFFIX=$TRAVIS_BRANCH +fi + +cd ${TRAVIS_BUILD_DIR}/../win32/subsurface + +echo "Submitting the folloing Windows installer for continuous build release:" +find . -name subsurface\*.exe + +# get and run the upload script +wget -c https://github.com/probonopd/uploadtool/raw/master/upload.sh +bash ./upload.sh subsurface*.exe + diff --git a/scripts/windows/before_install.sh b/scripts/windows/before_install.sh new file mode 100644 index 000000000..1d95206a0 --- /dev/null +++ b/scripts/windows/before_install.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +set -x + +# Travis only pulls shallow repos. But that messes with git describe. +# Sorry Travis, fetching the whole thing and the tags as well... +git fetch --unshallow +git pull --tags +git describe + +# grab our own custom MXE environment +cd ${TRAVIS_BUILD_DIR}/.. +echo "Downloading prebuilt MXE environment from Subsurface-divelog.org" +wget -q http://subsurface-divelog.org/downloads/mxe-994ad473.tar.xz +mkdir -p mxe +cd mxe +tar xJf ../mxe-994ad473.tar.xz + +# hack around path dependency - needs to be fixed +sudo mkdir -p /data/winqt551/ +sudo ln -s ${TRAVIS_BUILD_DIR}/../mxe /data/winqt551/mxe-current +ls -l /data/winqt551/mxe-current/usr + +# libdivecomputer uses the wrong include path for libusb +# the pkgconfig file for libusb already gives the include path as +# ../include/libusb-1.0 yet libdivecomputer wants to use +# include <libusb-1.0/libusb.h> +cd usr/i686-w64-mingw32.shared/include/libusb-1.0 +ln -s . libusb-1.0 +cd ${TRAVIS_BUILD_DIR}/.. + +# now set up our other dependencies + +CURRENT_LIBZIP="1.2.0" +CURRENT_HIDAPI="hidapi-0.7.0" +CURRENT_LIBUSB="v1.0.21" +CURRENT_LIBGIT2="v0.26.0" + + +#this will soon be a git submodule +echo "Get libdivecomputer" +cd ${TRAVIS_BUILD_DIR}/.. +git clone -b Subsurface-branch https://github.com/Subsurface-divelog/libdc.git libdivecomputer +cd libdivecomputer +if [ ! -f ./configure ] ; then + autoreconf --install . + autoreconf --install . # not a typo - somehow/sometimes libdivecomputer needs to run this twice. Don't ask. +fi + +echo "Get libusb" +cd ${TRAVIS_BUILD_DIR}/.. +git clone https://github.com/libusb/libusb +cd libusb +if ! git checkout $CURRENT_LIBUSB ; then + echo "Can't find the right tag in libusb - giving up" + exit 1 +fi + +echo "Get libgit2" +cd ${TRAVIS_BUILD_DIR}/.. +git clone https://github.com/libgit2/libgit2.git +cd libgit2 +if ! git checkout $CURRENT_LIBGIT2 ; then + echo "Can't find the right tag in libgit2 - giving up" + exit 1 +fi + +echo "Get googlemaps" +cd ${TRAVIS_BUILD_DIR}/.. +git clone https://github.com/Subsurface-divelog/googlemaps.git + +echo "Get Grantlee" +cd ${TRAVIS_BUILD_DIR}/.. +git clone https://github.com/steveire/grantlee.git +cd grantlee +if ! git checkout v5.0.0 ; then + echo "can't check out v5.0.0 of grantlee -- giving up" + exit 1 +fi diff --git a/scripts/windows/travisbuild.sh b/scripts/windows/travisbuild.sh new file mode 100644 index 000000000..e8455ea87 --- /dev/null +++ b/scripts/windows/travisbuild.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +# this gets executed by Travis when building an installer for Windows +# it gets started from inside the subsurface directory +# with all the other projects downloaded and installed in parralel to +# subsurface; in order to be compatible with the assumed layout, we +# need to create the secondary build directory +cd ${TRAVIS_BUILD_DIR}/.. +mkdir win32 +ls -l +cd win32 +bash -ex ${TRAVIS_BUILD_DIR}/packaging/windows/mxe-based-build.sh installer |