pkgset: Download packages with dnf
When using repos as gather_source, we should use DNF backend even for constructing initial package set and to download the packages from source repos. Without this the repos source would not be usable on Python 3. Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
be4501c54b
commit
c3b49f7ffb
@ -28,6 +28,11 @@ def get_parser():
|
||||
required=True,
|
||||
help="path to kickstart config file",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--download-to",
|
||||
metavar='PATH',
|
||||
help="download packages to given directory instead of just printing paths",
|
||||
)
|
||||
|
||||
group = parser.add_argument_group("Repository options")
|
||||
group.add_argument(
|
||||
@ -130,7 +135,10 @@ def main(persistdir, cachedir):
|
||||
|
||||
g.gather(packages, conditional_packages)
|
||||
|
||||
print_rpms(g)
|
||||
if ns.download_to:
|
||||
g.download(ns.download_to)
|
||||
else:
|
||||
print_rpms(g)
|
||||
if ns.profiler:
|
||||
Profiler.print_results()
|
||||
|
||||
|
@ -17,12 +17,15 @@
|
||||
from enum import Enum
|
||||
from itertools import count
|
||||
import logging
|
||||
import os
|
||||
|
||||
from kobo.rpmlib import parse_nvra
|
||||
|
||||
import pungi.common
|
||||
import pungi.dnf_wrapper
|
||||
import pungi.multilib_dnf
|
||||
import pungi.util
|
||||
from pungi.linker import Linker
|
||||
from pungi.profiler import Profiler
|
||||
from pungi.util import DEBUG_PATTERNS
|
||||
|
||||
@ -782,6 +785,22 @@ class Gather(GatherBase):
|
||||
# nothing added -> break depsolving cycle
|
||||
break
|
||||
|
||||
def download(self, destdir):
|
||||
pkglist = (self.result_binary_packages | self.result_debug_packages | self.result_source_packages)
|
||||
self.dnf.download_packages(pkglist)
|
||||
linker = Linker(logger=self.logger)
|
||||
|
||||
for pkg in pkglist:
|
||||
basename = os.path.basename(pkg.relativepath)
|
||||
target = os.path.join(destdir, basename)
|
||||
|
||||
# Link downloaded package in (or link package from file repo)
|
||||
try:
|
||||
linker.hardlink(pkg.localPkg(), target)
|
||||
except:
|
||||
self.logger.error("Unable to link %s from the yum cache." % pkg.name)
|
||||
raise
|
||||
|
||||
def log_count(self, msg, method, *args):
|
||||
"""
|
||||
Print a message, run the function with given arguments and log length
|
||||
|
@ -70,8 +70,18 @@ def get_pkgset_from_repos(compose):
|
||||
pungi_conf = compose.paths.work.pungi_conf(arch=arch)
|
||||
pungi_log = compose.paths.log.log_file(arch, "pkgset_source")
|
||||
pungi_dir = compose.paths.work.pungi_download_dir(arch)
|
||||
cmd = pungi.get_pungi_cmd(pungi_conf, destdir=pungi_dir, name="FOO", selfhosting=True, fulltree=True, multilib_methods=["all"], nodownload=False, full_archlist=True, arch=arch, cache_dir=compose.paths.work.pungi_cache_dir(arch=arch))
|
||||
cmd.append("--force")
|
||||
|
||||
backends = {
|
||||
'yum': pungi.get_pungi_cmd,
|
||||
'dnf': pungi.get_pungi_cmd_dnf,
|
||||
}
|
||||
get_cmd = backends[compose.conf['gather_backend']]
|
||||
cmd = get_cmd(pungi_conf, destdir=pungi_dir, name="FOO",
|
||||
selfhosting=True, fulltree=True, multilib_methods=["all"],
|
||||
nodownload=False, full_archlist=True, arch=arch,
|
||||
cache_dir=compose.paths.work.pungi_cache_dir(arch=arch))
|
||||
if compose.conf['gather_backend'] == 'yum':
|
||||
cmd.append("--force")
|
||||
|
||||
# TODO: runroot
|
||||
run(cmd, logfile=pungi_log, show_cmd=True, stdout=False)
|
||||
|
@ -192,6 +192,9 @@ class PungiWrapper(object):
|
||||
if arch:
|
||||
cmd.append("--arch=%s" % arch)
|
||||
|
||||
if not nodownload:
|
||||
cmd.append("--download-to=%s" % destdir)
|
||||
|
||||
if multilib_methods:
|
||||
for i in multilib_methods:
|
||||
cmd.append("--multilib=%s" % i)
|
||||
|
Loading…
Reference in New Issue
Block a user