diff options
Diffstat (limited to 'scripts/verify-bashisms')
-rwxr-xr-x | scripts/verify-bashisms | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/scripts/verify-bashisms b/scripts/verify-bashisms index ed0a5631d0..613f174a97 100755 --- a/scripts/verify-bashisms +++ b/scripts/verify-bashisms | |||
@@ -71,6 +71,20 @@ if __name__=='__main__': | |||
71 | print("Cannot find checkbashisms.pl on $PATH, get it from https://anonscm.debian.org/cgit/collab-maint/devscripts.git/plain/scripts/checkbashisms.pl") | 71 | print("Cannot find checkbashisms.pl on $PATH, get it from https://anonscm.debian.org/cgit/collab-maint/devscripts.git/plain/scripts/checkbashisms.pl") |
72 | sys.exit(1) | 72 | sys.exit(1) |
73 | 73 | ||
74 | # The order of defining the worker function, | ||
75 | # initializing the pool and connecting to the | ||
76 | # bitbake server is crucial, don't change it. | ||
77 | def func(item): | ||
78 | fn, scripts = item | ||
79 | result = [] | ||
80 | for key, script in scripts: | ||
81 | r = process(fn, key, script) | ||
82 | if r: result.extend(r) | ||
83 | return fn, result | ||
84 | |||
85 | import multiprocessing | ||
86 | pool = multiprocessing.Pool() | ||
87 | |||
74 | tinfoil = get_tinfoil() | 88 | tinfoil = get_tinfoil() |
75 | 89 | ||
76 | # This is only the default configuration and should iterate over | 90 | # This is only the default configuration and should iterate over |
@@ -83,32 +97,24 @@ if __name__=='__main__': | |||
83 | else: | 97 | else: |
84 | initial_pns = sorted(pkg_pn) | 98 | initial_pns = sorted(pkg_pn) |
85 | 99 | ||
86 | pns = [] | 100 | pns = {} |
87 | print("Generating file list...") | 101 | print("Generating scripts...") |
88 | for pn in initial_pns: | 102 | for pn in initial_pns: |
89 | for fn in pkg_pn[pn]: | 103 | for fn in pkg_pn[pn]: |
90 | # There's no point checking multiple BBCLASSEXTENDed variants of the same recipe | 104 | # There's no point checking multiple BBCLASSEXTENDed variants of the same recipe |
91 | realfn, _, _ = bb.cache.virtualfn2realfn(fn) | 105 | realfn, _, _ = bb.cache.virtualfn2realfn(fn) |
92 | if realfn not in pns: | 106 | if realfn not in pns: |
93 | pns.append(realfn) | 107 | data = tinfoil.parse_recipe_file(realfn) |
94 | 108 | scripts = [] | |
95 | 109 | for key in data.keys(): | |
96 | def func(fn): | 110 | if data.getVarFlag(key, "func") and not data.getVarFlag(key, "python"): |
97 | result = [] | 111 | script = data.getVar(key, False) |
98 | data = tinfoil.parse_recipe_file(fn) | 112 | if script: |
99 | for key in data.keys(): | 113 | scripts.append((key, script)) |
100 | if data.getVarFlag(key, "func") and not data.getVarFlag(key, "python"): | 114 | pns[realfn] = scripts |
101 | script = data.getVar(key, False) | ||
102 | if not script: continue | ||
103 | #print ("%s:%s" % (fn, key)) | ||
104 | r = process(fn, key, script) | ||
105 | if r: result.extend(r) | ||
106 | return fn, result | ||
107 | 115 | ||
108 | print("Scanning scripts...\n") | 116 | print("Scanning scripts...\n") |
109 | import multiprocessing | 117 | for pn, results in pool.imap(func, pns.items()): |
110 | pool = multiprocessing.Pool() | ||
111 | for pn,results in pool.imap(func, pns): | ||
112 | if results: | 118 | if results: |
113 | print(pn) | 119 | print(pn) |
114 | for message,source in results: | 120 | for message,source in results: |