diff options
Diffstat (limited to 'scripts')
| -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: |
