mirror of
https://github.com/pyenv/pyenv.git
synced 2024-11-21 20:47:00 -05:00
Merge branch 'altinstall' (fixes #255)
Allow installing CPython with `make altinstall` instead of `make install` with following command-line. ```sh $ env PYTHON_MAKE_INSTALL_PACKAGE="altinstall" pyenv install -v 3.4.2 ```
This commit is contained in:
commit
720870011b
1 changed files with 41 additions and 26 deletions
|
@ -599,6 +599,7 @@ build_package_standard() {
|
|||
local PACKAGE_MAKE_OPTS_ARRAY="${package_var_name}_MAKE_OPTS_ARRAY[@]"
|
||||
local PACKAGE_MAKE_INSTALL_OPTS="${package_var_name}_MAKE_INSTALL_OPTS"
|
||||
local PACKAGE_MAKE_INSTALL_OPTS_ARRAY="${package_var_name}_MAKE_INSTALL_OPTS_ARRAY[@]"
|
||||
local PACKAGE_MAKE_INSTALL_TARGET="${package_var_name}_MAKE_INSTALL_TARGET"
|
||||
local PACKAGE_CFLAGS="${package_var_name}_CFLAGS"
|
||||
|
||||
[ "$package_var_name" = "PYTHON" ] && use_homebrew_readline || true
|
||||
|
@ -612,7 +613,7 @@ build_package_standard() {
|
|||
) >&4 2>&1
|
||||
|
||||
{ "$MAKE" $MAKE_OPTS ${!PACKAGE_MAKE_OPTS} "${!PACKAGE_MAKE_OPTS_ARRAY}"
|
||||
"$MAKE" install $MAKE_INSTALL_OPTS ${!PACKAGE_MAKE_INSTALL_OPTS} "${!PACKAGE_MAKE_INSTALL_OPTS_ARRAY}"
|
||||
"$MAKE" "${!PACKAGE_MAKE_INSTALL_TARGET:-install}" $MAKE_INSTALL_OPTS ${!PACKAGE_MAKE_INSTALL_OPTS} "${!PACKAGE_MAKE_INSTALL_OPTS_ARRAY}"
|
||||
} >&4 2>&1
|
||||
}
|
||||
|
||||
|
@ -1254,26 +1255,6 @@ apply_python_patch() {
|
|||
esac
|
||||
}
|
||||
|
||||
create_symlinks() {
|
||||
local suffix="$1"
|
||||
|
||||
local file link
|
||||
shopt -s nullglob
|
||||
for file in "${PREFIX_PATH}/bin"/*; do
|
||||
if [[ "${file##*/}" == *"${suffix}" ]]; then
|
||||
if [[ "${file}" == *"-${suffix}" ]]; then
|
||||
link="${file%%-${suffix}}"
|
||||
else
|
||||
link="${file%%${suffix}}"
|
||||
fi
|
||||
if [ ! -e "${link}" ]; then
|
||||
( cd "${file%/*}" && ln -fs "${file##*/}" "${link##*/}" )
|
||||
fi
|
||||
fi
|
||||
done
|
||||
shopt -u nullglob
|
||||
}
|
||||
|
||||
verify_python() {
|
||||
if [[ "$PYTHON_CONFIGURE_OPTS" == *"--enable-framework"* ]]; then
|
||||
# Only symlinks are installed in ${PREFIX_PATH}/bin
|
||||
|
@ -1281,7 +1262,23 @@ verify_python() {
|
|||
ln -fs "${PREFIX_PATH}/Python.framework/Versions/Current/bin" "${PREFIX_PATH}/bin"
|
||||
fi
|
||||
|
||||
create_symlinks "$1"
|
||||
# Not create symlinks on `altinstall` (#255)
|
||||
if [[ "$PYTHON_MAKE_INSTALL_TARGET" != *"altinstall"* ]]; then
|
||||
local suffix="${1#python}"
|
||||
local file
|
||||
shopt -s nullglob
|
||||
for file in "${PREFIX_PATH}/bin"/*; do
|
||||
local link
|
||||
case "${file}" in
|
||||
*"-${suffix}" ) link="${file%%-${suffix}}" ;;
|
||||
*"${suffix}" ) link="${file%%${suffix}}" ;;
|
||||
esac
|
||||
if [ -n "$link" ] && [ ! -e "$link" ]; then
|
||||
( cd "${file%/*}" && ln -fs "${file##*/}" "${link##*/}" )
|
||||
fi
|
||||
done
|
||||
shopt -u nullglob
|
||||
fi
|
||||
|
||||
if [ ! -x "${PYTHON_BIN}" ]; then
|
||||
{ colorize 1 "ERROR"
|
||||
|
@ -1442,11 +1439,13 @@ build_package_get_pip() {
|
|||
}
|
||||
|
||||
build_package_ensurepip() {
|
||||
"$PYTHON_BIN" -m ensurepip 1>/dev/null 2>&1 || {
|
||||
local ensurepip_opts
|
||||
if [[ "$PYTHON_MAKE_INSTALL_TARGET" != *"altinstall"* ]]; then
|
||||
ensurepip_opts="--altinstall"
|
||||
fi
|
||||
"$PYTHON_BIN" -m ensurepip $ensurepip_opts 1>/dev/null 2>&1 || {
|
||||
build_package_ez_setup "$@" && build_package_get_pip "$@"
|
||||
} || return 1
|
||||
|
||||
create_symlinks "$("$PYTHON_BIN" -c 'import sys;v=sys.version_info;sys.stdout.write("python%d.%d"%(v[0],v[1]))')"
|
||||
}
|
||||
|
||||
version() {
|
||||
|
@ -1682,9 +1681,25 @@ if [[ "Darwin" == "$(uname -s)" ]]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
python_bin_suffix() {
|
||||
local version_name version_info
|
||||
case "$1" in
|
||||
2.* | 3.* )
|
||||
version_name="$1"
|
||||
version_info=(${version_name//./ })
|
||||
echo "${version_info[0]}.${version_info[1]}"
|
||||
;;
|
||||
stackless-2.* | stackless-3.* )
|
||||
version_name="${1#stackless-}"
|
||||
version_info=(${version_name//./ })
|
||||
echo "${version_info[0]}.${version_info[1]}"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
SEED="$(date "+%Y%m%d%H%M%S").$$"
|
||||
LOG_PATH="${TMP}/python-build.${SEED}.log"
|
||||
PYTHON_BIN="${PREFIX_PATH}/bin/python"
|
||||
PYTHON_BIN="${PREFIX_PATH}/bin/python$(python_bin_suffix "${DEFINITION_PATH##*/}")"
|
||||
CWD="$(pwd)"
|
||||
|
||||
if [ -z "$PYTHON_BUILD_BUILD_PATH" ]; then
|
||||
|
|
Loading…
Reference in a new issue