Package: gir1.2-appstream-1.0 Version: 1.0.4-1 Severity: important The following script segfaults when running in Debian unstable:
#!/usr/bin/env python3 # # Find all software components which have a modalias in the # AppStream database and prints them to stdout. # # WARNING: This is pure example code, which does no error # checking at all! import gi gi.require_version('AppStream', '1.0') from gi.repository import AppStream import re pool = AppStream.Pool() pool.load() try: cpts = pool.get_components().as_array() except AttributeError: # Handle old API too (before version 1.0) cpts = pool.get_components() ma_cpts = list() fwr_cpts = list() fwf_cpts = list() for cpt in cpts: modalias = cpt.get_provided_for_kind(AppStream.ProvidedKind.MODALIAS) fwruntime = cpt.get_provided_for_kind(AppStream.ProvidedKind.FIRMWARE_RUNTIME) fwflashed = cpt.get_provided_for_kind(AppStream.ProvidedKind.FIRMWARE_FLASHED) if modalias: ma_cpts.append(cpt) if fwruntime: fwr_cpts.append(cpt) if fwflashed: fwf_cpts.append(cpt) # we got all components providing modaliases pkgaliases = {} for cpt in ma_cpts: for pkg in sorted(cpt.get_pkgnames()): if pkg not in pkgaliases: pkgaliases[pkg] = {} aliases = pkgaliases[pkg] prov = cpt.get_provided_for_kind(AppStream.ProvidedKind.MODALIAS) for item in prov.get_items(): m = re.match(r'usb:v([0-9a-fA-F]{4})p([0-9a-fA-F]{4})d\*', item) if m: item = "usb:v%sp%sd*" % ( m.group(1).upper(), m.group(2).upper() ) aliases[str(item)] = 1 if False: for cpt in fwr_cpts: for pkg in sorted(cpt.get_pkgnames()): if pkg not in pkgaliases: pkgaliases[pkg] = {} aliases = pkgaliases[pkg] prov = cpt.get_provided_for_kind(AppStream.ProvidedKind.FIRMWARE_RUNTIME) for item in prov.get_items(): aliases["firmware:%s" % str(item)] = 1 for pkg in sorted(pkgaliases.keys()): print("Package: %s" % pkg) print("Modaliases: unused(%s)" % ", ".join(sorted(pkgaliases[pkg].keys()))) print() This used to list all packages with modalias provides. This script is part of the utilities used during isenkram maintenance. -- Happy hacking Petter Reinholdtsen