From 4730f8b06878b021ae373c1430e9a9a756d1aa2e Mon Sep 17 00:00:00 2001 From: Tobias Junghans Date: Wed, 18 Oct 2017 18:19:25 +0200 Subject: [PATCH] Travis: cross-compile in Docker containers with mingw-w64 toolchain --- .travis.yml | 7 +++--- .travis/common/windows-build.sh | 17 +++++++++++++ .travis/linux.cross.win32/Dockerfile | 36 +++++++++++++++++++++++++++ .travis/linux.cross.win32/script.sh | 5 ++++ .travis/linux.cross.win64/Dockerfile | 36 +++++++++++++++++++++++++++ .travis/linux.cross.win64/script.sh | 5 ++++ .travis/linux.win32.before_install.sh | 4 +-- .travis/linux.win32.install.sh | 28 --------------------- .travis/linux.win32.script.sh | 3 ++- .travis/linux.win64.before_install.sh | 3 ++- .travis/linux.win64.install.sh | 21 ---------------- .travis/linux.win64.script.sh | 3 ++- 12 files changed, 110 insertions(+), 58 deletions(-) create mode 100755 .travis/common/windows-build.sh create mode 100644 .travis/linux.cross.win32/Dockerfile create mode 100755 .travis/linux.cross.win32/script.sh create mode 100644 .travis/linux.cross.win64/Dockerfile create mode 100755 .travis/linux.cross.win64/script.sh diff --git a/.travis.yml b/.travis.yml index 9e73bf834..1acd41413 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,5 +1,7 @@ language: cpp compiler: gcc +services: + - docker dist: trusty sudo: required cache: @@ -14,14 +16,11 @@ matrix: - os: osx osx_image: xcode8.2 - env: QT5=True - - env: QT5=True TARGET_OS=win32 - - env: QT5=True TARGET_OS=win64 - os: osx env: QT5=True install: ${TRAVIS_BUILD_DIR}/.travis/install.sh script: ${TRAVIS_BUILD_DIR}/.travis/script.sh after_script: ${TRAVIS_BUILD_DIR}/.travis/after_script.sh -before_deploy: make package deploy: provider: releases api_key: @@ -31,5 +30,5 @@ deploy: on: tags: true all_branches: true - condition: '("$TARGET_OS" = win??) && "$QT5"' + condition: '("$TARGET_OS" = win??)' repo: LMMS/lmms diff --git a/.travis/common/windows-build.sh b/.travis/common/windows-build.sh new file mode 100755 index 000000000..7386dee08 --- /dev/null +++ b/.travis/common/windows-build.sh @@ -0,0 +1,17 @@ +#!/usr/bin/env bash + +CPUS=$(cat /proc/cpuinfo | grep bogo | wc -l) + +cd /lmms + +mkdir build +cd build + +../cmake/build_mingw$1.sh + +echo Building on $CPUS CPUs +make -j$((CPUS+1)) + +make package + +mv -v *setup.exe /lmms diff --git a/.travis/linux.cross.win32/Dockerfile b/.travis/linux.cross.win32/Dockerfile new file mode 100644 index 000000000..1385a253b --- /dev/null +++ b/.travis/linux.cross.win32/Dockerfile @@ -0,0 +1,36 @@ +FROM ubuntu:artful +MAINTAINER Tobias Junghans + +RUN \ + apt-get update && \ + apt-get install -y software-properties-common && \ + add-apt-repository -y "ppa:tobydox/mingw-w64" && \ + apt-get update && \ + apt-get install --no-install-recommends -y --force-yes \ + git \ + cmake \ + pkgconfig \ + make \ + nsis \ + tofrodos \ + qt4-linguist-tools \ + g++-mingw-w64 \ + qt5base-mingw-w64 \ + sdl-mingw-w64 + libvorbis-mingw-w64 \ + fluidsynth-mingw-w64 \ + stk-mingw-w64 \ + glib2-mingw-w64 \ + portaudio-mingw-w64 \ + libsndfile-mingw-w64 \ + fftw-mingw-w64 \ + flac-mingw-w64 \ + fltk-mingw-w64 \ + libsamplerate-mingw-w64 \ + libgig-mingw-w64 \ + libsoundio-mingw-w64 \ + lame-mingw-w64 \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + diff --git a/.travis/linux.cross.win32/script.sh b/.travis/linux.cross.win32/script.sh new file mode 100755 index 000000000..d79b3f6e7 --- /dev/null +++ b/.travis/linux.cross.win32/script.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +/lmms/.travis/common/windows-build.sh 32 + + diff --git a/.travis/linux.cross.win64/Dockerfile b/.travis/linux.cross.win64/Dockerfile new file mode 100644 index 000000000..1385a253b --- /dev/null +++ b/.travis/linux.cross.win64/Dockerfile @@ -0,0 +1,36 @@ +FROM ubuntu:artful +MAINTAINER Tobias Junghans + +RUN \ + apt-get update && \ + apt-get install -y software-properties-common && \ + add-apt-repository -y "ppa:tobydox/mingw-w64" && \ + apt-get update && \ + apt-get install --no-install-recommends -y --force-yes \ + git \ + cmake \ + pkgconfig \ + make \ + nsis \ + tofrodos \ + qt4-linguist-tools \ + g++-mingw-w64 \ + qt5base-mingw-w64 \ + sdl-mingw-w64 + libvorbis-mingw-w64 \ + fluidsynth-mingw-w64 \ + stk-mingw-w64 \ + glib2-mingw-w64 \ + portaudio-mingw-w64 \ + libsndfile-mingw-w64 \ + fftw-mingw-w64 \ + flac-mingw-w64 \ + fltk-mingw-w64 \ + libsamplerate-mingw-w64 \ + libgig-mingw-w64 \ + libsoundio-mingw-w64 \ + lame-mingw-w64 \ + && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + diff --git a/.travis/linux.cross.win64/script.sh b/.travis/linux.cross.win64/script.sh new file mode 100755 index 000000000..eae3d9530 --- /dev/null +++ b/.travis/linux.cross.win64/script.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +/lmms/.travis/common/windows-build.sh 64 + + diff --git a/.travis/linux.win32.before_install.sh b/.travis/linux.win32.before_install.sh index e0cfcbafb..fbf79a62e 100755 --- a/.travis/linux.win32.before_install.sh +++ b/.travis/linux.win32.before_install.sh @@ -2,5 +2,5 @@ set -e -sudo add-apt-repository ppa:tobydox/mingw-x-trusty -y -sudo apt-get update -qq +docker build -t lmms-build ${TRAVIS_BUILD_DIR}/.travis/linux.cross.win32/ + diff --git a/.travis/linux.win32.install.sh b/.travis/linux.win32.install.sh index 4c35555e3..7e96b6b02 100755 --- a/.travis/linux.win32.install.sh +++ b/.travis/linux.win32.install.sh @@ -2,31 +2,3 @@ set -e -if [ "$QT5" ]; then - MINGW_PACKAGES="mingw32-x-qt5base" -else - MINGW_PACKAGES="mingw32-x-qt" -fi - -MINGW_PACKAGES="mingw32-x-sdl mingw32-x-libvorbis mingw32-x-fluidsynth mingw32-x-stk - mingw32-x-glib2 mingw32-x-portaudio mingw32-x-libsndfile mingw32-x-fftw - mingw32-x-flac mingw32-x-fltk mingw32-x-libsamplerate - mingw32-x-pkgconfig mingw32-x-binutils mingw32-x-gcc mingw32-x-runtime - mingw32-x-libgig mingw32-x-libsoundio mingw32-x-lame $MINGW_PACKAGES" - -export MINGW_PACKAGES - -"$TRAVIS_BUILD_DIR/.travis/linux.win.download.sh" win32 - -PACKAGES="nsis cloog-isl libmpc3 qt4-linguist-tools mingw32 $MINGW_PACKAGES" - -# shellcheck disable=SC2086 -sudo apt-get install -y $PACKAGES - -# ccache 3.2 is needed because mingw32-x-gcc is version 4.9, which causes cmake -# to use @file command line passing, which in turn ccache 3.1.9 doesn't support -pushd /tmp -wget http://archive.ubuntu.com/ubuntu/pool/main/c/ccache/ccache_3.2.4-1_amd64.deb -sha256sum -c "$TRAVIS_BUILD_DIR/.travis/ccache.sha256" -sudo dpkg -i ccache_3.2.4-1_amd64.deb -popd diff --git a/.travis/linux.win32.script.sh b/.travis/linux.win32.script.sh index 2ee9342c0..7fe3b4c31 100755 --- a/.travis/linux.win32.script.sh +++ b/.travis/linux.win32.script.sh @@ -3,4 +3,5 @@ set -e export CMAKE_OPTS="$CMAKE_FLAGS -DUSE_WERROR=ON" -../cmake/build_mingw32.sh +docker run -v ${TRAVIS_BUILD_DIR}:/lmms:rw lmms-build /bin/sh /lmms/.travis/linux.cross.win32/script.sh + diff --git a/.travis/linux.win64.before_install.sh b/.travis/linux.win64.before_install.sh index 083039391..a254fdc27 100755 --- a/.travis/linux.win64.before_install.sh +++ b/.travis/linux.win64.before_install.sh @@ -2,4 +2,5 @@ set -e -"$TRAVIS_BUILD_DIR/.travis/linux.win32.before_install.sh" +docker build -t lmms-build ${TRAVIS_BUILD_DIR}/.travis/linux.cross.win64/ + diff --git a/.travis/linux.win64.install.sh b/.travis/linux.win64.install.sh index 2d03e0320..7e96b6b02 100755 --- a/.travis/linux.win64.install.sh +++ b/.travis/linux.win64.install.sh @@ -2,24 +2,3 @@ set -e -# First, install 32-bit deps -"$TRAVIS_BUILD_DIR/.travis/linux.win32.install.sh" - -if [ "$QT5" ]; then - MINGW_PACKAGES="mingw64-x-qt5base" -else - MINGW_PACKAGES="mingw64-x-qt" -fi - -MINGW_PACKAGES="mingw64-x-sdl mingw64-x-libvorbis mingw64-x-fluidsynth mingw64-x-stk - mingw64-x-glib2 mingw64-x-portaudio mingw64-x-libsndfile - mingw64-x-fftw mingw64-x-flac mingw64-x-fltk mingw64-x-libsamplerate - mingw64-x-pkgconfig mingw64-x-binutils mingw64-x-gcc mingw64-x-runtime - mingw64-x-libgig mingw64-x-libsoundio mingw64-x-lame $MINGW_PACKAGES" - -export MINGW_PACKAGES - -"$TRAVIS_BUILD_DIR/.travis/linux.win.download.sh" win64 - -# shellcheck disable=SC2086 -sudo apt-get install -y $MINGW_PACKAGES diff --git a/.travis/linux.win64.script.sh b/.travis/linux.win64.script.sh index 1815c7319..29da2a437 100755 --- a/.travis/linux.win64.script.sh +++ b/.travis/linux.win64.script.sh @@ -3,4 +3,5 @@ set -e export CMAKE_OPTS="$CMAKE_FLAGS -DUSE_WERROR=ON" -../cmake/build_mingw64.sh +docker run -v ${TRAVIS_BUILD_DIR}:/lmms:rw lmms-build /bin/sh /lmms/.travis/linux.cross.win64/script.sh +