repo/extra/python/build
2021-08-10 16:00:58 +00:00

56 lines
1.5 KiB
Bash
Executable File

#!/bin/sh -e
# Without this environment variable being set to some arbitrary value,
# python's module loader uses timestamps for cache invalidation. Something
# goes wrong here and all pyc files are seen as stale.
#
# By setting this value, python uses checksums for cache invalidation which
# (on my machine) drops startup time from 3 seconds to 0.060s. Further
# investigation is needed.
export SOURCE_DATE_EPOCH=1628593994
# Remove util-linux dependency among other things.
cat >> Modules/Setup <<EOF
*disabled*
_uuid nis ossaudiodev
EOF
# Reported 20-27% performance improvements.
# See: "PythonNoSemanticInterpositionSpeedup"
export CFLAGS="$CFLAGS -fno-semantic-interposition"
export LDFLAGS="$LDFLAGS -fno-semantic-interposition"
patch -p1 < python3-always-pip.patch
./configure \
--prefix=/usr \
--enable-shared \
--with-system-expat \
--with-system-ffi \
--with-ensurepip=yes \
--without-doc-strings
make EXTRA_CFLAGS="$CFLAGS -DTHREAD_STACK_SIZE=0x100000"
make install
ln -s python3 "$1/usr/bin/python"
ln -s pip3 "$1/usr/bin/pip"
# Make static library writable.
chmod u+w "$1/usr/lib/libpython"*
# Let's make some kind of effort to reduce the overall
# size of Python by removing a bunch of rarely used and
# otherwise useless components.
#
# This can't be done via ./configure as the build system
# doesn't give you this much control over the process.
{
cd "$1/usr/lib/python"*
rm -rf test ./*/test ./*/tests
rm -rf pydoc* idlelib turtle* config-*
cd "$1/usr/bin"
rm -f pydoc* idle*
}