W dniu czw, 15.03.2018 o godzinie 17∶02 -0400, użytkownik Alec Warner napisał: > 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.
I still need pat_res to know whether it's '+' or '-'. > > > > # 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 > > > > > > -- Best regards, Michał Górny