Building on a snv_134 system.
Dependencies for building JDS NEVADA_148 (recommend: SVN 21853+):
text/gnu-patch archiver/gnu-tar web/wget developer/build/ant \ developer/build/autoconf developer/build/gnu-make \ developer/parser/bison text/gnu-diffutils file/gnu-coreutils \ developer/lexer/flex text/gnu-gettext developer/build/libtool \ developer/macro/gnu-m4 system/header system/xopen/xcu4 \ x11/header x11/header/header-xorg system/header/header-audio \ developer/object-file system/library/math/header-math \ developer/build/automake-110 developer/gnome/gettext \ compatibility/ucb developer/gcc-3 developer/build/automake-19 \ text/auto_ef library/medialib image/imagemagick \ developer/build/cmake runtime/lua
(NB there's a claimed dependency on SUNWsfwhea, which is obsolete and apparently split up into the packages that delivered the various SFW libraries.)
Install the September 2009 build of SunStudio12:
pfexec mkdir -p /opt/SUNWspro cd /opt/SUNWspro bzcat sunstudio12-patched-ii-2009Sep-sol-x86.tar.bz2 | pfexec tar xf - PATH=/opt/SUNWspro/bin:$PATH MANPATH=/opt/SUNWspro/man:$MANPATH export MANPATH
Get the current version of jds-cbe:
svn co svn+ssh://anon@svn.opensolaris.org/svn/jds/jds-cbe/trunk jds-cbe
Patch it with this:
Index: cbe-install =================================================================== --- cbe-install (revision 51) +++ cbe-install (working copy) @@ -32,7 +32,7 @@ # this is listed separately because we are using the spec file # included in the pkgbuild tarball -PKGBUILD_VERSION=1.3.101 +PKGBUILD_VERSION=1.3.103 # Modules needed for building GNOME: GNOME_MODULES="ant m4 autoconf automake libtool bison coreutils diff flex gettext make subversion" @@ -1050,7 +1050,7 @@ check_pkg_system () { if [ -x /usr/bin/pkg ]; then - pkg -R $rootdir info entire > /dev/null 2>&1 && { + pkg -R $rootdir info SUNWcs > /dev/null 2>&1 && { PKG_SYSTEM=pkg return }
You'll also need to edit the CBEant.spec file to change the source to archive.apache.org instead of www.apache.org.
Run cbe-install. Answer "no" to dependency checking. Answer no to gnome, kde, sfe and the optional tool installs. Use the default directory /opt/dtbld but change the packages folder to $HOME/packages (or a location your current user has write access to). This builds and installs the CBE environment.
To enter it, run what it tells you. eg
. /opt/dtbld/bin/env.sh
The remainder of the instructions assume you're in the environment.
You need to apply two patches to files under /opt/dtbld/lib/pkgbuild-1.3.103 to make pkgbuild work better with IPS. See the attachments to this document.
Then grab the spec-files repo and check out the tag we want to build:
BASEDIR=/data/builds/147/jds cd $BASEDIR hg clone http://pkgdev.openindiana.org/hg/spec-files cd spec-files hg update VERMILLION_147 #OLD: hg update NEVADA_145
Build the manpage tarballs.
cd $BASEDIR/spec-files/manpages make
Solaris specific changes to translations are found in tarballs named module-po-sun-version.tar.bz2. These tarballs are generated from the .po files found in spec-files/po-sun. To generate the tarballs, use the following commands:
cd $BASEDIR/spec-files/po-sun make
There are a bunch of specs that can't be built due to closedness:
cd $BASEDIR/spec-files/specs mkdir ../extra mv SUNWapoc-adapter-gconf.spec SUNWapoc.spec SUNWclutter-gst.spec SUNWclutter-gtk.spec SUNWclutter.spec SUNWevolution-bdb-devel.spec SUNWflash-player-plugin.spec SUNWseahorse-plugins.spec SUNWsun-gdm-themes.spec ../extra/
Apply two patches (specs.patch and base-specs.patch) (see attachments) which correct a lot of the upstream URLs first, and then download all the upstream sources.
cd $BASEDIR/spec-files/specs pkgtool --download download -v *.spec
You will need to set up a local IPS repository, pkgtool needs to publish packages to it, and install them.
pfexec mkdir $BASEDIR/ips-depot pfexec nohup /usr/lib/pkg.depotd -d $BASEDIR/ips-depot -p 12345 --set-property publisher.prefix=openindiana.org & pfexec pkg set-publisher -O http://`hostname`:12345/ openindiana.org
Finally you should be able to go:
export PKGBUILD_IPS_SERVER=http://`hostname`:12345/ cd $BASEDIR/spec-files/specs mkdir ../log nohup pkgtool -v build --with-moz-nss-nspr --without-sun-branding --with-l10n --autodeps *.spec > ../log/build.log 2>&1 &
Note this build takes a very long time, up to half a day. It is more reliable to run it under nohup than screen.
If the builds fail because of:
pkgbuild: Calling script /export/home/openindiana/packages/PKGMAPS/scripts/SFEswig_ips.sh pkgbuild: pkgsend: 'open' failed for transaction ID 'None'; status '400': pkgbuild: Illegal FMRI 'SFEswig@1.3.35,5.11-0.OpenIndiana_b145': Bad Version: 0.OpenIndiana_b145 pkgbuild: pkgsend: include: No transaction ID specified in $PKG_TRANS_ID
This is because uname -v is returning something that pkgbuild isn't parsing correctly - it expects a-zA-Z_0-9 to get the number. If you're building on an onnv different to the version of JDS you're building, you'll probably want to hardcode this anyway. Edit:
/opt/dtbld/lib/pkgbuild-1.3.103/rpm_package.pm
Search for 'uname -v' and alter it to look like:
my $os_build = `uname -v`; chomp ($os_build); $os_build =~ s/^\S+_([0-9]+).*/$1/; $self->{_tags}->{ips_vendor_version} = "0.147";
Here you can see we're hardcoding ips_vendor_version at 0.147.
There's one problem with the new SUNWgnome-common-devel package; you'll need to untar gnome-common-VERSION.tar.bz2 and install one file by hand:
Note: This is not necessary if you've installed gettext to build xnv
pfexec cp gnome-common-VERSION/gettext-0.16.1/gettext-runtime/m4/nls.m4 /usr/share/aclocal/