Lock all binaries duplicated between repos - the first one wins

This commit is contained in:
Stephan Kulow 2017-09-17 13:13:40 +02:00
parent f4ae960e6d
commit ea55704eb0

View File

@ -141,7 +141,7 @@ class Group(object):
# pool.set_debuglevel(10)
for n, group in self.packages[arch]:
jobs = []
jobs = list(self.pkglist.lockjobs[arch])
sel = pool.select(str(n), solv.Selection.SELECTION_NAME)
if sel.isempty():
logger.debug('{}.{}: package {} not found'.format(self.name, arch, n))
@ -158,7 +158,7 @@ class Group(object):
jobs += sel.jobs(solv.Job.SOLVER_LOCK)
for s in self.silents:
sel = pool.select(str(s), solv.Selection.SELECTION_NAME)
sel = pool.select(str(s), solv.Selection.SELECTION_NAME | solv.Selection.SELECTION_FLAT)
if sel.isempty():
logger.warn('{}.{}: silent package {} not found'.format(self.name, arch, s))
else:
@ -329,6 +329,7 @@ class PkgListGen(ToolBase.ToolBase):
self._supportstatus = None
self.input_dir = '.'
self.output_dir = '.'
self.lockjobs = dict()
def _dump_supportstatus(self):
for name in self.packages.keys():
@ -445,16 +446,20 @@ class PkgListGen(ToolBase.ToolBase):
pool = solv.Pool()
pool.setarch(arch)
self.lockjobs[arch] = []
solvables = set()
for prp in self.repos:
project = prp['project']
reponame = prp['repo']
repo = pool.add_repo(project)
s = os.path.join(
CACHEDIR, 'repo-{}-{}-{}.solv'.format(project, reponame, arch))
s = os.path.join(CACHEDIR, 'repo-{}-{}-{}.solv'.format(project, reponame, arch))
r = repo.add_solv(s)
if not r:
raise Exception(
"failed to add repo {}/{}/{}. Need to run update first?".format(project, reponame, arch))
raise Exception("failed to add repo {}/{}/{}. Need to run update first?".format(project, reponame, arch))
for solvable in repo.solvables_iter():
if solvable.name in solvables:
self.lockjobs[arch].append(pool.Job(solv.Job.SOLVER_SOLVABLE|solv.Job.SOLVER_LOCK, solvable.id))
solvables.add(solvable.name)
pool.addfileprovides()
pool.createwhatprovides()