[OE-core] [PATCH 1/1] list-packageconfig-flag.py: add a script to list all PACKAGECONFIG's flags

Otavio Salvador otavio at ossystems.com.br
Fri Aug 2 01:54:24 UTC 2013


On Thu, Aug 1, 2013 at 10:50 PM, Hongxu Jia <hongxu.jia at windriver.com> wrote:
> On 08/02/2013 12:46 AM, Otavio Salvador wrote:
>>
>> On Thu, Aug 1, 2013 at 8:04 AM, Hongxu Jia <hongxu.jia at windriver.com>
>> wrote:
>>>
>>> list-packageconfig-flag.py will walk the METADIR and collect recipes
>>> which
>>> have PACKAGECONFIG's flags.
>>>
>>> The default display is to list recipes which have PACKAGECONFIG's flags
>>> in
>>> METADIR. If option '-f' is used, it will list PACKAGECONFIG's flags and
>>> all
>>> affected recipes in METADIR
>>>
>>> EXAMPLE:
>>> list-packageconfig-flag.py poky/meta poky/meta-yocto
>>> RECIPE NAME          PACKAGECONFIG's flag
>>> =========================================
>>> libarchive_2.8.5.bb  acl xattr largefile zlib bz2 xz openssl libxml2
>>> expat
>>> strace_4.8.bb        libaio acl
>>> connman.inc          wifi bluetooth 3g tist openvpn vpnc l2tp pptp wispr
>>>
>>> list-packageconfig-flag.py -f poky/meta poky/meta-yocto
>>> PACKAGECONFIG's flag     RECIPE NAME
>>> ====================================
>>> speex                    gstreamer1.0-plugins-good.inc
>>> keyutils                 rpm_5.4.9.bb
>>> gallium-egl              mesa.inc
>>>
>>> [YOCTO #4368]
>>>
>>> Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
>>
>> Cool! :-)
>>
>>>   scripts/contrib/list-packageconfig-flag.py | 180
>>> +++++++++++++++++++++++++++++
>>
>> I'd drop .py extension and use +x permission.
>>
> Most scripts in scripts/contrib have '.py' or '.sh' extension, is it the
> rule to be followed or not?

I'd prefer to not have the .py and .sh extensions. The script language
is a technical detail and it does not seem important to be evident.
But I'd say for now, keep it and  we can change it in a later patch.

> It looks like the following 'new file mode 10755' means +x permission is
> used.

Missed.

>>>   1 file changed, 180 insertions(+)
>>>   create mode 100755 scripts/contrib/list-packageconfig-flag.py
>>>
>>> diff --git a/scripts/contrib/list-packageconfig-flag.py
>>> b/scripts/contrib/list-packageconfig-flag.py
>>> new file mode 100755
>>> index 0000000..7a5568f
>>> --- /dev/null
>>> +++ b/scripts/contrib/list-packageconfig-flag.py
>>> @@ -0,0 +1,180 @@
>>> +#!/usr/bin/env python
>>> +
>>> +# This program is free software; you can redistribute it and/or modify
>>> +# it under the terms of the GNU General Public License as published by
>>> +# the Free Software Foundation; either version 2 of the License, or
>>> +# (at your option) any later version.
>>> +#
>>> +# This program is distributed in the hope that it will be useful,
>>> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
>>> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
>>> +# GNU General Public License for more details.
>>> +#
>>> +# You should have received a copy of the GNU General Public License
>>> +# along with this program; if not, write to the Free Software
>>> Foundation.
>>> +#
>>> +# Copyright (C) 2013 Wind River Systems, Inc.
>>> +#
>>> +# list recipes which have PACKAGECONFIG's flags in METADIR
>>> +# list PACKAGECONFIG's flags and all affected recipes in METADIR
>>> +#
>>> +
>>> +import sys
>>> +import getopt
>>> +import os
>>> +import re
>>> +
>>> +usage_body = '''  list recipes which have PACKAGECONFIG's flags in
>>> METADIR
>>> +
>>> +OPTION:
>>> +  -h, --help  display this help and exit
>>> +  -f, --flag  list PACKAGECONFIG's flags and all affected recipes in
>>> METADIR
>>> +
>>> +EXAMPLE:
>>> +list-packageconfig-flag.py poky/meta poky/meta-yocto
>>> +list-packageconfig-flag.py -f poky/meta poky/meta-yocto
>>> +'''
>>> +
>>> +def usage():
>>> +    print 'Usage: %s [OPTION] [METADIR]...' %
>>> os.path.basename(sys.argv[0])
>>> +    print usage_body
>>> +
>>> +def parse_recipe(recipe):
>>> +    ''' Parse a recipe to collect PACKAGECONFIG's flags '''
>>> +    prog = re.compile(r' *PACKAGECONFIG\[(?P<flag>.*)\] *=.*')
>>> +    try:
>>> +        r = open(recipe)
>>> +    except IOError as (errno, strerror):
>>> +        print >> sys.stderr, 'WARNING: Failed to open recipe', recipe
>>> +
>>> +    flaglist = []
>>> +    for line in r:
>>> +        # Strip any comments from the line
>>> +        line = line.rsplit('#')[0]
>>> +        m = prog.match(line)
>>> +        if m:
>>> +            flaglist.append(m.group('flag'))
>>> +    r.close()
>>> +
>>> +    return flaglist
>>> +
>>> +def process_recipes(metadir):
>>> +    ''' Collect recipes which have PACKAGECONFIG's flags in METADIR '''
>>> +    # recipesdict = {'recipe': ['flag1', 'flag2',...]}
>>> +    recipesdict = {}
>>> +    for root,dirs,files in os.walk(metadir):
>>> +        for name in files:
>>> +            if name.find(".bb") >= 0 or name.find(".inc") >= 0:
>>> +                flaglist = parse_recipe(os.path.join(root,name))
>>> +                if flaglist:
>>> +                    recipesdict[name] = flaglist
>>> +
>>> +    return recipesdict
>>
>> In case a PACKAGECONFIG is add by a class. I think this case is missing
>> here.
>
> Agree, sorry for the missing, I will add it.

Thanks.

-- 
Otavio Salvador                             O.S. Systems
http://www.ossystems.com.br        http://projetos.ossystems.com.br
Mobile: +55 (53) 9981-7854            Mobile: +1 (347) 903-9750



More information about the Openembedded-core mailing list