diff --git a/scripts/_common.sh b/scripts/_common.sh index 0f67779..186455f 100644 --- a/scripts/_common.sh +++ b/scripts/_common.sh @@ -89,61 +89,71 @@ myynh_install_python () { ynh_handle_getopts_args "$@" # Check python version from APT - local PY_APT_VERSION=$(python3 --version | cut -d ' ' -f 2) + local py_apt_version=$(python3 --version | cut -d ' ' -f 2) # Check existing built version of python in /usr/local/bin if [ -e "/usr/local/bin/python${python:0:3}" ] then - local PY_BUILT_VERSION=$(/usr/local/bin/python${python:0:3} --version \ + local py_built_version=$(/usr/local/bin/python${python:0:3} --version \ | cut -d ' ' -f 2) else - local PY_BUILT_VERSION=0 + local py_built_version=0 fi # Compare version - if [ $(myynh_version_compare $PY_APT_VERSION $python) -le 1 ] + if [ $(myynh_version_compare $py_apt_version $python) -le 1 ] then # APT >= Required ynh_print_info --message="Using provided python3..." - MY_PYTHON="python3" + py_app_version="python3" else # Either python already built or to build - if [ $(myynh_version_compare $PY_BUILT_VERSION $python) -le 1 ] + if [ $(myynh_version_compare $py_built_version $python) -le 1 ] then # Built >= Required ynh_print_info --message="Using already used python3 built version..." - MY_PYTHON="/usr/local/bin/python${PY_BUILT_VERSION:0:3}" + py_app_version="/usr/local/bin/python${py_built_version:0:3}" else ynh_print_info --message="Installing additional dependencies to build python..." pkg_dependencies="${pkg_dependencies} tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libbz2-dev libexpat1-dev liblzma-dev wget tar" ynh_install_app_dependencies "${pkg_dependencies}" + # APT < Minimal & Actual < Minimal => Build & install Python into /usr/local/bin ynh_print_info --message="Building python (may take a while)..." + # Store current direcotry local MY_DIR=$(pwd) + + # Create a temp direcotry + tmpdir="$(mktemp --directory)" + cd "$tmpdir" + # Download - wget -O "/tmp/Python-$python.tar.xz" "https://www.python.org/ftp/python/$python/Python-$python.tar.xz" 2>&1 + wget --output-document="Python-$python.tar.xz" \ + "https://www.python.org/ftp/python/$python/Python-$python.tar.xz" 2>&1 + # Extract - cd /tmp tar xf "Python-$python.tar.xz" + # Install cd "Python-$python" ./configure --enable-optimizations ynh_exec_warn_less make -j4 ynh_exec_warn_less make altinstall - # Clean - cd .. - ynh_secure_remove "Python-$python" - ynh_secure_remove "Python-$python.tar.xz" - # Set version - MY_PYTHON="/usr/local/bin/python${python:0:3}" + # Go back to working directory - cd $MY_DIR + cd "$MY_DIR" + + # Clean + ynh_secure_remove "$tmpdir" + + # Set version + py_app_version="/usr/local/bin/python${python:0:3}" fi fi # Save python version in settings @@ -154,7 +164,7 @@ myynh_install_python () { myynh_install_homeassistant () { ynh_exec_as $app -H -s /bin/bash -c " \ echo 'create the virtual environment' \ - && $MY_PYTHON -m venv "$final_path" \ + && $py_app_version -m venv "$final_path" \ && echo 'activate the virtual environment' \ && source "$final_path/bin/activate" \ && echo 'install last version of wheel' \