Schemata/Definitionssprache
aus openSUSE, der freien Wissensdatenbank
Inhaltsverzeichnis |
Schematabeschreibungssprache
Grundprinzip
Da openSUSE ab 10.2 Schemata benutzt, müssen diese auch beschrieben werden können. Sie sollten
- einfach zu schreiben sein. (von Menschen)
- einfach zu lesen sein. (von Menschen)
- einfach zu verarbeiten sein. (von Maschinen)
- einfach zu lesen sein (von Maschinen)
Das aktuelle .pat-Format erfüllt diese Bedingungen nicht komplett, da es schwer zu lesen ist und man sich kryptische Schlüsselnamen merken muss. Darüber hinaus sollen Schemata in Zukunft auch in repomd-Paketdepots verfügbar sein.
Aus diesem Grund benötigen wir einige Werkzeuge um die Schematabeschreibung in die Formate .pat und repomd zu konvertieren.
Vorschlag
Stil ist Substanz
, lassen Sie uns also eine Kombination aus Python und dem RPM-spec-Dateiformat wählen.
Das heißt
- das es ASCII-basiert ist
- von Menschen lesbare Namen und Ausdrücke nutzt
- das Format Schlüssel: Wert
- für einfache Werte
- Schlüssel starten in der linken Spalte
- Schlüsseln folgt ein Doppelpunkt
- Einrückungen sind wichtig
- eingerückte Zeilen sind fortgesetzte Zeilen
- Kann mehrere Schemata enthalte
- das Herunterladen und Verarbeiten dutzender .pat-Dateien ist schlecht
Das Grundformat für einen einfachen Wert ist
Schlüssel: Wert
Das Format für längere Werte ist
Schlüssel: Zeile1 Zeile2
Bei Schlüsseln spielt die Groß- und Kleinschreibung keine Rolle. Der Doppelpunkt ist nicht Teil des Schlüssels sondern wird als Trenner benutzt.
Zusätzlich sind Qualifizierer erlaubt, um Unterschlüssel wie Sprachen oder Architekturen anzugeben. Qualifizierer sthen in eckigen ([]) Klammern und können entweder zwischen dem Schlüssel und dem trennenden Doppelpunkt oder in der Spalte ganz links stehen.
Summary[de]: Das ist die Kurzfassung
Description:
[de] Dies ist eine Beschreibung
mit mehr als einer Zeile.
[en] This is a description
with more than a single line.
Bei Qualifiziereren spielt die Groß- und Kleinschreibung keine Rolle. Mehrere Qualifizierer können innerhalb der Klammern durch ein Komma getrennt angegeben werde.
Requires[x86_64,i386]: foobar == 42.0
Definition
Ein Schema beginnt mit dem Schlüssel
Pattern:
gefolgt von einem Name-Version-Release.Arch Wert.
Abhängigkeiten werden über die folgenden Werte definiert:
Requires: Provides: Conflicts: Obsoletes: Recommends: Suggests: Supplements: Enhances:
Ihre Werte sind standardmäßig Pakete. Abhängigkeiten zu Schemata müssen ein pattern: vorangestellt haben:
Requires: xorg-x11
erfordert das Paket xorg-x11 in jeder Version
Requires: pattern:x11 == 11.0
erforder das Schema x11 in Version 11.0
Mehrere Abhängigkeitswerte müssen durch eine neue Zeile, ein Leerzeichen oder ein Komma getrennt werden. Die folgenden Abhängigkeiten sind alle gleich.
Recommends: audio, video, network
Recommends: audio video network
Recommends: audio video network
Auf Paketnamen (und Schematanamen) kann ein Operator folgen (einer von = == > >= < <= <> != (= und == sind äquivalent, <> und != sind äquivalent) und eine evr-Spezifikation (epoch:version-release) folgen.
Beispiel
Dies ist das Standardschema wie es in openSUSE 10.2 Alpha 3 genutzt wird.
# Pattern definition file # pattern[default-10.2-4.i586] Name: default-10.2-4-i586 Summary: Default System Description: This is the default system for this product. [de] Das ist das Grundsystem für OpenSUSE. Requires: pattern:basesystem Recommends: pattern:base == 10.2 pattern:x11 pattern:apparmor [x86_64,ia64,pcc64] pattern:32bit [ppc] pattern:64bit [x86_64,i586] pattern:x86
Weitere Beispiele: Basis, KDE, Laptop, X11
Internationalisierung
Vergessen Sie nicht die Übersetzungen
# Pattern definition file # pattern[default-10.2-4.i586] Name: default Summary: Default System Summary[de]: Grundsystem Summary[hu]: Alaprendszer Description: This is the default system for this product. Description[de]: Das Grundsystem dieses Produkts. Description[hu]: A termék alaprendszere. Version: 10.2 Release: 4 Arch: i586 Requires: pattern:basesystem Recommends: pattern:base pattern:x11 pattern:apparmor pattern:32bit pattern:64bit pattern:x86

