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


Reply via email to