From: Zac Medico Date: Tue, 1 Mar 2011 18:06:01 +0000 (-0800) Subject: owners_cache: implicitly add parent directories X-Git-Tag: v2.2.0_alpha26~7 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=4b4699f36bd4809ce4e8765a39b0949ec4864c2f;p=portage.git owners_cache: implicitly add parent directories We can't necessarily assume that they are explicitly listed in CONTENTS. --- diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 2e97fdbee..2e5d87379 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -823,8 +823,25 @@ class vardbapi(dbapi): if not contents: # Empty path is a code used to represent empty contents. self._add_path("", pkg_hash) + + # When adding paths, implicitly add parent directories, + # since we can't necessarily assume that they are + # explicitly listed in CONTENTS. + added_paths = set() for x in contents: - self._add_path(x[root_len:], pkg_hash) + x = x[root_len:] + added_paths.add(x) + self._add_path(x, pkg_hash) + x_split = x.split(os.sep) + x_split.pop() + while x_split: + parent = os.sep.join(x_split) + if parent in added_paths: + break + added_paths.add(parent) + self._add_path(parent, pkg_hash) + x_split.pop() + self._vardb._aux_cache["modified"].add(cpv) def _add_path(self, path, pkg_hash):