self.not_installed = []
self.invalid_category = []
self.okay = []
- from portage.sets import load_default_config
+ from portage._sets import load_default_config
setconfig = load_default_config(portage.settings,
portage.db[portage.settings["ROOT"]])
self._sets = setconfig.getSets()
self.found = os.access(self.world_file, os.R_OK)
vardb = portage.db[myroot]["vartree"].dbapi
- from portage.sets import SETPREFIX
+ from portage._sets import SETPREFIX
sets = self._sets
world_atoms = list(sets["selected"])
maxval = len(world_atoms)
self._tree = tree
self._portdb = porttree.dbapi
self._update_keys = ["DEPEND", "RDEPEND", "PDEPEND", "PROVIDE"]
+ self._master_repo = \
+ self._portdb.getRepositoryName(self._portdb.porttree_root)
def _grab_global_updates(self):
from portage.update import grab_updates, parse_updates
repo = self._portdb.getRepositoryPath(repo_name)
updpath = os.path.join(repo, "profiles", "updates")
if not os.path.isdir(updpath):
- # as a backwards-compatibility measure, fallback to PORTDIR
- updpath = os.path.join(self._portdb.porttree_root, "profiles", "updates")
+ continue
+
try:
rawupdates = grab_updates(updpath)
except portage.exception.DirectoryNotFound:
errors.extend(errors)
retupdates[repo_name] = upd_commands
+ if self._master_repo in retupdates:
+ retupdates['DEFAULT'] = retupdates[self._master_repo]
+
return retupdates, errors
def check(self, onProgress=None):
if onProgress:
onProgress(0, 0)
for repo, updates in allupdates.items():
+ if repo == 'DEFAULT':
+ continue
+ if not updates:
+ continue
+
+ def repo_match(repository):
+ return repository == repo or \
+ (repo == self._master_repo and \
+ repository not in allupdates)
+
for i, update_cmd in enumerate(updates):
if update_cmd[0] == "move":
origcp, newcp = update_cmd[1:]
for cpv in match(origcp):
- if aux_get(cpv, ["repository"])[0] == repo:
+ if repo_match(aux_get(cpv, ["repository"])[0]):
errors.append("'%s' moved to '%s'" % (cpv, newcp))
elif update_cmd[0] == "slotmove":
pkg, origslot, newslot = update_cmd[1:]
for cpv in match(pkg):
slot, prepo = aux_get(cpv, ["SLOT", "repository"])
- if slot == origslot and prepo == repo:
+ if slot == origslot and repo_match(prepo):
errors.append("'%s' slot moved from '%s' to '%s'" % \
(cpv, origslot, newslot))
if onProgress:
cpv_all.sort()
maxval = len(cpv_all)
aux_update = self._tree.dbapi.aux_update
- update_keys = self._update_keys
+ meta_keys = self._update_keys + ['repository']
from portage.update import update_dbentries
if onProgress:
onProgress(maxval, 0)
for i, cpv in enumerate(cpv_all):
+ metadata = dict(zip(meta_keys, aux_get(cpv, meta_keys)))
+ repository = metadata.pop('repository')
try:
- updates = allupdates[aux_get(cpv, ['repository'])[0]]
+ updates = allupdates[repository]
except KeyError:
+ try:
+ updates = allupdates['DEFAULT']
+ except KeyError:
+ continue
+ if not updates:
continue
-
- metadata = dict(zip(update_keys, aux_get(cpv, update_keys)))
metadata_updates = update_dbentries(updates, metadata)
if metadata_updates:
errors.append("'%s' has outdated metadata" % cpv)
if onProgress:
onProgress(0, 0)
for repo, updates in allupdates.items():
+ if repo == 'DEFAULT':
+ continue
+ if not updates:
+ continue
+
+ def repo_match(repository):
+ return repository == repo or \
+ (repo == self._master_repo and \
+ repository not in allupdates)
+
for i, update_cmd in enumerate(updates):
if update_cmd[0] == "move":
- move(update_cmd, repo_name=repo)
+ move(update_cmd, repo_match=repo_match)
elif update_cmd[0] == "slotmove":
- slotmove(update_cmd, repo_name=repo)
+ slotmove(update_cmd, repo_match=repo_match)
if onProgress:
onProgress(0, 0)