Differences between revisions 1 and 43 (spanning 42 versions)
Revision 1 as of 2009-02-03 19:51:16
Size: 4271
Editor: DavidAdam
Comment:
Revision 43 as of 2009-03-01 14:37:01
Size: 8619
Editor: DavidAdam
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Manduba should run a GNOME buildbot slave in order to help tinderbox the GNOME code. Manduba should run a GNOME buildbot slave in order to help tinderbox the GNOME code, linked to http://build.gnome.org/
Line 9: Line 9:
PATH=/usr/local/bin:/usr/gnu/bin:/usr/sfw/bin:/opt/csw/bin:/opt/csw/sbin:/opt/SUNWspro/bin:/ucs/ccs/bin:/usr/bin: (in .zshenv) See http://developers.sun.com/solaris/articles/build_sw_on_solaris.html for general advice.
Line 11: Line 11:
The following Blastwave packages are installed. 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.
Line 13: Line 13:
{{{# (From site http://blastwave.network.com/csw/unstable )
       software localrev
         amanda 2.5.2p1,REV=2008.05.21
    berkeleydb4 4.2.52,REV=2008.02.23_rev=p5
   berkeleydb44 4.4.20,REV=2007.01.27
       binutils 2.17
          bzip2 1.0.5,REV=2008.11.26
         common 1.4.6,REV=2008.04.28
       cswutils 1.12,REV=2008.04.28
     cupsclient 1.2.7,REV=2007.01.22
         curlrt 7.18.0,REV=2008.01.28
      diffutils 2.8.1,REV=2005.11.10
          expat 1.95.7
       fakeroot 0.5.2,REV=2004.09.09.sparcfix
      fileutils 4.1,REV=2003.01.23
      findutils 4.2.30,REV=2007.03.19
     fontconfig 2.3.2,REV=2005.11.04
        fortune 9708,REV=2004.08.07
      freetype2 2.1.10,REV=2005.12.11
           gawk 3.1.5
       gcc4core 4.0.2,REV=2005.09.29
     gcc4corert 4.0.2,REV=2005.09.29
        gcc4g++ 4.0.2,REV=2005.09.29
      gcc4g++rt 4.0.2,REV=2005.09.29
             gd 2.0.33
           gdbm 1.8.3,REV=2006.01.01
       ggettext 0.14.1,REV=2005.06.29
    ggettextdoc 0.14.1,REV=2005.06.29
          ggrep 2.5,REV=2004.12.01
          glib2 2.18.3,REV=2008.11.26
          gnupg 1.4.9,REV=2009.01.23
        gnuplot 4.0.23,REV=2008.04.07
         gnutls 2.0.4
           gtar 1.15.91,REV=2006.07.26
        isaexec 0.1
           jpeg 6b,REV=2007.10.28
        libcups 1.2.7,REV=2007.01.22
          libgc 6.8
      libgcrypt 1.4.1,REV=2008.05.27
   libgpg_error 1.6
       libiconv 1.9.2
         libidn 0.5.19,REV=2006.01.02
         libnet 1.0.2,REV=2004.04.08_rev=a
     libsunmath 2007.08.04
       logwatch 5.2.2
           lsof 4.77,REV=2006.11.13
            mtx 1.2.18
        ncurses 5.7,REV=2009.01.23
        opencdk 0.6.6
    openldap_rt 2.3.39,REV=2008.02.22
        openssl 0.9.8g,REV=2008.04.30_rev=g
  openssl_devel 0.9.8,REV=2007.12.26_rev=g
     openssl_rt 0.9.8,REV=2007.12.26_rev=g
  openssl_utils 0.9.8,REV=2007.12.26_rev=g
     patchutils 0.2.29,REV=2004.06.27
           pcre 7.6,REV=2008.02.20
        pcre_rt 7.6,REV=2008.02.20
           perl 5.8.8,REV=2008.03.25
        pkg_get 3.8.4
pkg_update_watch 1.0,REV=2007.04.10
   pm_xmlparser 2.34,REV=2004.03.06
            png 1.2.29,REV=2008.05.08
       readline 5.2,REV=2009.01.23
           sasl 2.1.22,REV=2007.06.19
     schilybase 1.01,REV=2007.06.25
    schilyutils 1.02,REV=2008.04.29
         screen 4.0.3,REV=2008.04.30
  smartmontools 5.36,REV=2006.09.11
      textutils 2.1,REV=2003.01.23
           tiff 3.8.2,REV=2007.12.09
            top 3.6,REV=2007.01.01
            w3m 0.5.1,REV=2004.05.22
            xpm 3.4k,REV=2002.12.31
           zlib 1.2.3,REV=2007.05.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 90: Line 52:

== 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
 * 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.
 * 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

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

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

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