]>
Commit | Line | Data |
---|---|---|
f165e102 MT |
1 | #!/bin/bash |
2 | ||
3 | . $(dirname ${0})/qa-include | |
4 | ||
5 | DESC="Detect invalid interpreters." | |
6 | ||
7 | check() { | |
8 | local failed=0 | |
9 | ||
10 | local file | |
11 | local interpreter | |
12 | for file in $(find ${BUILDROOT} -type f 2>/dev/null); do | |
13 | # If a file is not executeable we don't need to check it | |
14 | [ -x "${file}" ] || continue | |
15 | ||
16 | if file_is_script ${file}; then | |
17 | interpreter=$(file_get_interpreter ${file}) | |
18 | ||
19 | if grep -q /usr/local <<<${interpreter}; then | |
20 | failed=1 | |
21 | log_error " Interpreter in /usr/local: ${file}" | |
22 | fi | |
23 | ||
24 | # Search for bad /usr/bin/env | |
657e6032 MT |
25 | interp=$(basename ${interpreter} 2>/dev/null) |
26 | if [ "${interp}" = "env" ]; then | |
f165e102 MT |
27 | # Autofix that crap |
28 | sed -i ${file} \ | |
05654ca9 | 29 | -e "s,/usr/bin/env \(/usr/bin/.*\),\1," \ |
657e6032 | 30 | -e "s,/usr/bin/env python\(.*\),/usr/bin/python\1," \ |
f165e102 | 31 | -e "s,/usr/bin/env python,/usr/bin/python," \ |
0f41600f SS |
32 | -e "s,/usr/bin/env perl,/usr/bin/perl," \ |
33 | -e "s,/usr/bin/env ruby,/usr/bin/ruby," | |
f165e102 MT |
34 | |
35 | # If we could not fix it, raise an error | |
36 | if [ "${interpreter}" = "$(file_get_interpreter ${file})" ]; then | |
37 | failed=1 | |
38 | log_error " Script uses forbidden \"env\" interpreter: ${file}" | |
39 | fi | |
40 | fi | |
41 | fi | |
42 | done | |
43 | ||
44 | return ${failed} | |
45 | } | |
46 | ||
47 | run |