You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
2.0 KiB
61 lines
2.0 KiB
#!not for running standalone, see .travis.yml
|
|
|
|
cache_dir=$HOME/.cache
|
|
install_dir=$cache_dir/py3-openssl11
|
|
python_version="3.7.3"
|
|
openssl_version="1.1.1f"
|
|
cpucount=$(nproc --all)
|
|
export PYTHONDONTWRITEBYTECODE=1
|
|
|
|
#rm -rf $cache_dir/* # uncomment to rebuild
|
|
|
|
if [[ $($install_dir/bin/python -V) != "Python $python_version" ]] ; then
|
|
(
|
|
mkdir -p /tmp/source
|
|
cd /tmp/source
|
|
# Compile OpenSSL
|
|
curl -fLOsS "https://www.openssl.org/source/openssl-$openssl_version.tar.gz"
|
|
echo "Extracting OpenSSL..."
|
|
tar xf openssl-$openssl_version.tar.gz
|
|
cd ./openssl-$openssl_version
|
|
echo "Compiling OpenSSL $openssl_version..."
|
|
./config shared --prefix=$install_dir
|
|
echo "Running make for OpenSSL..."
|
|
make -j$cpucount -s
|
|
echo "Running make install for OpenSSL..."
|
|
make install_sw >/dev/null
|
|
export LD_LIBRARY_PATH=$install_dir/lib
|
|
|
|
cd /tmp/source
|
|
sudo apt install -qq --yes libffi-dev
|
|
# Compile latest Python
|
|
curl -fLOsS "https://www.python.org/ftp/python/$python_version/Python-$python_version.tar.xz"
|
|
echo "Extracting Python..."
|
|
tar xf Python-$python_version.tar.xz
|
|
cd ./Python-$python_version
|
|
echo "Compiling Python $python_version..."
|
|
# Note we are purposefully NOT using optimization flags as they increase compile time 10x
|
|
conf_flags="--with-openssl=$install_dir --prefix=$install_dir --with-ensurepip=upgrade"
|
|
CFLAGS=-O1 ./configure $conf_flags > /dev/null
|
|
make -j$cpucount -s
|
|
echo "Installing Python..."
|
|
make altinstall bininstall >/dev/null
|
|
ln -fs pip3.7 $install_dir/bin/pip3
|
|
ln -fs pip3 $install_dir/bin/pip
|
|
ln -fs python3 $install_dir/bin/python
|
|
# care for CI cache size
|
|
find $install_dir -type d -name __pycache__ -print0 |xargs -0 rm -rf
|
|
)
|
|
fi
|
|
|
|
export LD_LIBRARY_PATH=$install_dir/lib
|
|
export PATH=$install_dir/bin:$PATH
|
|
if [[ $(python -V) != "Python $python_version" ]] ; then
|
|
echo "Required Python version was not installed into PATH" >&2
|
|
exit 1
|
|
fi
|
|
if [[ $(python -c 'import ssl; print(ssl.OPENSSL_VERSION)') != OpenSSL\ ${openssl_version}* ]] ; then
|
|
echo "Required OpenSSL version was not installed into Python" >&2
|
|
exit 1
|
|
fi
|