mirror of
https://github.com/python-LimeReport/containers.git
synced 2024-12-24 16:44:43 +03:00
66 lines
2.5 KiB
Bash
66 lines
2.5 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
PYTHON_INSTALL_PATH="${INSTALLPATH:-"/usr/local/python"}"
|
||
|
CURRENT_PATH="${PYTHON_INSTALL_PATH}/current"
|
||
|
|
||
|
find_version_from_git_tags() {
|
||
|
local variable_name=$1
|
||
|
local requested_version=${!variable_name}
|
||
|
if [ "${requested_version}" = "none" ]; then return; fi
|
||
|
local repository=$2
|
||
|
local prefix=${3:-"tags/v"}
|
||
|
local separator=${4:-"."}
|
||
|
local last_part_optional=${5:-"false"}
|
||
|
if [ "$(echo "${requested_version}" | grep -o "." | wc -l)" != "2" ]; then
|
||
|
local escaped_separator=${separator//./\\.}
|
||
|
local last_part
|
||
|
if [ "${last_part_optional}" = "true" ]; then
|
||
|
last_part="(${escaped_separator}[0-9]+)?"
|
||
|
else
|
||
|
last_part="${escaped_separator}[0-9]+"
|
||
|
fi
|
||
|
local regex="${prefix}\\K[0-9]+${escaped_separator}[0-9]+${last_part}$"
|
||
|
local version_list="$(git ls-remote --tags ${repository} | grep -oP "${regex}" | tr -d ' ' | tr "${separator}" "." | sort -rV)"
|
||
|
if [ "${requested_version}" = "latest" ] || [ "${requested_version}" = "current" ] || [ "${requested_version}" = "lts" ]; then
|
||
|
declare -g ${variable_name}="$(echo "${version_list}" | head -n 1)"
|
||
|
else
|
||
|
set +e
|
||
|
declare -g ${variable_name}="$(echo "${version_list}" | grep -E -m 1 "^${requested_version//./\\.}([\\.\\s]|$)")"
|
||
|
set -e
|
||
|
fi
|
||
|
fi
|
||
|
if [ -z "${!variable_name}" ] || ! echo "${version_list}" | grep "^${!variable_name//./\\.}$" > /dev/null 2>&1; then
|
||
|
echo -e "Invalid ${variable_name} value: ${requested_version}\nValid values:\n${version_list}" >&2
|
||
|
exit 1
|
||
|
fi
|
||
|
echo "${variable_name}=${!variable_name}"
|
||
|
}
|
||
|
|
||
|
add_symlink() {
|
||
|
if [[ ! -d "${CURRENT_PATH}" ]]; then
|
||
|
ln -s -r "${INSTALL_PATH}" "${CURRENT_PATH}"
|
||
|
fi
|
||
|
|
||
|
if [ "${OVERRIDE_DEFAULT_VERSION}" = "true" ]; then
|
||
|
if [[ $(ls -l ${CURRENT_PATH}) != *"-> ${INSTALL_PATH}"* ]] ; then
|
||
|
rm "${CURRENT_PATH}"
|
||
|
ln -s -r "${INSTALL_PATH}" "${CURRENT_PATH}"
|
||
|
fi
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
VERSION="3.9"
|
||
|
|
||
|
find_version_from_git_tags VERSION "https://github.com/python/cpython"
|
||
|
|
||
|
mkdir -p /tmp/python-src
|
||
|
cd /tmp/python-src
|
||
|
tgz_filename="Python-${VERSION}.tgz"
|
||
|
tgz_url="https://www.python.org/ftp/python/${VERSION}/${tgz_filename}"
|
||
|
echo "Downloading ${tgz_filename}..."
|
||
|
curl -sSL -o "/tmp/python-src/${tgz_filename}" "${tgz_url}"
|
||
|
tar -xzf "/tmp/python-src/${tgz_filename}" -C "/tmp/python-src" --strip-components=1
|
||
|
cd /tmp/python-src
|
||
|
./configure --enable-optimizations
|
||
|
make -j "$(nproc)" install
|
||
|
alias python=/usr/local/bin/python3
|