4249282052
Replace gettext.ldgettext with gettext.dgettext in Anaconda exception handler since ldgettext was removed in Python 3.11. Without this fix, the exception handler crashes with AttributeError when trying to display errors, resulting in raw tracebacks instead of the meh dialog in both GUI and TUI modes. Also clean up stale __pycache__ directories from previous extractions and add validation to ensure ldgettext is completely removed.
48 lines
2.1 KiB
Bash
48 lines
2.1 KiB
Bash
# Maintainer: FWS
|
|
# Dépendance de l'installateur Anaconda (rhinstaller) — gestion d'exceptions.
|
|
# setup.py amont = distutils + `setup.py install` : tous deux supprimés
|
|
# (Python 3.12+, setuptools 80+). Le paquet étant du pur Python, on installe
|
|
# l'arborescence à la main plutôt que de patcher la chaîne distutils.
|
|
pkgname=python-meh
|
|
pkgver=0.43
|
|
pkgrel=2
|
|
pkgdesc="Python exception handling library (dépendance Anaconda)"
|
|
arch=('any')
|
|
url="https://github.com/rhinstaller/python-meh"
|
|
license=('GPL-2.0-or-later')
|
|
depends=('python' 'python-gobject' 'python-dbus' 'libreport')
|
|
_tag="r$pkgver-1"
|
|
source=("$pkgname-$pkgver.tar.gz::https://github.com/rhinstaller/python-meh/archive/refs/tags/$_tag.tar.gz")
|
|
sha256sums=('cd50301794ab68a064715f1ace960f6de07aea809aa85f73087d44573c98be52')
|
|
_srcdir="python-meh-$_tag"
|
|
|
|
prepare() {
|
|
cd "$srcdir/$_srcdir"
|
|
# gettext.ldgettext a été SUPPRIMÉ en Python 3.11 : sans ce remplacement, le
|
|
# gestionnaire d'exceptions d'Anaconda plante LUI-MÊME (AttributeError) dès
|
|
# qu'il doit AFFICHER une erreur → traceback brut au lieu du dialogue meh,
|
|
# en GUI comme en TUI. dgettext est l'équivalent direct (ldgettext n'était
|
|
# que la variante bytes). Corrigé en amont après 0.43.
|
|
sed -i 's/gettext\.ldgettext(/gettext.dgettext(/' \
|
|
meh/handler.py meh/ui/text.py meh/ui/gui.py
|
|
# .pyc d'une extraction précédente (src/ n'est pas nettoyé par makepkg -f) :
|
|
# à jeter, sinon ils partiraient dans le paquet via cp -a.
|
|
find meh -type d -name __pycache__ -exec rm -rf {} +
|
|
if grep -rn --include='*.py' 'ldgettext' meh/; then
|
|
echo "ERREUR : ldgettext encore présent après patch" >&2
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
package() {
|
|
cd "$srcdir/$_srcdir"
|
|
local sitedir
|
|
sitedir=$(python -c 'import site; print(site.getsitepackages()[0])')
|
|
install -d "$pkgdir$sitedir"
|
|
cp -a meh "$pkgdir$sitedir/meh"
|
|
# -d : grave le chemin d'exécution réel dans les .pyc (pas le $pkgdir de build).
|
|
python -m compileall -q -d "$sitedir/meh" "$pkgdir$sitedir/meh" || true
|
|
install -Dm644 ui/exception-dialog.glade -t "$pkgdir/usr/share/python-meh/"
|
|
install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
|
|
}
|