RefactorEucalyptusJavadepsSpec

Summary

The eucalyptus-javadeps package should be splitted into proper single packages wherever possible. Missing dependencies should be packaged as well.

Release Note

Most Java libraries that were previously included into the single eucalyptus-javadeps package are now separately packaged and properly available for all Ubuntu users, making them part of the growing Ubuntu Java platform. The new Eucalyptus 1.6 dependencies are packaged as well.

Rationale

Due to time constraints during the Jaunty cycle, the missing Eucalyptus Java dependencies were all packaged as a giant single package called eucalyptus-javadeps, which conveniently allowed for partial builds, rewrites of the build system etc. For the Karmic cycle however, with the parallel objective of bringing Eucalyptus to main, it makes sense to split this giant package into proper separate packages wherever possible. This will greatly improve maintainability and give simpler access to those Java libraries for platform developers.

In order to ship Eucalyptus 1.6 release, we also need to package the additional dependencies that this version requires.

User stories

  • Yulia is a Java developer on the Ubuntu platform. Her software makes use of Jetty 6 and GWT but they were only available as part of a giant eucalyptus-javadeps package. With the Karmic release she can have her software properly depend on jetty 6 and GWT rather than pulling in superfluous dependencies.
  • Justin is an Ubuntu security member and was worried about issuing security updates for the whole eucalyptus-javadeps package if a vulnerability would hit one of its components. He is happy to have Eucalyptus in main now that the eucalyptus-javadeps package is properly refactored.

Assumptions

None.

Design

Needed as separate packages

Package

Notes

Google Web Toolkit

Version 1.6 to build with the ECJ/SWT in Karmic. gwt-runtime only ?

JUG (ASL)

-

Jetty 6

Being packaged upstream

Drools

Requires MVEL. Partial build ?

MVEL

-

Axiom

-

WSS4J 1.5.7

-

OpenSAML 1.1 Java

Note that it is possible to patch out OpenSAML dependency from WSS4J

No longer required in Karmic (Eucalyptus 1.6)

Package

Notes

Jettison

In the archive already (use libjettison-java)

AspectJ Weaver

Was needed as build-dep of Spring. Can be patched out

ECJ JDT Core

Older version was necessary for GWT 1.5

SWT-GTK 3.2.1

Older version was necessary for GWT 1.5

MyFaces

Was needed as build-dep of Spring. Can be patched out

Jetty GWT servlet

No longer needed with GWT 1.6 / Euca 1.6

Axis2

No longer needed with Euca 1.6

Annogen

No longer needed with Euca 1.6

Apache WS Neethi

No longer needed with Euca 1.6

Woden

No longer needed with Euca 1.6

Apache WS XmlSchema

No longer needed with Euca 1.6

Rampart 1.3

No longer needed with Euca 1.6

Backport Util Concurrent 3.1

Was a build-dep of Axis2

HttpComponents Core

Scheduled for removal in 1.6

Additional dependencies in Karmic (Eucalyptus 1.6)

Package

Notes

Netty 3.1.0CR1

dnsjava 2.0.6

geronimo-ejb_3.0_spec-1.0.1

geronimo-jpa_3.0_spec-1.1.1

Logkit r508111

Now part of excalibur

geronimo-interceptor

build-dep of new euca-javadeps

geronimo-jacc

build-dep of new euca-javadeps

Keeping the eucalyptus-javadeps package

The eucalyptus-javadeps package will still contain the Eucalyptus Java dependencies that don't make sense in the archive. This can be because their functionality is crippled or because Eucalyptus needs a version of a library that slightly differs from the one we have in archive, and changing that one would break other packages.

The proposal for Karmic would be to include the following JARs in eucalyptus-javadeps, together with their potential missing build dependencies:

spring-beans.jar
spring-context.jar
spring-context-support.jar
spring-core.jar
spring-web.jar 
ehcache.jar
hibernate3.jar
hibernate-annotations.jar
hibernate-commons-annotations.jar
hibernate-entitymanager.jar
Mule jars

This would be a reasonable compromise to keep the number of packages needed for EucalyptusInMainSpec manageable.

Implementation

Packaging, stage 1

  • Axiom 1.2.8
  • MVEL 1.3.1

Packaging, stage 2

  • JUG/ASL 2.0.0
  • Jetty 6
  • Netty 3.1
  • dnsjava
  • excalibur-src-r508111-15022007
  • geronimo-ejb_3.0_spec-1.0.1
  • geronimo-jpa_3.0_spec-1.1.1

Packaging, stage 3

  • geronimo-interceptor
  • geronimo-jacc
  • WSS4J (+OpenSAML?)
  • Google Web Toolkit 1.6
  • Drools: Requires MVEL. Partial build.

New eucalyptus-javadeps

  • Spring
  • ehcache
  • hibernate and friends
  • Mule

Eucalyptus-Javadeps migration

We need to keep the current eucalyptus-javadeps package until Eucalyptus 1.6 hits the archive. The reduced eucalyptus-javadeps package should be ready in PPA, ready to be uploaded at the same time.

Test/Demo Plan

You should be able to build and run Eucalyptus 1.6 with the new archive contents.

Unresolved issues

None.

BoF agenda and discussion

UDS Barcelona session

  • Introduction: eucalyptus-javadeps current contents: the good, the bad, the ugly
  • Issue #1: Different versions in archive
    • ECJ JDT Core and SWT-GTK (required by Jetty6 GWT servlet -> GWT)

    • AspectJ Weaver
      • Multiverse
      • Depends on non-free libraries
      • Doesn't build from source.
  • Issue #2: Partial builds
    • Axis2/Rampart (in progress by Axis2 team)
    • Drools: build all but problematic module
    • Jetty6
    • Spring framework (in progress in Debian)
    • Mule: do it partially
  • Other issues
    • Don't need the GWT servlet.
    • GWT 1.6: Create a gwt-runtime partial build package
  • Action plan
    • Get list of expected Eucalyptus 1.6 dependencies ASAP
    • Package certain missing dependencies first
    • Coordinate with Debian (especially Spring, Jetty6)


CategorySpec

RefactorEucalyptusJavadepsSpec (last edited 2009-07-16 09:05:04 by lns-bzn-48f-81-56-218-246)