[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Packaging Maven 2 - shipping binaries for bootstrapping.



Hi Philipp,

I tried to package Maven 2 last summer and you seem to have gotten as
far as I was back then so let me give you a small braindump.

You seem to have found some of the depdencies that Maven needs to build
itself, but there is a whole lot more of them. You can drop a few of
them if you skip all the tests for the inital package. I think I found
out that the entire dependency graph of Maven 2 (not sure if this
included test dependencies or not) was around 100 artifacts so there's a
few packages to build :)

On Thu, 2006-03-02 at 10:56 +0100, Philipp Meier wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
> 
> Hi debian java folks, hi mentors,
> 
> I'm posting this to mentors, too, because the problem described below is
> not only about maven2 but about a general problem with bootstrapping
> circularely depending packages.
> 
> More news on packaging maven2. I was able to built some more
> dependencies of maven2 as debian packages. Now, I reached a point where
> I need a hint:
> 
> Maven-components  is built with a custom bootstrapping shellscript which
> builds some core components of maven2 and then builds maven2 with the
> help of the bootstrapped libraries. Maven-repository-metadata built
> during the bootstrapping depends on a modello-test. modello-test itself
> depends on maven-artifact. Modello test is a seperate package which
> shall be built seperately from maven2. Because maven-repository-metadata
> and maven-artifact are built using the bootstrapping script in one build
> run there is a circular dependency. Think A -> C, C -> B where A and B
> are in the same source package, C is in another.
> 
> I see two ways of breaking this:
> 
> First, ship modello as binary jar file with the first source tarball of
> maven2 until maven2 is in the archives and can build modello. The
> license of modello allows the binary contribution. The later versions
> can be built with the packages from the archives then.

AFAIK it's not acceptable to bundle binaries at all. Also is it really
possible and feasable to build a package with an earlier version of
itself?

> Second option: Split maven-components into several packages. This will
> be not very easy because of the sophisticated bootstrapping of maven2.
> The process buils some bootstrapping code using a shellscript which
> build a level 2 bootstrapper which builds the maven core which builds the
> maven plugins. Event then, marven-artifact must be shipped as a separate
> source package because of the dependencies described above.

I think that you most likely will have to build each Maven artifact as
it's own debian package as they're independently reusable (and actually
reused).

My conclusion from the last try was that I would make a big source ball
containing all the compile time dependencies of Maven (meaning without
everything required to run the tests) and make a bootstrap Maven 2
package from that. This bootstrap package would then in turn be used to
build all the dependencies that Maven itself needs (including tests
dependencies) and finally it would build the proper Maven 2 package with
all the tests enabled.

This bootstrap package can quite easily be generated using Maven 2
itself to find all the depdendencies.

This was just an initial brain dump, feel free to ask more questions
here or on irc (#debian-java on freenode).

--
Trygve



Reply to: