Packaging:JPackagePolicy

= Subrelease Packaging Guidelines for JPackage RPMS =

Author:  Tom 'spot' Callaway  Revision: 0.06 Initial Draft: Tuesday Jan 16, 2007 Last Revised: Friday Jul 11, 2008

Summary
Fedora 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

Fedora 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 Fedora 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 Fedora to JPackage and so forth:

JPackage RPMS have a Release of Xjpp (e.g. 1jpp). Fedora 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 Fedora Java packages have a Release of: X.Y (e.g. 1.1).

While the Fedora package is in the devel branch, only the subrelease is incremented (e.g. 1.2, 1.3) until a new package from JPackage (e.g 2jpp) is merged into Fedora, at which point, the release would change to match the new JPackage RPM (without the repotag), and the subrelease would reset to 1.

Normally, we'd give the packager the choice of using '%{?dist}' or bumping the release to ensure clean upgrades across Fedora 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})

Once the Fedora package is out of the devel branch and into a released branch, the release and subrelease fields are frozen. These packages are now subject to the [wiki:Self:NamingGuidelines#DistBump Minor release bumps for old branches] rule.

This methodology ensures a clean upgrade process. This is, however, a violation of the naming policy around releases, and is only permitted in this special case exception for Fedora Java packages from JPackage.

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 Fedora, on top of the existing [wiki:Self:Packaging/NamingGuidelines#PreReleasePackages Fedora pre-release guidelines]. Here is an example of a pre-release using the JPackage Subrelease Policy:

Track Package Hierarchy From JPackage to Fedora
With the subrelease scheme as documented above, it is very obvious from which JPackage RPM the Fedora Java package originated from.

Policy Conditions Defined

 * Fedora 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 Fedora Java packages need to explicitly agree to this policy during package review.