1
0
mirror of https://github.com/openSUSE/osc.git synced 2024-09-20 09:16:16 +02:00

Improve 'updatepacmetafromspec' command to expand rpm spec macros by calling rpmspec to query the data

This commit is contained in:
Daniel Mach 2024-04-18 12:08:23 +02:00
parent bc935eada0
commit 7bbc147605
2 changed files with 16 additions and 0 deletions

View File

@ -111,6 +111,9 @@ Recommends: obs-service-source_validator
Recommends: obs-service-tar_scm
Recommends: obs-service-verify_file
# needed for `osc updatepacmetafromspec` that calls rpmspec to get values with expanded macros
Recommends: rpm-build
# needed for ssh signature auth
Recommends: %{ssh_add_pkg}
Recommends: %{ssh_keygen_pkg}

View File

@ -1862,6 +1862,19 @@ def read_meta_from_spec(specfile, *args):
if not os.path.isfile(specfile):
raise oscerr.OscIOError(None, f'\'{specfile}\' is not a regular file')
rpmspec_path = shutil.which("rpmspec")
if rpmspec_path:
result = {}
for arg in args:
# convert tag to lower case and remove the leading '%'
tag = arg.lower().lstrip("%")
cmd = [rpmspec_path, "-q", specfile, "--srpm", "--qf", "%{" + tag + "}"]
value = subprocess.check_output(cmd, encoding="utf-8")
if value == "(none)":
value = ""
result[arg] = value
return result
try:
lines = codecs.open(specfile, 'r', locale.getpreferredencoding()).readlines()
except UnicodeDecodeError: