Buildbot:Gentoo: Difference between revisions

From Spring
Jump to navigationJump to search
Abma (talk | contribs)
Abma (talk | contribs)
Line 62: Line 62:
<code><pre>
<code><pre>
sys-libs/zlib static-libs minizip
sys-libs/zlib static-libs minizip
media-libs/devil static-libs opengl png sse sse2 X
media-libs/devil static-libs opengl png jpg sse sse2 X
dev-libs/boost static-libs python
dev-libs/boost static-libs python
media-libs/jpeg  static-libs
media-libs/jpeg  static-libs

Revision as of 16:05, 29 November 2012

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

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"'

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"'
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
  1. 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 jpg sse sse2 X
dev-libs/boost static-libs python
media-libs/jpeg  static-libs
media-libs/libsdl audio joystick opengl video X static-libs
media-libs/libvorbis static-libs
media-libs/freetype static-libs -X -bzip2
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

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