Browse Source

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
verbatim.

PR-URL: https://github.com/nodejs/node/pull/14737
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Daniel Bevenius <daniel.bevenius@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gibson Fahnestock <gibfahn@gmail.com>
v6.x
Ben Noordhuis 7 years ago
committed by Myles Borins
parent
commit
66dd898be8
No known key found for this signature in database GPG Key ID: 933B01F40B5CA946
  1. 13
      configure

13
configure

@ -1,4 +1,15 @@
#!/usr/bin/env python #!/bin/sh
# 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 import sys
if sys.version_info[0] != 2 or sys.version_info[1] not in (6, 7): if sys.version_info[0] != 2 or sys.version_info[1] not in (6, 7):

Loading…
Cancel
Save