English Portuguese (Brazil)
GAP Packaging Guidelines
This document describes the conventions and customs surrounding the proper packaging of https://gap-system.org/[GAP] add-on packages in Fedora. Throughout this document, we use the word _add-on_ to substitute for GAP upstream's use of the word _package_, to avoid confusion with RPM packages.
The main GAP package and its attendant libraries and help system are in packages named gap, gap-libs, gap-core, gap-online-help, gap-devel, and gap-vim. To distinguish add-on packages from these core packages, add-ons MUST have names of the form gap-pkg-foo. For example, the FGA add-on is named gap-pkg-fga.
Add-on Location
GAP add-ons are written to be installed simply by unpacking them in an existing GAP directory tree. For most add-ons, the only build action necessary is building the documentation. However, since the add-on authors assumed this would happen within the GAP tree, add-ons freely use relative paths to access GAP files. For example, packages that use TTH to build documentation (see below) commonly invoke `+../../../convert.pl+`. The RPM spec file MUST account for this, either by altering the add-on to point to paths under `+%{_gap_dir}+`, or by creating symbolic links to create the appearance that the build is taking place inside the GAP tree. If the add-on is altered for the build, the spec file SHOULD arrange for the original (unaltered) files to be installed, so that paths are correct after installation.
All add-ons MUST include `+BuildRequires: gap-devel+`, as that package contains essential tools needed for compiling binary modules and building documentation, as well as a set of RPM macros for use in spec files. Each add-on also MUST contain a `+BuildRequires+` that is dependent on the documentation style used by the GAP add-on.
Add-ons that use a `+buildman.pe+` or `+convert.pl+` script to build documentation also need `+BuildRequires: tth+` in order to build HTML documentation pages from TeX input. Some add-ons bundle these scripts, as well as a few auxiliary files. Add-ons containing any of the following files should be modified to link to the version of the file contained in the gap or gap-devel packages.
`+gapmacro.tex+` → `+%{_gap_dir}/doc/gapmacro.tex+`
`+gapmacrodoc.tex+` → `+%{_gap_dir}/doc/gapmacrodoc.tex+`
`+manualbib.xml+` → `+%{_gap_dir}/doc/manualbib.xml+`
`+manualbib.xml.bib+` → `+%{_gap_dir}/doc/manualbib.xml.bib+`
`+manualindex+` → `+%{_gap_dir}/doc/manualindex+`
`+buildman.pe+` → `+%{_gap_dir}/etc/buildman.pe+`
`+convert.pl+` → `+%{_gap_dir}/etc/convert.pl+`
Add-ons that use GAPDoc to build documentation MUST include `+BuildRequires: GAPDoc-latex+` to pull in the necessary LaTeX packages. These packages do not need `+Requires: GAPDoc+`, since `+gap-core+` depends on GAPDoc.