Paketbaurichtlinien für GAP
Dieses Dokument beschreibt die Konventionen und Gepflogenheiten für die korrekte Paketierung von Add-on-Paketen des GAP-Systems unter Fedora. Im gesamten Dokument verwenden wir den Begriff Add-on anstelle des von GAP verwendeten Begriffs Paket, um Verwechslungen mit RPM-Paketen zu vermeiden.
Benennung
Das Hauptpaket von GAP sowie die zugehörigen Bibliotheken und das Hilfesystem befinden sich in Paketen mit den Namen gap, gap-libs, gap-core, gap-online-help, gap-rpm-macros, gap-devel, gap-vim und libgap. Um Erweiterungspakete von diesen Kernpaketen zu unterscheiden, müssen Erweiterungspakete Namen der Form gap-pkg-foo haben. Beispielsweise heißt das FGA-Erweiterungspaket gap-pkg-fga.
Orte für Add-ons
Architekturunabhängige (noarch) Pakete MÜSSEN in %{gap_libdir}/pkg/%{pkgname} installiert werden, und architekturspezifische Pakete in %{gap_archdir}/pkg/%{pkgname}, wobei %{pkgname} zum GAP-Namen des Add-ons expandiert wird.
Add-ons für GAP sind so konzipiert, dass sie einfach durch Entpacken in ein bestehendes GAP-Verzeichnis installiert werden können. Bei den meisten Add-ons ist lediglich das Erstellen der Dokumentation erforderlich. Da die Add-on-Autoren jedoch davon ausgingen, dass dies innerhalb des GAP-Verzeichnisses geschieht, verwenden Add-ons häufig relative Pfade für den Zugriff auf GAP-Dateien. Beispielsweise rufen Pakete, die TTH zum Erstellen der Dokumentation verwenden (siehe unten), üblicherweise ../../../convert.pl auf. Die RPM-Spec-Datei MUSS dies berücksichtigen, entweder indem das Add-on so geändert wird, dass es auf Pfade unterhalb von %{gap_libdir} verweist, oder indem Symlinks erstellt werden, um den Eindruck zu erwecken, dass der Bau innerhalb des GAP-Dateibaums stattfindet. Wenn das Add-on für den Bau geändert wird, SOLLTE die Spec-Datei sicherstellen, dass die Originaldateien (unverändert) installiert werden, damit die Pfade nach der Installation korrekt sind.
Add-ons für GAP werden häufig als Tarballs mit einem Verzeichnis der obersten Ebene der Form addon-version verteilt. Das Add-on SOLLTE ohne Versionsnummer installiert werden. Die Dokumentation eines Pakets verweist oft auf die Dokumentation anderer Pakete. Wenn die beteiligten Verzeichnisse Versionsnummern enthalten, können diese Querverweise durch eine Paketaktualisierung beschädigt werden. Vermeiden Sie dies, indem Sie die Versionsnummern weglassen. GAP selbst kann die Versionsnummer aus der Datei PackageInfo.g des Add-ons abrufen, so dass keine Informationen verloren gehen.
BuildRequires
Alle Add-ons MÜSSEN BuildRequires: gap-devel enthalten, da dieses Paket wichtige Werkzeuge zum Kompilieren von Binärmodulen und zum Erstellen der Dokumentation sowie eine Reihe von RPM-Makros für die Verwendung in Spec-Dateien enthält. Jedes Add-on MUSS außerdem ein BuildRequires enthalten, das vom Dokumentationsstil des jeweiligen GAP-Add-ons abhängt.
TTH
Add-ons, die ein buildman.pe- oder convert.pl-Skript zum Erstellen der Dokumentation verwenden, benötigen zusätzlich BuildRequires: tth, um HTML-Dokumentationsseiten aus TeX-Eingaben zu generieren. Einige Add-ons bündeln diese Skripte sowie einige Hilfsdateien. Add-ons, die eine der folgenden Dateien enthalten, sollten so angepasst werden, dass sie auf die in den Paketen gap oder gap-devel enthaltene Version der Datei verweisen.
-
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 und Suggests
Alle Add-ons MÜSSEN Requires: gap-core entweder direkt oder transitiv einbinden. Zusätzlich MÜSSEN Abhängigkeiten von anderen GAP-Paketen, wie in PackageInfo.g dokumentiert, angegeben werden, mit Ausnahme von GAPDoc, wie oben erwähnt. GAP verwendet ein zweistufiges Abhängigkeitssystem, das mit den Tags NeededOtherPackages und SuggestedOtherPackages in PackageInfo.g spezifiziert wird. Wie diese Abhängigkeiten dem dreistufigen RPM-Abhängigkeitssystem (Requires, Recommends, Suggests) zugeordnet werden, liegt im Ermessen des Fedora-Paketbetreuers.
Unnötige Dateien
GAP-Add-ons sind so konzipiert, dass sie direkt im GAP-Verzeichnisbaum entpackt werden. Normalerweise wird das gesamte entpackte Verzeichnis nach %{gap_libdir}/pkg oder %{gap_archdir}/pkg kopiert. Dies schließt die Dokumentationsverzeichnisse ein, die von den in gap-online-help enthaltenen Tools verwendet werden. Einige Dateien werden jedoch im endgültigen Installationsverzeichnis nicht benötigt. Folgende Dateien sollten dort nicht enthalten sein:
-
Beschreibungen des Add-Ons in Textform, wie z.B. README
-
Lizenzdateien (COPYING, COPYRIGHT, LICENSE usw.)
-
Dateien zum Erstellen der Dokumentation, oft
make_doc -
Von LaTeX und zugehörigen Werkzeugen generierte Dateien, einschließlich Dateien mit diesen Endungen:
-
.aux
-
.bbl
-
.blg
-
.idx
-
.ilg
-
.ind
-
.log
-
.toc
-
Beachten Sie, dass Lizenzdateien weiterhin mit dem %license-Tag im Paket enthalten sein MÜSSEN, während andere Dokumentationen wie z.B. README-Dateien als %doc eingebunden werden können.
Das Makro %gap_copy_docs soll die Installation von Dokumentationsdateien vereinfachen. Stellen Sie bei den meisten Paketen sicher, dass das Unterverzeichnis doc im Buildroot existiert, und rufen Sie das Makro anschließend ohne Argumente in %install auf. In Sonderfällen können zwei optionale Argumente angegeben werden:
-
-d Verzeichnis: für Fälle, in denen das Dokumentationsverzeichnis nichtdocheißt oder mehrere Dokumentationsverzeichnisse vorhanden sind -
-n Paket: Es wird davon ausgegangen, dass der Name des installierten Add-on-Verzeichnisses über ein Makro%pkgnameverfügbar ist. Sollte dies nicht der Fall sein, verwenden Sie dieses Makro, um den Namen des Hauptverzeichnisses des Add-ons anzugeben.
Dokumentation
Da die GAP-Dokumentation unter %{gap_libdir}/pkg oder %{gap_archdir}/pkg installiert sein MUSS, damit der integrierte Dokumentationsbrowser sie findet, SOLLTE diese Dokumentation NICHT mit %doc dupliziert werden. Die Dokumentation SOLLTE jedoch weiterhin als solche gekennzeichnet sein, damit Installationen ohne Dokumentation wie erwartet funktionieren. Die meisten Add-ons SOLLTEN %docdir-Deklarationen im Abschnitt %files der Spec-Datei enthalten, z.B. %docdir %{gap_libdir}/pkg/%{pkgname}/doc und %docdir %{gap_libdir}/pkg/%{pkgname}/htm.
Weitere RPM-Makros
Folgende RPM-Makros können für Add-on-Spec-Dateien für GAP ebenfalls nützlich sein:
-
%gap_version: die Version des GAP-Hauptpakets; z.B. 4.12.0. -
%gap_archdir: Übergeordnetes Verzeichnis für architekturspezifische GAP-Add-ons, derzeit%{_libdir}/gap. -
%gap_libdir: das Wurzelverzeichnis der GAP-Installation, derzeit%{_datadir}/gap. -
%gap_arch: der GAP-Name für die Bauarchitektur; z.B.x86_64-redhat-linux-gnu.
Want to help? Learn how to contribute to Fedora Docs ›