[Guidelines Change] Changes to the Packaging Guidelines

Tom Callaway tcallawa at redhat.com
Fri Feb 4 17:18:07 UTC 2011

Here are the latest set of changes to the Fedora Packaging Guidelines:


The rules for substituting dots with dashes in package names have been
clarified to make explicit that they apply to python modules and that
they do not apply to version numbers in compat libraries.



Many implementations of md5 originate in a program and then end up
copied to other programs with compatible license terms.  These
implementations have been granted a bundling exception.  The usual
requirement to set a Virtual Provides: if bundling are in effect and
have some special notes due to the many implementations out there.  Note
that copying the implementation from a library is not covered under this



rpm and yum treat a dependency on a package of the form Requires: foo as
being fulfilled by any available package foo, regardless of arch. On
multilib architectures, this means that there are often two packages
with the same name: one for each of the multilib arches. When yum is
asked to satisfy a dependency for that package name it could pull in the
package for the wrong arch. This happens when the correct architecture
is not available to yum. That might be the case if, due to some
malfunction, the Fedora repositories are out of synch. It can also
happen if a user has installed a package that is treated as "newer" than
the corresponding package in the currently enabled set of repositories;
in attempting to resolve otherwise-unresolvable dependency chains, yum
may decide to pull in the dependency chain for a different arch.

In some situations, this is not a problem, but there are some situations
where it does matter:

 * A library that is explicitly Required (example a dlopen'd library)
 * The dependency from one -devel packages that is not noarch to
   another -devel package.
 * A non-noarch subpackage's dependency on its main package or another
   subpackage (e.g., libfoo-devel depends on libfoo, or fooapp-plugins
   depends on foo-app).

The Packaging Guidelines (and Naming Guidelines) have been amended to
reflect that %{?_isa} must be used for Explicit Requires and Provides
that match those situations.



Previously, there was a change made to the Documentation guidelines
which stated that:

  If a package includes something as %doc, it must not affect the
  runtime of the application. To summarize: If it is in %doc, the
  program must run properly if it is not present.

  In addition, %doc files must not have executable permissions.

This has been revised to:

  Files marked as documentation must not cause the package to pull in
  more dependencies than it would without the documentation. One simple
  way to ensure this is to remove all executable permissions from %doc
  files (chmod -x).

  Also, if a package includes something as %doc, it must not affect the
  runtime of the packaged application(s). To summarize: If it is in
  %doc, the included programs must run properly if it is not present.



A new section has been added to the Packaging Guidelines concerning test
suites included with source code:

  If the source code of the package provides a test suite, it should be
  executed in the %check section, whenever it is practical to do so.



A new section has been added to the Packaging Guidelines concerning the
proper packaging of tmpfiles.d configurations and directories:



These guidelines (and changes) were approved by the Fedora Packaging
Committee (FPC).

Many thanks to Jochen Schmitt and all of the members of the FPC, for
assisting in drafting, refining, and passing these guidelines.

As a reminder: The Fedora Packaging Guidelines are living documents! If
you find something missing, incorrect, or in need of revision, you can
suggest a draft change. The procedure for this is documented here:



More information about the announce mailing list