]> git.ipfire.org Git - people/stevee/pakfire.git/blob - src/quality-agent/050-invalid-interpreters
Use autotools.
[people/stevee/pakfire.git] / src / quality-agent / 050-invalid-interpreters
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 interp=$(basename ${interpreter} 2>/dev/null)
26 if [ "${interp}" = "env" ]; then
27 # Autofix that crap
28 sed -i ${file} \
29 -e "s,/usr/bin/env python\(.*\),/usr/bin/python\1," \
30 -e "s,/usr/bin/env python,/usr/bin/python," \
31 -e "s,/usr/bin/env perl,/usr/bin/perl," \
32 -e "s,/usr/bin/env ruby,/usr/bin/ruby,"
33
34 # If we could not fix it, raise an error
35 if [ "${interpreter}" = "$(file_get_interpreter ${file})" ]; then
36 failed=1
37 log_error " Script uses forbidden \"env\" interpreter: ${file}"
38 fi
39 fi
40 fi
41 done
42
43 return ${failed}
44 }
45
46 run