Initial commit

This commit is contained in:
Guofang committed 2026-08-13 15:50:03 +08:00
commit 2a96844f99
8 files changed
+1264

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
# Project Instructions
## Source Dependencies
- Do not download or initialize Git submodules during source builds unless an explicit exception is listed below.
- Rely on the default non-recursive behavior of `git clone`; do not add submodule initialization or update steps.
- Declare and pin every source dependency version in the `Dockerfile` or another tracked project file.
- Do not use floating branches, unversioned archives, or implicit dependency downloads.
- Add each dependency as a separate, reviewable build step so its source and version remain visible.
- Append new dependency build steps after all existing dependency build steps. Do not insert or reorder steps in the existing build sequence, so previously successful build layers remain unchanged.
- The log4cplus build is allowed to fetch its required `ThreadPool` submodule as a shallow repository pinned by `REL_2_0_5` to commit `cc0b6371d3963f7028c2da5fc007733f9f3bf205`. Do not fetch unused log4cplus submodules.
- Boost is allowed to recursively clone its modular source submodules. The parent repository and every submodule must be shallow clones from the `boost-1.83.0` release tag.
## System Development Packages
- Do not install distribution-provided `-dev` packages for third-party libraries.
- Build third-party development dependencies from source at explicitly pinned versions.
- System `-dev` packages are allowed only for foundational platform infrastructure, such as glibc and Linux kernel headers.
- Document any new foundational `-dev` package exception in this file before adding it to the image.
- On Rocky Linux 9, `glibc-devel`, `kernel-headers`, and `libstdc++-devel` may be installed directly or as compiler dependencies because they are foundational C/C++ platform and toolchain components.
## Meta Libraries
- Pin all Meta/Facebook ecosystem libraries to the same date-based release tag.
- The current Meta release tag is `v2026.08.03.00`; use this exact tag for Folly and every subsequently added Meta library.
- Update the shared Meta release tag only when all Meta libraries in this project can be updated together.
+47
View File
@@ -0,0 +1,47 @@
# Included libraries
| Library | Version |
| --- | --- |
| Boost | `1.83.0` |
| OpenSSL | `3.0.15` |
| libevent | `release-2.1.12-stable` |
| Protobuf | `v3.21.12` |
| log4cplus | `REL_2_0_5` |
| fmt | `12.2.0` |
| spdlog | `v1.17.0` |
| magic_enum | `v0.9.8` |
| fast_float | `v8.2.10` |
| tsl::sparse_map | `v0.7.0` |
| gflags | `v2.3.1` |
| glog | `v0.7.1` |
| liburing | `2.15` |
| LibAIO | `0.3.113` |
| LibDwarf | `v2.3.2` |
| libsodium | `1.0.20` |
| Zstd | `1.5.7` |
| zlib | `1.3.1` |
| xxHash | `v0.8.3` |
| googletest | `v1.17.0` |
| numactl | `v2.0.19` |
| Folly | `v2026.08.03.00` |
| Fizz | `v2026.08.03.00` |
| Wangle | `v2026.08.03.00` |
| mvfst | `v2026.08.03.00` |
| fbthrift | `v2026.08.03.00` |
| CacheLib | `v2026.08.03.00` |
| ZeroMQ | `4.3.5` |
| CZMQ | `4.2.1` |
| JsonCpp | `1.9.8` |
| librdkafka | `2.15.0` |
| json-c | `0.19` |
| RapidJSON | `24b5e7a8b27f42fa16b96fc70aade9106cf7102f` |
| util-linux libuuid | `2.42.2` |
| curl | `8.21.0` |
| hiredis | `1.4.1` |
| GMP | `6.3.0` |
| Nettle | `3.10.2` |
| GnuTLS | `3.8.13` |
| libmaxminddb | `1.13.3` |
| libyaml | `0.2.5` |
The image includes position-independent static builds of these libraries. ZeroMQ enables CURVE security using static libsodium. CZMQ disables 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.
+25
View File
@@ -0,0 +1,25 @@
# Source Stack Build Environments
Debian 13 and Rocky Linux 9 container build environments with a C/C++ toolchain, CMake, and Git preinstalled, compatible with both Docker and Podman. GitHub HTTPS URLs are routed through `gh-proxy.com`. For the libraries included in the images, their pinned versions, and build details, see [INCLUDED_LIBRARIES.md](INCLUDED_LIBRARIES.md).
## Build
Each build script automatically selects Docker or Podman:
```sh
./debian13/build.sh
./rockylinux9/build.sh
```
Use environment variables to select the container engine or override the image name:
```sh
CONTAINER_ENGINE=podman IMAGE_NAME=my-build-env ./rockylinux9/build.sh
```
## Run
```sh
docker run --rm -it debian13-source-stack
docker run --rm -it rockylinux9-source-stack
```
+515
View File
@@ -0,0 +1,515 @@
FROM docker.io/library/debian:13
ENV DEBIAN_FRONTEND=noninteractive
RUN sed -i 's|deb.debian.org|mirrors.ustc.edu.cn|g' /etc/apt/sources.list.d/debian.sources \
&& apt-get update \
&& apt-get install --yes --no-install-recommends autoconf automake build-essential bzip2 ca-certificates cmake curl git libtool pkg-config \
&& rm -rf /var/lib/apt/lists/*
RUN git config --global url."https://gh-proxy.com/https://github.com/".insteadOf "https://github.com/"
RUN curl --fail --location --output boost.tar.bz2 \
https://mirrors.aliyun.com/blfs/conglomeration/boost/boost_1_83_0.tar.bz2 \
&& echo "6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e boost.tar.bz2" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --bzip2 --file=boost.tar.bz2 --directory=src --strip-components=1 \
&& rm boost.tar.bz2 \
&& cd src \
&& ./bootstrap.sh --prefix=/usr/local \
&& ./b2 --jobs="$(nproc)" \
--with-atomic \
--with-chrono \
--with-context \
--with-date_time \
--with-filesystem \
--with-program_options \
--with-regex \
--with-system \
--with-thread \
cflags=-fPIC \
cxxflags=-fPIC \
link=static \
pch=off \
runtime-link=shared \
threading=multi \
variant=release \
install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=openssl-3.0.15 --depth=1 https://github.com/openssl/openssl.git src \
&& cd src \
&& ./Configure --prefix=/usr/local --libdir=lib no-shared no-tests -fPIC \
&& make --jobs="$(nproc)" \
&& make install_sw \
&& cd .. \
&& rm -rf src
RUN git clone --branch=release-2.1.12-stable --depth=1 https://github.com/libevent/libevent.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DEVENT__DISABLE_BENCHMARK=ON \
-DEVENT__DISABLE_REGRESS=ON \
-DEVENT__DISABLE_SAMPLES=ON \
-DEVENT__DISABLE_TESTS=ON \
-DEVENT__LIBRARY_TYPE=STATIC \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v3.21.12 --depth=1 https://github.com/protocolbuffers/protobuf.git src \
&& cmake -S src -B build -Dprotobuf_BUILD_TESTS=OFF \
-Dprotobuf_BUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=REL_2_0_5 --depth=1 https://gitee.com/mirrors/log4cplus.git src \
&& git -C src submodule update --init --depth=1 threadpool \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DLOG4CPLUS_BUILD_TESTING=OFF \
-DWITH_UNIT_TESTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=12.2.0 --depth=1 https://github.com/fmtlib/fmt.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DFMT_DOC=OFF \
-DFMT_TEST=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v1.17.0 --depth=1 https://github.com/gabime/spdlog.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DSPDLOG_BUILD_BENCH=OFF \
-DSPDLOG_BUILD_EXAMPLE=OFF \
-DSPDLOG_BUILD_TESTS=OFF \
-DSPDLOG_FMT_EXTERNAL=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v0.9.8 --depth=1 https://github.com/Neargye/magic_enum.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DMAGIC_ENUM_OPT_BUILD_EXAMPLES=OFF \
-DMAGIC_ENUM_OPT_BUILD_TESTS=OFF \
-DMAGIC_ENUM_OPT_INSTALL=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v8.2.10 --depth=1 https://github.com/fastfloat/fast_float.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DFASTFLOAT_BENCHMARKS=OFF \
-DFASTFLOAT_INSTALL=ON \
-DFASTFLOAT_TEST=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v0.7.0 --depth=1 https://github.com/Tessil/sparse-map.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2.3.1 --depth=1 https://github.com/gflags/gflags.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_STATIC_LIBS=ON \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DINSTALL_HEADERS=ON \
-DINSTALL_SHARED_LIBS=OFF \
-DINSTALL_STATIC_LIBS=ON \
-DREGISTER_INSTALL_PREFIX=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v0.7.1 --depth=1 https://github.com/google/glog.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DWITH_GFLAGS=ON \
-DWITH_GTEST=OFF \
-DWITH_PKGCONFIG=ON \
-DWITH_UNWIND=none \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=liburing-2.15 --depth=1 https://github.com/axboe/liburing.git src \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local \
&& make --jobs="$(nproc)" ENABLE_SHARED=0 library \
&& make ENABLE_SHARED=0 install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=libaio-0.3.113 --depth=1 https://pagure.io/libaio.git src \
&& make --directory=src --jobs="$(nproc)" ENABLE_SHARED=0 \
&& make --directory=src ENABLE_SHARED=0 prefix=/usr/local install \
&& rm -rf src
RUN git clone --branch=v2.3.2 --depth=1 https://github.com/davea42/libdwarf-code.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_DWARFDUMP=OFF \
-DBUILD_DWARFEXAMPLE=OFF \
-DBUILD_DWARFGEN=OFF \
-DBUILD_NON_SHARED=ON \
-DBUILD_SHARED=OFF \
-DDO_TESTING=OFF \
-DENABLE_DECOMPRESSION=OFF \
-DPIC_ALWAYS=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=1.0.20-RELEASE --depth=1 https://github.com/jedisct1/libsodium.git src \
&& cd src \
&& ./autogen.sh \
&& ./configure --prefix=/usr/local --disable-shared --enable-static --with-pic \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=v1.5.7 --depth=1 https://github.com/facebook/zstd.git src \
&& cmake -S src/build/cmake -B build -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DZSTD_BUILD_CONTRIB=OFF \
-DZSTD_BUILD_PROGRAMS=OFF \
-DZSTD_BUILD_SHARED=OFF \
-DZSTD_BUILD_STATIC=ON \
-DZSTD_BUILD_TESTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v1.3.1 --depth=1 https://github.com/madler/zlib.git src \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local --static \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=v0.8.3 --depth=1 https://github.com/Cyan4973/xxHash.git src \
&& cmake -S src/cmake_unofficial -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DXXHASH_BUILD_XXHSUM=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v1.17.0 --depth=1 https://github.com/google/googletest.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_GMOCK=ON \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DINSTALL_GTEST=ON \
-Dgtest_build_samples=OFF \
-Dgtest_build_tests=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2.0.19 --depth=1 https://github.com/numactl/numactl.git src \
&& cd src \
&& ./autogen.sh \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local --disable-shared --enable-static \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebook/folly.git src \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBOOST_LINK_STATIC=ON \
-DBUILD_BENCHMARKS=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DPYTHON_EXTENSIONS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebookincubator/fizz.git src \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src/fizz -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_EXAMPLES=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-Dsodium_USE_STATIC_LIBS=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebook/wangle.git src \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src/wangle -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_EXAMPLES=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebook/mvfst.git src \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SAMPLES=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_TOOLS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebook/fbthrift.git src \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DTHRIFT_BENCHMARKS=OFF \
-Denable_tests=OFF \
-Dthrift_python=OFF \
-Dthriftpy=OFF \
-Dthriftpy3=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebook/CacheLib.git src \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src/cachelib -B build -DCMAKE_BUILD_TYPE=Release \
-DBOOST_LINK_STATIC=ON \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v4.3.5 --depth=1 https://github.com/zeromq/libzmq.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED=OFF \
-DBUILD_STATIC=ON \
-DBUILD_TESTS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DENABLE_CPACK=OFF \
-DENABLE_CURVE=ON \
-DENABLE_DRAFTS=OFF \
-DWITH_DOC=OFF \
-DWITH_DOCS=OFF \
-DWITH_LIBSODIUM=ON \
-DWITH_LIBSODIUM_STATIC=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v4.2.1 --depth=1 https://github.com/zeromq/czmq.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCZMQ_BUILD_SHARED=OFF \
-DCZMQ_BUILD_STATIC=ON \
-DCZMQ_WITH_LZ4=OFF \
-DCZMQ_WITH_LIBCURL=OFF \
-DCZMQ_WITH_LIBMICROHTTPD=OFF \
-DCZMQ_WITH_NSS=OFF \
-DCZMQ_WITH_SYSTEMD=OFF \
-DCZMQ_WITH_UUID=OFF \
-DENABLE_DRAFTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=1.9.8 --depth=1 https://github.com/open-source-parsers/jsoncpp.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_OBJECT_LIBS=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_STATIC_LIBS=ON \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DJSONCPP_WITH_EXAMPLE=OFF \
-DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF \
-DJSONCPP_WITH_TESTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2.15.0 --depth=1 https://github.com/confluentinc/librdkafka.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DENABLE_LZ4_EXT=OFF \
-DRDKAFKA_BUILD_EXAMPLES=OFF \
-DRDKAFKA_BUILD_STATIC=ON \
-DRDKAFKA_BUILD_TESTS=OFF \
-DWITH_CURL=OFF \
-DWITH_PLUGINS=OFF \
-DWITH_SASL=OFF \
-DWITH_SSL=ON \
-DWITH_ZLIB=ON \
-DWITH_ZSTD=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=json-c-0.19-20260627 --depth=1 https://github.com/json-c/json-c.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_APPS=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_STATIC_LIBS=ON \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DDISABLE_EXTRA_LIBS=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN curl --fail --location --output rapidjson.tar.gz \
https://github.com/Tencent/rapidjson/archive/24b5e7a8b27f42fa16b96fc70aade9106cf7102f.tar.gz \
&& echo "2d2601a82d2d3b7e143a3c8d43ef616671391034bc46891a9816b79cf2d3e7a8 rapidjson.tar.gz" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --gzip --file=rapidjson.tar.gz --directory=src --strip-components=1 \
&& rm rapidjson.tar.gz \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DRAPIDJSON_BUILD_DOC=OFF \
-DRAPIDJSON_BUILD_EXAMPLES=OFF \
-DRAPIDJSON_BUILD_TESTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN curl --fail --location --output util-linux.tar.xz \
https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.42/util-linux-2.42.2.tar.xz \
&& echo "03a05d3adf9602ef128f2da05b84b3205ce60c351e5737c0370f74000679ce8a util-linux.tar.xz" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --xz --file=util-linux.tar.xz --directory=src --strip-components=1 \
&& rm util-linux.tar.xz \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local \
--disable-all-programs \
--disable-bash-completion \
--disable-makeinstall-chown \
--disable-nls \
--disable-shared \
--enable-libuuid \
--enable-static \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=curl-8_21_0 --depth=1 https://github.com/curl/curl.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_CURL_EXE=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_LIBCURL_DOCS=OFF \
-DBUILD_MISC_DOCS=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_STATIC_LIBS=ON \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCURL_BROTLI=OFF \
-DCURL_USE_LIBPSL=OFF \
-DCURL_USE_LIBSSH=OFF \
-DCURL_USE_LIBSSH2=OFF \
-DCURL_USE_OPENSSL=ON \
-DENABLE_CURL_MANUAL=OFF \
-DHTTP_ONLY=ON \
-DUSE_LIBIDN2=OFF \
-DUSE_NGHTTP2=OFF \
-DUSE_NGTCP2=OFF \
-DUSE_QUICHE=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v1.4.1 --depth=1 https://github.com/redis/hiredis.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DENABLE_ASYNC_TESTS=OFF \
-DENABLE_EXAMPLES=OFF \
-DENABLE_NUGET=OFF \
-DENABLE_SSL=OFF \
-DENABLE_SSL_TESTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN curl --fail --location --output gmp.tar.xz \
https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz \
&& echo "a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898 gmp.tar.xz" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --xz --file=gmp.tar.xz --directory=src --strip-components=1 \
&& rm gmp.tar.xz \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local --disable-shared --enable-static \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN curl --fail --location --output nettle.tar.gz \
https://ftp.gnu.org/gnu/nettle/nettle-3.10.2.tar.gz \
&& echo "fe9ff51cb1f2abb5e65a6b8c10a92da0ab5ab6eaf26e7fc2b675c45f1fb519b5 nettle.tar.gz" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --gzip --file=nettle.tar.gz --directory=src --strip-components=1 \
&& rm nettle.tar.gz \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local --libdir=/usr/local/lib \
--disable-documentation \
--disable-shared \
--enable-static \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN curl --fail --location --output gnutls.tar.xz \
https://mirrors.dotsrc.org/gcrypt/gnutls/v3.8/gnutls-3.8.13.tar.xz \
&& echo "ffed8ec1bf09c2426d4f14aae377de4753b53e537d685e604e99a8b16ca9c97e gnutls.tar.xz" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --xz --file=gnutls.tar.xz --directory=src --strip-components=1 \
&& rm gnutls.tar.xz \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local \
--with-included-libtasn1 \
--with-included-unistring \
--disable-cxx \
--disable-doc \
--disable-manpages \
--disable-nls \
--disable-shared \
--disable-tests \
--disable-tools \
--enable-static \
--without-brotli \
--without-idn \
--without-p11-kit \
--without-tpm \
--without-tpm2 \
--without-zlib \
--without-zstd \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=1.13.3 --depth=1 https://github.com/maxmind/libmaxminddb.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DMAXMINDDB_BUILD_BINARIES=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=0.2.5 --depth=1 https://github.com/yaml/libyaml.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
CMD ["/bin/bash"]
+20
View File
@@ -0,0 +1,20 @@
#!/bin/sh
set -eu
IMAGE_NAME="${IMAGE_NAME:-debian13-source-stack}"
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
if [ -n "${CONTAINER_ENGINE:-}" ]; then
ENGINE=$CONTAINER_ENGINE
elif command -v docker >/dev/null 2>&1; then
ENGINE=docker
elif command -v podman >/dev/null 2>&1; then
ENGINE=podman
else
echo "Error: Docker or Podman is required." >&2
exit 1
fi
echo "Building image $IMAGE_NAME with $ENGINE ..."
exec "$ENGINE" build --tag "$IMAGE_NAME" "$SCRIPT_DIR"
+534
View File
@@ -0,0 +1,534 @@
FROM docker.io/rockylinux/rockylinux:9
RUN dnf install --assumeyes \
autoconf \
automake \
bzip2 \
ca-certificates \
cmake \
curl-minimal \
gcc \
gcc-c++ \
libasan \
git \
libtool \
make \
patch \
perl-core \
pkgconf-pkg-config \
tar \
xz \
&& dnf clean all \
&& rm -rf /var/cache/dnf
RUN git config --global url."https://gh-proxy.com/https://github.com/".insteadOf "https://github.com/"
RUN curl --fail --location --output boost.tar.bz2 \
https://mirrors.aliyun.com/blfs/conglomeration/boost/boost_1_83_0.tar.bz2 \
&& echo "6478edfe2f3305127cffe8caf73ea0176c53769f4bf1585be237eb30798c3b8e boost.tar.bz2" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --bzip2 --file=boost.tar.bz2 --directory=src --strip-components=1 \
&& rm boost.tar.bz2 \
&& cd src \
&& ./bootstrap.sh --prefix=/usr/local \
&& ./b2 --jobs="$(nproc)" \
--with-atomic \
--with-chrono \
--with-context \
--with-date_time \
--with-filesystem \
--with-program_options \
--with-regex \
--with-system \
--with-thread \
cflags=-fPIC \
cxxflags=-fPIC \
link=static \
pch=off \
runtime-link=shared \
threading=multi \
variant=release \
install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=openssl-3.0.15 --depth=1 https://github.com/openssl/openssl.git src \
&& cd src \
&& ./Configure --prefix=/usr/local --libdir=lib no-shared no-tests -fPIC \
&& make --jobs="$(nproc)" \
&& make install_sw \
&& cd .. \
&& rm -rf src
RUN git clone --branch=release-2.1.12-stable --depth=1 https://github.com/libevent/libevent.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DEVENT__DISABLE_BENCHMARK=ON \
-DEVENT__DISABLE_REGRESS=ON \
-DEVENT__DISABLE_SAMPLES=ON \
-DEVENT__DISABLE_TESTS=ON \
-DEVENT__LIBRARY_TYPE=STATIC \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v3.21.12 --depth=1 https://github.com/protocolbuffers/protobuf.git src \
&& cmake -S src -B build -Dprotobuf_BUILD_TESTS=OFF \
-Dprotobuf_BUILD_SHARED_LIBS=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=REL_2_0_5 --depth=1 https://gitee.com/mirrors/log4cplus.git src \
&& git -C src submodule update --init --depth=1 threadpool \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DLOG4CPLUS_BUILD_TESTING=OFF \
-DWITH_UNIT_TESTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=12.2.0 --depth=1 https://github.com/fmtlib/fmt.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DFMT_DOC=OFF \
-DFMT_TEST=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v1.17.0 --depth=1 https://github.com/gabime/spdlog.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DSPDLOG_BUILD_BENCH=OFF \
-DSPDLOG_BUILD_EXAMPLE=OFF \
-DSPDLOG_BUILD_TESTS=OFF \
-DSPDLOG_FMT_EXTERNAL=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v0.9.8 --depth=1 https://github.com/Neargye/magic_enum.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DMAGIC_ENUM_OPT_BUILD_EXAMPLES=OFF \
-DMAGIC_ENUM_OPT_BUILD_TESTS=OFF \
-DMAGIC_ENUM_OPT_INSTALL=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v8.2.10 --depth=1 https://github.com/fastfloat/fast_float.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DFASTFLOAT_BENCHMARKS=OFF \
-DFASTFLOAT_INSTALL=ON \
-DFASTFLOAT_TEST=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v0.7.0 --depth=1 https://github.com/Tessil/sparse-map.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2.3.1 --depth=1 https://github.com/gflags/gflags.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_STATIC_LIBS=ON \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DINSTALL_HEADERS=ON \
-DINSTALL_SHARED_LIBS=OFF \
-DINSTALL_STATIC_LIBS=ON \
-DREGISTER_INSTALL_PREFIX=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v0.7.1 --depth=1 https://github.com/google/glog.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DWITH_GFLAGS=ON \
-DWITH_GTEST=OFF \
-DWITH_PKGCONFIG=ON \
-DWITH_UNWIND=none \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=liburing-2.15 --depth=1 https://github.com/axboe/liburing.git src \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local \
&& make --jobs="$(nproc)" ENABLE_SHARED=0 library \
&& make ENABLE_SHARED=0 install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=libaio-0.3.113 --depth=1 https://pagure.io/libaio.git src \
&& make --directory=src --jobs="$(nproc)" ENABLE_SHARED=0 \
&& make --directory=src ENABLE_SHARED=0 prefix=/usr/local install \
&& rm -rf src
RUN git clone --branch=v2.3.2 --depth=1 https://github.com/davea42/libdwarf-code.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_DWARFDUMP=OFF \
-DBUILD_DWARFEXAMPLE=OFF \
-DBUILD_DWARFGEN=OFF \
-DBUILD_NON_SHARED=ON \
-DBUILD_SHARED=OFF \
-DDO_TESTING=OFF \
-DENABLE_DECOMPRESSION=OFF \
-DPIC_ALWAYS=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=1.0.20-RELEASE --depth=1 https://github.com/jedisct1/libsodium.git src \
&& cd src \
&& ./autogen.sh \
&& ./configure --prefix=/usr/local --disable-shared --enable-static --with-pic \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=v1.5.7 --depth=1 https://github.com/facebook/zstd.git src \
&& cmake -S src/build/cmake -B build -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DZSTD_BUILD_CONTRIB=OFF \
-DZSTD_BUILD_PROGRAMS=OFF \
-DZSTD_BUILD_SHARED=OFF \
-DZSTD_BUILD_STATIC=ON \
-DZSTD_BUILD_TESTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v1.3.1 --depth=1 https://github.com/madler/zlib.git src \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local --static \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=v0.8.3 --depth=1 https://github.com/Cyan4973/xxHash.git src \
&& cmake -S src/cmake_unofficial -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DXXHASH_BUILD_XXHSUM=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v1.17.0 --depth=1 https://github.com/google/googletest.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_GMOCK=ON \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DINSTALL_GTEST=ON \
-Dgtest_build_samples=OFF \
-Dgtest_build_tests=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2.0.19 --depth=1 https://github.com/numactl/numactl.git src \
&& cd src \
&& ./autogen.sh \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local --disable-shared --enable-static \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebook/folly.git src \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBOOST_LINK_STATIC=ON \
-DBUILD_BENCHMARKS=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DPYTHON_EXTENSIONS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebookincubator/fizz.git src \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src/fizz -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_EXAMPLES=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-Dsodium_USE_STATIC_LIBS=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebook/wangle.git src \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src/wangle -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_EXAMPLES=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebook/mvfst.git src \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SAMPLES=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_TOOLS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebook/fbthrift.git src \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DTHRIFT_BENCHMARKS=OFF \
-Denable_tests=OFF \
-Dthrift_python=OFF \
-Dthriftpy=OFF \
-Dthriftpy3=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
COPY cachelib-optional-interface.patch /tmp/
RUN git clone --branch=v2026.08.03.00 --depth=1 https://github.com/facebook/CacheLib.git src \
&& git -C src apply /tmp/cachelib-optional-interface.patch \
&& CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \
cmake -S src/cachelib -B build -DCMAKE_BUILD_TYPE=Release \
-DBOOST_LINK_STATIC=ON \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DBUILD_CACHELIB_INTERFACE=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src /tmp/cachelib-optional-interface.patch
RUN git clone --branch=v4.3.5 --depth=1 https://github.com/zeromq/libzmq.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED=OFF \
-DBUILD_STATIC=ON \
-DBUILD_TESTS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DENABLE_CPACK=OFF \
-DENABLE_CURVE=ON \
-DENABLE_DRAFTS=OFF \
-DWITH_DOC=OFF \
-DWITH_DOCS=OFF \
-DWITH_LIBSODIUM=ON \
-DWITH_LIBSODIUM_STATIC=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v4.2.1 --depth=1 https://github.com/zeromq/czmq.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCZMQ_BUILD_SHARED=OFF \
-DCZMQ_BUILD_STATIC=ON \
-DCZMQ_WITH_LZ4=OFF \
-DCZMQ_WITH_LIBCURL=OFF \
-DCZMQ_WITH_LIBMICROHTTPD=OFF \
-DCZMQ_WITH_NSS=OFF \
-DCZMQ_WITH_SYSTEMD=OFF \
-DCZMQ_WITH_UUID=OFF \
-DENABLE_DRAFTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=1.9.8 --depth=1 https://github.com/open-source-parsers/jsoncpp.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_OBJECT_LIBS=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_STATIC_LIBS=ON \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DJSONCPP_WITH_EXAMPLE=OFF \
-DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF \
-DJSONCPP_WITH_TESTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v2.15.0 --depth=1 https://github.com/confluentinc/librdkafka.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DENABLE_LZ4_EXT=OFF \
-DRDKAFKA_BUILD_EXAMPLES=OFF \
-DRDKAFKA_BUILD_STATIC=ON \
-DRDKAFKA_BUILD_TESTS=OFF \
-DWITH_CURL=OFF \
-DWITH_PLUGINS=OFF \
-DWITH_SASL=OFF \
-DWITH_SSL=ON \
-DWITH_ZLIB=ON \
-DWITH_ZSTD=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=json-c-0.19-20260627 --depth=1 https://github.com/json-c/json-c.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_APPS=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_STATIC_LIBS=ON \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DDISABLE_EXTRA_LIBS=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN curl --fail --location --output rapidjson.tar.gz \
https://github.com/Tencent/rapidjson/archive/24b5e7a8b27f42fa16b96fc70aade9106cf7102f.tar.gz \
&& echo "2d2601a82d2d3b7e143a3c8d43ef616671391034bc46891a9816b79cf2d3e7a8 rapidjson.tar.gz" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --gzip --file=rapidjson.tar.gz --directory=src --strip-components=1 \
&& rm rapidjson.tar.gz \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DRAPIDJSON_BUILD_DOC=OFF \
-DRAPIDJSON_BUILD_EXAMPLES=OFF \
-DRAPIDJSON_BUILD_TESTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN curl --fail --location --output util-linux.tar.xz \
https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.42/util-linux-2.42.2.tar.xz \
&& echo "03a05d3adf9602ef128f2da05b84b3205ce60c351e5737c0370f74000679ce8a util-linux.tar.xz" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --xz --file=util-linux.tar.xz --directory=src --strip-components=1 \
&& rm util-linux.tar.xz \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local \
--disable-all-programs \
--disable-bash-completion \
--disable-makeinstall-chown \
--disable-nls \
--disable-shared \
--enable-libuuid \
--enable-static \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=curl-8_21_0 --depth=1 https://github.com/curl/curl.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_CURL_EXE=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_LIBCURL_DOCS=OFF \
-DBUILD_MISC_DOCS=OFF \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_STATIC_LIBS=ON \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DCURL_BROTLI=OFF \
-DCURL_USE_LIBPSL=OFF \
-DCURL_USE_LIBSSH=OFF \
-DCURL_USE_LIBSSH2=OFF \
-DCURL_USE_OPENSSL=ON \
-DENABLE_CURL_MANUAL=OFF \
-DHTTP_ONLY=ON \
-DUSE_LIBIDN2=OFF \
-DUSE_NGHTTP2=OFF \
-DUSE_NGTCP2=OFF \
-DUSE_QUICHE=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=v1.4.1 --depth=1 https://github.com/redis/hiredis.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DENABLE_ASYNC_TESTS=OFF \
-DENABLE_EXAMPLES=OFF \
-DENABLE_NUGET=OFF \
-DENABLE_SSL=OFF \
-DENABLE_SSL_TESTS=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN curl --fail --location --output gmp.tar.xz \
https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz \
&& echo "a3c2b80201b89e68616f4ad30bc66aee4927c3ce50e33929ca819d5c43538898 gmp.tar.xz" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --xz --file=gmp.tar.xz --directory=src --strip-components=1 \
&& rm gmp.tar.xz \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local --disable-shared --enable-static \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN curl --fail --location --output nettle.tar.gz \
https://ftp.gnu.org/gnu/nettle/nettle-3.10.2.tar.gz \
&& echo "fe9ff51cb1f2abb5e65a6b8c10a92da0ab5ab6eaf26e7fc2b675c45f1fb519b5 nettle.tar.gz" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --gzip --file=nettle.tar.gz --directory=src --strip-components=1 \
&& rm nettle.tar.gz \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local \
--disable-documentation \
--disable-shared \
--enable-static \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN curl --fail --location --output gnutls.tar.xz \
https://mirrors.dotsrc.org/gcrypt/gnutls/v3.8/gnutls-3.8.13.tar.xz \
&& echo "ffed8ec1bf09c2426d4f14aae377de4753b53e537d685e604e99a8b16ca9c97e gnutls.tar.xz" \
| sha256sum --check - \
&& mkdir src \
&& tar --extract --xz --file=gnutls.tar.xz --directory=src --strip-components=1 \
&& rm gnutls.tar.xz \
&& cd src \
&& CFLAGS=-fPIC ./configure --prefix=/usr/local \
--with-included-libtasn1 \
--with-included-unistring \
--disable-cxx \
--disable-doc \
--disable-manpages \
--disable-nls \
--disable-shared \
--disable-tests \
--disable-tools \
--enable-static \
--without-brotli \
--without-idn \
--without-p11-kit \
--without-tpm \
--without-tpm2 \
--without-zlib \
--without-zstd \
&& make --jobs="$(nproc)" \
&& make install \
&& cd .. \
&& rm -rf src
RUN git clone --branch=1.13.3 --depth=1 https://github.com/maxmind/libmaxminddb.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
-DMAXMINDDB_BUILD_BINARIES=OFF \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN git clone --branch=0.2.5 --depth=1 https://github.com/yaml/libyaml.git src \
&& cmake -S src -B build -DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DBUILD_TESTING=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
&& cmake --build build --parallel "$(nproc)" --target install \
&& rm -rf build src
RUN cp --archive /usr/local/lib/. /usr/local/lib64/
CMD ["/bin/bash"]
+20
View File
@@ -0,0 +1,20 @@
#!/bin/sh
set -eu
IMAGE_NAME="${IMAGE_NAME:-rockylinux9-source-stack}"
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
if [ -n "${CONTAINER_ENGINE:-}" ]; then
ENGINE=$CONTAINER_ENGINE
elif command -v docker >/dev/null 2>&1; then
ENGINE=docker
elif command -v podman >/dev/null 2>&1; then
ENGINE=podman
else
echo "Error: Docker or Podman is required." >&2
exit 1
fi
echo "Building image $IMAGE_NAME with $ENGINE ..."
exec "$ENGINE" build --tag "$IMAGE_NAME" "$SCRIPT_DIR"
@@ -0,0 +1,77 @@
diff --git a/cachelib/CMakeLists.txt b/cachelib/CMakeLists.txt
index 9442838..2a22ba8 100644
--- a/cachelib/CMakeLists.txt
+++ b/cachelib/CMakeLists.txt
@@ -43,6 +43,8 @@ set(PACKAGE_BUGREPORT "https://github.com/facebook/TBD")
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
option(BUILD_TESTS "If enabled, compile the tests." ON)
+option(BUILD_CACHELIB_INTERFACE
+ "Build the coroutine CacheComponent interface and cachebench." ON)
set(BIN_INSTALL_DIR bin CACHE STRING
@@ -316,11 +318,15 @@ add_subdirectory (common)
add_subdirectory (shm)
add_subdirectory (navy)
add_subdirectory (allocator)
-add_subdirectory (interface)
add_subdirectory (datatype)
add_subdirectory (compact_cache)
add_subdirectory (benchmarks)
-add_subdirectory (cachebench)
+if (BUILD_CACHELIB_INTERFACE)
+ add_subdirectory (interface)
+ add_subdirectory (cachebench)
+else ()
+ message(STATUS "Skipping cachelib_interface and cachebench")
+endif ()
# Install the source header files
install(
@@ -379,13 +385,18 @@ install(
)
add_library(cachelib INTERFACE)
-target_link_libraries(cachelib INTERFACE
+set(CACHELIB_LINK_LIBRARIES
cachelib_common
cachelib_shm
cachelib_navy
cachelib_allocator
- cachelib_interface
)
+if (BUILD_CACHELIB_INTERFACE)
+ list(APPEND CACHELIB_LINK_LIBRARIES cachelib_interface)
+endif ()
+target_link_libraries(cachelib INTERFACE
+ ${CACHELIB_LINK_LIBRARIES}
+ )
target_include_directories(
cachelib
INTERFACE
@@ -405,15 +416,20 @@ install(EXPORT cachelib-exports
DESTINATION ${CMAKE_INSTALL_DIR})
if (BUILD_SHARED_LIBS)
- set_target_properties(
+ set(CACHELIB_VERSIONED_TARGETS
cachelib_allocator
- cachelib_cachebench
cachelib_common
cachelib_datatype
- cachelib_interface
cachelib_navy
cachelib_shm
- PROPERTIES
+ )
+ if (BUILD_CACHELIB_INTERFACE)
+ list(APPEND CACHELIB_VERSIONED_TARGETS
+ cachelib_cachebench
+ cachelib_interface)
+ endif ()
+ set_target_properties(
+ ${CACHELIB_VERSIONED_TARGETS} PROPERTIES
SOVERSION ${CACHELIB_MAJOR_VERSION}
VERSION ${PACKAGE_VERSION}
)