28 Commits
Author SHA1 Message Date
GuofangandClaude Sonnet 5.5 3d3a0190ce Add FreeTDS, libffi and Python to rocky9
Same pinned versions and options as debian13, installed under lib64
(Python keeps its standard library and lib-dynload in lib/python3.14).
Note in INCLUDED_LIBRARIES.md that alpine3.24 does not build them yet.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-13 13:56:37 +08:00
GuofangandClaude Sonnet 5.5 3ca7753bd1 Add wireguard-tools v1.0.20260223 to rocky9
Build the wg and wg-quick CLI from the upstream tag snapshot; only the
rocky9 image builds it for now.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-13 10:46:28 +08:00
GuofangandClaude Sonnet 5.5 9608a9616f Add SQLite 3.54.1
Build from the official autoconf amalgamation in debian13, rocky9 and
alpine3.24; rocky9-system uses the distribution sqlite-devel.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-11 15:28:58 +08:00
Guofang 4a1a0a903f Update json-c library version to 0.18 in Dockerfiles and fetch script 2026-11-10 14:04:07 +08:00
GuofangandClaude Sonnet 5.5 0b7f8d829b Change default PREFIX to /opt/local
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-07 11:13:04 +08:00
GuofangandClaude Sonnet 5.5 68abc5042c Install Rust under /usr/local instead of PREFIX
Rust is a build tool, not a library, so it should not follow the
library install prefix.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 13:13:50 +08:00
GuofangandClaude Sonnet 5.5 ac50e86249 Generate a CMake file that locates the rocky9 dependencies
Install ${PREFIX}/share/source-stack/source-stack.cmake as the last step. It
mirrors the image's ENV block (prefix, pkg-config and library paths under
lib64) for CMake and can restrict lookups to the prefix with
GW_SOURCE_STACK_ONLY.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-06 12:25:23 +08:00
Guofang be9078f5af Update Dockerfile and build script to support custom installation prefix 2026-11-06 11:23:25 +08:00
Guofang 606029b332 Add gcc-toolset-15 and libasan-devel to Dockerfile dependencies 2026-11-03 16:57:30 +08:00
GuofangandClaude Sonnet 5.5 7f5012dd94 Build GMP as a fat library to support older CPUs
--enable-fat selects the optimized code at run time, so the static
library also works on x86_64 CPUs without AVX, BMI2 or ADX. It is
ignored on architectures that do not support it, such as aarch64.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-28 12:45:17 +08:00
GuofangandClaude Sonnet 5.5 8f24cf0e17 Build Apache Arrow/Parquet and its dependencies on rocky9
Add xsimd, Thrift, Snappy, LZ4 and Arrow/Parquet before DuckDB, in the
same order as debian13, using lib64 as the library directory.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 13:49:48 +08:00
GuofangandClaude Sonnet 5.5 eb0e3ba5d9 Mount the Rust archive from its own sources/rust directory
Download the per-architecture Rust tarball into sources/rust/ and have the
rocky9 and debian13 Dockerfiles bind that directory and pick the archive
with uname -m. This drops the architecture-neutral hard link and keeps the
Rust layer's cache key independent of other source archives.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 09:54:32 +08:00
GuofangandClaude Sonnet 5.5 195a389f8a Parameterize the rocky9 libevent install patch by CMAKE_INSTALL_LIBDIR
Share the debian13 patch content, renamed to libevent-libdir-install.patch,
so the install directory follows CMAKE_INSTALL_LIBDIR instead of a
hardcoded lib64. On Rocky Linux GNUInstallDirs already defaults it to
lib64, so the Dockerfile does not need to pass it.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 08:58:00 +08:00
GuofangandClaude Sonnet 5.5 b21f7db67b Derive debian13 library dir and Rust package from the architecture
- Make the libevent install patch take CMAKE_INSTALL_LIBDIR instead of
  hardcoding lib/x86_64-linux-gnu, and rename it to
  libevent-libdir-install.patch.
- Replace every hardcoded x86_64-linux-gnu in the debian13 Dockerfile with
  $(gcc -dumpmachine).
- Download the Rust tarball for `uname -m` and expose it to the Dockerfiles
  as the architecture-neutral rust-1.99.1.tar.xz (a hard link refreshed on
  every run), because podman cannot expand ARG in a --mount source.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-27 08:52:07 +08:00
GuofangandClaude Sonnet 5.5 7f34cfcf9c Build log4cplus from source archives instead of git clone
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 14:39:51 +08:00
GuofangandClaude Sonnet 5.5 b50918a3f3 Pass the DuckDB version explicitly so the ui extension picks the 1.5 API
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 14:28:54 +08:00
GuofangandClaude Sonnet 5.5 ee653608bc Install Rust in rocky9 from the standalone tarball in sources
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 14:09:19 +08:00
GuofangandClaude Sonnet 5.5 5f0422f3f0 Import rocky9 source archives via the sources build context
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 14:07:02 +08:00
GuofangandClaude Sonnet 5.5 df7af62648 Build DuckDB with the ui extension and import sources via a build context
- Build the ui extension (pinned duckdb-ui commit for DuckDB 1.5.6) into
  DuckDB on debian13 and rocky9 so the shell supports -ui.
- Add fetch-sources.sh, which downloads source archives with aria2c into the
  git-ignored sources/ repository.
- debian13: replace per-dependency downloads with
  RUN --mount=type=bind,from=sources, passed by build.sh through
  --build-context, so archives are not stored in image layers.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 14:02:15 +08:00
GuofangandClaude Sonnet 5.5 659dd05269 Add DuckDB build to rocky9
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-24 14:36:47 +08:00
GuofangandClaude Sonnet 5 1170f8f353 Use USTC EPEL mirror and upgrade packages in rocky9 Dockerfile
Port the EPEL mirror rewrite from develop's test/Dockerfile, and run
dnf upgrade before cleaning the cache.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012LvSM3NjBSCNsRwDpWeGfu
2026-09-21 09:48:21 +08:00
Guofang 3a0bb4e0c8 Add 'which' package to installation in Dockerfiles for Debian and Rocky9 2026-09-20 14:26:26 +08:00
Guofang eb8ac43354 Update Rust installation process in Dockerfile to use USTC mirrors 2026-09-18 13:14:20 +08:00
Guofang 0563551eed Remove architecture-specific SHA256 checks for rustup installation in Dockerfile 2026-09-18 11:14:41 +08:00
GuofangandClaude Sonnet 5 ef0079c3ee Install all vendored libraries into lib64 consistently
Verified every third-party build step by building and inspecting the
resulting image, and fixed each one that landed in /usr/local/lib
instead of /usr/local/lib64: CMake projects got -DLIB_INSTALL_DIR,
-DCMAKE_INSTALL_LIBDIR, -DLIBRARY_INSTALL_DIR or -DLIB_SUFFIX as
appropriate, autotools projects got --libdir=/usr/local/lib64, and
libevent (which hardcodes lib with no override) is now patched via
libevent-lib64-install.patch before building. Also drops the boost/
libaio/util-linux/gmp/nettle/gnutls/libproxyprotocol checksum checks,
removes the now-unused lib->lib64 copy fallback, and switches libxml2
to the wangguofang.net GitHub mirror since gitlab.gnome.org is
unreachable from the build environment.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QUU2cEU5XgLpfGVN8Jpa7d
2026-09-17 15:25:07 +08:00
GuofangandClaude Sonnet 5 a425237759 Fetch rocky9 GitHub sources via curl through wangguofang.net proxy
Switch rocky9's GitHub-hosted dependency downloads from `git clone` to
curl-fetched release tarballs via the wangguofang.net proxy, matching
the approach already used in alpine3.24/Dockerfile. log4cplus keeps
git clone since it needs a submodule checkout.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WE1kAAo7iusPxLSuu88HaU
2026-09-17 14:08:08 +08:00
GuofangandClaude Sonnet 5 e685a177d5 Enable jemalloc heap profiling with libunwind backtraces
Build libunwind 1.8.3 as a static library before jemalloc, then
configure jemalloc with --enable-prof --enable-prof-libunwind so the
static libjemalloc.a can dump heap profiles with accurate stack
traces.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sd7pBDVxQENBX1CP2z6Lip
2026-09-17 13:59:41 +08:00
GuofangandClaude Sonnet 5 195ad299cd Rename rockylinux9 build directory to rocky9
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-15 12:09:19 +08:00