hooks/verify-python: fix for gi.repository
This commit is contained in:
@@ -11,6 +11,7 @@ hook() {
|
||||
"${XBPS_COMMONDIR}"/scripts/parse-py-metadata.py \
|
||||
${NOCOLORS:+-C} ${XBPS_STRICT:+-s} -S "${PKGDESTDIR}/${py3_sitelib}" -v "${pkgver}" \
|
||||
depends -e "${python_extras}" \
|
||||
-G <( $XBPS_QUERY_XCMD -o '/usr/lib/girepository-*/*.typelib' ) \
|
||||
-V <( $XBPS_QUERY_XCMD -R -p provides -s "py3:" ) -D "${XBPS_STATEDIR}/${pkgname}-rdeps" \
|
||||
|| msg_error "$pkgver: failed to verify python module dependencies\n"
|
||||
fi
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user