summaryrefslogtreecommitdiff
path: root/etc/pkgs/002-python.sh
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2019-01-31 14:12:13 -0500
committerJoseph Hunkeler <jhunkeler@gmail.com>2019-01-31 14:12:13 -0500
commit11f358cafab2da28692fdaa837dfbcc3cc163736 (patch)
tree9ed443d35c71e4c27a2803733c41d3e8a2322a73 /etc/pkgs/002-python.sh
parent73a53c48901e120a06d221c8cb4f02076e3b9888 (diff)
downloaddocker-python-11f358cafab2da28692fdaa837dfbcc3cc163736.tar.gz
Refactor all
Diffstat (limited to 'etc/pkgs/002-python.sh')
-rwxr-xr-xetc/pkgs/002-python.sh132
1 files changed, 132 insertions, 0 deletions
diff --git a/etc/pkgs/002-python.sh b/etc/pkgs/002-python.sh
new file mode 100755
index 0000000..36cebc6
--- /dev/null
+++ b/etc/pkgs/002-python.sh
@@ -0,0 +1,132 @@
+#!/bin/bash
+set -x
+
+python_version="${PYTHON_VERSION}"
+python_basever="${python_version%.*}"
+
+if [[ ! ${python_version} || ! ${python_basever} ]]; then
+ echo "Need a python version..."
+ exit 1
+fi
+
+python_base_url="https://www.python.org/ftp/python"
+python_tarball="Python-${python_version}.tgz"
+python_source="${python_tarball%%.tgz}"
+python_url="${python_base_url}/${python_version}/${python_tarball}"
+prefix="${TOOLCHAIN}"
+
+dep_table=(
+ "bzlib.h libbz2.so"
+ "expat.h libexpat.so"
+ "ffi.h libffi.so"
+ "gdbm.h libgdbm.so"
+ "lzma.h liblzma.so"
+ "ncurses.h libncurses.so"
+ "nislib.h libnsl.so"
+ "readline.h libreadline.so"
+ "ssl.h libssl.so"
+ "sqlite3.h libsqlite3.so"
+ "tcl.h libtcl.so"
+ "tk.h libtk.so"
+ "zlib.h libz.so"
+)
+
+
+function depcheck()
+{
+ dep_count=0
+ dep_total="${#dep_table[@]}"
+
+ set +x
+ for _record in "${dep_table[@]}"
+ do
+ unset record
+ read -ra record <<< $_record
+
+ header=$(find /usr/include /usr/lib{,64} -regex ".*\/${record[0]}" 2>/dev/null | head -n 1 || true)
+ if [[ -n $header ]]; then
+ dep_count=$((dep_count+1))
+ else
+ echo "Missing header: ${record[0]}"
+ fi
+ lib=$(find /usr/lib{,64} -regex ".*\/${record[1]}" 2>/dev/null | head -n 1 || true)
+ if [[ -n "$lib" ]]; then
+ dep_count=$((dep_count+1))
+ else
+ echo "Missing library: ${record[1]}"
+ fi
+ done
+ set -x
+
+ if [[ ${dep_count} != $(( (dep_total * 2) )) ]]; then
+ echo 'Missing dependencies...'
+ exit 1
+ fi
+}
+
+
+function pre()
+{
+ depcheck
+
+ if [[ ! -f ${python_tarball} ]]; then
+ curl -LO "${python_url}"
+ fi
+
+ if [[ -d ${python_source} ]]; then
+ rm -rf "${python_source}"
+ fi
+
+ tar xf "${python_tarball}"
+}
+
+
+function build()
+{
+ pre
+ export CFLAGS="-I${prefix}/include"
+ export LDFLAGS="-L${prefix}/lib -Wl,-rpath=${prefix}/lib"
+ pushd "${python_source}"
+ #--enable-optimizations \
+ ./configure \
+ --prefix="${prefix}" \
+ --enable-ipv6 \
+ --enable-loadable-sqlite-extensions \
+ --enable-profiling \
+ --enable-shared \
+ --with-dbmliborder=gdbm:ndbm \
+ --with-pymalloc \
+ --with-system-expat
+ make -j${_maxjobs}
+ make install
+ popd
+ post
+}
+
+
+function post()
+{
+ export PATH=$prefix/bin:$PATH
+ ln -sf python3 "${prefix}"/bin/python
+ ln -sf python3-config "${prefix}"/bin/python-config
+ ln -sf idle3 "${prefix}"/bin/idle
+ ln -sf pydoc3 "${prefix}"/bin/pydoc
+ ln -sf pip3 "${prefix}"/bin/pip
+ ln -sf python${python_basever}.1 "${prefix}"/share/man/man1/python.1
+
+ echo '---'
+ python --version
+ python -c "import sys; from pprint import pprint; pprint(sys.path)"
+ echo '---'
+ ldd $(which python)
+ echo '---'
+
+ rm -rf $HOME/.config/pip
+ rm -rf "${python_tarball}"
+ rm -rf "${python_source}"
+ echo "All done."
+}
+
+
+# Main
+build