From 5d8c92ed1843f11d61f648b1408373dc5b23853a Mon Sep 17 00:00:00 2001 From: Leo Singer Date: Fri, 2 Feb 2024 10:22:25 -0500 Subject: [PATCH] Build shared libpython.so Our project (http://git.ligo.org/lscsoft/lalsuite, https://pypi.org/project/lalsuite/) distributes several C command line programs that embed Python interpreters by linking against libpython, plus some Python C extensions modules (which of course do not link against libpython). For those rare cases like ours where Python embedding is required, using a shared library libpython permits auditwheel to deduplicate libpython and store only one copy in the wheel. --- docker/build_scripts/build-cpython.sh | 4 ++-- docker/build_scripts/finalize-python.sh | 7 ------- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/docker/build_scripts/build-cpython.sh b/docker/build_scripts/build-cpython.sh index 8a5854d66..ac2aed436 100755 --- a/docker/build_scripts/build-cpython.sh +++ b/docker/build_scripts/build-cpython.sh @@ -47,8 +47,8 @@ fi # do not change the default for user built extension (yet?) ./configure \ CFLAGS_NODIST="${MANYLINUX_CFLAGS} ${MANYLINUX_CPPFLAGS} ${CFLAGS_EXTRA}" \ - LDFLAGS_NODIST="${MANYLINUX_LDFLAGS}" \ - --prefix=${PREFIX} --disable-shared --with-ensurepip=no > /dev/null + LDFLAGS_NODIST="${MANYLINUX_LDFLAGS} -Wl,--rpath=${PREFIX}/lib" \ + --prefix=${PREFIX} --enable-shared --with-ensurepip=no > /dev/null make > /dev/null make install > /dev/null popd diff --git a/docker/build_scripts/finalize-python.sh b/docker/build_scripts/finalize-python.sh index 218def3b4..62e4a30da 100755 --- a/docker/build_scripts/finalize-python.sh +++ b/docker/build_scripts/finalize-python.sh @@ -3,11 +3,4 @@ # Stop at any error, show all commands set -exuo pipefail -# most people don't need libpython*.a, and they're many megabytes. -# compress them all together for best efficiency -pushd /opt/_internal -XZ_OPT=-9e tar -cJf static-libs-for-embedding-only.tar.xz cpython-*/lib/libpython*.a -popd -find /opt/_internal -name '*.a' -print0 | xargs -0 rm -f - hardlink -cv /opt/_internal