Re: [build][federation] building snapshots and releases

2006-10-25 Thread Geir Magnusson Jr.



Mark Hindess wrote:

Currently, the federation build looks at the revision of the federation
tree that you have checked out and checks out the same revision of the
classlib and drlvm trees.


That was just for convenience if you don't care.

It doesn't work all that well in practice, because you want to do the 
same SVN rev on multiple platforms, so I tend to formally specify it on 
the command line :


  $ ant -Dsvn.revision=X



Since we want releases to be reproducible (i.e. known tags of not only
classlib and drlvm but also of the federation code that was used to
combine them), then I think it make sense to use a similar mechanism
when building from an svn tag.

That is, if you check out the federation build from[0]:

  https://svn.apache.org/repos/asf/incubator/harmony/enhanced/tags/1.0

then the federation build.xml should ensure that it also checks out the
1.0 tag of classlib and drlvm.  That is:

  https://svn.apache.org/repos/asf/incubator/harmony/enhanced/classlib/tags/1.0

and:

  https://svn.apache.org/repos/asf/incubator/harmony/enhanced/drlvm/tags/1.0

This will need a little tweaking to the federation build.xml and I 
wanted to be sure this made sense before I started.  What do people 
think?


Well... certainly I think we'll need it at some point in the future, 
because it's clear we won't have the luxury of having the VM and 
classlib right in the same svn revision number.  This also will be true 
when there are VM options, so you'll take VM_1234 and CLASSLIB_1292 and 
JAVATOOLS_1.2.3 (whatever those numbers mean), and combine into a JDK 
and test that with the TCK.


First, do no harm.  Make it a choice.  The current snapshot mechanism is 
lightweight, and I do find the lack of tags and branches in SVN as first 
class citizens to be a royal PITA.


So maybe I can either do :

  $ant -Dsvn.revision=X

for a simple snapshot build  or

  $ant -Dclasslib.tag=X -Ddrlvm.tag=Y -Djavatools.tag=Z

?




I've started on the source archive for snapshots (though it doesn't
work yet[1]).  My feeling is that although the federation build.xml
in the svn checkout can be used to produce the binary archives - as
it was used to produce the current snapshots - that in order to prove
the source snapshot works (and to make sure that what we test/release
is consistent) we should actually create the binary archives for a
"release" from the source archive.  That is, the process should be:

  1) check out federation build using https://.../tags/1.0

  2) ant bundle_src

  3) unpack the resulting source archive (or perhaps just cd target/src)

  4) build binary archives using contents of the source archive


Lets clarify.

The "federation tree" is really just a build.xml file, and for 
convenience, there is LICENSE, NOTICE, etc, but that's a maintenance 
problem given we have info in multiple places.  So lets assume we fix 
that, and the "federation" is just the build.xml


Suppose we did this :

$ant -Dfed.version=W -Dsvn.revision=X
or
$ant -Dfed.version=W -Dclasslib.tag=X -Ddrlvm.tag=Y -Djavatools.tag=Z

leads to :

1) create directory under /trunk  "snapshot-W-rX" or "dist-W-X-Y-Z"
2) checkout into that directory the build.xml rW
3) cd into that directory
4) run ant target to populate the source
5) (not sure?) Run the fetch targets to populate the deps
6) tar that directory to make the source tarball
7) run the build target

It seems like the only issue is that we need to stable down the version 
of federation tree too (which is the build script)






In short, make the binaries using the source archive that you are
planning to "release" so that you know the source archive is really
complete and works.


Does the sequence above satisfy your requirements?



Does this seem reasonable?

Regards,
 Mark.

[0] We don't have a tags directory yet and maybe we might make it under
harmony/enchanced/federation rather than in harmony/enchanced but
we can fix that later.


this is an orthogonal thread.  We need to think about this carefully.

One idea that leaps to mind is

   harmony/enhanced/branches_and_tags/

with some structure under there and tagging convention.

geir


[build][federation] building snapshots and releases

2006-10-25 Thread Mark Hindess

Currently, the federation build looks at the revision of the federation
tree that you have checked out and checks out the same revision of the
classlib and drlvm trees.

Since we want releases to be reproducible (i.e. known tags of not only
classlib and drlvm but also of the federation code that was used to
combine them), then I think it make sense to use a similar mechanism
when building from an svn tag.

That is, if you check out the federation build from[0]:

  https://svn.apache.org/repos/asf/incubator/harmony/enhanced/tags/1.0

then the federation build.xml should ensure that it also checks out the
1.0 tag of classlib and drlvm.  That is:

  https://svn.apache.org/repos/asf/incubator/harmony/enhanced/classlib/tags/1.0

and:

  https://svn.apache.org/repos/asf/incubator/harmony/enhanced/drlvm/tags/1.0

This will need a little tweaking to the federation build.xml and I 
wanted to be sure this made sense before I started.  What do people 
think?


I've started on the source archive for snapshots (though it doesn't
work yet[1]).  My feeling is that although the federation build.xml
in the svn checkout can be used to produce the binary archives - as
it was used to produce the current snapshots - that in order to prove
the source snapshot works (and to make sure that what we test/release
is consistent) we should actually create the binary archives for a
"release" from the source archive.  That is, the process should be:

  1) check out federation build using https://.../tags/1.0

  2) ant bundle_src

  3) unpack the resulting source archive (or perhaps just cd target/src)

  4) build binary archives using contents of the source archive


In short, make the binaries using the source archive that you are
planning to "release" so that you know the source archive is really
complete and works.

Does this seem reasonable?

Regards,
 Mark.

[0] We don't have a tags directory yet and maybe we might make it under
harmony/enchanced/federation rather than in harmony/enchanced but
we can fix that later.

[1] Currently:

  ant bundle_src; cd target/src; ant 

fails on check-depends but:

 ant bundle_src; cd target/src/working_classlib ; ant check-depends

works.  I can't see why yet.  Perhaps someone will take a look?
I can't see why it's any different from the svn tree.