updatecache_flg = False
if os.path.exists(myportdir+"/metadata/cache") and updatecache_flg:
- if "--quiet" not in myopts:
- print "\n>>> Updating Portage cache: ",
- os.umask(0002)
- cachedir = os.path.normpath(portage.settings.depcachedir)
- if cachedir in ["/", "/bin", "/dev", "/etc", "/home",
- "/lib", "/opt", "/proc", "/root", "/sbin",
- "/sys", "/tmp", "/usr", "/var"]:
- print "!!! PORTAGE_CACHEDIR IS SET TO A PRIMARY ROOT DIRECTORY ON YOUR SYSTEM."
- print "!!! This is ALMOST CERTAINLY NOT what you want: "+str(cachedir)
- sys.exit(73)
- if not os.path.exists(cachedir):
- os.mkdir(cachedir)
-
- # Potentially bad
- #if os.path.exists(cachedir+"/"+myportdir):
- # portage.spawn("rm -Rf "+cachedir+"/"+myportdir+"/*",portage.settings,free=1)
-
- portage.portdb.flush_cache()
-
- ec = portage.eclass_cache.cache(portage.portdb.porttree_root)
- # kinda ugly.
- # XXX: nuke the filter when mr UNUSED_0? keys are dead
- cm = portage.settings.load_best_module("portdbapi.metadbmodule")(myportdir, "metadata/cache",
- filter(lambda x: not x.startswith("UNUSED_0"), portage.auxdbkeys))
-
- # we don't make overlay trees cache here, plus we don't trust portage.settings.categories
- porttree_root = portage.portdb.porttree_root
- conf = portage.config(config_profile_path=portage.settings.profile_path[:], \
- config_incrementals=portage.settings.incrementals[:])
-
- conf["PORTDIR_OVERLAY"] = ''
- conf.categories = portage.grabfile(os.path.join(porttree_root, "profiles", "categories"))
- try:
- i = conf.categories.index("virtual")
- if i != -1:
- conf.categories.remove(i)
- except (ValueError, IndexError):
- pass
-
- pdb = portage.portdbapi(porttree_root, conf)
-
- cp_all_list = pdb.cp_all()
- import cache.util
-
- class percentage_noise_maker(cache.util.quiet_mirroring):
- def __init__(self, dbapi):
- self.dbapi = dbapi
- self.cp_all = dbapi.cp_all()
- l = len(self.cp_all)
- self.call_update_min = 100000000
- self.min_cp_all = l/100.0
- self.count = 1
- self.pstr = ''
-
- def __iter__(self):
- for x in self.cp_all:
- self.count += 1
- if self.count > self.min_cp_all:
- self.call_update_min = 0
- self.count = 0
- for y in self.dbapi.cp_list(x):
- yield y
- self.call_update_mine = 0
-
- def update(self, *arg):
- try: self.pstr = int(self.pstr) + 1
- except ValueError: self.pstr = 1
- sys.stdout.write("%s%i%%" % ("\b" * (len(str(self.pstr))+1), self.pstr))
- sys.stdout.flush()
- self.call_update_min = 10000000
-
- def finish(self, *arg):
- sys.stdout.write("\b\b\b\b100%\n")
- sys.stdout.flush()
-
-
- if "--quiet" in myopts:
- def quicky_cpv_generator(cp_all_list):
- for x in cp_all_list:
- for y in pdb.cp_list(x):
- yield y
- source = quicky_cpv_generator(pdb.cp_all())
- noise_maker = cache.util.quiet_mirroring()
- else:
- noise_maker = source = percentage_noise_maker(pdb)
- cache.util.mirror_cache(source, cm, pdb.auxdb[porttree_root], eclass_cache=ec, verbose_instance=noise_maker)
-
- sys.stdout.flush()
+ action_metadata(myopts)
portage.portageexit()
reload(portage)
print red(" * ")+"To update portage, run 'emerge portage'."
print
+def action_metadata(myopts):
+ portage.writemsg_stdout("\n>>> Updating Portage cache: ")
+ old_umask = os.umask(0002)
+ cachedir = os.path.normpath(portage.settings.depcachedir)
+ if cachedir in ["/", "/bin", "/dev", "/etc", "/home",
+ "/lib", "/opt", "/proc", "/root", "/sbin",
+ "/sys", "/tmp", "/usr", "/var"]:
+ print >> sys.stderr, "!!! PORTAGE_DEPCACHEDIR IS SET TO A PRIMARY " + \
+ "ROOT DIRECTORY ON YOUR SYSTEM."
+ print >> sys.stderr, \
+ "!!! This is ALMOST CERTAINLY NOT what you want: '%s'" % cachedir
+ sys.exit(73)
+ if not os.path.exists(cachedir):
+ os.mkdir(cachedir)
+
+ portage.portdb.flush_cache()
+
+ ec = portage.eclass_cache.cache(portage.portdb.porttree_root)
+ myportdir = portage.settings["PORTDIR"]
+ cm = portage.settings.load_best_module("portdbapi.metadbmodule")(
+ myportdir, "metadata/cache", portage.auxdbkeys[:])
+
+ # we don't make overlay trees cache here, plus we don't trust
+ # portage.settings.categories
+ porttree_root = portage.portdb.porttree_root
+ conf = portage.config(
+ config_profile_path=portage.settings.profile_path[:], \
+ config_incrementals=portage.settings.incrementals[:])
+
+ conf["PORTDIR_OVERLAY"] = ''
+ conf.categories = portage.grabfile(
+ os.path.join(porttree_root, "profiles", "categories"))
+ try:
+ i = conf.categories.index("virtual")
+ if i != -1:
+ conf.categories.remove(i)
+ except (ValueError, IndexError):
+ pass
+
+ pdb = portage.portdbapi(porttree_root, conf)
+
+ cp_all_list = pdb.cp_all()
+ import cache.util
+
+ class percentage_noise_maker(cache.util.quiet_mirroring):
+ def __init__(self, dbapi):
+ self.dbapi = dbapi
+ self.cp_all = dbapi.cp_all()
+ l = len(self.cp_all)
+ self.call_update_min = 100000000
+ self.min_cp_all = l/100.0
+ self.count = 1
+ self.pstr = ''
+
+ def __iter__(self):
+ for x in self.cp_all:
+ self.count += 1
+ if self.count > self.min_cp_all:
+ self.call_update_min = 0
+ self.count = 0
+ for y in self.dbapi.cp_list(x):
+ yield y
+ self.call_update_mine = 0
+
+ def update(self, *arg):
+ try: self.pstr = int(self.pstr) + 1
+ except ValueError: self.pstr = 1
+ sys.stdout.write("%s%i%%" % \
+ ("\b" * (len(str(self.pstr))+1), self.pstr))
+ sys.stdout.flush()
+ self.call_update_min = 10000000
+
+ def finish(self, *arg):
+ sys.stdout.write("\b\b\b\b100%\n")
+ sys.stdout.flush()
+
+ if "--quiet" in myopts:
+ def quicky_cpv_generator(cp_all_list):
+ for x in cp_all_list:
+ for y in pdb.cp_list(x):
+ yield y
+ source = quicky_cpv_generator(pdb.cp_all())
+ noise_maker = cache.util.quiet_mirroring()
+ else:
+ noise_maker = source = percentage_noise_maker(pdb)
+ cache.util.mirror_cache(source, cm, pdb.auxdb[porttree_root],
+ eclass_cache=ec, verbose_instance=noise_maker)
+
+ sys.stdout.flush()
+ os.umask(old_umask)
+
def action_regen():
emergelog(" === regen")
#regenerate cache entries
if "--pretend" in myopts:
print "emerge: \"sync\" actions do not support \"--pretend.\""
sys.exit(1)
- action_sync(myopts, myaction)
+ if "sync" == myaction:
+ action_sync(myopts, myaction)
+ else:
+ action_metadata(myopts)
elif myaction=="regen":
action_regen()
# HELP action