diff options
author | Paul Eggleton <paul.eggleton@linux.intel.com> | 2014-05-23 14:30:34 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-06-25 13:51:45 +0100 |
commit | 50264f799f48918c30f67a233baeec95f64389f0 (patch) | |
tree | f373cf786b76e374f48a40d13927db2f1328d937 | |
parent | 1ed4c5d39e14f365da78c8881ca5ee34dcd82db2 (diff) | |
download | poky-50264f799f48918c30f67a233baeec95f64389f0.tar.gz |
list-packageconfig-flags: improve option parsing
* Use optparse instead of getopt (less code & automatic help)
* Change help text / output to use "recipe" instead of "package"
* Print something to indicate the script is still gathering information
Note that the long options have been renamed as appropriate.
(From OE-Core rev: 0ab4da8667cdf027d841e04ed5a35ddd45ad494a)
Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rwxr-xr-x | scripts/contrib/list-packageconfig-flags.py | 81 |
1 files changed, 29 insertions, 52 deletions
diff --git a/scripts/contrib/list-packageconfig-flags.py b/scripts/contrib/list-packageconfig-flags.py index 3db429834b..598b5c3fc6 100755 --- a/scripts/contrib/list-packageconfig-flags.py +++ b/scripts/contrib/list-packageconfig-flags.py | |||
@@ -14,13 +14,14 @@ | |||
14 | # along with this program; if not, write to the Free Software Foundation. | 14 | # along with this program; if not, write to the Free Software Foundation. |
15 | # | 15 | # |
16 | # Copyright (C) 2013 Wind River Systems, Inc. | 16 | # Copyright (C) 2013 Wind River Systems, Inc. |
17 | # Copyright (C) 2014 Intel Corporation | ||
17 | # | 18 | # |
18 | # - list available pkgs which have PACKAGECONFIG flags | 19 | # - list available recipes which have PACKAGECONFIG flags |
19 | # - list available PACKAGECONFIG flags and all affected pkgs | 20 | # - list available PACKAGECONFIG flags and all affected recipes |
20 | # - list all pkgs and PACKAGECONFIG information | 21 | # - list all recipes and PACKAGECONFIG information |
21 | 22 | ||
22 | import sys | 23 | import sys |
23 | import getopt | 24 | import optparse |
24 | import os | 25 | import os |
25 | 26 | ||
26 | 27 | ||
@@ -41,27 +42,6 @@ import bb.cooker | |||
41 | import bb.providers | 42 | import bb.providers |
42 | import bb.tinfoil | 43 | import bb.tinfoil |
43 | 44 | ||
44 | usage_body = ''' list available pkgs which have PACKAGECONFIG flags | ||
45 | |||
46 | OPTION: | ||
47 | -h, --help display this help and exit | ||
48 | -f, --flag list available PACKAGECONFIG flags and all affected pkgs | ||
49 | -a, --all list all pkgs and PACKAGECONFIG information | ||
50 | -p, --prefer list pkgs with preferred version | ||
51 | |||
52 | EXAMPLE: | ||
53 | list-packageconfig-flags.py | ||
54 | list-packageconfig-flags.py -f | ||
55 | list-packageconfig-flags.py -a | ||
56 | list-packageconfig-flags.py -p | ||
57 | list-packageconfig-flags.py -f -p | ||
58 | list-packageconfig-flags.py -a -p | ||
59 | ''' | ||
60 | |||
61 | def usage(): | ||
62 | print 'Usage: %s [-f|-a] [-p]' % os.path.basename(sys.argv[0]) | ||
63 | print usage_body | ||
64 | |||
65 | def get_fnlist(bbhandler, pkg_pn, preferred): | 45 | def get_fnlist(bbhandler, pkg_pn, preferred): |
66 | ''' Get all recipe file names ''' | 46 | ''' Get all recipe file names ''' |
67 | if preferred: | 47 | if preferred: |
@@ -119,13 +99,13 @@ def collect_flags(pkg_dict): | |||
119 | 99 | ||
120 | def display_pkgs(pkg_dict): | 100 | def display_pkgs(pkg_dict): |
121 | ''' Display available pkgs which have PACKAGECONFIG flags ''' | 101 | ''' Display available pkgs which have PACKAGECONFIG flags ''' |
122 | pkgname_len = len("PACKAGE NAME") + 1 | 102 | pkgname_len = len("RECIPE NAME") + 1 |
123 | for pkgname in pkg_dict: | 103 | for pkgname in pkg_dict: |
124 | if pkgname_len < len(pkgname): | 104 | if pkgname_len < len(pkgname): |
125 | pkgname_len = len(pkgname) | 105 | pkgname_len = len(pkgname) |
126 | pkgname_len += 1 | 106 | pkgname_len += 1 |
127 | 107 | ||
128 | header = '%-*s%s' % (pkgname_len, str("PACKAGE NAME"), str("PACKAGECONFIG FLAGS")) | 108 | header = '%-*s%s' % (pkgname_len, str("RECIPE NAME"), str("PACKAGECONFIG FLAGS")) |
129 | print header | 109 | print header |
130 | print str("").ljust(len(header), '=') | 110 | print str("").ljust(len(header), '=') |
131 | for pkgname in sorted(pkg_dict): | 111 | for pkgname in sorted(pkg_dict): |
@@ -136,7 +116,7 @@ def display_flags(flag_dict): | |||
136 | ''' Display available PACKAGECONFIG flags and all affected pkgs ''' | 116 | ''' Display available PACKAGECONFIG flags and all affected pkgs ''' |
137 | flag_len = len("PACKAGECONFIG FLAG") + 5 | 117 | flag_len = len("PACKAGECONFIG FLAG") + 5 |
138 | 118 | ||
139 | header = '%-*s%s' % (flag_len, str("PACKAGECONFIG FLAG"), str("PACKAGE NAMES")) | 119 | header = '%-*s%s' % (flag_len, str("PACKAGECONFIG FLAG"), str("RECIPE NAMES")) |
140 | print header | 120 | print header |
141 | print str("").ljust(len(header), '=') | 121 | print str("").ljust(len(header), '=') |
142 | 122 | ||
@@ -161,43 +141,40 @@ def display_all(data_dict): | |||
161 | print '' | 141 | print '' |
162 | 142 | ||
163 | def main(): | 143 | def main(): |
164 | listtype = 'pkgs' | ||
165 | preferred = False | ||
166 | pkg_dict = {} | 144 | pkg_dict = {} |
167 | flag_dict = {} | 145 | flag_dict = {} |
168 | 146 | ||
169 | # Collect and validate input | 147 | # Collect and validate input |
170 | try: | 148 | parser = optparse.OptionParser( |
171 | opts, args = getopt.getopt(sys.argv[1:], "hfap", ["help", "flag", "all", "prefer"]) | 149 | description = "Lists recipes and PACKAGECONFIG flags. Without -a or -f, recipes and their available PACKAGECONFIG flags are listed.", |
172 | except getopt.GetoptError, err: | 150 | usage = """ |
173 | print >> sys.stderr,'%s' % str(err) | 151 | %prog [options]""") |
174 | usage() | 152 | |
175 | sys.exit(2) | 153 | parser.add_option("-f", "--flags", |
176 | for opt, value in opts: | 154 | help = "list available PACKAGECONFIG flags and affected recipes", |
177 | if opt in ('-h', '--help'): | 155 | action="store_const", dest="listtype", const="flags", default="recipes") |
178 | usage() | 156 | parser.add_option("-a", "--all", |
179 | sys.exit(0) | 157 | help = "list all recipes and PACKAGECONFIG information", |
180 | elif opt in ('-f', '--flag'): | 158 | action="store_const", dest="listtype", const="all") |
181 | listtype = 'flags' | 159 | parser.add_option("-p", "--preferred-only", |
182 | elif opt in ('-a', '--all'): | 160 | help = "where multiple recipe versions are available, list only the preferred version", |
183 | listtype = 'all' | 161 | action="store_true", dest="preferred", default=False) |
184 | elif opt in ('-p', '--prefer'): | 162 | |
185 | preferred = True | 163 | options, args = parser.parse_args(sys.argv) |
186 | else: | ||
187 | assert False, "unhandled option" | ||
188 | 164 | ||
189 | bbhandler = bb.tinfoil.Tinfoil() | 165 | bbhandler = bb.tinfoil.Tinfoil() |
190 | bbhandler.prepare() | 166 | bbhandler.prepare() |
191 | data_dict = get_recipesdata(bbhandler, preferred) | 167 | print("Gathering recipe data...") |
168 | data_dict = get_recipesdata(bbhandler, options.preferred) | ||
192 | 169 | ||
193 | if listtype == 'flags': | 170 | if options.listtype == 'flags': |
194 | pkg_dict = collect_pkgs(data_dict) | 171 | pkg_dict = collect_pkgs(data_dict) |
195 | flag_dict = collect_flags(pkg_dict) | 172 | flag_dict = collect_flags(pkg_dict) |
196 | display_flags(flag_dict) | 173 | display_flags(flag_dict) |
197 | elif listtype == 'pkgs': | 174 | elif options.listtype == 'recipes': |
198 | pkg_dict = collect_pkgs(data_dict) | 175 | pkg_dict = collect_pkgs(data_dict) |
199 | display_pkgs(pkg_dict) | 176 | display_pkgs(pkg_dict) |
200 | elif listtype == 'all': | 177 | elif options.listtype == 'all': |
201 | display_all(data_dict) | 178 | display_all(data_dict) |
202 | 179 | ||
203 | if __name__ == "__main__": | 180 | if __name__ == "__main__": |