EucalyptusFitOnCdSpec
6775
Comment:
|
6782
|
Deletions are marked like this. | Additions are marked like this. |
Line 117: | Line 117: |
Not tracked yet. | Proposed as bug 389470. |
Launchpad Entry: server-karmic-eucalyptus-fit-on-cd
Created: June 8, 2009
Contributors: ThierryCarrez
Packages affected:
Summary
Ubuntu Enterprise Cloud, powered by Eucalyptus, should be an install option on the Ubuntu Server edition CD. Therefore Eucalyptus runtime dependencies must be controlled so that they can fit on the CD.
Release Note
The Ubuntu Server 9.10 proposes direct installation of the Ubuntu Enterprise Cloud, powered by Eucalyptus, from the CD.
Rationale
Ubuntu Server should provide a simple, out-of-the-box Cloud experience. Providing a cloud option on the Server CD gives visibility of that technology to all current Ubuntu Server users and lowers the barrier of entry to try out those technologies. Having Eucalyptus dependencies fit on the CD is a prerequisite. Currently the CD has ~100-120 Mb free space and Eucalyptus adds around 155 Mb of binary packages.
User stories
- Anatoli wants to deploy Ubuntu Enterprise Cloud in his datacenter. He can conveniently use the original 9.10 Ubuntu Server CD to do so.
- Betty is a seasoned Ubuntu Server user but never really bought into the Cloud things. When popping in the 9.10 Server CD, she notices the Cloud option and decides to give it a try.
Assumptions
Foundations team should modify the Server CD installer in order to provide that "Cloud" install option.
Design
The Jaunty server CD had about 100-120 Mb free. However installing the Eucalyptus packages pulls 155 Mb of runtime dependencies so drastic actions need to be taken if we want to be able to fit.
Avoid full JDK (-56 Mb)
The full JDK brings in dependencies (including lots of X libraries) for a total of 56 Mb.
Eucalyptus runtime-dependency on JDK
Eucalyptus currently depends on a full JDK to do runtime compilation of Java classes. The runtime compilation could be performed by the Eclipse compiler (ECJ JDT), like in Tomcat 6, which runs over a headless JRE and is already present on the server CD.
This needs to be checked on the Eucalyptus side for compatibility. Early testing reveals that Eucalyptus should support that feature.
Eucalyptus runtime-depends on Ant, which recommends JDK
Eucalyptus needs ant at runtime to bootstrap Eucalyptus. Doing otherwise is not part of the Eucalyptus 1.6 plans. Solutions include downgrading the "Recommends" to a "Suggests" or use an innovative solution to selectively keep that recommend out of the Server CD.
Avoid GCJ (- 23 Mb)
Some Java library packages recommend the -gcj native counterpart, in order to provide decent performance on architectures without a JIT. GCJ is currently present on the CD, for a total of 20 Mb that would get freed if we could make sure those libraries aren't recommended on i386/amd64. Getting rid of those dependencies would also prevent the -gcj libraries from getting installed, reducing by another 3 Mb the total needing to be installed.
After discussion with doko and cjwatson, it appears the less intrusive way of fixing it for Karmic is to specify arch-conditional recommends/suggests and make the package an "any" build (rather than an "all" one), to make sure the dependencies are evaluated per-arch. An alternative solution would be to be able to selectively keep recommends out of the Server CD.
Avoid full JRE (avoid + 43 Mb)
Fix -jre-headless in Karmic
With current versions in karmic installing openjdk-6-jre-headless basically pulls openjdk-6-jre (and all its X dependencies, for a total of 43 Mb extra), thanks to a Depends: openjdk-6-jre in libaccess-bridge-java. This needs to be fixed.
Fix Java libraries runtime dependencies on full JREs
Several libraries still runtime depend on non-headless virtual packages (java1-runtime, java2-runtime...), resulting in pulling a full JRE when a headless one is sufficient.
Other size reduction options
- GWT is currently 6MB of binary
- 1.6 should be more granular and work with existing java packages more
libjgroups-java, 3MB, and glassfish-toplink-essentials, 2.4MB, come from current hibernate packaging which is under discussion as part of EucalyptusInMainSpec.
Implementation
Fix libaccess-bridge-java
Tracked in bug 384739, DONE.
Fix dependency on full JRE
Tracked in bug 387884
- libcommons-fileupload-java: DONE
- libqdox-java: DONE
- libcommons-io-java: DONE
- libxstream-java: DONE
- libasm2-java: DONE
- libcommons-cli-java: DONE
- junit4: DONE
- libslf4j-java: DONE
- libxml-security-java: DONE
- libavalon-framework-java: DONE
- janino: DONE
- libasm-java: DONE
- libmockobjects-java: DONE
- libcglib2.1-java: DONE
- libxml-commons-external-java: DONE
- libjavassist-java: DONE
- libbcprov-java (main)
- glassfish-javaee
- libc3p0-java
- libehcache-java
- libjsr107cache-java
Fix GCJ recommendations
- libjaxp1.3-java-gcj
- libxerces2-java-gcj
- ant-optional-gcj
- ant-gcj
- libantlr-java-gcj
- antlr3-gcj (universe)
- libbcprov-java-gcj: bug 386307
- liblog4j1.2-java-gcj
- libxalan2-java-gcj
Downgrade ant JDK Recommends to a Suggests
Proposed as bug 389470.
Test/Demo Plan
It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during testing, and to show off after release. Please add an entry to http://testcases.qa.ubuntu.com/Coverage/NewFeatures for tracking test coverage. This need not be added or completed until the specification is nearing beta.
Unresolved issues
This should highlight any issues that should be addressed in further specifications, and not problems with the specification itself; since any specification with problems cannot be approved.
BoF agenda and discussion
UDS Discussion
This was discussed as part of the session on Eucalyptus move to main (see EucalyptusInMainSpec). Here is the relevant part of the notes taken during that session:
Size issues (adding to default CD)
- GWT is 6MB of binary
- 1.6 should be more granular and work with existing java packages more
- JRuby is 3MB
- Just be a build-time dependency of GWT
- libjgroups-java, 3MB. Not needed ?
- glassfish-toplink-essentials, 2.4MB, comes from hibernate
- Avoiding JDK would save about 50MB of CD space
- Avoiding GCJ would save about 20MB
EucalyptusFitOnCdSpec (last edited 2009-08-17 08:58:54 by lns-bzn-48f-81-56-218-246)