]> git.ipfire.org Git - people/stevee/pakfire.git/blame - src/quality-agent/050-invalid-interpreters
quality-agent: Remove any absolute path arguments from env interpreter
[people/stevee/pakfire.git] / src / quality-agent / 050-invalid-interpreters
CommitLineData
f165e102
MT
1#!/bin/bash
2
3. $(dirname ${0})/qa-include
4
5DESC="Detect invalid interpreters."
6
7check() {
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
47run