diff options
-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 |