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
This commit is contained in:
Pierre-Yves Rollo 2019-06-21 02:43:59 +02:00 committed by rubenwardy
parent e3738c2f61
commit 39c54e13c3
7 changed files with 57 additions and 29 deletions

@ -34,22 +34,10 @@ matrix:
- env: PLATFORM=Win32 - env: PLATFORM=Win32
compiler: gcc compiler: gcc
os: linux 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 - env: PLATFORM=Win64
compiler: gcc compiler: gcc
os: linux 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 - env: PLATFORM=Unix
compiler: clang compiler: clang

@ -1,6 +1,13 @@
#!/bin/bash #!/bin/bash
set -e 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 )" dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [ $# -ne 1 ]; then if [ $# -ne 1 ]; then
echo "Usage: $0 <build directory>" echo "Usage: $0 <build directory>"
@ -12,7 +19,18 @@ builddir="$( cd "$builddir" && pwd )"
packagedir=$builddir/packages packagedir=$builddir/packages
libdir=$builddir/libs 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 irrlicht_version=1.8.4
ogg_version=1.3.2 ogg_version=1.3.2
vorbis_version=1.3.5 vorbis_version=1.3.5
@ -70,22 +88,22 @@ cd $libdir
# Get minetest # Get minetest
cd $builddir cd $builddir
if [ ! "x$EXISTING_MINETEST_DIR" = "x" ]; then if [ ! "x$EXISTING_MINETEST_DIR" = "x" ]; then
ln -s $EXISTING_MINETEST_DIR minetest ln -s $EXISTING_MINETEST_DIR $CORE_NAME
else 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 fi
cd minetest cd $CORE_NAME
git_hash=$(git rev-parse --short HEAD) git_hash=$(git rev-parse --short HEAD)
# Get minetest_game # Get minetest_game
cd games cd games
if [ "x$NO_MINETEST_GAME" = "x" ]; then 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 fi
cd ../.. cd ../..
# Build the thing # Build the thing
cd minetest cd $CORE_NAME
[ -d _build ] && rm -Rf _build/ [ -d _build ] && rm -Rf _build/
mkdir _build mkdir _build
cd _build cd _build
@ -149,7 +167,7 @@ cmake .. \
-DLEVELDB_LIBRARY=$libdir/leveldb/lib/libleveldb.dll.a \ -DLEVELDB_LIBRARY=$libdir/leveldb/lib/libleveldb.dll.a \
-DLEVELDB_DLL=$libdir/leveldb/bin/libleveldb.dll -DLEVELDB_DLL=$libdir/leveldb/bin/libleveldb.dll
make -j2 make -j$(nproc)
[ "x$NO_PACKAGE" = "x" ] && make package [ "x$NO_PACKAGE" = "x" ] && make package

@ -1,6 +1,13 @@
#!/bin/bash #!/bin/bash
set -e 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 )" dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
if [ $# -ne 1 ]; then if [ $# -ne 1 ]; then
echo "Usage: $0 <build directory>" echo "Usage: $0 <build directory>"
@ -12,7 +19,7 @@ builddir="$( cd "$builddir" && pwd )"
packagedir=$builddir/packages packagedir=$builddir/packages
libdir=$builddir/libs libdir=$builddir/libs
toolchain_file=$dir/toolchain_mingw64.cmake toolchain_file=$dir/toolchain_x86_64-w64-mingw32.cmake
irrlicht_version=1.8.4 irrlicht_version=1.8.4
ogg_version=1.3.2 ogg_version=1.3.2
vorbis_version=1.3.5 vorbis_version=1.3.5
@ -71,22 +78,22 @@ cd $libdir
# Get minetest # Get minetest
cd $builddir cd $builddir
if [ ! "x$EXISTING_MINETEST_DIR" = "x" ]; then if [ ! "x$EXISTING_MINETEST_DIR" = "x" ]; then
ln -s $EXISTING_MINETEST_DIR minetest ln -s $EXISTING_MINETEST_DIR $CORE_NAME
else 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 fi
cd minetest cd $CORE_NAME
git_hash=$(git rev-parse --short HEAD) git_hash=$(git rev-parse --short HEAD)
# Get minetest_game # Get minetest_game
cd games cd games
if [ "x$NO_MINETEST_GAME" = "x" ]; then 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 fi
cd ../.. cd ../..
# Build the thing # Build the thing
cd minetest cd $CORE_NAME
[ -d _build ] && rm -Rf _build/ [ -d _build ] && rm -Rf _build/
mkdir _build mkdir _build
cd _build cd _build
@ -150,7 +157,7 @@ cmake .. \
-DLEVELDB_LIBRARY=$libdir/leveldb/lib/libleveldb.dll.a \ -DLEVELDB_LIBRARY=$libdir/leveldb/lib/libleveldb.dll.a \
-DLEVELDB_DLL=$libdir/leveldb/bin/libleveldb.dll -DLEVELDB_DLL=$libdir/leveldb/bin/libleveldb.dll
make -j2 make -j$(nproc)
[ "x$NO_PACKAGE" = "x" ] && make package [ "x$NO_PACKAGE" = "x" ] && make package

@ -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)

@ -20,9 +20,7 @@ elif [[ $PLATFORM == "Win32" ]]; then
sudo apt-get update sudo apt-get update
sudo apt-get install p7zip-full sudo apt-get install p7zip-full
wget http://minetest.kitsunemimi.pw/mingw-w64-i686_7.1.1_ubuntu14.04.7z -O mingw.7z wget http://minetest.kitsunemimi.pw/mingw-w64-i686_7.1.1_ubuntu14.04.7z -O mingw.7z
sed -e "s|%PREFIX%|i686-w64-mingw32|" \ # buildwin32.sh detects the installed toolchain automatically
-e "s|%ROOTPATH%|/usr/i686-w64-mingw32|" \
< util/travis/toolchain_mingw.cmake.in > util/buildbot/toolchain_mingw.cmake
sudo 7z x -y -o/usr mingw.7z sudo 7z x -y -o/usr mingw.7z
elif [[ $PLATFORM == "Win64" ]]; then elif [[ $PLATFORM == "Win64" ]]; then
sudo apt-get update sudo apt-get update