Generate an error if there are no ebuilds found for a package that's
authorZac Medico <zmedico@gentoo.org>
Thu, 30 Apr 2009 06:57:04 +0000 (06:57 -0000)
committerZac Medico <zmedico@gentoo.org>
Thu, 30 Apr 2009 06:57:04 +0000 (06:57 -0000)
specified on the commandline. (trunk r13282)

svn path=/main/branches/2.1.6/; revision=13457

bin/egencache

index 66af2a75a265e8ad4a43fa5731d4e7befa93bf4c..923bd16646efec03790012741c3b664528092a40 100755 (executable)
@@ -116,8 +116,10 @@ class GenCache(object):
                if cp_iter is not None:
                        self._cp_set = set(cp_iter)
                        cp_iter = iter(self._cp_set)
+                       self._cp_missing = self._cp_set.copy()
                else:
                        self._cp_set = None
+                       self._cp_missing = set()
                self._regen = _emerge.MetadataRegen(portdb, cp_iter=cp_iter,
                        consumer=self._metadata_callback,
                        max_jobs=max_jobs, max_load=max_load)
@@ -131,6 +133,7 @@ class GenCache(object):
 
        def _metadata_callback(self, cpv, ebuild_path, repo_path, metadata):
                self._existing_nodes.add(cpv)
+               self._cp_missing.discard(portage.cpv_getkey(cpv))
                if metadata is not None:
                        if metadata.get('EAPI') == '0':
                                del metadata['EAPI']
@@ -174,6 +177,13 @@ class GenCache(object):
                self._regen.run()
                self.returncode |= self._regen.returncode
 
+               if self._cp_missing:
+                       self.returncode |= 1
+                       for cp in sorted(self._cp_missing):
+                               writemsg_level(
+                                       "No ebuilds found for '%s'\n"  % (cp,),
+                                       level=logging.ERROR, noiselevel=-1)
+
                trg_cache = self._trg_cache
                dead_nodes = None
                if self._global_cleanse: