osclib/core: provide package_binary_list() to efficiently obtain binary to package map.
This commit is contained in:
parent
5c364b7967
commit
0f4abf058b
@ -108,3 +108,28 @@ def binary_list(apiurl, project, repository, arch, package=None):
|
|||||||
parsed.append(BinaryParsed(package, result.group('filename'), name, result.group('arch')))
|
parsed.append(BinaryParsed(package, result.group('filename'), name, result.group('arch')))
|
||||||
|
|
||||||
return parsed
|
return parsed
|
||||||
|
|
||||||
|
def package_binary_list(apiurl, project, repository, arch, package=None):
|
||||||
|
path = ['build', project, repository, arch]
|
||||||
|
if package:
|
||||||
|
path.append(package)
|
||||||
|
url = makeurl(apiurl, path, {'view': 'binaryversions'})
|
||||||
|
root = ET.parse(http_GET(url)).getroot()
|
||||||
|
|
||||||
|
package_binaries = []
|
||||||
|
binary_map = {} # last duplicate wins
|
||||||
|
for binary_list in root:
|
||||||
|
# Strip off multibuild extra to provide actual package name. The full
|
||||||
|
# value may be useful for duplicate check.
|
||||||
|
package = binary_list.get('package').split(':', 1)[0]
|
||||||
|
for binary in binary_list:
|
||||||
|
filename = binary.get('name')
|
||||||
|
result = re.match(RPM_REGEX, filename)
|
||||||
|
if not result:
|
||||||
|
continue
|
||||||
|
|
||||||
|
package_binaries.append(BinaryParsed(package, result.group('filename'),
|
||||||
|
result.group('name'), result.group('arch')))
|
||||||
|
binary_map[result.group('filename')] = package
|
||||||
|
|
||||||
|
return package_binaries, binary_map
|
||||||
|
Loading…
x
Reference in New Issue
Block a user