Files
FWS-ISO/pkgbuilds/python-meh/PKGBUILD
T
nocode 4249282052 fix(python-meh): fix python 3.11 compatibility by replacing removed gettext.ldgettext
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.
2026-07-03 23:59:25 +02:00

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"
}