#!/usr/bin/env bash # fail hard set -o pipefail # fail harder set -eu OUT_PREFIX=$1 dep_formula=${0#$WORKSPACE_DIR/} # this is the original script, e.g. pypy-5.3.1 dep_name=$(basename $BASH_SOURCE) # this is us dep_version=${dep_formula##*"/${dep_name}-"} # "subtract" our name from full version name dep_package=${dep_name}-${dep_version} # it's always "Python-…" dep_dirname=${dep_package}-linux64 dep_archive_name=${dep_dirname}.tar.bz2 dep_url=https://python.org/ftp/python/${dep_version}/${dep_package}.tgz echo "Installing necesary sqlite headers" # install the necessary sqlite headers apt-get update apt-get install -y libsqlite3-dev # # Old way of installing sqlite # # shellcheck source=bin/utils # source "$BIN_DIR/steps/sqlite3" # sqlite3_version # echo "Setting up SQLite3 Headers for $SQLITE3_VERSION" # sqlite3_install "$OUT_PREFIX" "$SQLITE3_VERSION" 1 echo "Building Python 3..." curl -L "${dep_url}" | tar jx -C "${OUT_PREFIX}" --strip-components 1 # extract to $OUT_PREFIX, drop the first directory level, which is the archive name mv "${dep_package}" src cd src ./configure --prefix=$OUT_PREFIX --with-ensurepip=no make make install # Remove unneeded test directories, similar to the official Docker Python images: # https://github.com/docker-library/python find "${OUT_PREFIX}" \( -type d -a \( -name test -o -name tests \) \) -exec rm -rf '{}' + # Remove spare / LOCATION=${OUT_PREFIX%?} ln $LOCATION/bin/python3 $LOCATION/bin/python # copy over sqlite3 headers cp "/usr/include/sqlite3"* "$LOCATION/include/" # create generic .so symlink against stack image ln -s "/usr/lib/x86_64-linux-gnu/libsqlite3.so.0" "$LOCATION/lib/libsqlite3.so"