diff options
author | Zac Medico <zmedico@gentoo.org> | 2011-03-01 10:06:01 -0800 |
---|---|---|
committer | Zac Medico <zmedico@gentoo.org> | 2011-03-01 10:06:01 -0800 |
commit | 4b4699f36bd4809ce4e8765a39b0949ec4864c2f (patch) | |
tree | ba20e16c93cb1e7bf87360b65e7967d2235cd68c | |
parent | afd70ceacf522efeb64ea0cbf4626c7533e2c021 (diff) | |
download | portage-4b4699f36bd4809ce4e8765a39b0949ec4864c2f.tar.gz portage-4b4699f36bd4809ce4e8765a39b0949ec4864c2f.tar.bz2 portage-4b4699f36bd4809ce4e8765a39b0949ec4864c2f.zip |
owners_cache: implicitly add parent directories
We can't necessarily assume that they are explicitly listed in
CONTENTS.
-rw-r--r-- | pym/portage/dbapi/vartree.py | 19 |
1 files changed, 18 insertions, 1 deletions
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): |