From Fedora Project Wiki

m (Packaging/JPackagePolicy moved to Packaging:JPackagePolicy: Moving Packaging Pages to Packaging Namespace)
(No difference)

Revision as of 03:19, 21 December 2008

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

These guidelines have changed significantly since 0.05. An archived copy of the old guidelines is here: Packaging/OldJPackagePolicy.


Fedora includes a set of open source Java RPM packages that originate from the JPackage repository (


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.

JPackage Fedora Package Status Highest RPMver
javacc-4.0-3jpp.src.rpm javacc-4.0-3.1.fc7.src.rpm Package merged from JPackage into Fedora devel Fedora
javacc-4.0-3jpp.src.rpm javacc-4.0-3.2.fc7.src.rpm Fedora package has a bug fixed, bump subrelease Fedora
javacc-4.0-3jpp.src.rpm javacc-4.0-3.3.fc7.src.rpm Fedora package is rebuilt for new gcc, bump subrel Fedora
javacc-4.0-4jpp.src.rpm javacc-4.0-3.3.fc7.src.rpm JPackage is updated to fix a bug, bumps major release JPackage
javacc-4.0-4jpp.src.rpm javacc-4.0-4.1.fc7.src.rpm Fedora package is merged from new JPackage Fedora
javacc-5.0-1jpp.src.rpm javacc-4.0-4.1.fc7.src.rpm JPackage releases new version of package JPackage
javacc-5.0-1jpp.src.rpm javacc-5.0-1.1.fc7.src.rpm Fedora package is merged from new JPackage Fedora
javacc-5.0-1jpp.src.rpm javacc-5.0-1.1.fc7.src.rpm FC-7 is released, package is no longer in devel Fedora
javacc-5.0-1jpp.src.rpm javacc-5.0-1.1.fc7.1.src.rpm A bug is fixed in the FC-7 package. Fedora

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:

JPackage Fedora Package Status Highest RPMver
javacc-4.0-0.1.a.1jpp.src.rpm javacc-4.0-0.1.a.1.1.fc7.src.rpm Package merged from JPackage into Fedora devel Fedora
javacc-4.0-0.2.b.1jpp.src.rpm javacc-4.0-0.1.a.1.1.fc7.src.rpm JPackage moves to "b" tag JPackage
javacc-4.0-0.2.b.1jpp.src.rpm javacc-4.0-0.2.b.1.1.fc7.src.rpm Fedora version of "b" tag package Fedora
javacc-4.0-0.2.b.2jpp.src.rpm javacc-4.0-0.2.b.1.1.fc7.src.rpm JPackage is rebuilt for packaging fix JPackage
javacc-4.0-0.2.b.2jpp.src.rpm javacc-4.0-0.2.b.2.1.fc7.src.rpm Fedora version of JPackage packaging fix Fedora
javacc-4.0-0.2.b.2jpp.src.rpm javacc-4.0-0.2.b.2.2.fc7.src.rpm Fedora rebuilds in devel against a new compiler Fedora
javacc-4.0-0.2.b.2jpp.src.rpm javacc-4.0-0.2.b.2.2.fc7.src.rpm FC-7 is released, package moves out of devel Fedora
javacc-4.0-0.2.b.2jpp.src.rpm javacc-4.0-0.2.b.2.2.fc7.1.src.rpm A bug is fixed in the FC-7 package. Fedora
javacc-4.0-1jpp.src.rpm javacc-4.0-0.2.b.2.2.fc7.1.src.rpm JPackage moves to final release (not pre anymore) JPackage
javacc-4.0-1jpp.src.rpm javacc-4.0-1.1.fc7.src.rpm Fedora version of final package Fedora

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.