DivergingMainUniverse
Overview
Sometimes it becomes necessary to take a subset of functionality of a Java library in Universe and move it to main or update a package in main to exclude particular dependencies - normally new dependencies in universe.
In the past this has created compatibility issues due to missing functionality in packages in main.
It was agreed at UDS-N that when this situation occurs, the following steps should be taken:
- The fully functional package should be maintained intact with no naming changes. If will need to be demoted to universe to make way for the -main variant.
- The 'main' version of the package should be branched from the fully functional package:
- Required features/dependencies disabled
Rename from lib<name>-java to lib<name>-java-main
- Any dependencies on the package in main will also need to be updated to use the new -main version.
This approach will ensure that the delta between Ubuntu and Debian is minimised and the Ubuntu development and support focusses on packages in main rather than those in universe.
Example
NOTE - this was not actually what happened and hence generated this policy.
Package: libcommons-fileupload-java
- A new version of this library (in main) is synced from Debian which pulls in a new dependency on libportlet-api-2.0-spec-java.
- libportlet-api-2.0-spec-java uses maven-debian-helper and maven as a build tool - not in main.
- No appetite at this point in time for 70+ MIR for Maven.
- libcommons-file-upload-java should be demoted to universe.
- New libcommons-fileupload-java-main created minus functionality and dependency on libportlet-api-2.0-spec-java
- eucalyptus should be updated to depend on libcommons-fileupload-java-main
What actually happened was the other way round - a -universe package was created which then resulted in a larger number of dependent packages being updated to point at this new version.
Where work needs to be done
Package |
Description |
Why blocked |
libcommons-fileupload-java |
Specialise -main version and update dependencies, re-sync normal version into universe |
New deps pull in maven |
libmvel-java |
Current version in main is version 1 - rename to libmvel1-java; libmvel2-java in universe - rename to libmvel-java |
New deps pull in maven |
antlr3 |
Current version in main is kludged; rename to -main; resync normal up-to-date into universe |
New deps pull in maven |
JavaTeam/KnowledgeBase/DivergingMainUniverse (last edited 2011-03-24 16:21:36 by host81-153-227-142)