stages/rpm: generate and report package metadata

Generate and report metadata about all the packages that were
installed. This information will be needed by composer, especially
the 'sigmd5' bit, for integration with koji[1].

[1] https://docs.pagure.org/koji/content_generator_metadata/
This commit is contained in:
Christian Kellner 2020-08-12 17:53:56 +02:00
parent 78d46e0388
commit c298d31ba0

View file

@ -32,6 +32,7 @@ import sys
import tempfile
import osbuild.sources
from osbuild import api
SCHEMA = """
@ -84,6 +85,32 @@ def packages_from_legacy(legacy):
return packages
def generate_package_metadata(tree):
query = r"""\{
"name": "%{NAME}",
"version": "%{VERSION}",
"release": "%{RELEASE}",
"epoch": %|EPOCH?{"%{EPOCH}"}:{null}|,
"arch": %|ARCH?{"%{ARCH}"}:{null}|,
"sigmd5": %|SIGMD5?{"%{SIGMD5}"}:{null}|
\},
"""
cmd = [
"rpm",
"-qa",
"--root", tree,
"--qf=" + query
]
res = subprocess.run(cmd, stdout=subprocess.PIPE,
check=True, encoding="utf-8")
raw = res.stdout.strip()
jsdata = '{"packages": [' + raw[:-1] + "]}"
return json.loads(jsdata)
def main(tree, sources, options):
packages = packages_from_legacy(options.get("packages", []))
checksums = [p["checksum"] for p in packages]
@ -154,6 +181,10 @@ def main(tree, sources, options):
with contextlib.suppress(FileNotFoundError):
os.unlink(f"{tree}/var/lib/systemd/random-seed")
# generate the metadata
md = generate_package_metadata(tree)
api.metadata(md)
return 0