|
|
return 1 | return 1 |
| |
def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None, | def dep_zapdeps(unreduced, reduced, myroot, use_binaries=0, trees=None, |
return_all_deps=False): |
fakedb=None, return_all_deps=False): |
"""Takes an unreduced and reduced deplist and removes satisfied dependencies. | """Takes an unreduced and reduced deplist and removes satisfied dependencies. |
Returned deplist contains steps that must be taken to satisfy dependencies.""" | Returned deplist contains steps that must be taken to satisfy dependencies.""" |
if trees is None: | if trees is None: |
|
|
if isinstance(dep, list): | if isinstance(dep, list): |
unresolved += dep_zapdeps(dep, satisfied, myroot, | unresolved += dep_zapdeps(dep, satisfied, myroot, |
use_binaries=use_binaries, trees=trees, | use_binaries=use_binaries, trees=trees, |
return_all_deps=return_all_deps) |
fakedb=fakedb, return_all_deps=return_all_deps) |
elif not satisfied or return_all_deps: | elif not satisfied or return_all_deps: |
unresolved.append(dep) | unresolved.append(dep) |
return unresolved | return unresolved |
|
|
other = [] | other = [] |
| |
# Alias the trees we'll be checking availability against | # Alias the trees we'll be checking availability against |
vardb = trees[myroot]["vartree"].dbapi |
if fakedb: |
|
vardb = fakedb |
|
else: |
|
vardb = trees[myroot]["vartree"].dbapi |
if use_binaries: | if use_binaries: |
mydbapi = trees[myroot]["bintree"].dbapi | mydbapi = trees[myroot]["bintree"].dbapi |
else: | else: |
|
|
for (dep, satisfied) in zip(deps, satisfieds): | for (dep, satisfied) in zip(deps, satisfieds): |
if isinstance(dep, list): | if isinstance(dep, list): |
atoms = dep_zapdeps(dep, satisfied, myroot, | atoms = dep_zapdeps(dep, satisfied, myroot, |
use_binaries=use_binaries, trees=trees) |
use_binaries=use_binaries, trees=trees, |
|
fakedb=fakedb, return_all_deps=return_all_deps) |
else: | else: |
atoms = [dep] | atoms = [dep] |
| |
|
|
writemsg("mysplit: %s\n" % (mysplit), 1) | writemsg("mysplit: %s\n" % (mysplit), 1) |
writemsg("mysplit2: %s\n" % (mysplit2), 1) | writemsg("mysplit2: %s\n" % (mysplit2), 1) |
| |
|
fakedb = None |
|
if return_all_deps: |
|
fakedb = mydbapi |
myzaps = dep_zapdeps(mysplit, mysplit2, myroot, | myzaps = dep_zapdeps(mysplit, mysplit2, myroot, |
use_binaries=use_binaries, trees=trees, return_all_deps=return_all_deps) |
use_binaries=use_binaries, trees=trees, |
|
fakedb=fakedb, return_all_deps=return_all_deps) |
mylist = flatten(myzaps) | mylist = flatten(myzaps) |
writemsg("myzaps: %s\n" % (myzaps), 1) | writemsg("myzaps: %s\n" % (myzaps), 1) |
writemsg("mylist: %s\n" % (mylist), 1) | writemsg("mylist: %s\n" % (mylist), 1) |
|
|
def cpv_all(self): | def cpv_all(self): |
return self.cpvdict.keys() | return self.cpvdict.keys() |
| |
def cpv_inject(self,mycpv): |
def cpv_inject(self, mycpv, myslot=None): |
"""Adds a cpv from the list of available packages.""" | """Adds a cpv from the list of available packages.""" |
mycp=cpv_getkey(mycpv) | mycp=cpv_getkey(mycpv) |
self.cpvdict[mycpv]=1 |
self.cpvdict[mycpv] = myslot |
if not self.cpdict.has_key(mycp): |
if myslot and mycp in self.cpdict: |
self.cpdict[mycp]=[] |
# If necessary, remove another package in the same SLOT. |
|
for cpv in self.cpdict[mycp]: |
|
if mycpv != cpv and myslot == self.cpvdict[cpv]: |
|
self.cpv_remove(cpv) |
|
break |
|
if mycp not in self.cpdict: |
|
self.cpdict[mycp] = [] |
if not mycpv in self.cpdict[mycp]: | if not mycpv in self.cpdict[mycp]: |
self.cpdict[mycp].append(mycpv) | self.cpdict[mycp].append(mycpv) |
| |
|
|
if not len(self.cpdict[mycp]): | if not len(self.cpdict[mycp]): |
del self.cpdict[mycp] | del self.cpdict[mycp] |
| |
|
def aux_get(self, mycpv, wants): |
|
if not self.cpv_exists(mycpv): |
|
raise KeyError(mycpv) |
|
values = [] |
|
for x in wants: |
|
if x == "SLOT": |
|
values.append(self.cpvdict[mycpv]) |
|
else: |
|
values.append("") |
|
return values |
|
|
class bindbapi(fakedbapi): | class bindbapi(fakedbapi): |
def __init__(self, mybintree=None, settings=None): | def __init__(self, mybintree=None, settings=None): |
self.bintree = mybintree | self.bintree = mybintree |