From 2e674b9202a6c1bbc1811698285e049b45d8a070 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Janiszewski?= Date: Thu, 15 Dec 2016 17:55:17 +0100 Subject: [PATCH] Migrate Linux Travis-CI jobs to docker containers --- .travis.yml | 10 +++++++--- scripts/linux/build.sh | 35 ++++++++++++++++++++++++----------- scripts/linux/install.sh | 20 +++++++------------- test/tests/CMakeLists.txt | 3 ++- 4 files changed, 40 insertions(+), 28 deletions(-) diff --git a/.travis.yml b/.travis.yml index 4cffffbfa0..48731ef555 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,8 +13,10 @@ env: matrix: include: - os: linux + services: + - docker env: - - OPENRCT2_CMAKE_OPTS="-DCMAKE_C_COMPILER=gcc-4.8 -DCMAKE_CXX_COMPILER=g++-4.8 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=OpenRCT2" OPENRCT2_MAKE_OPTS="-j2" TARGET=linux64 + - OPENRCT2_CMAKE_OPTS="-DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=OpenRCT2" OPENRCT2_MAKE_OPTS="-j2" TARGET=ubuntu_amd64 - secure: "S3u2VCE2Vy8KNXoeh+DhnzjCmgTX0r95uEZrXDU+IKANOOCKn7Dg4OFDZE3LY/i1y2/EUDpnR5yLC38Ks795EUP/sv/OoMl4tjQ20yERjqWh+gcIRrgx7SdVabuAh3t4aBdaLD4Pfnj5avxeCt6rL7yGnj0wdbrbJSBZPsgSnuQ=" after_success: - cd build @@ -27,8 +29,10 @@ matrix: else curl --progress-bar --upload-file openrct2-linux.tar.gz https://transfer.sh/openrct2-linux-x86_64.tar.gz -o link && cat link; fi - os: linux + services: + - docker env: - - OPENRCT2_CMAKE_OPTS="-DFORCE32=ON -DDISABLE_RCT2=OFF -DCMAKE_INSTALL_PREFIX=OpenRCT2" TARGET=linux + - OPENRCT2_CMAKE_OPTS="-DFORCE32=ON -DDISABLE_RCT2=OFF -DCMAKE_INSTALL_PREFIX=OpenRCT2" TARGET=ubuntu_i686 - secure: "S3u2VCE2Vy8KNXoeh+DhnzjCmgTX0r95uEZrXDU+IKANOOCKn7Dg4OFDZE3LY/i1y2/EUDpnR5yLC38Ks795EUP/sv/OoMl4tjQ20yERjqWh+gcIRrgx7SdVabuAh3t4aBdaLD4Pfnj5avxeCt6rL7yGnj0wdbrbJSBZPsgSnuQ=" after_success: - cd build @@ -41,7 +45,7 @@ matrix: else curl --progress-bar --upload-file openrct2-linux.tar.gz https://transfer.sh/openrct2-linux-i686.tar.gz -o link && cat link; fi - os: linux - env: OPENRCT2_CMAKE_OPTS="-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++" TARGET=linux64 + env: OPENRCT2_CMAKE_OPTS="-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++" TARGET=ubuntu_amd64 - os: linux env: OPENRCT2_CMAKE_OPTS="-DCMAKE_TOOLCHAIN_FILE=../CMakeLists_mingw.txt -DFORCE32=on" TARGET=windows - os: linux diff --git a/scripts/linux/build.sh b/scripts/linux/build.sh index af7e33201e..f4ba09383a 100755 --- a/scripts/linux/build.sh +++ b/scripts/linux/build.sh @@ -20,7 +20,7 @@ if [[ ! -d build ]]; then mkdir -p build fi -if [[ $TARGET != "linux" && $TARGET != "docker32" && $SYSTEM != "Darwin" ]]; then +if [[ $TARGET != "ubuntu_i686" && $TARGET != "docker32" && $SYSTEM != "Darwin" ]]; then sha256sum=f124c954bbd0b58c93e5fba46902806bd3637d3a1c5fb8e4b67441052f182df2 libVFile="./libversion" libdir="./lib" @@ -76,17 +76,30 @@ pushd build chmod g+s $(pwd) # CMAKE and MAKE opts from environment docker run -v $PARENT:/work/openrct2 -w /work/openrct2/build -i -t openrct2/openrct2:64bit-only bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS && make test ARGS=\"-V\"" - elif [[ $TARGET == "linux" ]] + elif [[ $TARGET == "ubuntu_i686" ]] then - cmake $OPENRCT2_CMAKE_OPTS .. -DCMAKE_BUILD_TYPE=debug - # NOT the same variable as above - # this target also includes building & running of testpaint - make $OPENRCT2_MAKE_OPTS testpaint - ./testpaint --quiet || if [[ $? -eq 1 ]] ; then echo Allowing failed tests to pass ; else false; fi + PARENT=$(readlink -f ../) + chmod a+rwx $(pwd) + chmod g+s $(pwd) + # CMAKE and MAKE opts from environment + docker run -v $PARENT:/work/openrct2 -w /work/openrct2/build -i -t openrct2/openrct2:ubuntu_i686 bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && make all testpaint install $OPENRCT_MAKE_OPTS && make test ARGS=\"-V\" && ( ./testpaint --quiet || if [[ \$? -eq 1 ]] ; then echo Allowing failed tests to pass ; else echo here ; false; fi )" + elif [[ $TARGET == "ubuntu_amd64" ]] + then + PARENT=$(readlink -f ../) + chmod a+rwx $(pwd) + chmod g+s $(pwd) + # CMAKE and MAKE opts from environment + docker run -v $PARENT:/work/openrct2 -w /work/openrct2/build -i -t openrct2/openrct2:ubuntu_amd64 bash -c "cmake ../ -DWITH_TESTS=on $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS && make test ARGS=\"-V\"" + elif [[ $TARGET == "windows" ]] + then + PARENT=$(readlink -f ../) + chmod a+rwx $(pwd) + chmod g+s $(pwd) + # CMAKE and MAKE opts from environment + docker run -v /usr/local/cross-tools/:/usr/local/cross-tools/ -v $PARENT:/work/openrct2 -w /work/openrct2/build -i -t openrct2/openrct2:mingw bash -c "cmake ../ $OPENRCT2_CMAKE_OPTS && make $OPENRCT_MAKE_OPTS" else - cmake $OPENRCT2_CMAKE_OPTS .. - # NOT the same variable as above - make $OPENRCT2_MAKE_OPTS + echo "Unkown target $TARGET" + exit 1 fi popd @@ -100,7 +113,7 @@ if [[ ! -h build/data ]]; then ln -s ../data build/data fi -if [[ $TARGET == "linux" ]] || [[ $TARGET == "docker32" ]]; then +if [[ $TARGET == "ubuntu_i686" ]] || [[ $TARGET == "docker32" ]]; then if [[ ! -h openrct2 ]]; then ln -s build/openrct2 openrct2 fi diff --git a/scripts/linux/install.sh b/scripts/linux/install.sh index 668a29f31f..8254859784 100755 --- a/scripts/linux/install.sh +++ b/scripts/linux/install.sh @@ -18,8 +18,8 @@ else fi mkdir -p "$cachedir" -# Sets default target to "linux", if none specified -TARGET=${TARGET-linux} +# Sets default target to "ubuntu_amd64", if none specified +TARGET=${TARGET-ubuntu_amd64} # keep in sync with version in build.sh libversion=3 libVFile="./libversion" @@ -170,20 +170,14 @@ elif [[ $(uname) == "Linux" ]]; then else # prevent build.sh from re-doing all the steps again case "$TARGET" in - "linux") - sudo dpkg --add-architecture i386 - sudo apt-get update - sudo apt-get install --no-install-recommends -y --force-yes cmake libsdl2-dev:i386 libsdl2-ttf-dev:i386 gcc-4.8 pkg-config:i386 g++-4.8-multilib gcc-4.8-multilib libjansson-dev:i386 libspeex-dev:i386 libspeexdsp-dev:i386 libcurl4-openssl-dev:i386 libcrypto++-dev:i386 clang libfontconfig1-dev:i386 libfreetype6-dev:i386 libpng-dev:i386 - sudo apt-get install -f + "ubuntu_i686") + docker pull openrct2/openrct2:ubuntu_i686 ;; - "linux64") - sudo apt-get update - sudo apt-get install --no-install-recommends -y --force-yes cmake libsdl2-dev libsdl2-ttf-dev gcc-4.8 pkg-config g++ gcc libjansson-dev libspeex-dev libspeexdsp-dev libcurl4-openssl-dev libcrypto++-dev libfontconfig1-dev libfreetype6-dev libpng-dev - sudo apt-get install -f + "ubuntu_amd64") + docker pull openrct2/openrct2:ubuntu_amd64 ;; "windows") - sudo apt-get update - sudo apt-get install -y --force-yes binutils-mingw-w64-i686 gcc-mingw-w64-i686 g++-mingw-w64-i686 cmake + docker pull openrct2/openrct2:mingw ;; "docker32") docker pull openrct2/openrct2:32bit-only diff --git a/test/tests/CMakeLists.txt b/test/tests/CMakeLists.txt index 8d2c6650ff..067385c5a9 100644 --- a/test/tests/CMakeLists.txt +++ b/test/tests/CMakeLists.txt @@ -22,6 +22,7 @@ ExternalProject_Add( DEPENDS googletest-distribution DOWNLOAD_COMMAND "" SOURCE_DIR "${GOOGLETEST_DISTRIB_SOURCE_DIR}/googletest" + CMAKE_ARGS "-DCMAKE_CXX_FLAGS=${TARGET_M}" # Disable install step INSTALL_COMMAND "" # Wrap download, configure and build steps in a script to log output @@ -76,4 +77,4 @@ set(LANGUAGEPACK_TEST_SOURCES ) add_executable(test_languagepack ${LANGUAGEPACK_TEST_SOURCES}) target_link_libraries(test_languagepack ${GTEST_LIBRARIES} dl z SDL2 SDL2_ttf ssl crypto) -add_test(NAME languagepack COMMAND test_languagepack) \ No newline at end of file +add_test(NAME languagepack COMMAND test_languagepack)