-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathallpython.sh
executable file
·53 lines (43 loc) · 1.27 KB
/
allpython.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/usr/bin/env bash
set -euo pipefail
# Requirements:
# macOS
#
# Debian
# apt-get install -y libssl-dev liblzma-dev libreadline-dev libncursesw5-dev libsqlite3-dev tk-dev libgdbm-dev libgdbm-compat-dev libbz2-dev libffi-dev zlib1g-dev
# Fedora
# dnf install -y openssl-devel libuuid-devel sqlite-devel ncurses-devel bzip2-devel gdbm-devel libffi-devel readline-devel tk-devel
script_dir=$(realpath $(dirname $0))
mkdir -p /opt/python
i()
{
local v=$1
local b=$(echo $v | cut -f1 -d'a') # major.minor.micro
local m=$(echo $v | cut -f1-2 -d'.') # major.minor
local url=https://www.python.org/ftp/python/$b/Python-$v.tar.xz
rm -rf /tmp/Python-$v /opt/python/Python-$v
curl -sL $url | tar -C /tmp -xJ
cd /tmp/Python-$v
./configure --prefix=/opt/python/Python-$v --enable-optimizations
! cat config.log | grep "^py_cv_module_" | grep -Ev "=(yes|n/a)$" | grep -q ^
make -j$(nproc --ignore=1)
make altinstall
# /opt/python/Python-$v/bin/python$m -mensurepip
cd /tmp
rm -rf /tmp/Python-$v
if [ -f $script_dir/runall.py ] ; then
$script_dir/runall.py --venv /opt/python/Python-$v/bin/python$m
fi
}
a()
{
i 3.10.16
i 3.11.11
i 3.12.8
i 3.13.1
}
if [ ${1-} ]; then
i $1
else
a
fi