hooks/verify-python: fix for gi.repository

This commit is contained in:
Đoàn Trần Công Danh
2026-01-05 07:06:06 +07:00
parent b9887ce2e1
commit 4523df22b1
2 changed files with 25 additions and 4 deletions
+24 -4
View File
@@ -12,6 +12,7 @@ Usage:
./parse-py-metadata.py -S "$DESTDIR/$py3_sitelib" [-s] [-C] depends -e "extra1 extra2 ..."
-D "$XBPS_STATEDIR/$pkgname-rdeps" -V <( xbps-query -R -p provides -s "py3:" )
-G <( xbps-query -o '/usr/lib/girepository-*/*.typelib' )
check that the dependencies of a package match what's listed in the python
package metadata, using the virtual package provides entries generated by
@@ -112,6 +113,7 @@ def parse_provides(args):
def parse_depends(args):
depends = dict()
vpkgs = dict()
girdict = dict()
extras = set(args.extras.split())
provides = set()
@@ -127,6 +129,15 @@ def parse_depends(args):
if pkg not in vpkgs.setdefault(v, []):
vpkgs[v].append(pkg)
with args.gir.open() as f:
for ln in f.readlines():
if not ln.strip():
continue
pkgver, typelib, rest = ln.split(maxsplit=2)
pkg = getpkgname(pkgver)
xtypelib = Path(typelib).name.rsplit('-')[0].lower()
girdict[xtypelib] = pkg
if args.rdeps.exists():
with args.rdeps.open() as f:
rdeps = list(map(getpkgdepname, f.read().split()))
@@ -171,10 +182,18 @@ def parse_depends(args):
missing.append(pkgname)
err = True
else:
msg_err(f" PYTHON: {k} <-> UNKNOWN PKG PLEASE FIX!",
nocolor=args.nocolor, strict=args.strict)
unknown = True
err = True
xunk = True
if k.startswith("py3:gi-repository-"):
vkey = k[18:].lower()
if vkey in girdict:
pkgname = girdict[vkey]
print(f" PYTHON: {k} <-> {pkgname}", flush=True)
xunk = False
if xunk:
msg_err(f" PYTHON: {k} <-> UNKNOWN PKG PLEASE FIX!",
nocolor=args.nocolor, strict=args.strict)
unknown = True
err = True
if missing or unknown:
msg_err(f"=> {args.pkgver}: missing dependencies detected!",
@@ -202,6 +221,7 @@ if __name__ == "__main__":
deps_parser.add_argument("-e", dest="extras", default="")
deps_parser.add_argument("-V", dest="vpkgs", type=Path)
deps_parser.add_argument("-D", dest="rdeps", type=Path)
deps_parser.add_argument("-G", dest="gir", type=Path)
deps_parser.set_defaults(func=parse_depends)
args = parser.parse_args()