Add support for a EGENCACHE_DEFAULT_OPTS variable in make.conf.
authorZac Medico <zmedico@gentoo.org>
Wed, 1 Apr 2009 00:08:06 +0000 (00:08 -0000)
committerZac Medico <zmedico@gentoo.org>
Wed, 1 Apr 2009 00:08:06 +0000 (00:08 -0000)
svn path=/main/trunk/; revision=13266

bin/egencache
pym/portage/__init__.py

index 3c48946121b5fb3c907cbd2d25ee2b681269d86b..66af2a75a265e8ad4a43fa5731d4e7befa93bf4c 100755 (executable)
@@ -50,12 +50,11 @@ def parse_args(args):
                action="store_true",
                help="enable rsync stat collision workaround " + \
                        "for bug 139134 (use with --update)")
+       parser.add_option("--ignore-default-opts",
+               action="store_true",
+               help="do not use the EGENCACHE_DEFAULT_OPTS environment variable")
        options, args = parser.parse_args(args)
 
-       if not options.update:
-               parser.error('No action specified (--update ' + \
-                       'is the only available action)')
-
        if options.jobs:
                jobs = None
                try:
@@ -105,7 +104,7 @@ def parse_args(args):
                if str(atom) != atom.cp:
                        parser.error('Atom is too specific: %s' % (atom,))
 
-       return options, args
+       return parser, options, args
 
 class GenCache(object):
        def __init__(self, portdb, cp_iter=None, max_jobs=None, max_load=None,
@@ -223,7 +222,7 @@ class GenCache(object):
                                        level=logging.ERROR, noiselevel=-1)
 
 def egencache_main(args):
-       options, args = parse_args(args)
+       parser, options, atoms = parse_args(args)
 
        config_root = options.config_root
        if config_root is None:
@@ -242,6 +241,27 @@ def egencache_main(args):
        settings = portage.config(config_root=config_root,
                target_root='/', env=env)
 
+       default_opts = None
+       if not options.ignore_default_opts:
+               default_opts = settings.get('EGENCACHE_DEFAULT_OPTS', '').split()
+
+       if default_opts:
+               parser, options, args = parse_args(default_opts + args)
+
+               if options.config_root is not None:
+                       config_root = options.config_root
+
+               if options.cache_dir is not None:
+                       env['PORTAGE_DEPCACHEDIR'] = options.cache_dir
+
+               settings = portage.config(config_root=config_root,
+                       target_root='/', env=env)
+
+       if not options.update:
+               parser.error('No action specified (--update ' + \
+                       'is the only available action)')
+               return 1
+
        if 'metadata-transfer' not in settings.features:
                writemsg_level("ecachegen: warning: " + \
                        "automatically enabling FEATURES=metadata-transfer\n",
@@ -255,8 +275,8 @@ def egencache_main(args):
        portdb = portage.portdbapi(settings["PORTDIR"], mysettings=settings)
 
        cp_iter = None
-       if args:
-               cp_iter = iter(args)
+       if atoms:
+               cp_iter = iter(atoms)
 
        gen_cache = GenCache(portdb, cp_iter=cp_iter,
                max_jobs=options.jobs,
index a5828cf5aa1a1f923578510740c122f126339c55..844fd643fe190b9667b137a2f423b87f60f24708 100644 (file)
@@ -1091,7 +1091,7 @@ class config(object):
        _environ_filter += [
                "ACCEPT_KEYWORDS", "AUTOCLEAN",
                "CLEAN_DELAY", "COLLISION_IGNORE", "CONFIG_PROTECT",
-               "CONFIG_PROTECT_MASK", "EMERGE_DEFAULT_OPTS",
+               "CONFIG_PROTECT_MASK", "EGENCACHE_DEFAULT_OPTS", "EMERGE_DEFAULT_OPTS",
                "EMERGE_WARNING_DELAY", "FETCHCOMMAND", "FETCHCOMMAND_FTP",
                "FETCHCOMMAND_HTTP", "FETCHCOMMAND_SFTP",
                "GENTOO_MIRRORS", "NOCONFMEM", "O",