Lines 655-670
Link Here
|
655 |
self.outdatedpackages=[] |
655 |
self.outdatedpackages=[] |
656 |
self.mydbapi={} |
656 |
self.mydbapi={} |
657 |
self.mydbapi["/"] = portage.fakedbapi(settings=settings) |
657 |
self.mydbapi["/"] = portage.fakedbapi(settings=settings) |
|
|
658 |
self.pkg_slots={"/" : {}} |
659 |
allcpv = self.trees["/"]["vartree"].getallcpv() |
658 |
if "empty" not in self.myparams or self.target_root != "/": |
660 |
if "empty" not in self.myparams or self.target_root != "/": |
659 |
for pkg in self.trees["/"]["vartree"].getallcpv(): |
661 |
for pkg in allcpv: |
660 |
self.mydbapi["/"].cpv_inject(pkg) |
662 |
self.mydbapi["/"].cpv_inject(pkg) |
|
|
663 |
for pkg in allcpv: |
664 |
myslot = self.trees["/"]["vartree"].dbapi.aux_get(pkg, ["SLOT"])[0] |
665 |
mykey = portage.dep_getkey(pkg) |
666 |
if mykey in self.pkg_slots["/"]: |
667 |
self.pkg_slots["/"][mykey][myslot] = pkg |
668 |
else: |
669 |
self.pkg_slots["/"][mykey] = {myslot:pkg} |
661 |
if self.target_root != "/": |
670 |
if self.target_root != "/": |
|
|
671 |
self.pkg_slots[self.target_root] = {} |
672 |
allcpv = self.trees[self.target_root]["vartree"].getallcpv() |
662 |
self.mydbapi[self.target_root] = \ |
673 |
self.mydbapi[self.target_root] = \ |
663 |
portage.fakedbapi(settings=settings) |
674 |
portage.fakedbapi(settings=settings) |
664 |
if "empty" not in self.myparams: |
675 |
if "empty" not in self.myparams: |
665 |
for pkg in self.trees[self.target_root]["vartree"].getallcpv(): |
676 |
for pkg in allcpv: |
666 |
self.mydbapi[self.target_root].cpv_inject(pkg) |
677 |
self.mydbapi[self.target_root].cpv_inject(pkg) |
667 |
|
678 |
for pkg in allcpv: |
|
|
679 |
myslot = self.trees[self.target_root]["vartree"].dbapi.aux_get(pkg, ["SLOT"])[0] |
680 |
mykey = portage.dep_getkey(pkg) |
681 |
if mykey in self.pkg_slots[self.target_root]: |
682 |
self.pkg_slots[self.target_root][mykey][myslot] = pkg |
683 |
else: |
684 |
self.pkg_slots[self.target_root][mykey] = {myslot:pkg} |
668 |
if "--usepkg" in self.myopts: |
685 |
if "--usepkg" in self.myopts: |
669 |
trees["/"]["bintree"].populate( |
686 |
trees["/"]["bintree"].populate( |
670 |
"--getbinpkg" in self.myopts, "--getbinpkgonly" in self.myopts) |
687 |
"--getbinpkg" in self.myopts, "--getbinpkgonly" in self.myopts) |
Lines 719-732
Link Here
|
719 |
We need to check vardbapi as well as the current depgraph for it. |
736 |
We need to check vardbapi as well as the current depgraph for it. |
720 |
Blocks are fatal if buildpkgonly is set. """ |
737 |
Blocks are fatal if buildpkgonly is set. """ |
721 |
if addme and "--buildpkgonly" not in self.myopts and myparent: |
738 |
if addme and "--buildpkgonly" not in self.myopts and myparent: |
722 |
parent_root = myparent.split()[1] |
739 |
mybigkey[1] = myparent.split()[1] |
723 |
if self.mydbapi[parent_root].match(mykey) or \ |
740 |
self.digraph.addnode(" ".join(mybigkey), myparent, soft_dep=soft_dep) |
724 |
self.trees[parent_root]["vartree"].dbapi.match(mykey): |
|
|
725 |
mybigkey.append(myparent.split()[2]) |
726 |
self.digraph.addnode(" ".join(mybigkey), myparent, soft_dep=soft_dep) |
727 |
return 1 |
741 |
return 1 |
728 |
else: |
742 |
else: |
729 |
mydbapi = self.trees[myroot][self.pkg_tree_map[mytype]].dbapi |
743 |
mydbapi = self.trees[myroot][self.pkg_tree_map[mytype]].dbapi |
|
|
744 |
myslot = mydbapi.aux_get(mykey, ["SLOT"])[0] |
745 |
depkey = portage.dep_getkey(mykey) |
746 |
if depkey in self.pkg_slots: |
747 |
self.pkg_slots[myroot][depkey][myslot] = mykey |
748 |
else: |
749 |
self.pkg_slots[myroot][depkey] = {myslot : mykey} |
730 |
|
750 |
|
731 |
if myuse is None: |
751 |
if myuse is None: |
732 |
self.pkgsettings[myroot].setcpv(mykey) |
752 |
self.pkgsettings[myroot].setcpv(mykey) |
Lines 975-980
Link Here
|
975 |
missing += 1 |
995 |
missing += 1 |
976 |
print "Missing binary for:",xs[2] |
996 |
print "Missing binary for:",xs[2] |
977 |
|
997 |
|
|
|
998 |
self.validate_blockers() |
999 |
|
978 |
# We're true here unless we are missing binaries. |
1000 |
# We're true here unless we are missing binaries. |
979 |
return (not missing,myfavorites) |
1001 |
return (not missing,myfavorites) |
980 |
|
1002 |
|
Lines 1196-1201
Link Here
|
1196 |
print "Exiting...",myparent |
1218 |
print "Exiting...",myparent |
1197 |
return 1 |
1219 |
return 1 |
1198 |
|
1220 |
|
|
|
1221 |
def validate_blockers(self): |
1222 |
all_blockers = [node for node in self.digraph.all_nodes() |
1223 |
if node.split()[0] == "blocks"] |
1224 |
for blocker in all_blockers: |
1225 |
mytype,myroot,mydep = blocker.split() |
1226 |
mykey = portage.dep_getkey(mydep) |
1227 |
if mykey not in self.pkg_slots[myroot] or \ |
1228 |
not portage.match_from_list(mydep, \ |
1229 |
self.pkg_slots[myroot][mykey].values()): |
1230 |
self.digraph.remove(blocker) |
1199 |
|
1231 |
|
1200 |
def altlist(self, reversed=False): |
1232 |
def altlist(self, reversed=False): |
1201 |
mygraph=self.digraph.copy() |
1233 |
mygraph=self.digraph.copy() |
Lines 1264-1269
Link Here
|
1264 |
except ValueError: |
1296 |
except ValueError: |
1265 |
missing_atoms.append(mydep) |
1297 |
missing_atoms.append(mydep) |
1266 |
|
1298 |
|
|
|
1299 |
self.validate_blockers() |
1300 |
|
1267 |
if world_problems: |
1301 |
if world_problems: |
1268 |
print "\n!!! Problems have been detected with your world file" |
1302 |
print "\n!!! Problems have been detected with your world file" |
1269 |
print "!!! Please run "+green("emaint --check world")+"\n" |
1303 |
print "!!! Please run "+green("emaint --check world")+"\n" |
Lines 1442-1457
Link Here
|
1442 |
addl=""+red("B")+" "+fetch+" " |
1476 |
addl=""+red("B")+" "+fetch+" " |
1443 |
resolved = self.trees[x[1]]["vartree"].resolve_key(x[2]) |
1477 |
resolved = self.trees[x[1]]["vartree"].resolve_key(x[2]) |
1444 |
print "["+x[0]+" "+addl+"]",red(resolved), |
1478 |
print "["+x[0]+" "+addl+"]",red(resolved), |
|
|
1479 |
block_parents = ", ".join(self.digraph.parent_nodes(" ".join(x))) |
1445 |
if resolved!=x[2]: |
1480 |
if resolved!=x[2]: |
1446 |
if x[3]: |
1481 |
if x[3]: |
1447 |
print red("(\""+x[2]+"\" is blocking "+x[3]+")") |
1482 |
print red("(\""+x[2]+"\" is blocking "+block_parents+")") |
1448 |
else: |
1483 |
else: |
1449 |
print red("(\""+x[2]+"\")") |
1484 |
print red("(\""+x[2]+"\")") |
1450 |
else: |
1485 |
else: |
1451 |
if x[3]: |
1486 |
print red("(is blocking "+block_parents+")") |
1452 |
print red("(is blocking "+x[3]+")") |
|
|
1453 |
else: |
1454 |
print |
1455 |
else: |
1487 |
else: |
1456 |
if x[0] != "binary" and \ |
1488 |
if x[0] != "binary" and \ |
1457 |
"fetch" in portdb.aux_get( |
1489 |
"fetch" in portdb.aux_get( |