From 39c54e13c3ee3558f330f4d5716d8073b48de11a Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Fri, 21 Jun 2019 02:43:59 +0200 Subject: [PATCH] Improve buildbot script PR created under the employment of EvidenceBKidscode * Variables to set git repositories urls (allows to build from another repo) * Variables to set git branch to build from (allows to build from non-master branch) * Variables to change built name * Make -j uses the proper number of processors (autodetect) * Changed toolchain from win32 to adpat it to non-debian distros --- .travis.yml | 12 ------- util/buildbot/buildwin32.sh | 32 +++++++++++++++---- util/buildbot/buildwin64.sh | 21 ++++++++---- ...cmake => toolchain_i586-mingw32msvc.cmake} | 0 .../buildbot/toolchain_i646-w64-mingw32.cmake | 17 ++++++++++ ...ake => toolchain_x86_64-w64-mingw32.cmake} | 0 util/travis/before_install.sh | 4 +-- 7 files changed, 57 insertions(+), 29 deletions(-) rename util/buildbot/{toolchain_mingw.cmake => toolchain_i586-mingw32msvc.cmake} (100%) create mode 100644 util/buildbot/toolchain_i646-w64-mingw32.cmake rename util/buildbot/{toolchain_mingw64.cmake => toolchain_x86_64-w64-mingw32.cmake} (100%) diff --git a/.travis.yml b/.travis.yml index 23f6d5ebb..2eb14a96f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -34,22 +34,10 @@ matrix: - env: PLATFORM=Win32 compiler: gcc os: linux - addons: - apt: - packages: ['gcc-mingw-w64-i686', 'g++-mingw-w64-i686', 'binutils-mingw-w64-i686'] - sources: &sources - - ubuntu-toolchain-r-test - - sourceline: 'deb http://mirrors.kernel.org/ubuntu xenial main universe' - env: PLATFORM=Win64 compiler: gcc os: linux - addons: - apt: - packages: ['gcc-mingw-w64-x86-64', 'g++-mingw-w64-x86-64', 'binutils-mingw-w64-x86-64'] - sources: &sources - - ubuntu-toolchain-r-test - - sourceline: 'deb http://mirrors.kernel.org/ubuntu xenial main universe' - env: PLATFORM=Unix compiler: clang diff --git a/util/buildbot/buildwin32.sh b/util/buildbot/buildwin32.sh index 6646ca164..9af4eb02e 100755 --- a/util/buildbot/buildwin32.sh +++ b/util/buildbot/buildwin32.sh @@ -1,6 +1,13 @@ #!/bin/bash set -e +CORE_GIT=https://github.com/minetest/minetest +CORE_BRANCH=master +CORE_NAME=minetest +GAME_GIT=https://github.com/minetest/minetest_game +GAME_BRANCH=master +GAME_NAME=minetest_game + dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" if [ $# -ne 1 ]; then echo "Usage: $0 " @@ -12,7 +19,18 @@ builddir="$( cd "$builddir" && pwd )" packagedir=$builddir/packages libdir=$builddir/libs -toolchain_file=$dir/toolchain_mingw.cmake +# Test which win32 compiler is present +which i586-mingw32msvc-windres > /dev/null 2>&1 && toolchain_file=$dir/toolchain_i586-mingw32msvc.cmake +which i686-w64-mingw32-windres > /dev/null 2>&1 && toolchain_file=$dir/toolchain_i646-w64-mingw32.cmake + +if [ -z "$toolchain_file" ] +then + echo "Unable to determine which mingw32 compiler to use" + exit 1 +else + echo "Using $toolchain_file" +fi + irrlicht_version=1.8.4 ogg_version=1.3.2 vorbis_version=1.3.5 @@ -70,22 +88,22 @@ cd $libdir # Get minetest cd $builddir if [ ! "x$EXISTING_MINETEST_DIR" = "x" ]; then - ln -s $EXISTING_MINETEST_DIR minetest + ln -s $EXISTING_MINETEST_DIR $CORE_NAME else - [ -d minetest ] && (cd minetest && git pull) || (git clone https://github.com/minetest/minetest) + [ -d $CORE_NAME ] && (cd $CORE_NAME && git pull) || (git clone -b $CORE_BRANCH $CORE_GIT) fi -cd minetest +cd $CORE_NAME git_hash=$(git rev-parse --short HEAD) # Get minetest_game cd games if [ "x$NO_MINETEST_GAME" = "x" ]; then - [ -d minetest_game ] && (cd minetest_game && git pull) || (git clone https://github.com/minetest/minetest_game) + [ -d $GAME_NAME ] && (cd $GAME_NAME && git pull) || (git clone -b $GAME_BRANCH $GAME_GIT) fi cd ../.. # Build the thing -cd minetest +cd $CORE_NAME [ -d _build ] && rm -Rf _build/ mkdir _build cd _build @@ -149,7 +167,7 @@ cmake .. \ -DLEVELDB_LIBRARY=$libdir/leveldb/lib/libleveldb.dll.a \ -DLEVELDB_DLL=$libdir/leveldb/bin/libleveldb.dll -make -j2 +make -j$(nproc) [ "x$NO_PACKAGE" = "x" ] && make package diff --git a/util/buildbot/buildwin64.sh b/util/buildbot/buildwin64.sh index b0b2bed17..7e3db4842 100755 --- a/util/buildbot/buildwin64.sh +++ b/util/buildbot/buildwin64.sh @@ -1,6 +1,13 @@ #!/bin/bash set -e +CORE_GIT=https://github.com/minetest/minetest +CORE_BRANCH=master +CORE_NAME=minetest +GAME_GIT=https://github.com/minetest/minetest_game +GAME_BRANCH=master +GAME_NAME=minetest_game + dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" if [ $# -ne 1 ]; then echo "Usage: $0 " @@ -12,7 +19,7 @@ builddir="$( cd "$builddir" && pwd )" packagedir=$builddir/packages libdir=$builddir/libs -toolchain_file=$dir/toolchain_mingw64.cmake +toolchain_file=$dir/toolchain_x86_64-w64-mingw32.cmake irrlicht_version=1.8.4 ogg_version=1.3.2 vorbis_version=1.3.5 @@ -71,22 +78,22 @@ cd $libdir # Get minetest cd $builddir if [ ! "x$EXISTING_MINETEST_DIR" = "x" ]; then - ln -s $EXISTING_MINETEST_DIR minetest + ln -s $EXISTING_MINETEST_DIR $CORE_NAME else - [ -d minetest ] && (cd minetest && git pull) || (git clone https://github.com/minetest/minetest) + [ -d $CORE_NAME ] && (cd $CORE_NAME && git pull) || (git clone -b $CORE_BRANCH $CORE_GIT) fi -cd minetest +cd $CORE_NAME git_hash=$(git rev-parse --short HEAD) # Get minetest_game cd games if [ "x$NO_MINETEST_GAME" = "x" ]; then - [ -d minetest_game ] && (cd minetest_game && git pull) || (git clone https://github.com/minetest/minetest_game) + [ -d $GAME_NAME ] && (cd $GAME_NAME && git pull) || (git clone -b $GAME_BRANCH $GAME_GIT) fi cd ../.. # Build the thing -cd minetest +cd $CORE_NAME [ -d _build ] && rm -Rf _build/ mkdir _build cd _build @@ -150,7 +157,7 @@ cmake .. \ -DLEVELDB_LIBRARY=$libdir/leveldb/lib/libleveldb.dll.a \ -DLEVELDB_DLL=$libdir/leveldb/bin/libleveldb.dll -make -j2 +make -j$(nproc) [ "x$NO_PACKAGE" = "x" ] && make package diff --git a/util/buildbot/toolchain_mingw.cmake b/util/buildbot/toolchain_i586-mingw32msvc.cmake similarity index 100% rename from util/buildbot/toolchain_mingw.cmake rename to util/buildbot/toolchain_i586-mingw32msvc.cmake diff --git a/util/buildbot/toolchain_i646-w64-mingw32.cmake b/util/buildbot/toolchain_i646-w64-mingw32.cmake new file mode 100644 index 000000000..015baa210 --- /dev/null +++ b/util/buildbot/toolchain_i646-w64-mingw32.cmake @@ -0,0 +1,17 @@ +# name of the target operating system +SET(CMAKE_SYSTEM_NAME Windows) + +# which compilers to use for C and C++ +SET(CMAKE_C_COMPILER i686-w64-mingw32-gcc) +SET(CMAKE_CXX_COMPILER i686-w64-mingw32-g++) +SET(CMAKE_RC_COMPILER i686-w64-mingw32-windres) + +# here is the target environment located +SET(CMAKE_FIND_ROOT_PATH /usr/i686-w64-mingw32) + +# adjust the default behaviour of the FIND_XXX() commands: +# search headers and libraries in the target environment, search +# programs in the host environment +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) diff --git a/util/buildbot/toolchain_mingw64.cmake b/util/buildbot/toolchain_x86_64-w64-mingw32.cmake similarity index 100% rename from util/buildbot/toolchain_mingw64.cmake rename to util/buildbot/toolchain_x86_64-w64-mingw32.cmake diff --git a/util/travis/before_install.sh b/util/travis/before_install.sh index fef054130..fe9243583 100755 --- a/util/travis/before_install.sh +++ b/util/travis/before_install.sh @@ -20,9 +20,7 @@ elif [[ $PLATFORM == "Win32" ]]; then sudo apt-get update sudo apt-get install p7zip-full wget http://minetest.kitsunemimi.pw/mingw-w64-i686_7.1.1_ubuntu14.04.7z -O mingw.7z - sed -e "s|%PREFIX%|i686-w64-mingw32|" \ - -e "s|%ROOTPATH%|/usr/i686-w64-mingw32|" \ - < util/travis/toolchain_mingw.cmake.in > util/buildbot/toolchain_mingw.cmake + # buildwin32.sh detects the installed toolchain automatically sudo 7z x -y -o/usr mingw.7z elif [[ $PLATFORM == "Win64" ]]; then sudo apt-get update