From c6f066b0d915487c37437f1f6f206b181a1d6ea9 Mon Sep 17 00:00:00 2001 From: nocode Date: Wed, 17 Jun 2026 11:15:53 +0200 Subject: [PATCH] feat(pkgbuilds): add anaconda dependencies packaging Add PKGBUILD files for four Anaconda installer dependencies: - pykickstart: Kickstart language parser (>= 3.73) - python-blivet: Storage management abstraction layer - python-productmd: OS product metadata parsers - python-requests-file: file:// URL transport adapter for requests These packages are required by rhinstaller but absent from Arch repos and AUR. All use manual module installation to avoid unnecessary build dependencies. Also fix .gitignore by removing pkgbuilds/ exclusion to allow tracking these new packages. --- .gitignore | 3 +- pkgbuilds/pykickstart/PKGBUILD | 28 +++++++++++++++++ pkgbuilds/python-blivet/PKGBUILD | 41 +++++++++++++++++++++++++ pkgbuilds/python-productmd/PKGBUILD | 28 +++++++++++++++++ pkgbuilds/python-requests-file/PKGBUILD | 25 +++++++++++++++ 5 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 pkgbuilds/pykickstart/PKGBUILD create mode 100644 pkgbuilds/python-blivet/PKGBUILD create mode 100644 pkgbuilds/python-productmd/PKGBUILD create mode 100644 pkgbuilds/python-requests-file/PKGBUILD diff --git a/.gitignore b/.gitignore index 8fb52fc..7e45104 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,4 @@ out/ local-repo/ configs/baseline/airootfs/etc/systemd/system/multi-user.target.wants/ -configs/releng/airootfs/etc/systemd/system/multi-user.target.wants/ -pkgbuilds/ +configs/releng/airootfs/etc/systemd/system/multi-user.target.wants/ \ No newline at end of file diff --git a/pkgbuilds/pykickstart/PKGBUILD b/pkgbuilds/pykickstart/PKGBUILD new file mode 100644 index 0000000..e255928 --- /dev/null +++ b/pkgbuilds/pykickstart/PKGBUILD @@ -0,0 +1,28 @@ +# Maintainer: FWS +# Dépendance de l'installateur Anaconda (rhinstaller) — parseur du langage +# Kickstart (Anaconda l'exige >= 3.73 ; absent des dépôts Arch et de l'AUR). +# Pur Python (setuptools, install_requires=['requests']) : on installe +# l'arborescence du module à la main pour éviter d'exiger python-build/installer. +pkgname=pykickstart +pkgver=3.74 +pkgrel=1 +pkgdesc="Library for manipulating kickstart files (dépendance Anaconda)" +arch=('any') +url="https://github.com/pykickstart/pykickstart" +license=('GPL-2.0-or-later') +depends=('python' 'python-requests') +_tag="r$pkgver" +source=("$pkgname-$pkgver.tar.gz::https://github.com/pykickstart/pykickstart/archive/refs/tags/$_tag.tar.gz") +sha256sums=('05b19c5af3453f90464428c418b0c79bbe0a87718d1db1812f9006ba151e5c63') +_srcdir="pykickstart-$_tag" + +package() { + cd "$srcdir/$_srcdir" + local sitedir + sitedir=$(python -c 'import site; print(site.getsitepackages()[0])') + install -d "$pkgdir$sitedir" + cp -a pykickstart "$pkgdir$sitedir/pykickstart" + # -d : grave le chemin d'exécution réel dans les .pyc (pas le $pkgdir de build). + python -m compileall -q -d "$sitedir/pykickstart" "$pkgdir$sitedir/pykickstart" || true + install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING" +} diff --git a/pkgbuilds/python-blivet/PKGBUILD b/pkgbuilds/python-blivet/PKGBUILD new file mode 100644 index 0000000..63fc69e --- /dev/null +++ b/pkgbuilds/python-blivet/PKGBUILD @@ -0,0 +1,41 @@ +# Maintainer: FWS +# Dépendance de l'installateur Anaconda (rhinstaller) — couche d'abstraction +# de gestion du stockage (partitions, LVM, LUKS, RAID). +# +# VENDORISÉ depuis l'AUR (python-blivet) avec UNE seule modification FWS : +# retrait de 'libselinux' des depends. Arch n'est pas SELinux et blivet importe +# selinux en try/except (blivet/util.py + flags.py → HAVE_SELINUX/self.selinux +# = False si absent), donc il fonctionne sans. Ça évite de tirer toute la pile +# SELinux (libselinux/libsepol) de l'AUR juste pour une fonctionnalité inutile +# sur FWS. Tout le reste est identique à l'amont. +_py='python' +_pkg="blivet" +pkgname="python-${_pkg}" +pkgver=3.13.2 +_tag="${_pkg}-${pkgver}" +pkgrel=1 +pkgdesc="A DBus service and python module for management of the system storage configuration (dépendance Anaconda)" +arch=('any') +license=('LGPL-2.1-only') +depends=( + 'libblockdev' + 'lsof' + 'multipath-tools' + 'parted' + "${_py}" + "${_py}-six" + "${_py}-pyparted" + "${_py}-pyudev" + "${_py}-gobject" + 'systemd-libs' + 'util-linux' +) +makedepends=("${_py}-setuptools") +url='https://github.com/storaged-project/blivet' +source=("${pkgname}-${pkgver}.tar.gz::https://github.com/storaged-project/${_pkg}/archive/${_pkg}-${pkgver}.tar.gz") +sha512sums=('6142ee7e25416c13d751bffab22ba287895e256611254fb87652f1005d6303df50cb116683552bbbad28b818a515e6a20f7073d313e024996a99b449c29132bf') + +package() { + cd "${srcdir}/${_pkg}-${_tag}" + "${_py}" setup.py install --root="${pkgdir}" --optimize=1 +} diff --git a/pkgbuilds/python-productmd/PKGBUILD b/pkgbuilds/python-productmd/PKGBUILD new file mode 100644 index 0000000..d9540bd --- /dev/null +++ b/pkgbuilds/python-productmd/PKGBUILD @@ -0,0 +1,28 @@ +# Maintainer: FWS +# Dépendance de l'installateur Anaconda (rhinstaller) — parseur des métadonnées +# de produit/compose (.treeinfo, .discinfo). Absent des dépôts Arch et de l'AUR. +# Pur Python, stdlib uniquement (aucun install_requires) : install manuel de +# l'arborescence du module. +pkgname=python-productmd +pkgver=1.50 +pkgrel=1 +pkgdesc="Library providing parsers for metadata related to OS products (dépendance Anaconda)" +arch=('any') +url="https://github.com/release-engineering/productmd" +license=('LGPL-2.1-or-later') +depends=('python') +_tag="v$pkgver" +source=("$pkgname-$pkgver.tar.gz::https://github.com/release-engineering/productmd/archive/refs/tags/$_tag.tar.gz") +sha256sums=('2b780882e529cf5a26a9a7d55a269a360886bf2b50357fcca0934a9fa3437d27') +_srcdir="productmd-$pkgver" + +package() { + cd "$srcdir/$_srcdir" + local sitedir + sitedir=$(python -c 'import site; print(site.getsitepackages()[0])') + install -d "$pkgdir$sitedir" + cp -a productmd "$pkgdir$sitedir/productmd" + # -d : grave le chemin d'exécution réel dans les .pyc (pas le $pkgdir de build). + python -m compileall -q -d "$sitedir/productmd" "$pkgdir$sitedir/productmd" || true + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} diff --git a/pkgbuilds/python-requests-file/PKGBUILD b/pkgbuilds/python-requests-file/PKGBUILD new file mode 100644 index 0000000..ee51852 --- /dev/null +++ b/pkgbuilds/python-requests-file/PKGBUILD @@ -0,0 +1,25 @@ +# Maintainer: FWS +# Dépendance de l'installateur Anaconda (rhinstaller) — adaptateur Requests +# pour les URL file:// (utilisé par le payload). Absent des dépôts Arch et de +# l'AUR. Module Python mono-fichier (pyproject : py-modules=["requests_file"]). +pkgname=python-requests-file +pkgver=2.1.0 +pkgrel=1 +pkgdesc="Transport adapter for using file:// URLs with python-requests (dépendance Anaconda)" +arch=('any') +url="https://github.com/dashea/requests-file" +license=('Apache-2.0') +depends=('python' 'python-requests') +source=("$pkgname-$pkgver.tar.gz::https://github.com/dashea/requests-file/archive/refs/tags/$pkgver.tar.gz") +sha256sums=('f5bf0a9d5a220b03ded522d0992b9c2778adaa084a8735710ad66f663fd91c6b') +_srcdir="requests-file-$pkgver" + +package() { + cd "$srcdir/$_srcdir" + local sitedir + sitedir=$(python -c 'import site; print(site.getsitepackages()[0])') + # Module mono-fichier (pas de package dir) → on installe requests_file.py seul. + install -Dm644 requests_file.py "$pkgdir$sitedir/requests_file.py" + python -m compileall -q -d "$sitedir" "$pkgdir$sitedir/requests_file.py" || true + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +}