From 4b4699f36bd4809ce4e8765a39b0949ec4864c2f Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 1 Mar 2011 10:06:01 -0800 Subject: [PATCH] owners_cache: implicitly add parent directories We can't necessarily assume that they are explicitly listed in CONTENTS. --- pym/portage/dbapi/vartree.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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): -- 2.26.2