]>
Commit | Line | Data |
---|---|---|
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 | |
25 | if [ "$(basename ${interpreter})" = "env" ]; then | |
26 | # Autofix that crap | |
27 | sed -i ${file} \ | |
28 | -e "s,/usr/bin/env python.\..,/usr/bin/python," \ | |
29 | -e "s,/usr/bin/env python,/usr/bin/python," \ | |
30 | -e "s,/usr/bin/env perl,/usr/bin/perl," | |
31 | ||
32 | # If we could not fix it, raise an error | |
33 | if [ "${interpreter}" = "$(file_get_interpreter ${file})" ]; then | |
34 | failed=1 | |
35 | log_error " Script uses forbidden \"env\" interpreter: ${file}" | |
36 | fi | |
37 | fi | |
38 | fi | |
39 | done | |
40 | ||
41 | return ${failed} | |
42 | } | |
43 | ||
44 | run |