#!/bin/sh # This file is part of TALER # (C) 2019 GNUnet e.V. # # This is very simple POSIX sh script which # identifies the first matching # python3 identifier in $PATH and produces # configure.py from configure.py.in, and then # calls the new executable configure.py. # # It should be portable on Unices. Report bugs on # the bugtracker if you discover that it isn't # working as intended. # # Authors: # Author: ng0 # # Permission to use, copy, modify, and/or distribute this software for any # purpose with or without fee is hereby granted. # # THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES # WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE # LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES # OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, # WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF # THIS SOFTWARE. # # SPDX-License-Identifier: 0BSD # there is a function used in curl to replicate which(1), but # it uses too many other tools. this one uses command and in # gnunet so far has no reports about failures. existence() { command -v "$1" >/dev/null 2>&1 } # We have to check every possible variant of the # executable name because there is a PEP which # defines the executable to be like this. if existence python3; then python="python3" elif existence python3.1; then python="python3.1" elif existence python3.2; then python="python3.2" elif existence python3.3; then python="python3.3" elif existence python3.4; then python="python3.4" elif existence python3.5; then python="python3.5" elif existence python3.6; then python="python3.6" elif existence python3.7; then python="python3.7" elif existence python3.8; then python="python3.8" else echo "*** No known python3 executable found in path ***" echo "*** falling back to env(1) python ***" # Unreliable, but if env finds no python, we still can # not assume python in a fixed location. # TODO: Check this in a clean chroot! python="env python" fi # we could check the return value here via || echo "blafoo" # or fail anyway once configure.py is invoked because we # don't have python if we reach the point to fail. PYTHON=$($python -c 'import sys; print(sys.executable)') #echo $PYTHON # Call configure.py, assuming all went well. # $1 is read by configure.py as the prefix. # If $1 is empty, the python script checks the # environment for PREFIX. We might need more # variables and switches, such as DESTDIR. $PYTHON ./configure.py $@