Buildbot:Gentoo
This page is WIP! (don't expect these instructions to work, they only give a hint, how it should/could work...)
buildbot-slave (for interacting with spring's buildbot)
emerge dev-util/buildbot-slave
rc-update add buildslave default
nano /etc/conf.d/buildslave
useradd -s /bin/false -d $dir -m $username
buildslave create-slave $dir/buildslave springrts.com:7778 $username $passwd
Setup gentoo win32 buildslave
Note: boost and spring has to be compiled with the same compiler! If you get weird linker errors then this could be the cause!
tools required for compiling
emerge layman mercurial app-arch/p7zip-9.13 dev-util/cmake app-arch/zip wine crossdev app-portage/portage-utils
layman -a ohnobinki
echo "source /var/lib/layman/make.conf" >> /etc/portage/make.conf
CHOST=i686-mingw32 ROOT=/usr/i686-mingw32 emerge pthreads-win32
USE="openmp cxx -fortran" crossdev i686-mingw32 --env 'EXTRA_ECONF="--disable-sjlj-exceptions --with-dwarf --enable-gomp --disable-shared"'
for cgcreate (only needed for load balancing while building)
emerge dev-libs/libcgroup
Install i686-mingw32 compiler, then pthreads, then recompile i686-mingw32 with pthreads enabled
USE="openmp cxx -fortran" crossdev i686-mingw32 --env 'EXTRA_ECONF="--disable-sjlj-exceptions --with-dwarf"'
CHOST=i686-mingw32 ROOT=/usr/i686-mingw32 emerge -va pthreads-win32
USE="openmp cxx -fortran" crossdev i686-mingw32 --env 'EXTRA_ECONF="--disable-sjlj-exceptions --with-dwarf --disable-shared"'
emerge-wrapper --init
stuff that needs to be compiled native (not with mingw)
emerge ncurses cmake eselect eselect-boost
ACCEPT_KEYWORDS="~x86" emerge boost-build
build Spring + dependencies in MinGW
USE="minizip" emerge-i686-mingw32 sys-libs/zlib
- USE="static"
emerge-i686-mingw32 app-arch/bzip2
USE="jpeg png opengl" emerge-i686-mingw32 devil
USE="auto-hinter" emerge-i686-mingw32 freetype
USE="-audio opengl" emerge-i686-mingw32 libsdl -O
EXTRA_ECONF="target-os=windows threadapi=win32" USE="" emerge-i686-mingw32 boost -O
USE="-ai -java openmp" emerge-i686-mingw32 spring
Setup static linux
create /etc/portage/package.use/spring-static-buildslave:
sys-libs/zlib static-libs minizip
media-libs/devil static-libs opengl png jpeg X
dev-libs/boost static-libs python
media-libs/jpeg static-libs
media-libs/libsdl -audio opengl static-libs X
media-libs/libvorbis static-libs
media-libs/libogg static-libs
media-libs/freetype static-libs autohinter
media-libs/glew static-libs
media-libs/libpng static-libs
x11-libs/libXcursor static-libs
app-arch/bzip2 static-libs
x11-libs/libXdmcp static-libs
x11-libs/libXrender static-libs
x11-libs/libX11 static-libs
x11-libs/libXfixes static-libs
x11-libs/libxcb static-libs
x11-libs/libXau static-libs
set compile flags on 64 bit gentoo
this is only required on 64bit gentoo!
if you don't add -fPIC you mostly will get errors like his:
relocation R_X86_64_32 against `a local symbol' can not be used when making a
shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.1/../../../../lib64/libfl.a: could not
read symbols: Bad value
/etc/portage/env/spring-static-buildslave:
CFLAGS="${CFLAGS} -fPIC"
CXXFLAGS="${CXXFLAGS} -fPIC"
LDFLAGS="${LDFLAGS} -fPIC"
/etc/portage/package.env/spring-static-buildslave:
sys-libs/zlib spring-static-buildslave
media-libs/devil spring-static-buildslave
dev-libs/boost spring-static-buildslave
media-libs/jpeg spring-static-buildslave
media-libs/libsdl spring-static-buildslave
media-libs/libvorbis spring-static-buildslave
media-libs/freetype spring-static-buildslave
media-libs/glew spring-static-buildslave
sys-devel/gcc spring-static-buildslave
media-libs/libpng spring-static-buildslave
x11-libs/libXcursor spring-static-buildslave
install needed programs and libs
Emerge gcc-4.7.2
emerge -va =sys-devel/gcc-4.7.2
enable / use it
gcc-config x86_64-pc-linux-gnu-4.7.2
env-update && source /etc/profile
re-install required libs with changed use flags:
emerge -va sys-libs/zlib media-libs/devil dev-libs/boost media-libs/jpeg media-libs/libsdl \
media-libs/libvorbis media-libs/freetype media-libs/glew media-libs/libpng x11-libs/libXcursor \
app-arch/bzip2 x11-libs/libXdmcp x11-libs/libXrender x11-libs/libX11 x11-libs/libXfixes \
x11-libs/libxcb x11-libs/libXau
tune
use ld.gold for linking:
binutils-config --linker ld.gold
32 bit buildbot on a 64 bit slave
switch back to the standard linker as glibc doesn't compile with ld.gold if you get this error: "These critical programs are missing or too old: as ld"
binutils-config --linker ld.bfd
USE="-fortran" crossdev i686
mkdir /usr/i686-pc-linux-gnu/etc/portage/
vi /usr/i686-pc-linux-gnu/etc/portage/spring-static-buildslave:
sys-libs/zlib static-libs minizip
media-libs/devil static-libs opengl png jpeg X
dev-libs/boost static-libs python
media-libs/jpeg static-libs
media-libs/libsdl -audio opengl static-libs X
media-libs/libvorbis static-libs
media-libs/libogg static-libs
media-libs/freetype static-libs autohinter
media-libs/glew static-libs
media-libs/libpng static-libs
x11-libs/libXcursor static-libs
app-arch/bzip2 static-libs
x11-libs/libXdmcp static-libs
x11-libs/libXrender static-libs
x11-libs/libX11 static-libs
x11-libs/libXfixes static-libs
x11-libs/libxcb static-libs
x11-libs/libXau static-libs
emerge-i686-pc-linux-gnu -va sys-libs/zlib media-libs/devil dev-libs/boost media-libs/jpeg media-libs/libsdl \
media-libs/libvorbis media-libs/freetype media-libs/glew media-libs/libpng x11-libs/libXcursor \
app-arch/bzip2 x11-libs/libXdmcp x11-libs/libXrender x11-libs/libX11 x11-libs/libXfixes \
x11-libs/libxcb x11-libs/libXau
TODO: whats that for?!
EXTRA_ECONF="--disable-sjlj-exceptions --with-dwarf2"
USE="openmp cxx -fortran" crossdev i686-mingw32 --env
USE="minizip"
USE="jpeg png opengl" emerge-i686-mingw32 devil
USE="auto-hinter" emerge-i686-mingw32 freetype
USE="-audio opengl" emerge-i686-mingw32 libsdl -O
EXTRA_ECONF="target-os=windows threadapi=win32" USE="" emerge-i686-mingw32 boost -O
USE="-ai -java openmp" emerge-i686-mingw32 spring
patches
gcc omp patch: http://gcc.gnu.org/bugzilla/attachment.cgi?id=28752