Gentoo Archives: gentoo-portage-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-portage-dev@l.g.o
Cc: "Michał Górny" <mgorny@g.o>
Subject: [gentoo-portage-dev] [PATCH 3/3] portage.dbapi.vartree: Support exclusions in INSTALL_MASK
Date: Sun, 22 May 2016 06:56:42
Message-Id: 20160522065604.10593-4-mgorny@gentoo.org
In Reply to: [gentoo-portage-dev] [PATCH 0/3] INSTALL_MASK redesign, part I by "Michał Górny"
1 Allow INSTALL_MASK patterns to start with '-' to indicate that
2 a specific match is to be excluded from being masked. In this case,
3 the last matching pattern determines whether the file is actually
4 filtered out or kept.
5 ---
6 pym/portage/dbapi/vartree.py | 10 ++++++----
7 1 file changed, 6 insertions(+), 4 deletions(-)
8
9 diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py
10 index 8e5ac43..d02d850 100644
11 --- a/pym/portage/dbapi/vartree.py
12 +++ b/pym/portage/dbapi/vartree.py
13 @@ -3690,19 +3690,21 @@ class dblink(object):
14 def _is_install_masked(self, relative_path):
15 ret = False
16 for pattern in self.settings.install_mask:
17 + # if pattern starts with -, possibly exclude this path
18 + pat_res = not pattern.startswith('-')
19 + if not pat_res:
20 + pattern = pattern[1:]
21 # absolute path pattern
22 if pattern.startswith('/'):
23 # match either exact path or one of parent dirs
24 # the latter is done via matching pattern/*
25 if (fnmatch.fnmatch(relative_path, pattern[1:])
26 or fnmatch.fnmatch(relative_path, pattern[1:] + '/*')):
27 - ret = True
28 - break
29 + ret = pat_res
30 # filename
31 else:
32 if fnmatch.fnmatch(os.path.basename(relative_path), pattern):
33 - ret = True
34 - break
35 + ret = pat_res
36 return ret
37
38 def treewalk(self, srcroot, destroot, inforoot, myebuild, cleanup=0,
39 --
40 2.8.3

Replies