1312
Comment:
|
8834
|
Deletions are marked like this. | Additions are marked like this. |
Line 12: | Line 12: |
.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' 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 71: |
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 84: |
== 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. * 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. * libxml2 installs python modules into the 2.4 site-packages directory, not the 2.5 directory (which is the version in bootstrap) * 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) * 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' 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
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"
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.
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.
- libxml2 installs python modules into the 2.4 site-packages directory, not the 2.5 directory (which is the version in bootstrap)
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)
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.