EucalyptusFitOnCdSpec
5756
Comment:
|
6775
|
Deletions are marked like this. | Additions are marked like this. |
Line 35: | Line 35: |
=== Use ECJ compiler rather than a full JDK (- 56 Mb) === | === Avoid full JDK (-56 Mb) === |
Line 37: | Line 37: |
Eucalyptus currently depends on a full JDK to do runtime compilation of Java classes. This pulls the full JDK dependencies (including lots of X libraries), for a total of 56 Mb. 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. | The full JDK brings in dependencies (including lots of X libraries) for a total of 56 Mb. |
Line 39: | Line 39: |
This needs to be checked on the Eucalyptus side for compatibility. | ==== Eucalyptus runtime-dependency on JDK ==== |
Line 41: | Line 41: |
=== Get rid of GCJ stuff (- 23 Mb) === | 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) === |
Line 45: | Line 53: |
=== Fix -jre-headless in Karmic (avoid + 43 Mb) === | 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. |
Line 47: | Line 55: |
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, opened discussion about that in bug 384739. | === Avoid full JRE (avoid + 43 Mb) === |
Line 49: | Line 57: |
=== Fix Java libraries runtime dependencies on full JREs (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 ==== |
Line 60: | Line 72: |
=== 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 |
|
Line 73: | Line 115: |
=== Fix dependency on full JRE === | === Downgrade ant JDK Recommends to a Suggests === |
Line 75: | Line 117: |
* libcommons-fileupload-java * libqdox-java * libcommons-io-java * libxstream-java * libasm2-java * libcommons-cli-java * junit4 * libslf4j-java * libxml-security-java * libavalon-framework-java * janino * libasm-java * libmockobjects-java * libcglib2.1-java * libxml-commons-external-java * libjavassist-java * libbcprov-java (main) * glassfish-javaee * libc3p0-java * libehcache-java * libjsr107cache-java |
Not tracked yet. |
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
Not tracked yet.
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)