mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
Travis: add Windows build in a container
I expect this to become the default way to test Windows builds and create installers on Travis. The idea is that instead of downloading the pre-built MXE binaries we might as well use a container that has all this installed and can be used locally to test if things fail on Travis; which will allow us to have the exact same environment for testing locally as runs on Travis. At this point the container used is way too big - more effort needs to be spent on shrinking it. Right now this only deals with Subsurface and not with smtk2ssrf. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
6b9e77ba01
commit
450f654063
5 changed files with 130 additions and 0 deletions
|
@ -18,6 +18,13 @@ matrix:
|
|||
sudo: required
|
||||
language: c++
|
||||
|
||||
- env: SUBSURFACE_PLATFORM='windows-container'
|
||||
os: linux
|
||||
filter_secrets: false
|
||||
language: c++
|
||||
services:
|
||||
- docker
|
||||
|
||||
- env: SUBSURFACE_PLATFORM='linux'
|
||||
os: linux
|
||||
dist: trusty
|
||||
|
|
30
scripts/windows-container/after_success.sh
Normal file
30
scripts/windows-container/after_success.sh
Normal file
|
@ -0,0 +1,30 @@
|
|||
#!/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 following Windows files for continuous build release:"
|
||||
find . -name subsurface\*.exe*
|
||||
|
||||
# set up the release message to use
|
||||
source ${TRAVIS_BUILD_DIR}/scripts/release-message.sh
|
||||
|
||||
# for debugging, let's look around a bit
|
||||
ls -la
|
||||
|
||||
# the win32 dir is owned by root, as is all its content (because that's
|
||||
# the user inside the docker container, I guess. So let's create upload.sh
|
||||
# in the TRAVIS_BUILD_DIR
|
||||
cd ${TRAVIS_BUILD_DIR}
|
||||
|
||||
# get and run the upload script
|
||||
wget -c https://raw.githubusercontent.com/dirkhh/uploadtool/master/upload.sh
|
||||
bash ./upload.sh ${TRAVIS_BUILD_DIR}/../win32/subsurface/subsurface*.exe*
|
||||
|
||||
|
||||
# upload smtk2ssrf
|
||||
#cd ${TRAVIS_BUILD_DIR}/../win32/smtk-import
|
||||
#bash ../subsurface/upload.sh smtk2ssrf*.exe*
|
62
scripts/windows-container/before_install.sh
Normal file
62
scripts/windows-container/before_install.sh
Normal file
|
@ -0,0 +1,62 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
# when running this locally, set TRAVIS_BUILD_DIR to the Subsurface
|
||||
# directory inside your Windows build tree
|
||||
TRAVIS_BUILD_DIR=${TRAVIS_BUILD_DIR:-$PWD}
|
||||
|
||||
git fetch --unshallow || true # if running locally, unshallow could fail
|
||||
git pull --tags
|
||||
git submodule init
|
||||
git describe
|
||||
|
||||
# make sure we have libdivecomputer
|
||||
echo "Get libdivecomputer"
|
||||
cd ${TRAVIS_BUILD_DIR}
|
||||
git submodule update --recursive
|
||||
cd libdivecomputer
|
||||
autoreconf --install
|
||||
autoreconf --install
|
||||
|
||||
# the intended layout as seen inside the container is
|
||||
# /win/subsurface # sources that we are testing
|
||||
# /win32 # binaries that are build
|
||||
# /grantlee
|
||||
# /libzip
|
||||
# /hidapi
|
||||
# /googlemaps
|
||||
#
|
||||
# the first two are mounted as volumes (this way we get access to the
|
||||
# build results outside of the container
|
||||
cd ${TRAVIS_BUILD_DIR}/..
|
||||
mkdir -p win32
|
||||
|
||||
# start the container and keep it running
|
||||
docker run -v $PWD/win32:/win/win32 -v $PWD/subsurface:/win/subsurface --name=builder -w /win -d dirkhh/mxe-build-container:0.6 /bin/sleep 60m
|
||||
|
||||
# for some reason this package was installed but still isn't there?
|
||||
docker exec -t builder apt-get install -y ca-certificates
|
||||
|
||||
# now set up our other dependencies
|
||||
# these are either not available in MXE, or a version that's too old
|
||||
docker exec -t builder bash subsurface/scripts/get-dep-lib.sh single . libzip
|
||||
docker exec -t builder bash subsurface/scripts/get-dep-lib.sh single . hidapi
|
||||
docker exec -t builder bash subsurface/scripts/get-dep-lib.sh single . googlemaps
|
||||
docker exec -t builder bash subsurface/scripts/get-dep-lib.sh single . grantlee
|
||||
|
||||
|
||||
# the rest we'll need when we enable smtk2ssrf
|
||||
|
||||
#echo "Get mdbtools"
|
||||
#cd ${TRAVIS_BUILD_DIR}/..
|
||||
#git clone https://github.com/brianb/mdbtools.git
|
||||
|
||||
# get prebuilt mxe libraries for mdbtools and glib.
|
||||
# do not overwrite upstream prebuilt mxe binaries if there is any coincidence.
|
||||
#wget https://www.dropbox.com/s/842skyusb96ii1u/mxe-static-minimal-994ad473.tar.xz
|
||||
#[[ ! -f mxe-static-minimal-994ad473.tar.xz ]] && exit 1
|
||||
#cd mxe
|
||||
#tar -xJf ../mxe-static-minimal-994ad473.tar.xz --skip-old-files
|
||||
#ls -al usr/
|
18
scripts/windows-container/in-container-build.sh
Normal file
18
scripts/windows-container/in-container-build.sh
Normal file
|
@ -0,0 +1,18 @@
|
|||
#!/bin/bash
|
||||
# this gets executed inside the container when building a Windows
|
||||
# installer on Travis
|
||||
#
|
||||
# working directory is assumed to be the directory including all the
|
||||
# source directories (subsurface, googlemaps, grantlee, etc)
|
||||
# in order to be compatible with the assumed layout in the MXE script, we
|
||||
# need to create the secondary build directory
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
mkdir -p win32
|
||||
cd win32
|
||||
bash -ex ../subsurface/packaging/windows/mxe-based-build.sh installer
|
||||
|
||||
# re-enable this when smtk2ssrf is figured out
|
||||
#bash -ex ${TRAVIS_BUILD_DIR}/packaging/windows/smtk2ssrf-mxe-build.sh -i
|
13
scripts/windows-container/travisbuild.sh
Normal file
13
scripts/windows-container/travisbuild.sh
Normal file
|
@ -0,0 +1,13 @@
|
|||
#!/bin/bash
|
||||
|
||||
# this is run to actually trigger the creation of the Windows installer
|
||||
# inside the container
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
docker exec -t builder bash subsurface/scripts/windows-container/in-container-build.sh 2>&1 | tee build.log
|
||||
|
||||
# fail the build if we didn't create the target binary
|
||||
grep "Built target installer" build.log
|
||||
|
Loading…
Reference in a new issue