Packaging/JPackage Policy
From openSUSE
Contents |
Subrelease Packaging Guidelines for JPackage RPMS
Author: Tom 'spot' Callaway
Reviewed for SUSE by: mvyskocil
Revision: 0.06
Initial Draft: Tuesday Jan 16, 2007
Last Revised: Friday Mar 13, 2009
Summary
Java:jpackage-5.0 includes a set of open source Java RPM packages that originate from the JPackage repository (www.jpackage.org).
javacc-4.0-3jpp.3.src.rpm
openSUSE does not permit "repotags" in its packages. It is necessary to remove the "jpp" component in the Fedora version of these packages. Some additional guidelines have been drafted for these packages.
Managing upgrading packages from Java:jpackage-5.0 to JPackage and back
According to Fernando Nasser, JPackage RPMS only use integers in the Release: field, in the format Xjpp. If this is the case, then the following format will ensure clean upgrades from Java:jpackage-5.0 to JPackage and so forth:
JPackage RPMS have a Release of Xjpp (e.g. 1jpp). Java:jpackage-5.0 RPMS (which are taken from JPackage) will have a Release that takes the JPackage Release (Xjpp), removes the repotag (jpp) and appends a subrelease integer (Y). This will make the Java:jpackage-5.0 Java packages have a Release of: X.C.B (e.g. 1.1.1).
The C means a commit number and is increased by every commit of package to project. The B means a number of builds of this package. Those numbers are handled automatically by BuildService.
The Java:jpackage-5.0 repository has a following line in prjconf:
Release: %%{?jpp_release}.<C_CNT>.<B_CNT>
where rpm macro jpp_release must be defined in a spec file and must contains the same value as is in Release: tag in spec file (the %{?dist} macro should be excluded). In this way we could manage a compatibility between our Java:jpackage-5.0 and upstream one.
Normally, we'd give the packager the choice of using '%{?dist}' or bumping the release to ensure clean upgrades across openSUSE releases, but since we're trying to ensure hierarchy and upgrades from the JPackage repository, in this special case, use of the '%{?dist}' tag is mandatory. It would go at the end of the Release: field, (e.g. 1.1%{?dist})
| JPackage | Java:jpackage-5.0 Package | Status | Highest RPMver |
| javacc-4.0-3jpp.src.rpm | javacc-4.0-3.1.1.src.rpm | Package merged from JPackage into Java:jpackage-5.0 | SUSE |
| javacc-4.0-3jpp.src.rpm | javacc-4.0-3.2.1.src.rpm | SUSE package has a bug fixed, bump subrelease | SUSE |
| javacc-4.0-3jpp.src.rpm | javacc-4.0-3.2.2.src.rpm | SUSE package is rebuilt for new gcc, bump subrel | SUSE |
| javacc-4.0-4jpp.src.rpm | javacc-4.0-3.2.2.src.rpm | JPackage is updated to fix a bug, bumps major release | JPackage |
| javacc-4.0-4jpp.src.rpm | javacc-4.0-4.3.1.src.rpm | SUSE package is merged from new JPackage | SUSE |
| javacc-5.0-1jpp.src.rpm | javacc-4.0-4.3.1.src.rpm | JPackage releases new version of package | JPackage |
| javacc-5.0-1jpp.src.rpm | javacc-5.0-1.5.1.src.rpm | SUSE package is merged from new JPackage | SUSE |
| javacc-5.0-1jpp.src.rpm | javacc-5.0-1.6.1.src.rpm | A bug is fixed in the SUSE package. | SUSE |
As those rules are imported from Fedora, which uses a different build system without automatic handling of Release tag, a table written above is just for clarification. For Java:jpackage-5.0 packager must makes sure, that he updates a %{jpp_release} macro, other numbers are handled by BuildService.
Pre-release Packages
JPackage has a Release standard of: 0.X.tag.Yjpp for prerelease packages. Tag is where the alpha/beta/CVS/SVN/etc tag goes, X is an integer incremented upon tag changes, and Y is an integer which increments only for packaging fixes, plain rebuilds etc. This is based on Fedora's pre-release naming standards. The same Subrelease policy is in effect for JPackage derived pre-release Packages in SUSE, on top of the existing [wiki:Self:Packaging/NamingGuidelines#PreReleasePackages pre-release guidelines].
Track Package Hierarchy From JPackage to Java:jpackage-5.0
With the subrelease scheme as documented above, it is very obvious from which JPackage RPM the SUSE Java package originated from.
Policy Conditions Defined
- Java:jpackage-5.0 Java packages (which have a relationship to JPackage packages) must follow the subrelease versioning as defined in this document.
- No other packages fall under this policy (at this time).
- Packagers of Java:jpackage-5.0 Java packages need to explicitly agree to this policy during package review.
- It needs a discussion if those rules would (and could be) adopted by SUSE itself.

