void-packages

Void Source Packages
git clone git://ezup.dev/void-packages.git
Log | Files | Refs | README | LICENSE

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}