Fedora-Paketbaurichtlinien
Die Paketbaurichtlinien sind eine Sammlung häufig auftretender Probleme und der ihnen beizumessenden Bedeutung. Diese Richtlinien sollten zwar nicht ignoriert, aber auch nicht blind befolgt werden. Wenn Sie der Meinung sind, dass Ihr Paket von Teilen der Richtlinien ausgenommen sein sollte, wenden Sie sich bitte an das Fedora Packaging Committee.
Diese Dokumente behandeln die Details der Erstellung akzeptabler Fedora-Pakete und enthalten zwar verschiedene Beispiele, eignen sich aber nicht besonders gut als Tutorial. Sie behandeln auch nicht die Details und Richtlinien für den Zugriff auf die Fedora-Paketquellen als Paketentwickler oder die Mechanismen zur Erstellung und Veröffentlichung von Paketen im Rahmen der Distribution. Dokumente, die diese Themen behandeln, finden Sie unter den folgenden Links:
Es liegt in der Verantwortung des Paketprüfers, auf spezifische Probleme mit einem Paket hinzuweisen, und in der Verantwortung des Paketbetreuers, diese Probleme zu beheben. Der Prüfer und der Betreuer arbeiten zusammen, um den Schweregrad der Probleme zu bestimmen (ob sie die Veröffentlichung des Pakets blockieren oder erst nach der Aufnahme des Pakets in die Paketquellen behoben werden können). Bitte beachten Sie, dass jedes von Ihnen eingereichte Paket auch den Prüfrichtlinien entsprechen muss.
Der ursprüngliche Autor dieser Dokumente ist Tom „spot“ Callaway, wobei sie ursprünglich auf vielen anderen Dokumenten basierten. Sie wurden im Laufe der Jahre von vielen Mitgliedern des Packaging Committee grundlegend überarbeitet.
Die Schlüsselwörter MUST (MUSS), MUST NOT (DARF NICHT), SHOULD (SOLLTE), SHOULD NOT (SOLLTE NICHT) und MAY (KANN) in diesen Richtlinien sind gemäß der Beschreibung in RFC 2119 zu interpretieren.
Report issues with these guidelines, including typos, here.
Anwendbarkeit
Diese Richtlinien gelten im Allgemeinen für die aktuell veröffentlichten Versionen von Fedora (jedoch NICHT für die nicht mehr unterstützten) sowie für die Entwicklungsversion von Fedora (Rawhide). Sollte ein bestimmter Abschnitt dieser Richtlinien nur für eine Untermenge dieser Versionen relevant sein, wird dies ausdrücklich vermerkt. Bitte beachten Sie jedoch, dass sich Rawhide schnell ändern kann, und es kann vorkommen, dass Änderungen dort bereits sichtbar sind, die hier noch nicht berücksichtigt wurden.
Die Richtlinien decken in gewissem Umfang auch Pakete für EPEL ab, jedoch nur in Kombination mit den EPEL-Paketbaurichtlinien. Die Fedora-Paketierung ändert sich deutlich schneller als die EPEL-Paketierung, so dass diese Richtlinien im Laufe der Zeit immer weiter von den jeweiligen EPEL-Versionen abweichen werden. Bei älteren unterstützten EPEL-Versionen können die Unterschiede daher recht erheblich sein. Abschnitte dieser Richtlinien, die nicht für EPEL gelten, werden in der Regel nicht gesondert gekennzeichnet.
Allgemeine Regel für Ausnahmen
Da diese Richtlinien niemals alle möglichen Eventualitäten abdecken können, wird es immer Pakete geben, die Ausnahmen erfordern. Es liegt in der Verantwortung des Paketbetreuers, diese Richtlinien so genau wie möglich zu befolgen und Fälle, in denen sie nicht eingehalten werden können, als Kommentare in der Spec-Datei des Pakets klar zu dokumentieren.
Wenn in einer Richtlinie die Formulierung „sollte“ oder „wird empfohlen“ verwendet wird und es für das Paket nicht möglich ist, dieser Richtlinie zu entsprechen, darf der Paketersteller davon abweichen. Die Art der Abweichung und die Begründung dafür MÜSSEN in der Spec-Datei dokumentiert werden.
Wo Formulierungen wie „muss“, „ist erforderlich“ oder „benötigt“ verwendet werden, darf der Paketersteller nur mit Genehmigung des Packaging Committee von der Richtlinie abweichen. Bitte befolgen Sie das Verfahren auf der Seite des Packaging Committee, um solche Anträge zu stellen.
Zulässige Pakete
Bitte schauen Sie sich das Dokument Was kann paketiert werden an, um sicherzustellen, dass das, was Sie paketieren wollen, in Fedora erlaubt ist.
Benennung
Schauen Sie in die Benennungsrichtlinien, um sicherzustellen, dass Ihr Paket korrekt benannt ist.
Version und Release
Eine Dokumentation zur korrekten Verwendung der Felder „Version“ und „Release“ finden Sie hier.
Lizenzierung
Sie sollten die Informationen zu den in Fedora zulässigen Lizenzen und die Lizenzierungsrichtlinien lesen, um sicherzustellen, dass Ihr Paket ordnungsgemäß lizenziert und die Lizenz korrekt angegeben ist.
Fedora-Markenzeichen
Paketersteller DÜRFEN KEINE Fedora-Markenzeichen, einschließlich des Fedora-Logos, der Fedora-Logo-Symbole oder Grafiken, die das Fedora-Logo enthalten, hinzufügen. Diese Elemente MÜSSEN dem Paket fedora-logos hinzugefügt werden. Ihre Pakete installieren die Logos, indem sie vom Paket fedora-logos abhängen. Sollte die Originalsoftware Fedora-Markenzeichen enthalten, die Ihrer Meinung nach unsachgemäß verwendet werden, wenden Sie sich bitte per E-Mail an legal@fedoraproject.org.
Dies liegt daran, dass das Fedora-Logo eine Marke ist, die einem anderen rechtlichen Rahmen unterliegt als Softwarecode. Es darf nur unter Bedingungen verbreitet werden, die die Marke schützen. Die separate Speicherung der Fedora-Marken in einem eigenen Paket anstatt deren Verteilung auf verschiedene andere Pakete ist außerdem unerlässlich, um Remixes zu ermöglichen, die notwendigerweise die Fedora-Marke nicht verwenden dürfen und stattdessen ein eigenes *-logos-Paket erstellen oder das generic-logos-Paket verwenden müssen.
Bibliotheken und Anwendungen
Viele sprach- oder domänenspezifische Richtlinien beziehen sich auf „Bibliotheken“,„Module“, „Plugins“ oder andere für die jeweilige Sprache oder Domäne spezifische Begriffe. Dies ist insbesondere für die Paketbenennung wichtig. Einige Anwendungen können Bibliotheken enthalten, und einige Bibliotheken können Anwendungen enthalten, so dass die Unterscheidung nicht immer eindeutig ist.
Blbliothek oder Anwendung?
-
Wenn der Hauptzweck eines Pakets darin besteht, ausführbare Dateien für Benutzer bereitzustellen, SOLLTE es als Anwendung paketiert werden. Enthält es zusätzlich Bibliotheken, die von anderem Code importiert oder verlinkt werden können, siehe Gemischte Pakete weiter unten.
-
Wenn der Hauptzweck eines Pakets darin besteht, Bibliotheken bereitzustellen, die in anderen Code importiert oder geladen werden sollen, gilt es als Bibliothek und MUSS als solche paketiert werden. Enthält es außerdem Hilfsprogramme, die von Benutzern ausgeführt werden können, siehe Gemischte Pakete weiter unten.
Es obliegt dem Paketersteller, den Hauptzweck eines Pakets festzulegen. Oftmals hat der Upstream-Entwickler dies bereits durch seine Namenswahl getan, und diese Wahl SOLLTE vom Fedora-Paketersteller übernommen werden.
Gemischte Pakete
Viele Pakete enthalten, unabhängig von ihrem Hauptzweck, sowohl Anwendungen als auch Bibliotheken. In diesem Fall SOLLTEN eine oder beide Komponenten in Teilpaketen verpackt werden, damit andere Anwendungen nur von der Bibliothek und nicht von der/den zugehörigen Anwendung(en) abhängen. Die Installation einer Anwendung, die von einer Bibliothek oder einem Dienst abhängt, sollte nicht automatisch andere Anwendungen mitinstallieren, die mit dieser Bibliothek oder diesem Dienst verknüpft sind.
Paketunabhängigkeit
Pakete SOLLTEN, sofern technisch möglich, unabhängig voneinander installierbar sein, MÜSSEN aber gegebenenfalls Abhängigkeiten des korrekten Typs zu anderen Paketen angeben (siehe Abschnitt Abhängigkeitstypen weiter unten).
Desktop-Anwendungen DÜRFEN NICHT von anderen Desktop-Anwendungen abhängen, es sei denn, dass dies unbedingt erforderlich ist. Insbesondere Pakete, die eine sichtbare .desktop-Datei enthalten (eine .desktop-Datei, die nicht die Zeile NoDisplay=true enthält), sollten keine Requires-, Recommends- oder Supplements-Anweisungen für andere Pakete enthalten, die direkt oder indirekt eine sichtbare Desktop-Datei enthalten.
Es wäre beispielsweise sinnvoll, wenn ein Level-Editor für Videospiele das zugehörige Videospiel benötigt, um zu funktionieren, oder wenn ein Plugin einer Anwendung die zugehörige Anwendung benötigt. Es wäre jedoch nicht sinnvoll, wenn eine Anwendung, die zufällig eine Datenbankbibliothek verwendet, von einer Datenbankverwaltungssoftware abhängig wäre, die mit dieser Bibliothek verknüpft ist, oder wenn eine Anwendung, die zufällig eine bestimmte Programmiersprache verwendet, von Verwaltungswerkzeugen abhängig wäre, die mit dieser Programmiersprache verknüpft sind.
Wenn ein Quellpaket mehrere grafische Anwendungen bereitstellt, sollten diese Anwendungen nach Möglichkeit in separate Teilpakete ausgelagert werden.
Spec-Dateien
Die Spec-Datei („.spec“) ist ein grundlegendes Element im Paketierungsprozess. Jede Änderung am Paket führt zu einer Änderung der Spec-Datei.Da Pakete in Fedora sowohl von einer Gemeinschaft von Paketierstellern als auch von automatisierten Werkzeugen verwaltet werden, ist es wichtig, dass die Spec-Dateien bestimmten Konventionen folgen. Der Großteil dieser Richtlinien für die Paketierung betrifft den Inhalt einer Spec-Datei; hier sind einige allgemeine Punkte.
Benennung von Spec-Dateien
Sie Spec-Datei MUSS nach dem Schema %{name}.spec benannt werden. Das heißt, wenn Ihr Paket example heißt, muss die Spec-Datei example.spec heißen.
Lesbarkeit von Spec-Dateien
Alle Spec-Dateien MÜSSEN lesbar sein und so gepflegt werden, dass die Gemeinschaft der Paketentwickler sie verstehen und mit ihnen arbeiten kann.
Um die Lesbarkeit zu erleichtern, dürfen in Fedora-Paketen ausschließlich Makros und Bedingungsanweisungen für Fedora und EPEL verwendet werden. Die Verwendung von Makros und Bedingungsanweisungen für andere Distributionen, einschließlich Fedora-Derivaten, ist in den Spec-Dateien von Paketen in den Haupt-Fedora-Paketquellen nicht gestattet, es sei denn, diese Makros und Bedingungsanweisungen sind auch in Fedora vorhanden.
Kodierung von Spec-Dateien
Sofern Sie keine Zeichen außerhalb des ASCII-Zeichensatzes benötigen, müssen Sie sich keine Gedanken über die Kodierung der Spec-Datei machen. Falls Sie Nicht-ASCII-Zeichen benötigen, speichern Sie Ihre Spec-Dateien als UTF-8. Wenn Sie sich nicht sicher sind, welche Zeichen ASCII-Zeichen sind, konsultieren Sie bitte diese Tabelle.
Nicht-ASCII-Dateinamen
Ebenso müssen Dateinamen, die Nicht-ASCII-Zeichen enthalten, als UTF-8 kodiert werden. Da es keine Möglichkeit gibt, die Kodierung des Dateinamens zu ermitteln, ist die Verwendung derselben Kodierung für alle Dateinamen die beste Methode, um sicherzustellen, dass Benutzer die Dateinamen korrekt lesen können. Falls die upstream-seitigen Dateinamen nicht in UTF-8 kodiert sind, können Sie ein Hilfsprogramm wie convmv(1) (aus dem convmv-Paket) verwenden, um den Dateinamen in Ihrem %install-Abschnitt zu konvertieren.
Kanonizität und Pflege von Spec-Dateien
Das Git-Archiv von Fedora ist der offizielle Speicherort für Fedora-Spec-Dateien.Paketbetreuer MÜSSEN damit rechnen, dass andere Betreuer und automatisierte WerkzeugeÄnderungen an ihren Paketen vornehmen, möglicherweise ohne vorherige Kommunikation (obwohl Kommunikation stets empfohlen wird). Wenn einige Betreuerzusätzlich Kopien einer Spec-Datei in einer externen Paketquelle speichern,MÜSSEN sie bereit sein, Änderungen an der Spec-Datei in der Fedora-Paketquelle zusammenzuführen,und DÜRFEN diese Änderungen NICHT mit einer Kopie aus einer externen Paketquelleoder mit fedpkg import überschreiben.
Verifizierung von Quelldateien
Sofern das Upstream-Projekt OpenPGP-Signaturen seiner Releases veröffentlicht, sollten Fedora-Pakete diese Signatur im Rahmen des RPM-Bauprozesses verifizieren.
Obwohl eine Prüfsumme in der Quelldatei bestätigt, dass eine aus dem Lookaside-Cache abgerufene Datei diejenige ist, die der Paketersteller hochgeladen hat, gibt sie keine Auskunft darüber, ob es sich um die vom Upstream-Projekt veröffentlichte Datei handelt. Eine Signatur der Upstream-Entwickler bestätigt, dass der Quellcode mit der von ihnen veröffentlichten Version identisch ist. Die Überprüfung der Signatur im Rahmen des Bauprozesses stellt sicher, dass Paketersteller die Überprüfung nicht vergessen.
Beziehen der korrekten Schlüssel
Das Verifizierungsverfahren erfordert eine oder mehrere OpenPGP-Schlüsselbunddateien mit öffentlichen Schlüsseln des Upstream-Projekts. Die Schlüsselbünde müssen zusammen alle Schlüssel enthalten, die zur Bestätigung der Authentizität der Quellen als vertrauenswürdig gelten, und dürfen keine weiteren Schlüssel enthalten.
Idealerweise veröffentlicht das Upstream-Projekt einen solchen Schlüsselbund als herunterladbare Datei. Laden Sie diese Datei herunter und tun Sie alles Erdenkliche, um ihre Authentizität zu überprüfen. Fügen Sie sie anschließend unverändert dem Paket-SCM hinzu und geben Sie die zugehörige URL in der Spec-Datei an, damit andere sie überprüfen können. Die URL MUSS nach Möglichkeit HTTPS oder ein ähnlich authentifiziertes Protokoll verwenden.
Selbst wenn Sie den Schlüssel beim ersten Hinzufügen noch nicht verifizieren können, erhöht er dennoch die Sicherheit durch Vertrauen bei der ersten Verwendung. Er stellt sicher, dass zukünftige Angriffe erkannt werden, wenn der Schlüssel der richtige ist, oder dass ein aktueller Angriff später erkannt wird, wenn zukünftige Versionen mit dem korrekten Schlüssel signiert werden.
Verifizierung von Signaturen
Die Überprüfung der Quelldateien MUSS zuerst im Abschnitt %prep der Spec-Datei erfolgen, bevor potenziell kompromittierter Code ausgeführt wird. Die Überprüfung MUSS mit dem Makro %{openpgpverify} durchgeführt werden, welches zu einem Befehl expandiert, dessen Parameter die Pfadnamen des Schlüsselbunds, der Signatur und der signierten Datei sein müssen. BuildRequires: openpgpverify ist für die Durchführung der Überprüfung erforderlich.
Jede separate Signaturdatei (z. B. foo.tar.gz.asc oder foo.tar.gz.sig) musszusammen mit dem Quellcode in den Lookaside-Cache des Pakets hochgeladen werden, währendder Schlüsselbund direkt in das SCM des Pakets eingecheckt werden muss.
Das folgende Format muss verwendet werden:
Source0: ftp://ftp.example.com/pub/foo/%{name}-%{version}.tar.gz
Source1: ftp://ftp.example.com/pub/foo/%{name}-%{version}.tar.gz.asc
Source2: https://www.example.com/keyring-0123456789ABCDEF0123456789ABCDEF.pgp
…
BuildRequires: openpgpverify
…
%prep
%{openpgpverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data='%{SOURCE0}'
Die erste Quelle ist das eigentliche Tarball-Archiv, die zweite die Signatur von upstream und die dritte der Schlüsselbund.
Das Makro unterstützt auch eine Kurzform, bei der Sie lediglich die Quellennummern angeben:
%openpgpverify -k2 -s1 -d0
Ausnahmen
Falls der Upstream-Tarball mit alten Schlüsseln signiert wurde, die auf dem SHA1-Hashverfahren basieren oder anderweitig nicht zum aktuellen OpenPGP-Standard kompatibel sind, kann bis zur Behebung dieses Problems das ältere %{gpgverify}-Makro verwendet werden (es verfügt über dieselbe API und lässt sich als direkter Ersatz nutzen). Die Upstream-Betreuer sollten dazu angehalten werden, ihre Schlüssel zu aktualisieren – beispielsweise unter Verwendung der folgenden Anleitung:
Wenn der ursprüngliche Tarball eines Pakets geändert werden muss, beispielsweise weil er unzulässige Elemente enthält, kann der Tarball nicht im Rahmen des Bauprozesses verifiziert werden. In diesem Fall muss der ursprüngliche OpenPGP-Schlüsselbund weiterhin im Paket-SCM enthalten sein, und die Anweisungen/das Skript zum Erstellen des reduzierten Tarballs müssen die ursprüngliche Quelle verifizieren.
Wenn das Upstream-Projekt keine Schlüsselbunddatei veröffentlicht (z.B. wenn esnur einen Fingerabdruck auf seiner Website veröffentlicht und auf ein Schlüsselserver-Netzwerk zum Herunterladen des Schlüssels verweist), müssen Sie möglicherweise einen Schlüsselbund erstellen, nachdem Sie den Schlüssel verifiziert haben. In diesem Fall gibt es keine Upstream-URL zum Schlüsselbund,daher sollten Sie stattdessen in einem Kommentar in der Spec-Datei dokumentieren, wie Sie den Schlüsselbund erstellt haben. Ein minimaler Schlüsselbund mit dem Schlüssel mit dem Fingerabdruck`7D33D762FD6C35130481347FDB4B54CBA4826A18` kann mit dem folgenden Befehl erstellt werden:
gpg2 --export --export-options export-minimal 7D33D762FD6C35130481347FDB4B54CBA4826A18 > keyring-7D33D762FD6C35130481347FDB4B54CBA4826A18.pgp
oder mit der Sequoia-Befehlszeilenschnittstelle:
sq network keyserver search 7D33D762FD6C35130481347FDB4B54CBA4826A18 --output keyring-7D33D762FD6C35130481347FDB4B54CBA4826A18.pgp
Wenn der Upstream-Anbieter einen Tarball anders signiert hat, beispielsweise nur die unkomprimierte Tarball-Version, aber dann eine komprimierte Version verteilt hat, muss der Verifizierungsschritt entsprechend angepasst werden, zum Beispiel:
Source0: ftp://ftp.example.com/pub/foo/%{name}-%{version}.tar.xz
Source1: ftp://ftp.example.com/pub/foo/%{name}-%{version}.tar.asc
Source2: https://www.example.com/keyring-0123456789ABCDEF0123456789ABCDEF.pgp
…
BuildRequires: openpgpverify xz
…
%prep
xzcat '%{SOURCE0}' | %{openpgpverify} --keyring='%{SOURCE2}' --signature='%{SOURCE1}' --data=-
Wenn die Daten und die Signatur in einer einzigen Datei kombiniert werden, dann müssen die signierten Daten in eine Ausgabedatei geschrieben werden:
%{openpgpverify} --keyring='%{SOURCE1}' --data='%{SOURCE0}' --output=<Pfadname>
Pakete, die für den Start von Fedora unerlässlich sind, können das Flag bootstrap flag verwenden, um die Überprüfung vor dem Kompilieren von GPGverify und GnuPG zu überspringen.
Hilfe
Wenn Sie Hilfe benötigen, um Ihr Paket an diese Richtlinie anzupassen, oder wenn Sie nicht wissen, was zu tun ist, wenn ein Bauvorgang bei der Signaturprüfung fehlschlägt, sollten Sie sich an die Fedora-Entwickler-Mailingliste wenden, bevor Sie die Prüfung umgehen, um sicherzustellen, dass Sie keine kompromittierte Software erstellen.
Unterstützung der Architekturen
Alle Fedora-Pakete müssen auf mindestens einer unterstützten primären Architektur erfolgreich kompiliert und in binäre RPM-Dateien umgewandelt werden können, außer wenn das Paket nur auf einer sekundären Architektur nützlich ist (z.B. ein architekturspezifisches Boot-Dienstprogramm, ein Microcode-Loader oder ein Hardware-Konfigurationswerkzeug). Fedora-Paketentwickler sollten sich nach Kräften bemühen, alle primären Architekturen zu unterstützen.
Inhalt, Code, der nicht kompiliert oder erstellt werden muss, und architekturunabhängiger Code (noarch) sind erwähnenswerte Ausnahmen.
Architekturbezogene Baufehler
Wenn ein Fedora-Paket auf einer bestimmten Architektur nicht kompiliert, erstellt oder ausgeführt werden kann, sollten diese Architekturen in der Spec-Datei in ExcludeArch aufgeführt werden. Für jede in ExcludeArch aufgeführte Architektur muss ein Bugzilla-Eintrag erstellt werden, der den Grund für das Kompilierungs-/Erstellungs-/Funktionsproblem des Pakets auf dieser Architektur beschreibt. Die Bugnummer sollte dann in einem Kommentar neben der entsprechenden ExcludeArch-Zeile eingefügt werden. Neue Pakete haben während des Review-Prozesses keine Bugzilla-Einträge. Daher sollten sie diese Beschreibung bis zur Genehmigung des Pakets im Kommentar einfügen und anschließend den Bugzilla-Eintrag erstellen und die ausführliche Erklärung durch die Bugnummer ersetzen. Der Bug sollte als blockierend für einen (oder mehrere) der folgenden Bugs markiert werden, um die Nachverfolgung solcher Probleme zu vereinfachen:
Noarch mit unportierten Abhängigkeiten
Manchmal arbeitet man an einem noarch-Paket, das nur dort ausgeführt werden kann, wo ein anderes, architekturabhängiges Paket aufbaut. Dies ist häufig der Fall bei Paketen, die in einer Skriptsprache geschrieben sind und beispielsweise vom Interpreterpaket der Sprache abhängen. Wenn das architekturabhängige Paket, von dem Ihr Paket abhängt, nicht auf allen Architekturen verfügbar ist, auf die Fedora (oder EPEL) abzielt, kann es vorkommen, dass Sie Ihr Paket aus den Paketquellen bestimmter Architekturen ausschließen oder verhindern müssen, dass es auf bestimmten Architekturen im Bausystem erstellt wird.
Architekturspezifische Laufzeit- und Bauabhängigkeiten
Sie können sowohl die Architekturen, die zum Erstellen eines noarch-Pakets verwendet werden, als auch die Paketquellen, denen das erstellte noarch-Paket hinzugefügt wird, einschränken, indem Sie entweder die Tags ExcludeArch: oder ExclusiveArch: verwenden:
BuildArch: noarch
# Nachfolgend die Architekturen auflisten, auf denen das abhängige Paket aufbaut
ExclusiveArch: %{ix86} %{arm} x86_64 noarch
Manchmal stellt die Laufzeitumgebung einer Sprache, für die Sie ein Paket erstellen, ein Makro für die Architekturen bereit, auf denen sie verfügbar ist, beispielsweise %{nodejs_arches}. Falls ein solches Makro existiert, können Sie in Ihrer Spec-Datei beispielsweise ExclusiveArch: %{nodejs_arches} noarch verwenden. Schauen Sie in den Richtlinien für diese Sprache, ob ein solches Makro vorhanden ist.
Keine architekturspezifischen Quellen oder Patches
Pakete DÜRFEN KEINE Source:- oder Patch:-Tags enthalten, die von der Architektur abhängig sind. Beispielsweise ist Folgendes verboten:
%ifarch ppc64
Patch0: build-fix-for-ppc64.patch
%endif
Die bedingte Verwendung von Source:- oder Patch:-Tags anhand der Architektur führt dazu, dass sich der Inhalt des Quellpakets je nach der Architektur, die zum Erstellen verwendet wurde, unterscheidet.
Beachten Sie, dass dies leider verhindert, dass %autosetup zum Anwenden von Patches verwendet werden kann, wenn einige dieser Patches nur für bestimmte Architekturen gelten. Die beste Lösung besteht darin, Patches zu schreiben, die einfach auf allen Architekturen funktionieren. Wenn dies nicht möglich ist, verwenden Sie einfach %autosetup -N und das Makro %patch, um jeden Patch mit %ifarch oder %ifnarch anzuwenden. Zum Beispiel:
%prep
%autosetup -N
%ifarch s390x
%patch 0 -p1
%endif