#!/bin/bash
# インストールするPytionのバージョン
PYTION_VER="3.12.8"
# 依存関連パッケージインストール
sudo apt -y install pkg-config curl \
build-essential libssl-dev zlib1g-dev \
libbz2-dev libffi-dev libncurses-dev libncursesw5-dev \
libgdbm-compat-dev libgdbm-dev libsqlite3-dev libdb-dev \
liblzma-dev tk-dev uuid-dev libreadline-dev libncurses5-dev
# git インストール
git --version &> /dev/null
if [ $? -ne 0 ] ; then
echo "git インストールします"
sudo apt -y install git
else
echo "git インストール済みです"
fi
# python3.12.8ソースダウンロード、解凍
url=https://www.python.org/ftp/python/$PYTION_VER/Python-$PYTION_VER.tar.xz
curl -s $url | tar -xJ
cd Python-$PYTION_VER
# Setup.org がない場合の処理
if [ ! -e Modules/Setup.org ]; then
sudo cp Modules/Setup Modules/Setup.org
fi
# Setup 初期化
sudo cp Modules/Setup.org Setup
# Setup 編集
# Python-3.12.8/Modules/Setup #_socket socketmodule.c -> _socket socketmodule.c
sudo sed -i -e 's/#_socket socketmodule.c/_socket socketmodule.c/' Modules/Setup
# Python-3.12.8/Modules/Setup # _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \ -> _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
sudo sed -i -e 's/# _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \\/ _ssl _ssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \\/' Modules/Setup
# Python-3.12.8/Modules/Setup # -l:libssl.a -Wl,--exclude-libs,libssl.a \ -> -l:libssl.a -Wl,--exclude-libs,libssl.a \
sudo sed -i -e 's/# -l:libssl.a -Wl,--exclude-libs,libssl.a \\/ -l:libssl.a -Wl,--exclude-libs,libssl.a \\/' Modules/Setup
# Python-3.12.8/Modules/Setup # _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \ -> _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \
sudo sed -i -e 's/# _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \\/ _hashlib _hashopenssl.c $(OPENSSL_INCLUDES) $(OPENSSL_LDFLAGS) \\/' Modules/Setup
# Python-3.12.8/Modules/Setup # -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a -> -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a
sudo sed -i -e 's/# -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a/ -l:libcrypto.a -Wl,--exclude-libs,libcrypto.a/' Modules/Setup
# python インストール開始
./configure --prefix="$HOME/.local" \
--enable-optimizations \
--with-lto \
PROFILE_TASK="-m test --pgo --timeout=60 -j8"
sudo make -j8
sudo make altinstall -j8