commit: 8f9cff73321b3ee5957357448819b505932e0e5c
Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun May 22 06:40:13 2016 +0000
Commit: Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Wed Mar 28 06:28:17 2018 +0000
URL: https://gitweb.gentoo.org/proj/portage.git/commit/?id=8f9cff73
{,PKG_}INSTALL_MASK: Support exclusions (bug 651214)
Allow INSTALL_MASK patterns to start with '-' to indicate that
a specific match is to be excluded from being masked. In this case,
the last matching pattern determines whether the file is actually
filtered out or kept.
Bug: https://bugs.gentoo.org/651214
pym/portage/util/install_mask.py | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/pym/portage/util/install_mask.py b/pym/portage/util/install_mask.py
index 506e63c1f..1667d883a 100644
--- a/pym/portage/util/install_mask.py
+++ b/pym/portage/util/install_mask.py
@@ -35,19 +35,21 @@ class InstallMask(object):
"""
ret = False
for pattern in self._install_mask:
+ # if pattern starts with -, possibly exclude this path
+ is_inclusive = not pattern.startswith('-')
+ if not is_inclusive:
+ pattern = pattern[1:]
# absolute path pattern
if pattern.startswith('/'):
# match either exact path or one of parent dirs
# the latter is done via matching pattern/*
if (fnmatch.fnmatch(path, pattern[1:])
or fnmatch.fnmatch(path,
pattern[1:] + '/*')):
- ret = True
- break
+ ret = is_inclusive
# filename
else:
if fnmatch.fnmatch(os.path.basename(path),
pattern):
- ret = True
- break
+ ret = is_inclusive
return ret