On 08/02/2013 12:46 AM, Otavio Salvador wrote:
On Thu, Aug 1, 2013 at 8:04 AM, Hongxu Jia <[email protected]> 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 <[email protected]>
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?

It looks like the following 'new file mode 10755' means +x permission is used.
  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,
Hongxu


_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to