Browse files

build: better support for python3 systems

Improve support for systems where `python` is actually `python3`.

Not all systems have a `python2` binary, so simply updating the shebang
won't work.

What we can do is apply some cleverness: start life as a shell script,
locate the python binary, then re-execute the script but this time as
python code.

Special care is taken to ensure that spaces in arguments are passed on

PR-URL: #14737
Reviewed-By: Anna Henningsen <>
Reviewed-By: Daniel Bevenius <>
Reviewed-By: Colin Ihrig <>
Reviewed-By: James M Snell <>
Reviewed-By: Gibson Fahnestock <>
  • Loading branch information...
bnoordhuis authored and MylesBorins committed Aug 10, 2017
1 parent 1e231ba commit 66dd898be8ae86192f8a77d7d8eb05a4f091a611
Showing with 12 additions and 1 deletion.
  1. +12 −1 configure
@@ -1,4 +1,15 @@
#!/usr/bin/env python
# Locate python2 interpreter and re-execute the script. Note that the
# mix of single and double quotes is intentional, as is the fact that
# the ] goes on a new line.
_=[ 'exec' '/bin/sh' '-c' '''
which python2.7 >/dev/null && exec python2.7 "$0" "$@"
which python2 >/dev/null && exec python2 "$0" "$@"
exec python "$0" "$@"
''' "$0" "$@"
del _
import sys
if sys.version_info[0] != 2 or sys.version_info[1] not in (6, 7):

0 comments on commit 66dd898

Please sign in to comment.