Differences between revisions 7 and 48 (spanning 41 versions)
Revision 7 as of 2009-02-07 16:23:02
Size: 1286
Editor: DavidAdam
Comment:
Revision 48 as of 2009-03-02 16:38:15
Size: 8997
Editor: adm381
Comment:
Deletions are marked like this. Additions are marked like this.
Line 11: Line 11:
PATH='~/bin:~/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. 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>
}}}
Line 33: Line 72:
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).
Line 36: Line 85:

== 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"
}}}
  This is apparently caused by [http://wiki.netbsd.se/Typical_pkgsrc_error_messages#Compiler_or_options_invalid_for_pre-UNIX_03_X.2FOpen_applications__and_pre-2001_POSIX_applications the -std=gnu99 flag] or the USE_LANGUAGES=c99 option in Makefiles. See the link for suggested fixes, although they're not really optimal.
  Affected packages are:
  * dbus-python
  * pycairo
 * PulseAudio doesn't configure - dies with
{{{
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)
 * libvolume_id wants sys/inotify.h for inotify, which doesn't exist on anything except Linux. 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)
  • libvolume_id wants sys/inotify.h for inotify, which doesn't exist on anything except Linux. 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.