03-rewrite-python-shebang.sh (1122B)
1# This hook executes the following tasks: 2# - rewrites python shebangs with the corresponding python version 3 4hook() { 5 local pyver= shebang= off= 6 7 if [ -d ${PKGDESTDIR}/usr/lib/python* ]; then 8 pyver="$(find ${PKGDESTDIR}/usr/lib/python* -prune -type d | grep -o '[[:digit:]]\.[[:digit:]]$')" 9 fi 10 11 if [ -n "$python_version" ]; then 12 pyver="$python_version" 13 fi 14 15 if [ -n "$pyver" ]; then 16 default_shebang="#!/usr/bin/python${pyver%.*}" 17 fi 18 19 grep -rlIZ -m1 '^#!.*python' "${PKGDESTDIR}" | 20 while IFS= read -r -d '' file; do 21 [ ! -s "$file" ] && continue 22 23 pyinterp=$(sed -n -E -e 2q -e 's@^#!.*([[:space:]]|/)(python([0-9](\.[0-9]+)?)?)([[:space:]]+.*|$)@\2@p' "$file") 24 [ -z "$pyinterp" ] && continue 25 26 pyver=${pyinterp#python} 27 if [ -n "$pyver" ]; then 28 shebang="#!/usr/bin/python${pyver%.*}" 29 else 30 shebang="$default_shebang" 31 fi 32 33 basefile=${file#$PKGDESTDIR} 34 35 [ -n "$shebang" ] || msg_error "python_version missing in template: unable to convert shebang in $basefile\n" 36 37 echo " Shebang converted to '$shebang': $basefile" 38 sed -i "1s@.*python.*@${shebang}@" -- "$file" 39 done 40}