Pautas de empaquetado de GAP
Este documento describe las convenciones y personalizaciones relativas a propio empaquetamiento de los paquetes GAP agregados en Fedora. A través de este documento, utilizamos la palabra add-on (agregado) para sustituir en el uso anterior de GAP de la palabra package (paquete), para evitar confundir con los paquetes RPM.
Nombrando
El paquete principal de GAP, sus bibliotecas y sistema de ayuda asociados se encuentran en los paquetes gap, gap-libs, gap-core, gap-online-help, gap-rpm-macros, gap-devel, gap-vim y libgap. Para distinguir los paquetes complementarios de estos paquetes principales, estos deben tener nombres con la forma gap-pkg-foo. Por ejemplo, el complemento FGA se nombra como gap-pkg-fga.
Lugar Adjuntado
Los paquetes independientes de la arquitectura (noarch) DEBEN instalarse en %{gap_libdir}/pkg/%{pkgname}, y los paquetes específicos de la arquitectura en %{gap_archdir}/pkg/%{pkgname}, donde %{pkgname} se expande al nombre GAP del complemento.
Los complementos de GAP están diseñados para instalarse simplemente descomprimiéndolos en un árbol de directorios de GAP existente. Para la mayoría de los complementos, la única acción de compilación necesaria es compilar la documentación. Sin embargo, dado que los autores de los complementos asumieron que esto ocurriría dentro del árbol de directorios de GAP, los complementos usan libremente rutas relativas para acceder a los archivos de GAP. Por ejemplo, los paquetes que usan TTH para compilar la documentación (ver más abajo) suelen invocar ../../../convert.pl. El archivo de especificaciones RPM DEBE tener esto en cuenta, ya sea modificando el complemento para que apunte a las rutas bajo %{gap_libdir} o creando enlaces simbólicos para que parezca que la compilación se realiza dentro del árbol de directorios de GAP. Si se modifica el complemento para la compilación, el archivo de especificaciones DEBERÍA encargarse de que se instalen los archivos originales (sin modificar), de modo que las rutas sean correctas después de la instalación.
Los complementos de GAP se distribuyen frecuentemente en archivos tar con un directorio de nivel superior con el formato addon-version. El complemento DEBERÍA instalarse sin el número de versión. La documentación de un paquete suele enlazarse con la documentación de otros paquetes. Si los directorios involucrados contienen números de versión, los enlaces pueden romperse al actualizar el paquete. Para evitar esta situación, omita los números de versión. GAP puede recuperar el número de versión del archivo PackageInfo.g del complemento, por lo que no se pierde información.
BuildRequires
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.
TTH
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_libdir}/doc/gapmacro.tex -
gapmacrodoc.tex→%{gap_libdir}/doc/gapmacrodoc.tex -
manualbib.xml→%{gap_libdir}/doc/manualbib.xml -
manualbib.xml.bib→%{gap_libdir}/doc/manualbib.xml.bib -
manualindex→%{gap_libdir}/doc/manualindex -
buildman.pe→%{gap_libdir}/etc/buildman.pe -
convert.pl→%{gap_libdir}/etc/convert.pl
Requires, Recommends, and Suggests
All add-ons MUST include Requires: gap-core, either directly or transitively. In addition, dependencies on other GAP packages, as recorded in PackageInfo.g, MUST be specified, with the exception of GAPDoc, as noted above. GAP has a 2-level dependency system, specified with NeededOtherPackages and SuggestedOtherPackages tags in PackageInfo.g. How these dependencies map onto the 3-level RPM dependency system of Requires, Recommends, and Suggests is left to the discretion of the Fedora packager.
Archivos Innecesarios
GAP add-ons are intended to be unpacked in place within a GAP directory tree. Ordinarily, the entire distribution directory is copied into %{gap_libdir}/pkg or %{gap_archdir}/pkg. This includes the documentation directories, which are consumed by the tools contained in gap-online-help. However, some files are not needed in the final install directory. Files that should not appear there include:
-
Textual descriptions of the add-on, such as a README
-
License files (COPYING, COPYRIGHT, LICENSE, etc.)
-
Files for building documentation, often called
make_doc -
Files generated by LaTeX and associated tools, including files with these suffixes:
-
.aux
-
.bbl
-
.blg
-
.idx
-
.ilg
-
.ind
-
.log
-
.toc
-
Note that License files MUST still be included in the package with the %license tag, and other documentation such as README files can be included as %doc.
The %gap_copy_docs macro is intended to make installation of documentation files easier. For most packages, ensure that the doc subdirectory exists in the buildroot, then invoke the macro without arguments in %install. For special cases, two optional arguments can be given:
-
-d directory: for cases where the documentation directory is not nameddoc, or there are multiple documentation directories -
-n package: the installed add-on directory name is assumed to be available from a macro%pkgname. If that is not the case, use this macro to give the main add-on directory name.
Documentación
Since GAP documentation MUST be installed under %{gap_libdir}/pkg or %{gap_archdir}/pkg for the builtin documentation browser to find it, such documentation SHOULD NOT be duplicated with %doc. However, the documentation SHOULD still be marked as such so that documentation-free installs work as expected. Most add-ons SHOULD include %docdir declarations in the %files section of the spec file; e.g., %docdir %{gap_libdir}/pkg/%{pkgname}/doc and %docdir %{gap_libdir}/pkg/%{pkgname}/htm.
Other RPM macros
Other RPM macros that may be useful for GAP add-on spec files include the following:
-
%gap_version: the version of the main GAP package; e.g., 4.12.0. -
%gap_archdir: parent directory for arch-specific GAP add-ons, currently%{_libdir}/gap. -
%gap_libdir: the root directory of the GAP installation, currently%{_datadir}/gap. -
%gap_arch: the GAP name for the build architecture; e.g.,x86_64-redhat-linux-gnu.
Want to help? Learn how to contribute to Fedora Docs ›