You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by Mark Hindess <ma...@googlemail.com> on 2009/06/19 08:12:15 UTC

Re: [general] How I created the Linux binaries for the M10 release

In message <3b...@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
> <ma...@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--
> 



Re: [general] How I created the Linux binaries for the M10 release

Posted by Nathan Beyer <nd...@apache.org>.
On Fri, Jun 19, 2009 at 1:12 AM, Mark Hindess
<ma...@googlemail.com>wrote:

>
> In message <3b...@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.


This might be a slight be off-topic, but personally I think this is because
the wiki software we're using sucks. I'd like to move over to the Confluence
wiki at http://cwiki.apache.org/ - it works so much better and we could also
use it to back our site at http://harmony.apache.org/ like
http://directory.apache.org/ and other projects do.

-Nathan

>
>
>
> > On Thu, Jun 18, 2009 at 8:13 AM, Mark Hindess
> > <ma...@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<http://my.server.example.com/deb/harmony-5.0-$%7Bf%7D_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<http://people.apache.org/%7Ehindessm/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--
> >
>
>
>