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:
parent
78d46e0388
commit
c298d31ba0
1 changed files with 31 additions and 0 deletions
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue