From a6ae9ec79b0146924d0a558750daf7d2e12593f6 Mon Sep 17 00:00:00 2001 From: Tom Reynolds Date: Sun, 8 Dec 2013 22:03:34 +0100 Subject: [PATCH 1/5] - mk/linux/setupBuildDeps.sh: - add option for silent installs (APT only for now) - remove autotools, subversion dependency - add check for availability of 'git' command - replace svnversion by git commit output - add .travis.xml as per http://about.travis-ci.org/docs/user/languages/cpp/ - make git ignore megaglest man page as generated by Linux builds --- .gitignore | 2 ++ .travis.xml | 18 +++++++++++ mk/linux/setupBuildDeps.sh | 66 +++++++++++++++++++++++++------------- 3 files changed, 63 insertions(+), 23 deletions(-) create mode 100644 .travis.xml diff --git a/.gitignore b/.gitignore index bb0ecf340..afbd2594a 100644 --- a/.gitignore +++ b/.gitignore @@ -61,6 +61,8 @@ $RECYCLE.BIN/ *.blend1 # Linux_build build/ +google-breakpad +mk/linux/megaglest.6 # Windows_build *.dll *.exe diff --git a/.travis.xml b/.travis.xml new file mode 100644 index 000000000..e22ba6c1c --- /dev/null +++ b/.travis.xml @@ -0,0 +1,18 @@ +language: cpp +compiler: + - gcc +# - clang +before_install: + - sudo apt-get update -qq # UPDATE REPOS + - sudo mk/linux/setupBuildDeps.sh --quiet # INSTALL DEPENDENCIES HERE +script: +# ALL THE BUILD COMMANDS HERE + - ./build-mg.sh +notifications: + irc: + channels: + - "irc.freenode.org#megaglest" + template: + - "[%{commit} : %{author}] %{message}" + - "%{build_url}" + skip_join: true diff --git a/mk/linux/setupBuildDeps.sh b/mk/linux/setupBuildDeps.sh index f5c6538d4..e41365e0d 100755 --- a/mk/linux/setupBuildDeps.sh +++ b/mk/linux/setupBuildDeps.sh @@ -16,18 +16,27 @@ then exit 1 fi -# Do you have the 'svnversion' command? -if [ `which svnversion`'x' = 'x' ] +# Do you have the 'git' command? +if [ `which git`'x' = 'x' ] then - echo 'Could not find "svnversion", please make sure it is installed.' >&2 + echo 'Could not find "git", please make sure it is installed.' >&2 exit 1 fi +# Allow for quiet/silent installs +if [ $1'x' = '-qx' -o $1'x' = '--quietx' -o $1'x' = '--silentx' ] +then + quiet=1 +else + quiet=0 +fi -svnversion=`readlink -f $0 | xargs dirname | xargs svnversion` -architecture=`uname -m` -# Is the lsb_release command supported? +mypath=`readlink -f $0 | xargs dirname` +gitcommit=`git log -1 --pretty=tformat:"%H" $mypath/../..` + + +# Determine distro title, release, codename if [ `which lsb_release`'x' = 'x' ] then lsb=0 @@ -96,6 +105,8 @@ else #Codename: precise fi +architecture=`uname -m` + echo 'We have detected the following system:' echo ' [ '"$distribution"' ] [ '"$release"' ] [ '"$codename"' ] [ '"$architecture"' ]' echo '' @@ -111,7 +122,7 @@ unsupported_distribution () { echo '' echo 'Please report a bug at http://bugs.megaglest.org providing the following information:' echo '--- snip ---' - echo 'SVN version: '"$svnversion" + echo 'SVN version: '"$gitcommit" echo 'LSB support: '"$lsb" echo 'Distribution: '"$distribution" echo 'Release: '"$release" @@ -128,7 +139,7 @@ unsupported_release () { echo '' echo 'Please report a bug at http://bugs.megaglest.org providing the following information:' echo '--- snip ---' - echo 'SVN version: '"$svnversion" + echo 'SVN version: '"$gitcommit" echo 'LSB support: '"$lsb" echo 'Distribution: '"$distribution" echo 'Release: '"$release" @@ -149,7 +160,7 @@ error_during_installation () { echo '' echo 'Please report a bugs at http://bugs.megaglest.org providing the following information:' echo '--- snip ---' - echo 'SVN version: '"$svnversion" + echo 'SVN version: '"$gitcommit" echo 'LSB support: '"$lsb" echo 'Distribution: '"$distribution" echo 'Release: '"$release" @@ -164,11 +175,14 @@ error_during_installation () { case $distribution in - Debian) + Debian) + if [ $quiet = 1 ]; then + APT_OPTIONS="$APT_OPTIONS -y -q" + fi case $release in 6.0*|unstable) # No libvlc-dev since version (1.1.3) in Debian 6.0/Squeeze is incompatible, no libluajit-5.1-dev because it is not available on Debian 6.0/Squeeze, cf. http://glest.org/glest_board/?topic=8460 - installcommand='apt-get install build-essential subversion automake autoconf autogen cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libminiupnpc-dev librtmp-dev libgtk2.0-dev libcppunit-dev' + installcommand='apt-get install '"$APT_OPTIONS"' build-essential cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libminiupnpc-dev librtmp-dev libgtk2.0-dev libcppunit-dev' $installcommand if [ $? != 0 ]; then error_during_installation; @@ -178,7 +192,7 @@ case $distribution in fi ;; *) - installcommand='apt-get install build-essential subversion automake autoconf autogen cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libvlc-dev libminiupnpc-dev librtmp-dev libgtk2.0-dev libcppunit-dev' + installcommand='apt-get install '"$APT_OPTIONS"' build-essential cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libvlc-dev libminiupnpc-dev librtmp-dev libgtk2.0-dev libcppunit-dev' unsupported_release exit 1 ;; @@ -186,24 +200,27 @@ case $distribution in ;; Ubuntu) + if [ $quiet = 1 ]; then + APT_OPTIONS="$APT_OPTIONS -y -q" + fi case $release in 8.04) - installcommand='apt-get install build-essential subversion automake autoconf autogen cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libcppunit-dev' + installcommand='apt-get install '"$APT_OPTIONS"' build-essential cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libcppunit-dev' $installcommand if [ $? != 0 ]; then error_during_installation; exit 1; fi ;; 10.04) - installcommand='apt-get install build-essential subversion automake autoconf autogen cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew1.5-dev libftgl-dev libfribidi-dev libcppunit-dev' + installcommand='apt-get install '"$APT_OPTIONS"' build-essential cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew1.5-dev libftgl-dev libfribidi-dev libcppunit-dev' $installcommand if [ $? != 0 ]; then error_during_installation; exit 1; fi ;; 11.10|12.04|12.10|13.04|13.10) - installcommand='apt-get install build-essential subversion automake autoconf autogen cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libvlc-dev libcppunit-dev' + installcommand='apt-get install '"$APT_OPTIONS"' build-essential cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libvlc-dev libcppunit-dev' $installcommand if [ $? != 0 ]; then error_during_installation; exit 1; fi ;; *) - installcommand='apt-get install build-essential subversion automake autoconf autogen cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libvlc-dev libcppunit-dev' + installcommand='apt-get install '"$APT_OPTIONS"' build-essential cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libvlc-dev libcppunit-dev' unsupported_release exit 1 ;; @@ -211,15 +228,18 @@ case $distribution in ;; LinuxMint) + if [ $quiet = 1 ]; then + APT_OPTIONS="$APT_OPTIONS -y -q" + fi case $release in 13|14|15) - installcommand='apt-get install build-essential subversion automake autoconf autogen cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libvlc-dev libcppunit-dev' + installcommand='apt-get install '"$APT_OPTIONS"' build-essential cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libvlc-dev libcppunit-dev' $installcommand if [ $? != 0 ]; then error_during_installation; exit 1; fi ;; *) - installcommand='apt-get install build-essential subversion automake autoconf autogen cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libvlc-dev libcppunit-dev' + installcommand='apt-get install '"$APT_OPTIONS"' build-essential cmake libsdl1.2-dev libxerces-c2-dev libalut-dev libgl1-mesa-dev libglu1-mesa-dev libvorbis-dev libwxbase2.8-dev libwxgtk2.8-dev libx11-dev liblua5.1-0-dev libjpeg-dev libpng12-dev libcurl4-gnutls-dev libxml2-dev libircclient-dev libglew-dev libftgl-dev libfribidi-dev libvlc-dev libcppunit-dev' unsupported_release exit 1 ;; @@ -229,17 +249,17 @@ case $distribution in SuSE|SUSE?LINUX|Opensuse) case $release in 11.2|11.3|11.4|12.1) - installcommand='zypper install subversion gcc gcc-c++ automake cmake libSDL-devel libxerces-c-devel MesaGLw-devel freeglut-devel libvorbis-devel wxGTK-devel lua-devel libjpeg-devel libpng14-devel libcurl-devel openal-soft-devel xorg-x11-libX11-devel libxml2-devel libircclient-devel glew-devel ftgl-devel fribidi-devel cppunit-devel' + installcommand='zypper install gcc gcc-c++ cmake libSDL-devel libxerces-c-devel MesaGLw-devel freeglut-devel libvorbis-devel wxGTK-devel lua-devel libjpeg-devel libpng14-devel libcurl-devel openal-soft-devel xorg-x11-libX11-devel libxml2-devel libircclient-devel glew-devel ftgl-devel fribidi-devel cppunit-devel' $installcommand if [ $? != 0 ]; then error_during_installation; exit 1; fi ;; 12.2) - installcommand='zypper install subversion gcc gcc-c++ automake cmake libSDL-devel libxerces-c-devel Mesa-libGL-devel freeglut-devel libvorbis-devel wxGTK-devel lua-devel libjpeg-devel libpng14-devel libcurl-devel openal-soft-devel xorg-x11-libX11-devel libxml2-devel libircclient-devel glew-devel ftgl-devel fribidi-devel cppunit-devel' + installcommand='zypper install gcc gcc-c++ cmake libSDL-devel libxerces-c-devel Mesa-libGL-devel freeglut-devel libvorbis-devel wxGTK-devel lua-devel libjpeg-devel libpng14-devel libcurl-devel openal-soft-devel xorg-x11-libX11-devel libxml2-devel libircclient-devel glew-devel ftgl-devel fribidi-devel cppunit-devel' $installcommand if [ $? != 0 ]; then error_during_installation; exit 1; fi ;; *) - installcommand='zypper install subversion gcc gcc-c++ automake cmake libSDL-devel libxerces-c-devel Mesa-libGL-devel freeglut-devel libvorbis-devel wxGTK-devel lua-devel libjpeg-devel libpng14-devel libcurl-devel openal-soft-devel xorg-x11-libX11-devel libxml2-devel libircclient-devel glew-devel ftgl-devel fribidi-devel cppunit-devel' + installcommand='zypper install gcc gcc-c++ cmake libSDL-devel libxerces-c-devel Mesa-libGL-devel freeglut-devel libvorbis-devel wxGTK-devel lua-devel libjpeg-devel libpng14-devel libcurl-devel openal-soft-devel xorg-x11-libX11-devel libxml2-devel libircclient-devel glew-devel ftgl-devel fribidi-devel cppunit-devel' unsupported_release exit 1 ;; @@ -253,11 +273,11 @@ case $distribution in $installcommand if [ $? != 0 ]; then error_during_installation; exit 1; fi - installcommand='yum install subversion automake autoconf autogen cmake SDL-devel xerces-c-devel mesa-libGL-devel mesa-libGLU-devel libvorbis-devel wxBase wxGTK-devel lua-devel libjpeg-devel libpng-devel libcurl-devel openal-soft-devel libX11-devel libxml2-devel libircclient-devel glew-devel ftgl-devel fribidi-devel cppunit-devel' + installcommand='yum install cmake SDL-devel xerces-c-devel mesa-libGL-devel mesa-libGLU-devel libvorbis-devel wxBase wxGTK-devel lua-devel libjpeg-devel libpng-devel libcurl-devel openal-soft-devel libX11-devel libxml2-devel libircclient-devel glew-devel ftgl-devel fribidi-devel cppunit-devel' $installcommand ;; *) - installcommand='yum groupinstall "Development Tools"; yum install subversion automake autoconf autogen cmake SDL-devel xerces-c-devel mesa-libGL-devel mesa-libGLU-devel libvorbis-devel wxBase wxGTK-devel lua-devel libjpeg-devel libpng-devel libcurl-devel openal-soft-devel libX11-devel libxml2-devel libircclient-devel glew-devel ftgl-devel fribidi-devel cppunit-devel' + installcommand='yum groupinstall "Development Tools"; yum install cmake SDL-devel xerces-c-devel mesa-libGL-devel mesa-libGLU-devel libvorbis-devel wxBase wxGTK-devel lua-devel libjpeg-devel libpng-devel libcurl-devel openal-soft-devel libX11-devel libxml2-devel libircclient-devel glew-devel ftgl-devel fribidi-devel cppunit-devel' unsupported_release exit 1 ;; From 2a3ff9781327520a9e0035cfe6c187c1c51f3288 Mon Sep 17 00:00:00 2001 From: Tom Reynolds Date: Sun, 8 Dec 2013 22:12:33 +0100 Subject: [PATCH 2/5] YML is not XML --- .travis.xml => .travis.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .travis.xml => .travis.yml (100%) diff --git a/.travis.xml b/.travis.yml similarity index 100% rename from .travis.xml rename to .travis.yml From 09fb20182a727b9b0959cafb2ed2b6cb845adac3 Mon Sep 17 00:00:00 2001 From: Tom Reynolds Date: Sun, 8 Dec 2013 23:00:25 +0100 Subject: [PATCH 3/5] - Enable clang builds for Travis CI - build-mg.sh: Switch to clang build if CC and CXX env vars both contain 'clang' --- .travis.yml | 3 ++- build-mg.sh | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index e22ba6c1c..ee00496e8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,10 @@ language: cpp compiler: - gcc -# - clang + - clang before_install: - sudo apt-get update -qq # UPDATE REPOS + - sudo apt-cache policy - sudo mk/linux/setupBuildDeps.sh --quiet # INSTALL DEPENDENCIES HERE script: # ALL THE BUILD COMMANDS HERE diff --git a/build-mg.sh b/build-mg.sh index f81479218..24392ad4b 100755 --- a/build-mg.sh +++ b/build-mg.sh @@ -7,6 +7,7 @@ # to enable clang compilation: # 1. sudo apt-get install clang # 2. Set the two vars below, WANT_CLANG=YES and CLANG_BIN_PATH= +# OR: set both the CC and CXX environment variables to point to clang and clang++ respectively WANT_CLANG=NO CLANG_BIN_PATH=/usr/bin/ @@ -117,10 +118,24 @@ esac CURRENTDIR="$(dirname $(readlink -f $0))" -if [ "$WANT_CLANG" = 'YES' ]; then +if [ "$WANT_CLANG" = 'YES' -o "`echo $CXX | grep -Fq 'clang'`" = 'clang' ]; then EXTRA_CMAKE_OPTIONS="${EXTRA_CMAKE_OPTIONS} -DCMAKE_C_COMPILER=${CLANG_BIN_PATH}clang -DCMAKE_CXX_COMPILER=${CLANG_BIN_PATH}clang++" echo "USER WANTS to use CLANG / LLVM compiler! EXTRA_CMAKE_OPTIONS = ${EXTRA_CMAKE_OPTIONS}" #exit 1; +elif [ "`echo $CC | grep -Fq 'clang'`" = 'clang' -a "`echo $CXX | grep -Fq 'clang'`" = 'clang' ]; then + if [ `echo $CC | grep -Fq '/'` = '/' ]; then + CLANG_CC=$CC + else + CLANG_CC=`which $CC` + fi + if [ `echo $CXX | grep -Fq '/'` = '/' ]; then + CLANG_CXX=$CXX + else + CLANG_CXX=`which $CXX` + fi + EXTRA_CMAKE_OPTIONS="${EXTRA_CMAKE_OPTIONS} -DCMAKE_C_COMPILER=${CLANG_CC} -DCMAKE_CXX_COMPILER=${CLANG_CXX}" + echo "USER WANTS to use CLANG / LLVM compiler! EXTRA_CMAKE_OPTIONS = ${EXTRA_CMAKE_OPTIONS}" +#exit 1; fi echo "Calling cmake with EXTRA_CMAKE_OPTIONS = ${EXTRA_CMAKE_OPTIONS}" From 78eb119c2948fc342b8634be7aaa0dfe90541489 Mon Sep 17 00:00:00 2001 From: Tom Reynolds Date: Mon, 9 Dec 2013 01:15:06 +0100 Subject: [PATCH 4/5] get build system info for travis CI --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index ee00496e8..3d531aa0c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,8 @@ compiler: - clang before_install: - sudo apt-get update -qq # UPDATE REPOS - - sudo apt-cache policy + - free -m + - df -h - sudo mk/linux/setupBuildDeps.sh --quiet # INSTALL DEPENDENCIES HERE script: # ALL THE BUILD COMMANDS HERE From 21bda9f6918b5dc9745ced67f7df5a49bc90b72a Mon Sep 17 00:00:00 2001 From: Tom Reynolds Date: Mon, 9 Dec 2013 01:56:11 +0100 Subject: [PATCH 5/5] testing travis changes --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 3d531aa0c..1c17586ab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ language: cpp compiler: - gcc - - clang + #- clang before_install: - sudo apt-get update -qq # UPDATE REPOS - free -m @@ -10,6 +10,7 @@ before_install: script: # ALL THE BUILD COMMANDS HERE - ./build-mg.sh + - dmesg notifications: irc: channels: