mirror of
https://github.com/python/cpython.git
synced 2024-11-22 05:26:10 +01:00
7d2447137e
gh-120291: Fix bashisms in python-config.sh.in Replace the use of bash-specific `[[ ... ]]` with POSIX-compliant `[ ... ]` to make the `python-config` shell script work with non-bash shells again. While at it, use `local` in a safer way, since it is not in POSIX either (though universally supported). Fixes #120291
123 lines
3.0 KiB
Bash
123 lines
3.0 KiB
Bash
#!/bin/sh
|
|
|
|
# Keep this script in sync with python-config.in
|
|
|
|
exit_with_usage ()
|
|
{
|
|
local usage
|
|
usage="Usage: $0 --prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--help|--abiflags|--configdir|--embed"
|
|
if [ "$1" -eq 0 ]; then
|
|
echo "$usage"
|
|
else
|
|
echo "$usage" >&2
|
|
fi
|
|
exit $1
|
|
}
|
|
|
|
if [ "$1" = "" ] ; then
|
|
exit_with_usage 1
|
|
fi
|
|
|
|
# Returns the actual prefix where this script was installed to.
|
|
installed_prefix ()
|
|
{
|
|
RESULT=$(dirname $(cd $(dirname "$1") && pwd -P))
|
|
if which readlink >/dev/null 2>&1 ; then
|
|
if readlink -f "$RESULT" >/dev/null 2>&1; then
|
|
RESULT=$(readlink -f "$RESULT")
|
|
fi
|
|
fi
|
|
echo $RESULT
|
|
}
|
|
|
|
prefix_real=$(installed_prefix "$0")
|
|
|
|
# Use sed to fix paths from their built-to locations to their installed-to
|
|
# locations. Keep prefix & exec_prefix using their original values in case
|
|
# they are referenced in other configure variables, to prevent double
|
|
# substitution, issue #22140.
|
|
prefix="@prefix@"
|
|
exec_prefix="@exec_prefix@"
|
|
exec_prefix_real=${prefix_real}
|
|
includedir=$(echo "@includedir@" | sed "s#$prefix#$prefix_real#")
|
|
libdir=$(echo "@libdir@" | sed "s#$prefix#$prefix_real#")
|
|
CFLAGS=$(echo "@CFLAGS@" | sed "s#$prefix#$prefix_real#")
|
|
VERSION="@VERSION@"
|
|
LIBM="@LIBM@"
|
|
LIBC="@LIBC@"
|
|
SYSLIBS="$LIBM $LIBC"
|
|
ABIFLAGS="@ABIFLAGS@"
|
|
LIBS="@MODULE_LDFLAGS@ @LIBS@ $SYSLIBS"
|
|
LIBS_EMBED="-lpython${VERSION}${ABIFLAGS} @LIBS@ $SYSLIBS"
|
|
BASECFLAGS="@BASECFLAGS@"
|
|
LDLIBRARY="@LDLIBRARY@"
|
|
OPT="@OPT@"
|
|
PY_ENABLE_SHARED="@PY_ENABLE_SHARED@"
|
|
LDVERSION="@LDVERSION@"
|
|
LIBDEST=${prefix_real}/lib/python${VERSION}
|
|
LIBPL=$(echo "@LIBPL@" | sed "s#$prefix#$prefix_real#")
|
|
SO="@EXT_SUFFIX@"
|
|
PYTHONFRAMEWORK="@PYTHONFRAMEWORK@"
|
|
INCDIR="-I$includedir/python${VERSION}${ABIFLAGS}"
|
|
PLATINCDIR="-I$includedir/python${VERSION}${ABIFLAGS}"
|
|
PY_EMBED=0
|
|
|
|
# Scan for --help or unknown argument.
|
|
for ARG in $*
|
|
do
|
|
case $ARG in
|
|
--help)
|
|
exit_with_usage 0
|
|
;;
|
|
--embed)
|
|
PY_EMBED=1
|
|
;;
|
|
--prefix|--exec-prefix|--includes|--libs|--cflags|--ldflags|--extension-suffix|--abiflags|--configdir)
|
|
;;
|
|
*)
|
|
exit_with_usage 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ $PY_EMBED = 1 ] ; then
|
|
LIBS="$LIBS_EMBED"
|
|
fi
|
|
|
|
for ARG in "$@"
|
|
do
|
|
case "$ARG" in
|
|
--prefix)
|
|
echo "$prefix_real"
|
|
;;
|
|
--exec-prefix)
|
|
echo "$exec_prefix_real"
|
|
;;
|
|
--includes)
|
|
echo "$INCDIR $PLATINCDIR"
|
|
;;
|
|
--cflags)
|
|
echo "$INCDIR $PLATINCDIR $BASECFLAGS $CFLAGS $OPT"
|
|
;;
|
|
--libs)
|
|
echo "$LIBS"
|
|
;;
|
|
--ldflags)
|
|
LIBPLUSED=
|
|
if [ "$PY_ENABLE_SHARED" = "0" ] ; then
|
|
LIBPLUSED="-L$LIBPL"
|
|
fi
|
|
echo "$LIBPLUSED -L$libdir $LIBS"
|
|
;;
|
|
--extension-suffix)
|
|
echo "$SO"
|
|
;;
|
|
--abiflags)
|
|
echo "$ABIFLAGS"
|
|
;;
|
|
--configdir)
|
|
echo "$LIBPL"
|
|
;;
|
|
esac
|
|
done
|