Openembedded Core Discussions
 help / color / mirror / Atom feed
From: Paul Eggleton <paul.eggleton@linux.intel.com>
To: Hongxu Jia <hongxu.jia@windriver.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [PATCH 1/1] list-packageconfig-flag.py: add a script to list all PACKAGECONFIG's flags
Date: Fri, 02 Aug 2013 09:24:38 +0100	[thread overview]
Message-ID: <2353783.439DWQmp63@helios> (raw)
In-Reply-To: <2339c72ba0e5afb7379f065ad403e3209b334956.1375354695.git.hongxu.jia@windriver.com>

Hi Hongxu,

Great idea! This should be very useful indeed.

Just a few feedback points:

On Thursday 01 August 2013 19:04:05 Hongxu Jia 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@windriver.com>
> ---
>  scripts/contrib/list-packageconfig-flag.py | 180
> +++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+)
>  create mode 100755 scripts/contrib/list-packageconfig-flag.py

I think the script ought to be called "list-packageconfig-flags" rather than 
"list-packageconfig-flag".

>...
> +def parse_recipe(recipe):
> +    ''' Parse a recipe to collect PACKAGECONFIG's flags '''

This should say "collect available PACKAGECONFIG flags". The same applies to 
other messages/comments.

> +    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

So, this is fairly simple and works for most cases; however it would probably 
be a bit more robust if the script used bitbake's own parser to extract the 
flags. The "tinfoil" module should help with this. We can always address this 
in a follow-up patch later on, though - I can certainly show you some examples 
of how to do this or I can do it, whichever you prefer.

Cheers,
Paul

-- 

Paul Eggleton
Intel Open Source Technology Centre


  parent reply	other threads:[~2013-08-02  8:24 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-08-01 11:04 [PATCH 0/1] list-packageconfig-flag.py: add a script to list all PACKAGECONFIG's flags Hongxu Jia
2013-08-01 11:04 ` [PATCH 1/1] " Hongxu Jia
2013-08-01 16:46   ` Otavio Salvador
2013-08-02  1:50     ` Hongxu Jia
2013-08-02  1:54       ` Otavio Salvador
2013-08-02  8:24   ` Paul Eggleton [this message]
2013-08-02  9:14     ` Hongxu Jia
2013-08-02 10:38       ` Paul Eggleton
2013-08-02 10:03     ` Hongxu Jia
2013-08-02 10:40       ` Paul Eggleton
2013-08-03  3:15         ` Hongxu Jia
  -- strict thread matches above, loose matches on Subject: below --
2013-08-02  2:20 [PATCH V2 0/1] " Hongxu Jia
2013-08-02  2:20 ` [PATCH 1/1] " Hongxu Jia

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=2353783.439DWQmp63@helios \
    --to=paul.eggleton@linux.intel.com \
    --cc=hongxu.jia@windriver.com \
    --cc=openembedded-core@lists.openembedded.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox