Differences between revisions 41 and 55 (spanning 14 versions)
Revision 41 as of 2009-02-28 19:12:16
Size: 8819
Editor: DavidAdam
Comment:
Revision 55 as of 2009-03-04 08:03:17
Size: 10025
Editor: its00212
Comment:
Deletions are marked like this. Additions are marked like this.
Line 21: Line 21:
module_autogenargs['gmp'] = 'ABI=32'
module_autogenargs['libxml2'] = autogenargs + ' --with-python=/space/buildbot/prefix/bin/python'
Line 28: Line 30:
vte needs SUNWncurses installed.

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).
Line 31: Line 37:
Index: bootstrap.modules
===================================================================
Line 46: Line 50:
@@ -35,10 +35,8 @@

   <autotools id="libtool" autogen-sh="configure">
     <branch repo="ftp.gnu.org"
- module="libtool/libtool-1.5.26.tar.gz" version="1.5.26"
- size="2961939" md5sum="aa9c5107f3ec9ef4200eb6556f3b3c29">
- <patch file="libtool-1.5.24-multilib.patch" strip="1" />
- </branch>
+ module="libtool/libtool-2.2.6a.tar.gz" version="2.2.6a"
+ size="2870524" md5sum="8ca1ea241cd27ff9832e045fe9afe4fd" />
   </autotools>

   <autotools id="automake-1.4" autogen-sh="configure">
Line 60: Line 51:

vte needs SUNWncurses installed.
Line 100: Line 89:
 * Guile doesn't build (from the bootstrap moduleset) - configure dies with
{{{configure: error: GNU MP not found, see README}}}
* PolicyKit doesn't configure because when checking for PAM it tries to pass -l,as-needed which isn't supported by Solaris' ld(1). It also assumes that if using GCC, you're using GNU ld, which is not the case. Search configure.in for 'as-needed' to see the check. Filed as https://bugs.freedesktop.org/show_bug.cgi?id=20060
 * PolicyKit doesn't configure because when checking for PAM it tries to pass -l,as-needed which isn't supported by Solaris' ld(1). It also assumes that if using GCC, you're using GNU ld, which is not the case. Search configure.in for 'as-needed' to see the check. Filed as https://bugs.freedesktop.org/show_bug.cgi?id=20060 (hacks are in place to work around this, but the make fails later. Needs more investigation.)
Line 108: Line 95:
  Affected packages are:
   * dbus-python
   * pycairo
   * libproxy
   * pyorbit
Line 138: Line 130:
 * libxml2 installs python modules into the 2.4 site-packages directory, not the 2.5 directory (which is the version in bootstrap)
Line 149: Line 140:
 * gstreamer fails with
{{{
Making all in parse
  CC gst.o
In file included from gst_private.h:28,
                 from gst.c:108:
../config.h:306:1: "_FILE_OFFSET_BITS" redefined
In file included from /usr/include/stdio.h:40,
                 from /space/buildbot/prefix/include/libxml2/libxml/tree.h:15,
                 from /space/buildbot/prefix/include/libxml2/libxml/parser.h:16,
                 from gstconfig.h:171,
                 from gst.c:106:
/usr/include/sys/feature_tests.h:209:1: this is the location of the previous definition
}}}
 * libgtop fails to build with
{{{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)}}}
 * libsigc++ fails to build with
{{{SRCDIR=. TOP_SRCDIR=../.. doxygen Doxyfile
/bin/bash: doxygen: command not found}}}
 * libvolume_id wants sys/inotify.h for inotify, which doesn't exist on anything except Linux. Perhaps see what the FreeBSD guys have done?
 * gamin wants FAM, which doesn't exist on Solaris. Perhaps see what the FreeBSD guys have done?
 * Fixing bugs in the PulseAudio HEAD requires libtool 2.2 or greater. guile will not build with libtool greater than 1.5.6. Yay. And make sure you do 'make uninstall' in the libtool2.2 directory before reinstall 1.5.6, otherwise random stuff breaks.
 * Once things are building, it would be worth running tests with makecheck in .jhbuildrc.

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 for general advice.

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

.jhbuildrc:

moduleset = 'gnome-suites-2.26'
checkoutroot = os.path.expanduser('~/checkout/gnome2')
prefix = '/space/buildbot/prefix'
module_autogenargs['gettext'] = autogenargs + ' LDFLAGS="-lsec"'
module_autogenargs['gtk+'] = autogenargs + ' --without-libjasper'
module_autogenargs['gmp'] = 'ABI=32'
module_autogenargs['libxml2'] = autogenargs + ' --with-python=/space/buildbot/prefix/bin/python'
makeargs = '-j4'
os.environ['INSTALL'] = os.path.expanduser('~/bin/install-check')
use_local_modulesets = True

As CSW packages (blastwave.org/opencsw.org) are not part of the running path, ~/bin contains a symlink to /opt/csw/bin/git (git is also from opencsw while all other CSW packages come from Blastwave. Potential for interestingness.)

vte needs SUNWncurses installed.

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

use_local_modulesets allows us to use modifications to things like bootstrap.modulesets (e.g. autoconf-2.63 instead of 2.62):

--- bootstrap.modules   (revision 2732)
+++ bootstrap.modules   (working copy)
@@ -26,8 +26,8 @@

   <autotools id="autoconf" autogen-sh="configure">
     <branch repo="ftp.gnu.org"
-           module="autoconf/autoconf-2.62.tar.bz2" version="2.62"
-           size="1165951" md5sum="e1fb8fe0b22e651240afdfa2be537a3c" />
+           module="autoconf/autoconf-2.63.tar.bz2" version="2.63"
+           size="1195259" md5sum="7565809ed801bb5726da0631ceab3699" />
     <dependencies>
       <dep package="m4"/>
     </dependencies>

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

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

Current Issues

/!\ Current issues:

  • No SSL CA certs for wget, meaning Mozilla packages have to be manually downloaded
  • PolicyKit doesn't configure because when checking for PAM it tries to pass -l,as-needed which isn't supported by Solaris' ld(1). It also assumes that if using GCC, you're using GNU ld, which is not the case. Search configure.in for 'as-needed' to see the check. Filed as https://bugs.freedesktop.org/show_bug.cgi?id=20060 (hacks are in place to work around this, but the make fails later. Needs more investigation.)

  • A bunch of modules fail to build with this error:

/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
  • This is because gdbm is not available as a SUNW package or in buildbot (only by CSW). Filed as http://pulseaudio.org/ticket/493 - patching looks reasonably simple because use is confined to a single file.

  • vte doesn't want to build. configure includes this:

configure: WARNING: term.h: present but cannot be compiled
configure: WARNING: term.h:     check for missing prerequisite headers?
configure: WARNING: term.h: see the Autoconf documentation
configure: WARNING: term.h:     section "Present But Cannot Be Compiled"
configure: WARNING: term.h: proceeding with the preprocessor's result
configure: WARNING: term.h: in the future, the compiler will take precedence
configure: WARNING:     ## ------------------------------------------------------------------ ##
configure: WARNING:     ## Report this to http://bugzilla.gnome.org/enter_bug.cgi?product=vte ##
configure: WARNING:     ## ------------------------------------------------------------------ ##
  • and make dies with

gcc -I/space/buildbot/prefix/include/glib-2.0 -I/space/buildbot/prefix/lib/glib-2.0/include -I/space/buildbot/prefix/include/glib-2.0 -I/space/buildbot/prefix/lib/glib-2.0/include -g -O2 -Wall -Wextra -Wsign-compare -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Waggregate-return -Wcast-align -Wimplicit -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wpacked -Wmissing-format-attribute -Wshadow -Wstrict-aliasing=2 -Winit-self -Wdeclaration-after-statement -Wold-style-definition -Wno-unused-parameter -fno-common -Wno-switch-enum -o slowcat slowcat.o  -L/space/buildbot/prefix/lib /space/buildbot/prefix/lib/libgobject-2.0.so /space/buildbot/prefix/lib/libglib-2.0.so -lncurses -lsocket -lm   -R/space/buildbot/prefix/lib -R/space/buildbot/prefix/lib
ld: fatal: library -lncurses: not found
ld: fatal: File processing errors. No output written to slowcat
  • although adding -L/usr/gnu/lib fixes that error.
  • clutter-cairo could use a dependency on clutter, otherwise configure fails.
  • gtkspell needs aspell or pspell, neither of which appear to have Solaris packages.
  • mono needs --disable-dtrace added to the configure flags (as DTrace requires root permissions) /!\ not yet added to .jhbuildrc

  • glade fails to build:

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
  • I suspect this is fixable with the right -std= flag (ala the Compiler or options error above)
  • gstreamer fails with

Making all in parse
  CC    gst.o
In file included from gst_private.h:28,
                 from gst.c:108:
../config.h:306:1: "_FILE_OFFSET_BITS" redefined
In file included from /usr/include/stdio.h:40,
                 from /space/buildbot/prefix/include/libxml2/libxml/tree.h:15,
                 from /space/buildbot/prefix/include/libxml2/libxml/parser.h:16,
                 from gstconfig.h:171,
                 from gst.c:106:
/usr/include/sys/feature_tests.h:209:1: this is the location of the previous definition
  • libgtop fails to build with

{{{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)}}}

  • libsigc++ fails to build with

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

  • libvolume_id wants sys/inotify.h for inotify, which doesn't exist on anything except Linux. Perhaps see what the FreeBSD guys have done?
  • gamin wants FAM, which doesn't exist on Solaris. Perhaps see what the FreeBSD guys have done?
  • Fixing bugs in the PulseAudio HEAD requires libtool 2.2 or greater. guile will not build with libtool greater than 1.5.6. Yay. And make sure you do 'make uninstall' in the libtool2.2 directory before reinstall 1.5.6, otherwise random stuff breaks.

  • Once things are building, it would be worth running tests with makecheck in .jhbuildrc.