Die Bibliothek soll später vom Debian Python Team als Source Paket python-ruyaml betreut werden. Die Paketierung und Pflege des Pakets wird mit git-buildpackage erfolgen, dies ist das Tooling was das DPT durch die Team Policy zur Betreuung von Paketen vorgibt. Wenn dies nicht installiert ist muss dies zwingend installiert werden für die Schritte die ich versuchen zu zeigen.
Ein Paket zu erstellen benötigt mehr wie die rein technischen Schritte dich darstellen werde, Dinge wie einen ITP zu erstellen, oder die Besonder- und Eigenheiten was die DFSG und Lizenzen angeht lasse ich bewusst weg.
Arbeitsverzeichnis, Upstream Tarball, Initialisierung
Um starten zu können benötigt man ein dediziertes Verzeichnis und den Upstream Tarball der letzten Version. Plus diverse Dateien die man sich erstellen muss, entweder von Hand oder durch Tools die einem die Arbeit erleichtern. Ich werde hier den manuellen Weg zeigen.
Code: Alles auswählen
$ mkdir python-ruyaml && cd python-ruyaml
$ wget https://github.com/pycontribs/ruyaml/archive/refs/tags/v0.91.0.tar.gz -P ~/Downloads/
$ git init
$ mkdir debian
git init hat einen leeres Git Repository angelegt, damit gbp (Abkürzung git-buildpackage) jetzt den ersten Import richtig einsortiert wird eine optionale Konfigurationsdatei debian/gbp.conf benötigt. Diese sollte folgenden Inhalt haben:
Code: Alles auswählen
[DEFAULT]
pristine-tar = True
compression = gz
debian-branch = debian/master
upstream-branch = upstream
[pq]
patch-numbers = False
[dch]
id-length = 7
Mit diesen Daten weiß gbp was mit den Daten aus dem Tarball passieren soll, die Angaben sind eigentlich recht selbsterklärend.
gbp soll einen Commit mit Metadaten aus der importieren Version in den Branch pristine-tar erstellen. Als Kompressionstyp soll tar.gz benutzt werden, als Arbeits-/Paketierungsbranch soll debian/master heißen (bedingt durch DPT Policy), und als Upstream Branch soll upstream verwendet werden.
Die Angaben unter [pq] werden auf den patch-queue Branch angewendet, im Detail wird hier gesagt keine nummerierten Patches (z.B. 0001-foo.patch etc) zu verwenden.
Die Section [dch] findet Beachtung wenn später Changelog Einträge erstellt werden, es werden hier später CommitIDs mit 7 Stellen verwendet.
Der (Erst)Import der Sourcen stellt ein paar Fragen da es noch keine Datei debian/control gibt, der Import erfolgt dann mit folgenden Aufruf:
Code: Alles auswählen
$ gbp import-orig --sign-tags --pristine-tar ~/Downloads/v0.91.0.tar.gz
What will be the source package name? [] python-ruyaml
What is the upstream version? [] 0.91.0
gbp:info: Importing '/home/user/Downloads/v0.91.0.tar.gz' to branch 'upstream'...
gbp:info: Source package is python-ruyaml
gbp:info: Upstream version is 0.91.0
gbp:info: Successfully imported version 0.91.0 of ../python-ruyaml_0.91.0.orig.tar.gz
Damit ein Paketbau angestoßen werden kann werden weitere Steuerungsdateien benötigt. Unter anderem die zentrale Datei debian/control die das Sourcepaket und auch Binärpakte definiert.
Code: Alles auswählen
$ cat debian/control
Source: python-ruyaml
Maintainer: Debian Python Team <team+python@tracker.debian.org>
Uploaders:
Uploader <uploader@email.de>,
Section: python
Priority: optional
Build-Depends:
debhelper-compat (= 13),
pybuild-plugin-pyproject,
python3-all,
python3-setuptools,
python3-setuptools-scm,
Rules-Requires-Root: no
Standards-Version: 4.6.2
Vcs-Browser: https://salsa.debian.org/python-team/packages/python-ruyaml
Vcs-Git: https://salsa.debian.org/python-team/packages/python-ruyaml.git
Homepage: https://github.com/pycontribs/ruyaml
Package: python3-ruyaml
Architecture: all
Depends:
${misc:Depends},
${python3:Depends},
Description: YAML 1.2 loader/dumper package for Python
The ruyaml package is a fork of ruamel.yaml aimed to made in order to secure
the future of the library, mainly by having a pool of maintainers and can be
used as a drop-in replacement for python3-ruamel.yaml.
.
This package contains the Python 3 version of the library.
Als auch die Datei debian/rules, die wohl wichtigste aller Dateien. Achtung, dies ist ein Makefile (Tabs in den Targets!) und muss ausführbar sein, also ein "chmod 775" nach den Anlegen nicht vergessen!
Code: Alles auswählen
$ cat debian/rules
#!/usr/bin/make -f
# -*- makefile -*-
#export DH_VERBOSE = 1
export PYBUILD_NAME=ruyaml
%:
dh $@ --with python3 --buildsystem=pybuild
Code: Alles auswählen
$ cat debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: ruyaml
Upstream-Contact: Anthon van der Neut, Ruamel bvba <pycontribs@googlegroups.com>
Sorin Sbarnea <sorin.sbarnea@gmail.com>
Source: https://github.com/pycontribs/ruyaml
Files: *
Copyright: Anthon van der Neut, Ruamel bvba <pycontribs@googlegroups.com>
Sorin Sbarnea <sorin.sbarnea@gmail.com>
Matthias Urlichs <matthias@urlichs.de>
License: MIT
Files: debian/*
Copyright: 2023, Uploader <uploader@email.de>
License: MIT
License: MIT
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Code: Alles auswählen
$ cat debian/source/format
3.0 (quilt)
Code: Alles auswählen
$ cat debian/source/options
extend-diff-ignore = "^[^/]*[.]egg-info/"