harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Hindess <mark.hind...@googlemail.com>
Subject Re: [general] How I created the Linux binaries for the M10 release
Date Fri, 19 Jun 2009 06:12:15 GMT

In message <3b3f27c60906181932w57bd3a0fm9c56c1ec3ccf4ef3@mail.gmail.com>,
Nathan Beyer writes:
> 
> Nice doc. Are you going to put that on the wiki as well?

I was planning to.  However, my thought process in going to do this was:

1) Where should it go?
2) Probably it should be linked to from the same process page as the
BranchMerge doc.
3) Where is the BranchMerge doc linked from?
4) Tried looking for a link to the BranchMerge doc but didn't find one.
5) Wondered how many other wiki pages might be not linked.
6) Decided there was too much to fix for the time I had alloted to this
task.
7) Added trying to tidy up the wiki to my todo list.

Maybe I was wrong about 4-6.  I can probably get google to give me an
answer to 4.  Not sure how to get the wiki to tell me about 5 though.

Regards,
 Mark.


> On Thu, Jun 18, 2009 at 8:13 AM, Mark Hindess
> <mark.hindess@googlemail.com>wrote:
> 
> >
> > I built the Linux binaries for the M10 release using a clean minimal
> > build environment.  I created the clean environment using the
> > copy-on-write builder (cowbuilder) on Debian.  I'd like the process
> > for generating the release binaries from the source to be as "open" as
> > possible so I've appended a rough description of what I did.
> >
> > (I used cowbuilder rather than debootstrap/chroot because the tree
> > remains clean for re-use and because it handles mounting /proc, etc for
> > you.)
> >
> > Regards,
> >  Mark.
> >
> > # install the copy-on-write builder (intended for use by pdebuild when
> > # creating debian packages
> > sudo apt-get install cowbuilder
> >
> > # cd to temporary directory on the same filesystem as /var/cache/pbuilder
> > # create a pristine debian etch environment (etch because the lenny version
> > # of libc is too new with respect to some enterprise distributions)
> > sudo cowbuilder --create --basepath etch-amd64.cow --distribution etch \
> >                --debootstrap debootstrap
> >
> > # get login shell in new environment
> > sudo cowbuilder --login --basepath etch-amd64.cow
> >
> > # set $HOME to /tmp
> > cd /tmp
> > HOME=/tmp
> > export HOME
> >
> > # install wget
> > apt-get install wget
> >
> > # fetch the harmony KEYS file
> > wget -q -O- http://svn.apache.org/repos/asf/harmony/KEYS | gpg --import
> >
> > # install a jre to bootstrap building the M10 snapshots
> > # (M10 debian packages as I built the M9 packages with lenny not etch)
> > for f in jre classlib drlvm ; do
> >  # fetch package and check signature
> >  wget
> > http://my.server.example.com/deb/harmony-5.0-${f}_0.0r782693-1_amd64.deb<ht
> tp://my.server.example.com/deb/harmony-5.0-$%7Bf%7D_0.0r782693-1_amd64.deb>
> >  wget $_.asc
> >  gpg --verify harmony-5.0-${f}_0.0r782693-1_amd64.deb.asc
> >  # check the output to make sure it is good
> > done
> >
> > # (attempt to) install the bootstrap jre
> > dpkg -i harmony-5.0*.deb
> >
> > # this fails due to missing dependencies so ask apt-get to fix the missing
> > # dependencies
> > apt-get install -f
> >
> > # install the other build dependencies
> > apt-get install ant subversion ant-optional liblcms1-dev libjpeg62-dev \
> >                    libpng-dev libxft-dev libxml2-dev libxtst-dev
> > libxext-dev
> >
> > # create a user to perform the build
> > useradd -d /tmp build
> >
> > # make the harmony keys we've imported available to the new user
> > chown -R build /tmp/.gnupg
> >
> > # become the build user
> > su - build
> >
> > # fetch the harmony source and check the signature
> > wget
> > http://people.apache.org/~hindessm/m10/apache-harmony-src-r782693-snapshot.
> tar.gz<http://people.apache.org/%7Ehindessm/m10/apache-harmony-src-r782693-sn
> apshot.tar.gz>
> > wget $_.asc
> > gpg --verify apache-harmony-src-r782693-snapshot.tar.gz.asc
> > # check the output to make sure it is good
> >
> > # unpack the sources
> > tar xzf apache-harmony-src-r782693-snapshot.tar.gz
> > cd apache-harmony-src-r782693
> >
> > # fetch the dependencies
> > ant fetch-depends
> >
> > # un-become the build user so root can work some magic
> > exit
> >
> > # cd to build tree
> > cd /tmp/apache-harmony-src-r782693
> >
> > # copy some dependencies to ant lib
> > cat common_resources/depends/jars/ecj_3.4.2/ecj-3.4.2.jar \
> >    >/usr/share/ant/lib/ecj.jar
> > cat working_classlib/depends/jars/junit_4.4/junit.jar \
> >    >/usr/share/ant/lib/junit.jar # only needed to run tests
> >
> > # become the build user
> > su - build
> >
> > # cd to build tree
> > cd apache-harmony-src-r782693
> >
> > # build and create bundles
> > ant build bundle-hdk bundle-jdk bundle-jre
> >
> > # copy target/* to host
> > # hint: outside of the cowbuilder shell the files will be in:
> > #   /var/cache/pbuilder/build/cow.NNNNN/tmp/apache.../target
> > # use lsof as follows to find the correct value for NNNNN:
> > #  lsof +d /var/cache/pbuilder/build
> >
> > # repeat for i386
> > sudo cowbuilder --create --debootstrapopts --arch=i386 \
> >                --basepath etch-i386.cow --distribution etch \
> >                --debootstrap debootstrap
> >
> > # use linux32 to get a suitable (fake) i386 environment
> > linux32 sudo cowbuilder --login --basepath etch-i386.cow
> > # continue as before but with x86 / i386 instead of x86_64 / amd64
> >
> >
> >
> 
> --001636163eb5ba576b046caa56df--
> 



Mime
View raw message