On Thu, Mar 15, 2018 at 3:22 PM, Michał Górny <mgo...@gentoo.org> wrote:
> 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. > --- > pym/portage/dbapi/vartree.py | 10 ++++++---- > 1 file changed, 6 insertions(+), 4 deletions(-) > > diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py > index 21904edca..16c246b11 100644 > --- a/pym/portage/dbapi/vartree.py > +++ b/pym/portage/dbapi/vartree.py > @@ -3692,19 +3692,21 @@ class dblink(object): > def _is_install_masked(self, relative_path): > ret = False > for pattern in self.settings.install_mask: > + # if pattern starts with -, possibly exclude this > path > + pat_res = not pattern.startswith('-') > + if not pat_res: > + pattern = pattern[1:] > Maybe consider: pattern = pattern[1:] if pattern.startswith('-') else pattern I'm not super keen on this pattern in python, but it seems doable here. > # 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(relative_path, > pattern[1:]) > or > fnmatch.fnmatch(relative_path, pattern[1:] + '/*')): > - ret = True > - break > + ret = pat_res > # filename > else: > if > fnmatch.fnmatch(os.path.basename(relative_path), > pattern): > - ret = True > - break > + ret = pat_res > return ret > > def treewalk(self, srcroot, destroot, inforoot, myebuild, > cleanup=0, > -- > 2.16.2 > > >