From 908f430504c6142a0c0e452e9d9a9dcd808f87c6 Mon Sep 17 00:00:00 2001 From: Zac Medico Date: Tue, 1 Mar 2011 10:06:01 -0800 Subject: 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(-) (limited to 'pym') diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 9be12fb3e..b8881c817 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -822,8 +822,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): -- cgit v1.2.3-1-g7c22