#!/bin/bash compile-python() { # Inspired from the great https://gitlab.com/python-devs/ci-images/ # Thanks Barry Warsaw. # Needs: # sudo apt-get update; sudo apt-get install make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev libffi-dev liblzma-dev local PY_VERSION="$1" local BETA="$2" local URL="https://www.python.org/ftp/python" ( cd /tmp || return 1 wget -qO- "$URL/$PY_VERSION/Python-$PY_VERSION$BETA.tgz" | tar -xzf - || ( echo "Version not found, check on $URL." ) [ -d "Python-$PY_VERSION$BETA" ] && (cd "Python-$PY_VERSION$BETA"; ./configure --prefix="$HOME/.local/" && make -j "$(nproc)" && make altinstall) && rm -r "Python-$PY_VERSION$BETA" ) } compile-pythons() { # Compiles a usefull set of Python versions. compile-python 3.7.17 & compile-python 3.8.18 & compile-python 3.9.18 & compile-python 3.10.13 & compile-python 3.11.5 & compile-python 3.12.0 b4 & wait } _compile_python() { COMPREPLY=( $( compgen -W '$( command curl -s https://www.python.org/ftp/python/ | grep -o ">[0-9.]\+/<" | sed "s/^>//;s|/<$||" )' -- "${COMP_WORDS[COMP_CWORD]}") ) } complete -F _compile_python compile-python