61 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Bash
		
	
	
	
| #!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
 |