From 70351db9082c3a2f84e6a20c12fa47978cf90bd2 Mon Sep 17 00:00:00 2001 From: Guofang Date: Fri, 13 Nov 2026 13:51:03 +0800 Subject: [PATCH] Add libffi 3.8.0 and Python 3.14.10 to debian13 Python is built from the python.org tarball against the pinned OpenSSL, zlib, Zstd, SQLite and libffi; it does not pass --libdir because the standard library and lib-dynload must stay under lib/python3.14. SQLite is static, so its link flags are taken from pkg-config --static. libffi is built with --disable-multi-os-directory so it installs into the multiarch directory instead of lib/lib. Co-Authored-By: Claude Sonnet 5.5 --- INCLUDED_LIBRARIES.md | 2 ++ debian13/Dockerfile | 22 ++++++++++++++++++++++ fetch-sources.sh | 4 ++++ 3 files changed, 28 insertions(+) diff --git a/INCLUDED_LIBRARIES.md b/INCLUDED_LIBRARIES.md index 2377ae3..493fe28 100644 --- a/INCLUDED_LIBRARIES.md +++ b/INCLUDED_LIBRARIES.md @@ -52,6 +52,8 @@ | Apache Arrow / Parquet | `25.0.1` | | SQLite | `3.54.1` | | FreeTDS | `1.5.21` | +| libffi | `3.8.0` | +| Python | `3.14.10` | | wireguard-tools (`wg`, `wg-quick` CLI) | `v1.0.20260223` | The image includes position-independent static builds of these libraries. Protobuf and libxml2 enable zlib support, and LibDwarf enables compressed debug section support using zlib and Zstd. ZeroMQ enables CURVE security using static libsodium. CZMQ enables UUID support using static util-linux libuuid while disabling undeclared optional integrations. librdkafka includes SSL, zlib, Zstd, and bundled LZ4 support while disabling undeclared optional integrations. spdlog uses external fmt, glog uses gflags, and all Meta libraries share the same release tag. Apache Arrow is built with Parquet (including OpenSSL-based Parquet encryption) and Snappy, LZ4, zlib, and Zstd compression using only the pinned system dependencies above (`ARROW_DEPENDENCY_SOURCE=SYSTEM`), with the bundled jemalloc and mimalloc allocators disabled. Apache Thrift only builds its C++ library, and its headers sit next to fbthrift's under `include/thrift` without overlapping. diff --git a/debian13/Dockerfile b/debian13/Dockerfile index adece39..f1c4487 100644 --- a/debian13/Dockerfile +++ b/debian13/Dockerfile @@ -841,6 +841,28 @@ RUN --mount=type=bind,from=sources,source=freetds-1.5.21.tar.gz,target=/tmp/free && cd .. \ && rm -rf src +RUN --mount=type=bind,from=sources,source=libffi-3.8.0.tar.gz,target=/tmp/libffi.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/libffi.tar.gz --directory=src --strip-components=1 \ + && cd src \ + && CFLAGS="-O2 -fPIC" ./configure --prefix=${PREFIX} --libdir=${PREFIX}/lib/$(gcc -dumpmachine) --disable-shared --enable-static --disable-docs --disable-multi-os-directory \ + && make --jobs="$(nproc)" \ + && make install \ + && cd .. \ + && rm -rf src + +RUN --mount=type=bind,from=sources,source=Python-3.14.10.tgz,target=/tmp/python.tgz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/python.tgz --directory=src --strip-components=1 \ + && cd src \ + && ./configure --prefix=${PREFIX} --with-ensurepip=install \ + LIBSQLITE3_CFLAGS="$(pkg-config --cflags sqlite3)" \ + LIBSQLITE3_LIBS="$(pkg-config --static --libs sqlite3)" \ + && make --jobs="$(nproc)" \ + && make install \ + && cd .. \ + && rm -rf src + COPY source-stack.cmake.in /tmp/ RUN mkdir -p ${PREFIX}/share/source-stack \ && sed "s|@MULTIARCH@|$(gcc -dumpmachine)|" /tmp/source-stack.cmake.in \ diff --git a/fetch-sources.sh b/fetch-sources.sh index 1406bec..0bfe54b 100755 --- a/fetch-sources.sh +++ b/fetch-sources.sh @@ -168,3 +168,7 @@ fetch wireguard-tools-v1.0.20260223.tar.xz \ https://git.zx2c4.com/wireguard-tools/snapshot/wireguard-tools-v1.0.20260223.tar.xz fetch freetds-1.5.21.tar.gz \ https://www.freetds.org/files/stable/freetds-1.5.21.tar.gz +fetch libffi-3.8.0.tar.gz \ + https://github.com/libffi/libffi/releases/download/v3.8.0/libffi-3.8.0.tar.gz +fetch Python-3.14.10.tgz \ + https://www.python.org/ftp/python/3.14.10/Python-3.14.10.tgz