#!/bin/bash . $(dirname ${0})/qa-include DESC="Detect invalid interpreters." check() { local failed=0 local file local interpreter for file in $(find ${BUILDROOT} -type f 2>/dev/null); do # If a file is not executeable we don't need to check it [ -x "${file}" ] || continue if file_is_script ${file}; then interpreter=$(file_get_interpreter ${file}) if grep -q /usr/local <<<${interpreter}; then failed=1 log_error " Interpreter in /usr/local: ${file}" fi # Search for bad /usr/bin/env if [ "$(basename ${interpreter})" = "env" ]; then # Autofix that crap sed -i ${file} \ -e "s,/usr/bin/env python.\..,/usr/bin/python," \ -e "s,/usr/bin/env python,/usr/bin/python," \ -e "s,/usr/bin/env perl,/usr/bin/perl," # If we could not fix it, raise an error if [ "${interpreter}" = "$(file_get_interpreter ${file})" ]; then failed=1 log_error " Script uses forbidden \"env\" interpreter: ${file}" fi fi fi done return ${failed} } run