1
0
mirror of https://github.com/openSUSE/osc.git synced 2025-01-13 17:16:23 +01:00

Merge pull request #1015 from dmach/fix/1014-getbinaries-download-into-subdirs

Fix getbinaries command by downloading files in subdirs named by the packages
This commit is contained in:
Marco Strigl 2022-04-25 11:29:35 +02:00 committed by GitHub
commit d5e04f806f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 7 deletions

View File

@ -7518,8 +7518,10 @@ Please submit there instead, or use --nodevelproject to force direct submission.
if package is None: if package is None:
package_specified = False
package = meta_get_packagelist(apiurl, project, deleted=0) package = meta_get_packagelist(apiurl, project, deleted=0)
else: else:
package_specified = True
if opts.multibuild_package: if opts.multibuild_package:
packages = [] packages = []
for subpackage in opts.multibuild_package: for subpackage in opts.multibuild_package:
@ -7546,12 +7548,6 @@ Please submit there instead, or use --nodevelproject to force direct submission.
for i in binaries: for i in binaries:
if binary != None and binary != i.name: if binary != None and binary != i.name:
continue continue
# skip metadata (unless explicitly specified as the `FILE` (== `binary`) argument)
if not binary and i.name.startswith("_"):
continue
# skip logs (unless explicitly specified as the `FILE` (== `binary`) argument)
if not binary and i.name.endswith(".log"):
continue
# skip source rpms # skip source rpms
if not opts.sources and (i.name.endswith('src.rpm') or i.name.endswith('sdeb')): if not opts.sources and (i.name.endswith('src.rpm') or i.name.endswith('sdeb')):
continue continue
@ -7560,7 +7556,18 @@ Please submit there instead, or use --nodevelproject to force direct submission.
continue continue
if i.name.find('-debugsource-') >= 0: if i.name.find('-debugsource-') >= 0:
continue continue
fname = '%s/%s' % (target_dir, i.name)
if package_specified:
# if package is specified, download everything into the target dir
fname = '%s/%s' % (target_dir, i.name)
elif i.name.startswith("_") or i.name.endswith(".log"):
# download logs and metadata into subdirs
# to avoid overwriting them with files with indentical names
fname = '%s/%s/%s' % (target_dir, pac, i.name)
else:
# always download packages into the target dir
fname = '%s/%s' % (target_dir, i.name)
if os.path.exists(fname): if os.path.exists(fname):
st = os.stat(fname) st = os.stat(fname)
if st.st_mtime == i.mtime and st.st_size == i.size: if st.st_mtime == i.mtime and st.st_size == i.size:

View File

@ -4747,6 +4747,15 @@ def get_binary_file(apiurl, prj, repo, arch,
target_filename = target_filename or filename target_filename = target_filename or filename
# create target directory if it doesn't exist
target_dir = os.path.dirname(target_filename)
if target_dir:
try:
os.makedirs(target_dir, 0o755)
except OSError as e:
if e.errno != errno.EEXIST:
raise
where = package or '_repository' where = package or '_repository'
u = makeurl(apiurl, ['build', prj, repo, arch, where, filename]) u = makeurl(apiurl, ['build', prj, repo, arch, where, filename])
download(u, target_filename, progress_obj, target_mtime) download(u, target_filename, progress_obj, target_mtime)