uccwiki

Manduba should run a GNOME buildbot slave in order to help tinderbox the GNOME code, linked to http://build.gnome.org/

Running configuration

Manduba is running SunOS manduba 5.11 snv_101 sun4u sparc SUNW,Ultra-Enterprise Solaris

The buildbot runs as user 'buildbot' from /space/buildbot/

See http://developers.sun.com/solaris/articles/build_sw_on_solaris.html and http://wikis.sun.com/display/SolarisDeveloper/Issues+When+Porting+Open+Source+Projects+to+Solaris for general advice.

PATH=/space/buildbot/bin:/space/buildbot/prefix/bin:/usr/local/bin:/usr/gnu/bin:/usr/sfw/bin:/opt/SUNWspro/bin:
/usr/ccs/bin:/usr/ucb:/usr/bin:/usr/X11/bin (from .zshenv) - make sure /usr/ucb is after /usr/ccs.

.jhbuildrc:

moduleset = 'gnome-suites-2.28'

# A list of the modules to build.  Defaults to the Gnome Desktop and
# developer platform.
# modules = [ 'meta-gnome-desktop' ]

# use a separate directory for sources to share between jhbuilds
dvcs_mirror_dir = '/space/buildbot/checkout/sources'
tarballdir = '/space/buildbot/checkout/sources'

# extra arguments to pass to all autogen.sh scripts
# to speed up builds of gnome2, try '--disable-static --disable-gtk-doc'
# it is also possible to set CFLAGS this way, 'CFLAGS="-g -O2"' for example
#autogenargs=''
module_autogenargs['gettext'] = autogenargs + ' LDFLAGS="-lsec"'
module_autogenargs['gst-plugins-base'] = autogenargs + ' CFLAGS=-I/usr/X11/include'
module_autogenargs['gtk+'] = autogenargs + ' --without-libjasper'
# GNU MP decides to build 64-bit libraries, despite the toolchain being 32-bit
module_autogenargs['gmp'] = autogenargs + ' ABI=32'
module_autogenargs['libgda'] = autogenargs + ' --without-mysql'
module_autogenargs['libxml2'] = autogenargs + ' --with-python=/space/buildbot/prefix/bin/python'
# dtrace requires root permission
module_autogenargs['mono'] = autogenargs + ' --disable-dtrace'
# NSS doesn't like -j4
module_makeargs['nss'] = ''
# NSPR is built 64-bit by default
module_autogenargs['nspr'] = autogenargs + ' --disable-64bit'
# e-d-s and e-e require Sun LDAP to be explicitly enabled
module_autogenargs['evolution-data-server'] = autogenargs + ' --with-sunldap=yes'
module_autogenargs['evolution-exchange'] = autogenargs + ' --with-sunldap=yes'
module_autogenargs['brasero'] = autogenargs + ' --disable-inotify'
module_autogenargs['gvfs'] = autogenargs + ' CFLAGS="-D_XPG4_2 -D__EXTENSIONS__"'
module_autogenargs['glib'] = autogenargs + ' CFLAGS="-D_XPG4_2 -D__EXTENSIONS__"'
#module_autogenargs['glib'] = autogenargs + ' CFLAGS="-std=c99 -D_XOPEN_SOURCE=600 -D__EXTENSIONS__"'
module_autogenargs['metacity'] = autogenargs + ' CFLAGS=-Wno-uninitialized'
module_autogenargs['gdm'] = autogenargs + ' CFLAGS=-Wno-uninitialized'
module_autogenargs['evolution'] = autogenargs + ' --with-cde-path=no'
module_autogenargs['gconf'] = autogenargs + ' --enable-defaults-service=no'
module_autogenargs['gconf-editor'] = autogenargs + ' --with-policykit=no'
# disable epiphany support until webkit builds
module_autogenargs['seahorse-plugins'] = autogenargs + ' --disable-epiphany'
# remove once http://bugzilla.gnome.org/show_bug.cgi?id=583471 fixed
module_autogenargs['zenity'] = autogenargs + ' LIBS=-lX11'
# remove once http://bugzilla.gnome.org/show_bug.cgi?id=583618 fixed
module_autogenargs['gnome-session'] = autogenargs + ' LIBS=-lXext'
nopoison=True
# PolicyKit isn't ported to Solaris
# Solaris has its own versions of HAL and mozilla, a patched version of gamin
# and a crazy avahi wrapper for bonjour
skip = ['PolicyKit', 'hal', 'mozilla', 'gamin', 'avahi']

# On SMP systems you may use something like this to improve compilation time:
# be aware that not all modules compile correctly with make -j2
makeargs = '-j4'

# a alternative install program to use.
# The included install-check program won't update timestamps if the
# header hasn't changed
os.environ['INSTALL'] = os.path.expanduser('~/bin/install-check')

# Run the tests
makecheck = False

jhbuildbot_master = 'build.gnome.org:9070'
jhbuildbot_password = 'XXXXX'

# include the compiler-specific settings
if 'JHBUILD_CC' in os.environ:
    include('/space/buildbot/.jhbuildrc-%s' % os.environ['JHBUILD_CC'])
else:
    include('/space/buildbot/.jhbuildrc-gcc')

There are compiler-specific options in .jhbuildrc-suncc and .jhbuildrc-gcc, which get imported using the JHBUILD_CC environment variable. This is because jhbuild buildbot doesn't support the --file argument (although it might support JHBUILDRC, rendering the cleverness above unnecessary):

.jhbuildrc-gcc:

checkoutroot = os.path.expanduser('~/checkout/gnome2')
# the prefix to configure/install modules to (must have write access)
prefix = '/space/buildbot/prefix'
buildscript = 'terminal'
jhbuildbot_slavename = 'opensol-gcc'

.jhbuildrc-suncc

checkoutroot = os.path.expanduser('~/checkout/gnome2-suncc')
# the prefix to configure/install modules to (must have write access)
prefix = '/space/buildbot/prefix-suncc'
jhbuildbot_slavename = 'opensol-suncc'
# Sun Studio 12
os.environ['MAKE'] = 'gmake'
os.environ['CC'] = 'cc'
os.environ['CXX'] = 'CC'
os.environ['F77'] = 'f7

There are a few CSW packages (blastwave.org) installed - git 1.6 as SXCE only has 1.5, and doxygen is installed for libsigc++2.

GNU MP (in the bootstrap moduleset) builds 64-bit libraries by default, which then cannot be linked against the 32-bit binaries that the toolchain produces for EVERYTHING ELSE. This makes guile fail to configure. There is a module_autogenargs setting to override this (module_extra_env didn't seem to work).

There are sometimes spurious warnings "'variable' might be used uninitialized in this function" which become fatal thanks to -Werror that some modules enable when being built from version control. This is because we're using gcc 3.4 which has poor logic compared to more recent versions, so rather than wasting maintainers' time, just silence the warnings by putting -Wno-uninitialized in CFLAGS.

http://src.opensolaris.org/source/xref/jds/spec-files/trunk/ may contain useful patches that should be pushed upstream.

Configuration procedure

Part 1: Configure jhbuild

http://live.gnome.org/Jhbuild

manduba: ~> mkdir -p ~/checkout/gnome2
manduba: ~> cd ~/checkout/gnome2
manduba: ~/checkout/gnome2> svn co http://svn.gnome.org/svn/jhbuild/trunk jhbuild
manduba: ~/checkout/gnome2> cd jhbuild
manduba: ~/checkout/gnome2/jhbuild> gmake -f Makefile.plain install-check CFLAGS='-DWITH_INSTALL=\"/usr/ucb/install\"'

(see http://bugzilla.gnome.org/show_bug.cgi?id=364465)

manduba: ~/checkout/gnome2/jhbuild> gmake -f Makefile.plain
manduba: ~/checkout/gnome2/jhbuild> gmake -f Makefile.plain install

Create ~/.jhbuildrc as above.

To pick up standard version of gettext, libtool, automake-1.{4,7,8,9,10}, pkg-config, python, guile and waf,

manduba: ~> jhbuild bootstrap --ignore-system

Building gettext-0.17 on Solaris requires special arguments: http://savannah.gnu.org/bugs/?21604 which are added to jhbuild above. However, using the bootstrap version fixes errors on Solaris with "AM_NLS" Automake macros (the system gettext doesn't have them).

Part 2: Configure buildbot

http://live.gnome.org/BuildBrigade/DocsAndGuides

jhbuild bot --setup

(more to come)

Current Issues

/!\ Current issues:

/usr/include/sys/feature_tests.h:353:2: #error "Compiler or options invalid for pre-UNIX 03 X/Open applications and pre-2001 POSIX applications"

checking for gdbm_open in -lgdbm... no
checking gdbm.h usability... no
checking gdbm.h presence... no
checking for gdbm.h... no
configure: error: gdbm.h not found

/bin/bash ../libtool --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H -I. -I..  -I. -I/space/buildbot/prefix/include/pixman-1       -I/usr/include/freetype2   -I/space/buildbot/prefix//include   -I/usr/include/libpng12   -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -I/usr/X11/include   -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -I/usr/X11/include     -Wall -Wextra -Wsign-compare -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wpacked -Wswitch-enum -Wstrict-aliasing=2 -Winit-self -Wdeclaration-after-statement -Wold-style-definition -Wno-unused-parameter -Wno-long-long -Winline -fno-strict-aliasing -fno-common -Wp,-D_FORTIFY_SOURCE=2              -g -O2 -D_POSIX_PTHREAD_SEMANTICS -MT cairo-atomic.lo -MD -MP -MF .deps/cairo-atomic.Tpo -c -o cairo-atomic.lo cairo-atomic.c
../libtool: line 845: X--tag=CC: command not found
../libtool: line 878: libtool: ignoring unknown tag : command not found
../libtool: line 845: X--mode=compile: command not found
../libtool: line 1012: *** Warning: inferring the mode of operation is deprecated.: command not found
../libtool: line 1013: *** Future versions of Libtool will require --mode=MODE be specified.: command not found
../libtool: line 1156: Xgcc: command not found
../libtool: line 1156: X-DHAVE_CONFIG_H: command not found
../libtool: line 1156: X-I.: command not found
../libtool: line 1156: X-I..: command not found
...

checking 32-bit integer type... configure: error: No 32-bit integer type found

gcc -DHAVE_CONFIG_H -I. -I.. -DG_LOG_DOMAIN=\"libglade\" -I.. -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -I/space/buildbot/prefix//include/libxml2 -I/space/buildbot/prefix/include/atk-1.0 -I/space/buildbot/prefix/include/glib-2.0 -I/space/buildbot/prefix/lib/glib-2.0/include -I/space/buildbot/prefix/include/gtk-2.0 -I/space/buildbot/prefix/lib/gtk-2.0/include -I/space/buildbot/prefix/include/cairo -I/space/buildbot/prefix/include/pango-1.0 -I/space/buildbot/prefix//include/pixman-1 -I/space/buildbot/prefix//include -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/X11/include -DGLADE_LIBDIR=\"/space/buildbot/prefix/lib\" -DGLADE_PREFIX=\"/space/buildbot/prefix\" -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGNOME_DISABLE_DEPRECATED -g -O2 -Wall -std=c9x -MT glade-init.lo -MD -MP -MF .deps/glade-init.Tpo -c glade-init.c  -fPIC -DPIC -o .libs/glade-init.o
In file included from /space/buildbot/prefix/include/glib-2.0/glib/gbacktrace.h:35,
                 from /space/buildbot/prefix/include/glib-2.0/glib.h:36,
                 from glade-init.c:27:
/usr/include/signal.h:219: error: syntax error before '*' token

{{{sysdeps.c:49: error: `GLIBTOP_SUID_PROC_WD' undeclared here (not in a function) sysdeps.c:50: error: `GLIBTOP_SUID_PROC_AFFINITY' undeclared here (not in a function)}}}

{{{SRCDIR=. TOP_SRCDIR=../.. doxygen Doxyfile /bin/bash: doxygen: command not found}}}

{{{g++ -DP_USE_PRAGMA -DPTRACING=1 -D_REENTRANT -I/usr/sfw/include -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/include/SDL -Wall -fPIC -DPIC -DNDEBUG -xO3 -I/space/buildbot/checkout/gnome2/ptlib-2.5.2/include -DSOLARIS -Dinline=inline -felide-constructors -Wreorder -c ptlib/common/pluginmgr.cxx -o /space/buildbot/checkout/gnome2/ptlib-2.5.2/lib_solaris_sparc/obj/pluginmgr.o g++: language O3 not recognized}}}

checking netinet/ip.h usability... no
checking netinet/ip.h presence... yes
configure: WARNING: netinet/ip.h: present but cannot be compiled
configure: WARNING: netinet/ip.h:     check for missing prerequisite headers?
configure: WARNING: netinet/ip.h: see the Autoconf documentation
configure: WARNING: netinet/ip.h:     section "Present But Cannot Be Compiled"
configure: WARNING: netinet/ip.h: proceeding with the preprocessor's result
configure: WARNING: netinet/ip.h: in the future, the compiler will take precedence
configure: WARNING:     ## ---------------------------------------- ##
configure: WARNING:     ## Report this to [email protected] ##
configure: WARNING:     ## ---------------------------------------- ##

Compiling heimdal/lib/roken/vis.c
In file included from heimdal/../heimdal_build/vis.h:3,
                 from heimdal/lib/roken/vis.c:83:
./heimdal/lib/roken/vis.hin:83:23: sys/cdefs.h: No such file or directory
In file included from heimdal/../heimdal_build/vis.h:3,
                 from heimdal/lib/roken/vis.c:83:
./heimdal/lib/roken/vis.hin:86: error: syntax error before "char"
heimdal/lib/roken/vis.c:103: error: syntax error before "static"
heimdal/lib/roken/vis.c: In function `do_svis':
heimdal/lib/roken/vis.c:229: error: `u_int32_t' undeclared (first use in this function)
heimdal/lib/roken/vis.c:229: error: (Each undeclared identifier is reported only once
heimdal/lib/roken/vis.c:229: error: for each function it appears in.)
heimdal/lib/roken/vis.c:229: error: syntax error before "u_char"
heimdal/lib/roken/vis.c:229: error: syntax error before ')' token
heimdal/lib/roken/vis.c:230: error: syntax error before "u_char"
heimdal/lib/roken/vis.c:230: error: syntax error before ')' token
The following command failed:
gcc -Iheimdal/../heimdal_build -Iheimdal/lib/roken -I../lib/socket_wrapper     -fPIC -I./include -I. -I./lib -I./../lib/replace -I./../lib/talloc -I./.. -D_SAMBA_BUILD_=4 -DHAVE_CONFIG_H  -c heimdal/lib/roken/vis.c -o heimdal/lib/roken/vis.o

Linking bin/asn1_compile
ld: fatal: symbol `flock' is multiply-defined:
        (file heimdal/../heimdal_build/replace.ho type=FUNC; file bin/mergedobj/heimdal_roken.o type=FUNC);
ld: fatal: File processing errors. No output written to bin/asn1_compile
collect2: ld returned 1 exit status

gcc -DHAVE_CONFIG_H -I. -I../../.. -I../../.. -I../../../clutter -I../../../clutter/cogl -I../../../clutter/cogl/common -I../../../clutter/cogl/gl -I../../../clutter -I../../../clutter/cogl -D_REENTRANT -D_PTHREADS -D_POSIX_PTHREAD_SEMANTICS -I/space/buildbot/prefix/include/pango-1.0 -I/space/buildbot/prefix/include/cairo -I/space/buildbot/prefix/include/glib-2.0 -I/space/buildbot/prefix/lib/glib-2.0/include -I/space/buildbot/prefix//include/pixman-1 -I/space/buildbot/prefix//include -I/space/buildbot/prefix/include/gtk-2.0 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/X11/include -DCLUTTER_ENABLE_DEBUG -DG_DISABLE_CAST_CHECKS -g -Wall -g -O2 -MT cogl-fbo.lo -MD -MP -MF .deps/cogl-fbo.Tpo -c cogl-fbo.c  -fPIC -DPIC -o .libs/cogl-fbo.o
cogl-fbo.c: In function `cogl_offscreen_new_to_texture':
cogl-fbo.c:100: error: `GL_RENDERBUFFER_EXT' undeclared (first use in this function)
cogl-fbo.c:100: error: (Each undeclared identifier is reported only once
cogl-fbo.c:100: error: for each function it appears in.)
cogl-fbo.c:101: error: `GL_STENCIL_INDEX8_EXT' undeclared (first use in this function)
cogl-fbo.c:108: error: `GL_FRAMEBUFFER_EXT' undeclared (first use in this function)
cogl-fbo.c:109: error: `GL_COLOR_ATTACHMENT0_EXT' undeclared (first use in this function)
cogl-fbo.c:111: error: `GL_STENCIL_ATTACHMENT_EXT' undeclared (first use in this function)
cogl-fbo.c:118: error: `GL_FRAMEBUFFER_COMPLETE_EXT' undeclared (first use in this function)
cogl-fbo.c: In function `cogl_draw_buffer':
cogl-fbo.c:293: error: `GL_FRAMEBUFFER_EXT' undeclared (first use in this function

gcc -DHAVE_CONFIG_H -I. -I.. -DG_LOG_DOMAIN=\"Eel\" -I.. -D_REENTRANT -D_PTHREADS -DORBIT2=1 -D_POSIX_PTHREAD_SEMANTICS -I/space/buildbot/prefix/include/glib-2.0 -I/space/buildbot/prefix/lib/glib-2.0/include -I/space/buildbot/prefix/include/gnome-desktop-2.0 -I/space/buildbot/prefix/include/gtk-2.0 -I/space/buildbot/prefix/include/startup-notification-1.0 -I/space/buildbot/prefix/lib/gtk-2.0/include -I/space/buildbot/prefix/include/atk-1.0 -I/space/buildbot/prefix/include/cairo -I/space/buildbot/prefix/include/pango-1.0 -I/space/buildbot/prefix//include/pixman-1 -I/space/buildbot/prefix//include -I/space/buildbot/prefix/include/gio-unix-2.0/ -I/space/buildbot/prefix//include/unique-1.0 -I/space/buildbot/prefix//include/dbus-1.0 -I/space/buildbot/prefix//lib/dbus-1.0/include -I/space/buildbot/prefix/include/gail-1.0 -I/space/buildbot/prefix/include/gconf/2 -I/space/buildbot/prefix/include/orbit-2.0 -I/space/buildbot/prefix/include/libxml2 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/X11/include -I/space/buildbot/prefix/include/pango-1.0 -I/space/buildbot/prefix/include/glib-2.0 -I/space/buildbot/prefix/lib/glib-2.0/include -Wall -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wcast-align -Werror -Wstrict-aliasing=0 -DDATADIR=\"/space/buildbot/prefix/share\" -DSOURCE_DATADIR=\"../data\" -DGNOMELOCALEDIR=\"/space/buildbot/prefix/share/locale\" -DG_DISABLE_DEPRECATED -DGDK_DISABLE_DEPRECATED -DGDK_PIXBUF_DISABLE_DEPRECATED -DGMENU_I_KNOW_THIS_IS_UNSTABLE -g -O2 -MT eel-background.lo -MD -MP -MF .deps/eel-background.Tpo -c eel-background.c  -fPIC -DPIC -o .libs/eel-background.o
eel-background.c: In function `eel_background_receive_dropped_color'
eel-background.c:1050: warning: cast increases required alignment of target type
make[2]: *** [eel-background.lo] Error 1

/opt/csw/bin/gmsgfmt -c --statistics -o eu.gmo eu.po
/opt/csw/bin/gmsgfmt: eu.po: warning: PO file header fuzzy
                             warning: older versions of msgfmt will give an error on this

Compiling with Sun Studio

Sun Studio 12 is preferentially used by Sun for compiling GNOME in Solaris, and provides another layer of error detection, e.g. void functions that return values. It's installed into /opt/SUNWspro and /opt/SUNWspro/bin is added to PATH.

Skip guile in the bootstrap as it doesn't compile and isn't used by much; Sun don't even ship it:

manduba: ~> JHBUILD_CC=suncc jhbuild bootstrap --skip guile --ignore-system

Issues only affecting Sun Studio

Bugs fixed

We've reported a bunch of bugs, and some have been fixed:

uccwiki: Buildbot (last edited 2009-12-23 14:50:16 by localhost)