[Guielines Change] Changes to the packaging guidelines

Jason L Tibbitts III tibbs at math.uh.edu
Thu Jan 8 06:51:50 UTC 2015


The autoprovides and requires filtering guidelines have been updated to
take advantage of features in RPM versions 4.9 and newer.  Packagers
making use of filtering, for instance compiled extensions to scripting
languages from being provided as though they were a shared library,
should take a look at the guidelines and update their spec files
accordingly. This includes packages which are overriding the
%perl_default_filter macro as the previous ways of overriding that
%macro have lead to quite a few silent bugs
 ​https://lists.rpm.org/pipermail/rpm-list/2013-January/001359.html

The new guidelines work on all Fedora versions but EPEL6 and below will
need to follow different formulas:
​ https://fedoraproject.org/wiki/EPEL:Packaging#Provides_and_Requires_Filtering

The previous method of filtering autoprovides and requires will continue
to limp along but it has many known caveats so packagers are encouraged
to update their packages at their earliest convenience. 

---

A prohibition on using %{_isa} in BuildRequires has formally been added
to the Guidelines:
​ https://fedoraproject.org/wiki/Packaging:Guidelines#BuildRequires_and_.25.7B_isa.7D

Work on finishing a complete %{_isa} Guideline is underway.

---

The Conflicts guidelines have been clarified to state that the goal is
for users to be able to install the latest packages from Fedora's repos
regardless of what other Fedora packages are installed.
  https://fedoraproject.org/wiki/Packaging:Guidelines#Conflicts

---

Added an additional allowed use of Conflicts to the packaging guidelines
on Conflicts. This usage is for a package which is split into multiple
packages with files that may conflict with files in the older version of
the base package. See the Conflicts Guidelines if you think you may be
able to make use of this:
​https://fedoraproject.org/wiki/Packaging:Conflicts#Splitting_Packages

---

Packaging guidelines for cron files
  https://fedoraproject.org/wiki/Packaging:CronFiles
have been clarified.

---

A new guideline for header-only libraries (for instance, C++ templates)
was added. These guidelines treat header-only libraries similarly to
static libraries.
​ https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_Header_Only_Libraries

---

A section on the proper naming of language packs (langpacks) was added
to the Naming and Versioning Guidelines:
​ https://fedoraproject.org/wiki/Packaging:NamingGuidelines#Addon_Packages_.28langpacks.29

---

A longtime limitation of RPM is that it cannot replace a directory with
any kind of file nor can it replace a symlink to a directory with a
directory. Workarounds with varying limitations have been used in
different packages when the need has arisen. We now have guidelines that
codify one of these workarounds that we hope has as few problems as
possible and also documents the known limitations of its approach. The
guideline also encourages has advice on designing your package to not
run into this problem down the road in cases where the problem can be
anticipated in advance.

Please see:
  https://fedoraproject.org/wiki/Packaging:Directory_Replacement
for information in case you are in the unfortunate position of having to
deal with this case.

---

Mention of the %autosetup macro has been added; its use is now
permitted in Fedora packages. 
  https://fedoraproject.org/wiki/Packaging:Guidelines#.25autosetup

---

The section of guidelines on packaging additional rpm macros has been
amended to say that macros must be stored under
%{_rpmconfigdir}/macros.d on Fedora and EPEL7+ as the rpm on all of
these systems will search that path. A recipe for spec files that also
need to be used on EPEL5 & 6 is included. See
  https://fedoraproject.org/wiki/Packaging:Guidelines#Packaging_of_Additional_RPM_Macros
for details.

---

The ruby guidelines have been updated for recent improvments in ruby
packaging. RubyGems now ship with an RPM dependency generator that
automatically generates requires/provides are in many cases. RubyGems
now support platform specific locations for binary extensions that
allows for a simplification of the guidelines. Please see
 ​https://fedoraproject.org/wiki/Packaging:Ruby for complete details. 

---

AppData files should be included in packages which contain graphical
applications. Guidelines were added describing the use of these files:
  https://fedoraproject.org/wiki/Packaging:Guidelines#AppData_files

---

The environment modules guidelines have been updated. The new
guidelines mention how to deal with an alternate module implementation
(lmod) and use the new %{_modulesdir} macro to shift modules from
/etc/modulefiles to /usr/share/modulefiles (so that sysadmins can use
the /etc/modulefiles location) See the policy for complete information:
 ​https://fedoraproject.org/wiki/Packaging:EnvironmentModules 

---

The tmpfiles.d guidelines
  https://fedoraproject.org/wiki/Packaging:Tmpfiles.d
have been updated and clarified. Note that this includes new
instructions for specifying files created by the tmpfiles.d mechanism in
your %files section; %verify is now used instead of %ghost.

---

The scriptlets for calling update-mime-database when mimeinfo files are
installed have been updated:
​ https://fedoraproject.org/wiki/Packaging:ScriptletSnippets#mimeinfo

---

Guidelines were added for use of %{_sysctldir} (/usr/lib/sysctl.d) and
/usr/lib/binfmt.d:
​ https://fedoraproject.org/wiki/Packaging:Guidelines#binfmt.d.2C_sysctl.d_and_tmpfiles.d

---

One section of the Java guidelines
​ https://fedoraproject.org/wiki/Packaging:Java#Javadoc_installation)
was updated to indicate that generation of javadocs is optional.

---

Fedora.next Products may need to configure some packages differently
from each other (for instance, firewall rules). There are now
guidelines for how to achieve this using RPM subpackages that will be
pulled in on the specific product on which they are needed.
​ https://fedoraproject.org/wiki/Packaging:Per-Product_Configuration 

---

The guidelines about directories that Fedora packages are not allowed
to touch has been updated to:
 * Clarify that modifications of any type (adding files, modifying
   files, removing files, etc) are not allowed.
 * Add a different section for /opt that explains its use in
   Fedora. This is because otherwise this guideline would conflict with
   the scl guidelines and also addresses the clarifications the LSB has
   made to me about the meaning of the /opt directory.
 * Add /home/USER directories as another set of directories that
   packages are not allowed to touch.
  https://fedoraproject.org/wiki/Packaging:Guidelines#No_Files_or_Directories_under_.2Fsrv.2C_.2Fusr.2Flocal.2C_or_.2Fhome.2F.24USER

---

Guidelines were added for packages which make use of the SSL and TLS
cryptographic protocols:
​https://fedoraproject.org/wiki/Packaging:CryptoPolicies

---

A guideline was added concerning the need for all executables to have
manpages, and clarifying that they should be installed uncompressed.
 https://fedoraproject.org/wiki/Packaging:Guidelines#Manpages

---

The old OpenOffice.org extension guidelines have been replaced by new
guidelines for LibreOffice extensions. There are significant changes so
please review them:
  https://fedoraproject.org/wiki/Packaging:LibreOfficeExtensions

---

Guidelines on file permissions
​https://fedoraproject.org/wiki/Packaging:Guidelines#File_Permissions
have been clarified.

---

Use of the %{?dist} tag in the Release: field is now mandatory.
  https://fedoraproject.org/wiki/Packaging:NamingGuidelines#The_.25.7B.3Fdist.7D_Tag

---

Thanks for your attention.

 - J<


More information about the devel-announce mailing list