diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..81020b6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/sources/ diff --git a/debian13/Dockerfile b/debian13/Dockerfile index ce9a4a9..c9b4f48 100644 --- a/debian13/Dockerfile +++ b/debian13/Dockerfile @@ -23,14 +23,9 @@ RUN sed -i 's|deb.debian.org|mirrors.ustc.edu.cn|g' /etc/apt/sources.list.d/debi RUN git config --global url."https://wangguofang.net/github.com/".insteadOf "https://github.com/" -RUN aria2c \ - --max-connection-per-server=1 --retry-wait=3 \ - --out=boost.tar.bz2 \ - https://mirrors.aliyun.com/blfs/conglomeration/boost/boost_1_83_0.tar.bz2 \ - https://archives.boost.io/release/1.83.0/source/boost_1_83_0.tar.bz2 \ - && mkdir src \ - && tar --extract --bzip2 --file=boost.tar.bz2 --directory=src --strip-components=1 \ - && rm boost.tar.bz2 \ +RUN --mount=type=bind,from=sources,source=boost_1_83_0.tar.bz2,target=/tmp/boost.tar.bz2 \ + mkdir src \ + && tar --extract --bzip2 --file=/tmp/boost.tar.bz2 --directory=src --strip-components=1 \ && cd src \ && ./bootstrap.sh --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu \ && ./b2 --jobs="$(nproc)" \ @@ -54,11 +49,9 @@ RUN aria2c \ && cd .. \ && rm -rf src -RUN curl --fail --location --output openssl.tar.gz \ - https://wangguofang.net/github.com/openssl/openssl/archive/openssl-3.0.15.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=openssl.tar.gz --directory=src --strip-components=1 \ - && rm openssl.tar.gz \ +RUN --mount=type=bind,from=sources,source=openssl-openssl-3.0.15.tar.gz,target=/tmp/openssl.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/openssl.tar.gz --directory=src --strip-components=1 \ && cd src \ && ./Configure --prefix=/usr/local --libdir=lib/x86_64-linux-gnu no-shared no-tests -fPIC \ && make --jobs="$(nproc)" \ @@ -67,11 +60,9 @@ RUN curl --fail --location --output openssl.tar.gz \ && rm -rf src COPY libevent-lib-x86_64-linux-gnu-install.patch /tmp/ -RUN curl --fail --location --output libevent.tar.gz \ - https://wangguofang.net/github.com/libevent/libevent/archive/release-2.1.12-stable.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=libevent.tar.gz --directory=src --strip-components=1 \ - && rm libevent.tar.gz \ +RUN --mount=type=bind,from=sources,source=libevent-release-2.1.12-stable.tar.gz,target=/tmp/libevent.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/libevent.tar.gz --directory=src --strip-components=1 \ && git -C src apply /tmp/libevent-lib-x86_64-linux-gnu-install.patch \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ @@ -83,11 +74,9 @@ RUN curl --fail --location --output libevent.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src /tmp/libevent-lib-x86_64-linux-gnu-install.patch -RUN curl --fail --location --output zstd.tar.gz \ - https://wangguofang.net/github.com/facebook/zstd/archive/v1.5.7.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=zstd.tar.gz --directory=src --strip-components=1 \ - && rm zstd.tar.gz \ +RUN --mount=type=bind,from=sources,source=zstd-v1.5.7.tar.gz,target=/tmp/zstd.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/zstd.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src/build/cmake -B build -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ @@ -99,11 +88,9 @@ RUN curl --fail --location --output zstd.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output zlib.tar.gz \ - https://wangguofang.net/github.com/madler/zlib/archive/v1.3.1.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=zlib.tar.gz --directory=src --strip-components=1 \ - && rm zlib.tar.gz \ +RUN --mount=type=bind,from=sources,source=zlib-v1.3.1.tar.gz,target=/tmp/zlib.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/zlib.tar.gz --directory=src --strip-components=1 \ && cd src \ && CFLAGS=-fPIC ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu --static \ && make --jobs="$(nproc)" \ @@ -111,11 +98,9 @@ RUN curl --fail --location --output zlib.tar.gz \ && cd .. \ && rm -rf src -RUN curl --fail --location --output protobuf.tar.gz \ - https://wangguofang.net/github.com/protocolbuffers/protobuf/archive/v3.21.12.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=protobuf.tar.gz --directory=src --strip-components=1 \ - && rm protobuf.tar.gz \ +RUN --mount=type=bind,from=sources,source=protobuf-v3.21.12.tar.gz,target=/tmp/protobuf.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/protobuf.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -Dprotobuf_BUILD_TESTS=OFF \ -Dprotobuf_BUILD_SHARED_LIBS=OFF \ -Dprotobuf_WITH_ZLIB=ON \ @@ -137,11 +122,9 @@ RUN git clone --branch=REL_2_0_5 --depth=1 https://github.com/log4cplus/log4cplu && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output fmt.tar.gz \ - https://wangguofang.net/github.com/fmtlib/fmt/archive/12.2.0.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=fmt.tar.gz --directory=src --strip-components=1 \ - && rm fmt.tar.gz \ +RUN --mount=type=bind,from=sources,source=fmt-12.2.0.tar.gz,target=/tmp/fmt.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/fmt.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ @@ -151,11 +134,9 @@ RUN curl --fail --location --output fmt.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output spdlog.tar.gz \ - https://wangguofang.net/github.com/gabime/spdlog/archive/v1.17.0.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=spdlog.tar.gz --directory=src --strip-components=1 \ - && rm spdlog.tar.gz \ +RUN --mount=type=bind,from=sources,source=spdlog-v1.17.0.tar.gz,target=/tmp/spdlog.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/spdlog.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ @@ -167,11 +148,9 @@ RUN curl --fail --location --output spdlog.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output magic_enum.tar.gz \ - https://wangguofang.net/github.com/Neargye/magic_enum/archive/v0.9.8.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=magic_enum.tar.gz --directory=src --strip-components=1 \ - && rm magic_enum.tar.gz \ +RUN --mount=type=bind,from=sources,source=magic_enum-v0.9.8.tar.gz,target=/tmp/magic_enum.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/magic_enum.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ -DMAGIC_ENUM_OPT_BUILD_EXAMPLES=OFF \ @@ -180,11 +159,9 @@ RUN curl --fail --location --output magic_enum.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output fast_float.tar.gz \ - https://wangguofang.net/github.com/fastfloat/fast_float/archive/v8.2.10.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=fast_float.tar.gz --directory=src --strip-components=1 \ - && rm fast_float.tar.gz \ +RUN --mount=type=bind,from=sources,source=fast_float-v8.2.10.tar.gz,target=/tmp/fast_float.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/fast_float.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ -DFASTFLOAT_BENCHMARKS=OFF \ @@ -193,21 +170,17 @@ RUN curl --fail --location --output fast_float.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output sparse-map.tar.gz \ - https://wangguofang.net/github.com/Tessil/sparse-map/archive/v0.7.0.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=sparse-map.tar.gz --directory=src --strip-components=1 \ - && rm sparse-map.tar.gz \ +RUN --mount=type=bind,from=sources,source=sparse-map-v0.7.0.tar.gz,target=/tmp/sparse-map.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/sparse-map.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output gflags.tar.gz \ - https://wangguofang.net/github.com/gflags/gflags/archive/v2.3.1.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=gflags.tar.gz --directory=src --strip-components=1 \ - && rm gflags.tar.gz \ +RUN --mount=type=bind,from=sources,source=gflags-v2.3.1.tar.gz,target=/tmp/gflags.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/gflags.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_STATIC_LIBS=ON \ @@ -221,11 +194,9 @@ RUN curl --fail --location --output gflags.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output glog.tar.gz \ - https://wangguofang.net/github.com/google/glog/archive/v0.7.1.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=glog.tar.gz --directory=src --strip-components=1 \ - && rm glog.tar.gz \ +RUN --mount=type=bind,from=sources,source=glog-v0.7.1.tar.gz,target=/tmp/glog.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/glog.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_TESTING=OFF \ @@ -238,11 +209,9 @@ RUN curl --fail --location --output glog.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output liburing.tar.gz \ - https://wangguofang.net/github.com/axboe/liburing/archive/liburing-2.15.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=liburing.tar.gz --directory=src --strip-components=1 \ - && rm liburing.tar.gz \ +RUN --mount=type=bind,from=sources,source=liburing-liburing-2.15.tar.gz,target=/tmp/liburing.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/liburing.tar.gz --directory=src --strip-components=1 \ && cd src \ && CFLAGS=-fPIC ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu --libdevdir=/usr/local/lib/x86_64-linux-gnu \ && make --jobs="$(nproc)" ENABLE_SHARED=0 library \ @@ -250,20 +219,16 @@ RUN curl --fail --location --output liburing.tar.gz \ && cd .. \ && rm -rf src -RUN curl --fail --location --output libaio.tar.gz \ - https://mirrors.tuna.tsinghua.edu.cn/debian/pool/main/liba/libaio/libaio_0.3.113.orig.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=libaio.tar.gz --directory=src --strip-components=1 \ - && rm libaio.tar.gz \ +RUN --mount=type=bind,from=sources,source=libaio_0.3.113.orig.tar.gz,target=/tmp/libaio.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/libaio.tar.gz --directory=src --strip-components=1 \ && make --directory=src --jobs="$(nproc)" ENABLE_SHARED=0 \ && make --directory=src ENABLE_SHARED=0 prefix=/usr/local libdir=/usr/local/lib/x86_64-linux-gnu install \ && rm -rf src -RUN curl --fail --location --output libdwarf-code.tar.gz \ - https://wangguofang.net/github.com/davea42/libdwarf-code/archive/v2.3.2.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=libdwarf-code.tar.gz --directory=src --strip-components=1 \ - && rm libdwarf-code.tar.gz \ +RUN --mount=type=bind,from=sources,source=libdwarf-code-v2.3.2.tar.gz,target=/tmp/libdwarf-code.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/libdwarf-code.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_DWARFDUMP=OFF \ -DBUILD_DWARFEXAMPLE=OFF \ @@ -277,11 +242,9 @@ RUN curl --fail --location --output libdwarf-code.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output libsodium.tar.gz \ - https://wangguofang.net/github.com/jedisct1/libsodium/archive/1.0.20-RELEASE.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=libsodium.tar.gz --directory=src --strip-components=1 \ - && rm libsodium.tar.gz \ +RUN --mount=type=bind,from=sources,source=libsodium-1.0.20-RELEASE.tar.gz,target=/tmp/libsodium.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/libsodium.tar.gz --directory=src --strip-components=1 \ && cd src \ && ./autogen.sh \ && ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu --disable-shared --enable-static --with-pic \ @@ -290,11 +253,9 @@ RUN curl --fail --location --output libsodium.tar.gz \ && cd .. \ && rm -rf src -RUN curl --fail --location --output xxHash.tar.gz \ - https://wangguofang.net/github.com/Cyan4973/xxHash/archive/v0.8.3.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=xxHash.tar.gz --directory=src --strip-components=1 \ - && rm xxHash.tar.gz \ +RUN --mount=type=bind,from=sources,source=xxHash-v0.8.3.tar.gz,target=/tmp/xxHash.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/xxHash.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src/cmake_unofficial -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ @@ -303,11 +264,9 @@ RUN curl --fail --location --output xxHash.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output googletest.tar.gz \ - https://wangguofang.net/github.com/google/googletest/archive/v1.17.0.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=googletest.tar.gz --directory=src --strip-components=1 \ - && rm googletest.tar.gz \ +RUN --mount=type=bind,from=sources,source=googletest-v1.17.0.tar.gz,target=/tmp/googletest.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/googletest.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_GMOCK=ON \ -DBUILD_SHARED_LIBS=OFF \ @@ -319,11 +278,9 @@ RUN curl --fail --location --output googletest.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output numactl.tar.gz \ - https://wangguofang.net/github.com/numactl/numactl/archive/v2.0.19.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=numactl.tar.gz --directory=src --strip-components=1 \ - && rm numactl.tar.gz \ +RUN --mount=type=bind,from=sources,source=numactl-v2.0.19.tar.gz,target=/tmp/numactl.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/numactl.tar.gz --directory=src --strip-components=1 \ && cd src \ && ./autogen.sh \ && CFLAGS=-fPIC ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu --disable-shared --enable-static \ @@ -332,11 +289,9 @@ RUN curl --fail --location --output numactl.tar.gz \ && cd .. \ && rm -rf src -RUN curl --fail --location --output folly.tar.gz \ - https://wangguofang.net/github.com/facebook/folly/archive/v2026.08.03.00.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=folly.tar.gz --directory=src --strip-components=1 \ - && rm folly.tar.gz \ +RUN --mount=type=bind,from=sources,source=folly-v2026.08.03.00.tar.gz,target=/tmp/folly.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/folly.tar.gz --directory=src --strip-components=1 \ && CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \ cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBOOST_LINK_STATIC=ON \ @@ -350,11 +305,9 @@ RUN curl --fail --location --output folly.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output fizz.tar.gz \ - https://wangguofang.net/github.com/facebookincubator/fizz/archive/v2026.08.03.00.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=fizz.tar.gz --directory=src --strip-components=1 \ - && rm fizz.tar.gz \ +RUN --mount=type=bind,from=sources,source=fizz-v2026.08.03.00.tar.gz,target=/tmp/fizz.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/fizz.tar.gz --directory=src --strip-components=1 \ && CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \ cmake -G Ninja -S src/fizz -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_EXAMPLES=OFF \ @@ -367,11 +320,9 @@ RUN curl --fail --location --output fizz.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output wangle.tar.gz \ - https://wangguofang.net/github.com/facebook/wangle/archive/v2026.08.03.00.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=wangle.tar.gz --directory=src --strip-components=1 \ - && rm wangle.tar.gz \ +RUN --mount=type=bind,from=sources,source=wangle-v2026.08.03.00.tar.gz,target=/tmp/wangle.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/wangle.tar.gz --directory=src --strip-components=1 \ && CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \ cmake -G Ninja -S src/wangle -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_EXAMPLES=OFF \ @@ -383,11 +334,9 @@ RUN curl --fail --location --output wangle.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output mvfst.tar.gz \ - https://wangguofang.net/github.com/facebook/mvfst/archive/v2026.08.03.00.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=mvfst.tar.gz --directory=src --strip-components=1 \ - && rm mvfst.tar.gz \ +RUN --mount=type=bind,from=sources,source=mvfst-v2026.08.03.00.tar.gz,target=/tmp/mvfst.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/mvfst.tar.gz --directory=src --strip-components=1 \ && CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \ cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SAMPLES=OFF \ @@ -399,11 +348,9 @@ RUN curl --fail --location --output mvfst.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output fbthrift.tar.gz \ - https://wangguofang.net/github.com/facebook/fbthrift/archive/v2026.08.03.00.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=fbthrift.tar.gz --directory=src --strip-components=1 \ - && rm fbthrift.tar.gz \ +RUN --mount=type=bind,from=sources,source=fbthrift-v2026.08.03.00.tar.gz,target=/tmp/fbthrift.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/fbthrift.tar.gz --directory=src --strip-components=1 \ && CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \ cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ @@ -418,11 +365,9 @@ RUN curl --fail --location --output fbthrift.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output CacheLib.tar.gz \ - https://wangguofang.net/github.com/facebook/CacheLib/archive/v2026.08.03.00.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=CacheLib.tar.gz --directory=src --strip-components=1 \ - && rm CacheLib.tar.gz \ +RUN --mount=type=bind,from=sources,source=CacheLib-v2026.08.03.00.tar.gz,target=/tmp/CacheLib.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/CacheLib.tar.gz --directory=src --strip-components=1 \ && CXXFLAGS="-DGLOG_USE_GLOG_EXPORT" \ cmake -G Ninja -S src/cachelib -B build -DCMAKE_BUILD_TYPE=Release \ -DBOOST_LINK_STATIC=ON \ @@ -434,11 +379,9 @@ RUN curl --fail --location --output CacheLib.tar.gz \ && 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 \ - && mkdir src \ - && tar --extract --xz --file=util-linux.tar.xz --directory=src --strip-components=1 \ - && rm util-linux.tar.xz \ +RUN --mount=type=bind,from=sources,source=util-linux-2.42.2.tar.xz,target=/tmp/util-linux.tar.xz \ + mkdir src \ + && tar --extract --xz --file=/tmp/util-linux.tar.xz --directory=src --strip-components=1 \ && cd src \ && CFLAGS=-fPIC ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu \ --disable-all-programs \ @@ -453,11 +396,9 @@ RUN curl --fail --location --output util-linux.tar.xz \ && cd .. \ && rm -rf src -RUN curl --fail --location --output libzmq.tar.gz \ - https://wangguofang.net/github.com/zeromq/libzmq/archive/v4.3.5.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=libzmq.tar.gz --directory=src --strip-components=1 \ - && rm libzmq.tar.gz \ +RUN --mount=type=bind,from=sources,source=libzmq-v4.3.5.tar.gz,target=/tmp/libzmq.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/libzmq.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED=OFF \ -DBUILD_STATIC=ON \ @@ -474,11 +415,9 @@ RUN curl --fail --location --output libzmq.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output czmq.tar.gz \ - https://wangguofang.net/github.com/zeromq/czmq/archive/v4.2.1.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=czmq.tar.gz --directory=src --strip-components=1 \ - && rm czmq.tar.gz \ +RUN --mount=type=bind,from=sources,source=czmq-v4.2.1.tar.gz,target=/tmp/czmq.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/czmq.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ -DCZMQ_BUILD_SHARED=OFF \ @@ -494,11 +433,9 @@ RUN curl --fail --location --output czmq.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output jsoncpp.tar.gz \ - https://wangguofang.net/github.com/open-source-parsers/jsoncpp/archive/1.9.8.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=jsoncpp.tar.gz --directory=src --strip-components=1 \ - && rm jsoncpp.tar.gz \ +RUN --mount=type=bind,from=sources,source=jsoncpp-1.9.8.tar.gz,target=/tmp/jsoncpp.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/jsoncpp.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_OBJECT_LIBS=OFF \ -DBUILD_SHARED_LIBS=OFF \ @@ -511,11 +448,9 @@ RUN curl --fail --location --output jsoncpp.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output librdkafka.tar.gz \ - https://wangguofang.net/github.com/confluentinc/librdkafka/archive/v2.15.0.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=librdkafka.tar.gz --directory=src --strip-components=1 \ - && rm librdkafka.tar.gz \ +RUN --mount=type=bind,from=sources,source=librdkafka-v2.15.0.tar.gz,target=/tmp/librdkafka.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/librdkafka.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ @@ -532,11 +467,9 @@ RUN curl --fail --location --output librdkafka.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output json-c.tar.gz \ - https://wangguofang.net/github.com/json-c/json-c/archive/json-c-0.19-20260627.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=json-c.tar.gz --directory=src --strip-components=1 \ - && rm json-c.tar.gz \ +RUN --mount=type=bind,from=sources,source=json-c-json-c-0.19-20260627.tar.gz,target=/tmp/json-c.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/json-c.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_APPS=OFF \ -DBUILD_SHARED_LIBS=OFF \ @@ -549,11 +482,9 @@ RUN curl --fail --location --output json-c.tar.gz \ && rm -rf build src COPY rapidjson-generic-string-ref-assignment.patch /tmp/ -RUN curl --fail --location --output rapidjson.tar.gz \ - https://wangguofang.net/github.com/Tencent/rapidjson/archive/v1.1.0.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=rapidjson.tar.gz --directory=src --strip-components=1 \ - && rm rapidjson.tar.gz \ +RUN --mount=type=bind,from=sources,source=rapidjson-v1.1.0.tar.gz,target=/tmp/rapidjson.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/rapidjson.tar.gz --directory=src --strip-components=1 \ && git -C src apply /tmp/rapidjson-generic-string-ref-assignment.patch \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DLIB_INSTALL_DIR=/usr/local/lib/x86_64-linux-gnu \ @@ -563,11 +494,9 @@ RUN curl --fail --location --output rapidjson.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src /tmp/rapidjson-generic-string-ref-assignment.patch -RUN curl --fail --location --output curl.tar.gz \ - https://wangguofang.net/github.com/curl/curl/archive/curl-8_21_0.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=curl.tar.gz --directory=src --strip-components=1 \ - && rm curl.tar.gz \ +RUN --mount=type=bind,from=sources,source=curl-curl-8_21_0.tar.gz,target=/tmp/curl.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/curl.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_CURL_EXE=OFF \ -DBUILD_EXAMPLES=OFF \ @@ -592,11 +521,9 @@ RUN curl --fail --location --output curl.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output hiredis.tar.gz \ - https://wangguofang.net/github.com/redis/hiredis/archive/v1.4.1.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=hiredis.tar.gz --directory=src --strip-components=1 \ - && rm hiredis.tar.gz \ +RUN --mount=type=bind,from=sources,source=hiredis-v1.4.1.tar.gz,target=/tmp/hiredis.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/hiredis.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ @@ -609,14 +536,9 @@ RUN curl --fail --location --output hiredis.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN aria2c \ - --max-connection-per-server=1 --retry-wait=3 \ - --out=gmp.tar.xz \ - https://mirrors.ustc.edu.cn/gnu/gmp/gmp-6.3.0.tar.xz \ - https://mirrors.tuna.tsinghua.edu.cn/gnu/gmp/gmp-6.3.0.tar.xz \ - && mkdir src \ - && tar --extract --xz --file=gmp.tar.xz --directory=src --strip-components=1 \ - && rm gmp.tar.xz \ +RUN --mount=type=bind,from=sources,source=gmp-6.3.0.tar.xz,target=/tmp/gmp.tar.xz \ + mkdir src \ + && tar --extract --xz --file=/tmp/gmp.tar.xz --directory=src --strip-components=1 \ && cd src \ && CFLAGS=-fPIC ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu --disable-shared --enable-static \ && make --jobs="$(nproc)" \ @@ -624,14 +546,9 @@ RUN aria2c \ && cd .. \ && rm -rf src -RUN aria2c \ - --max-connection-per-server=1 --retry-wait=3 \ - --out=nettle.tar.gz \ - https://mirrors.ustc.edu.cn/gnu/nettle/nettle-3.10.2.tar.gz \ - https://mirrors.tuna.tsinghua.edu.cn/gnu/nettle/nettle-3.10.2.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=nettle.tar.gz --directory=src --strip-components=1 \ - && rm nettle.tar.gz \ +RUN --mount=type=bind,from=sources,source=nettle-3.10.2.tar.gz,target=/tmp/nettle.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/nettle.tar.gz --directory=src --strip-components=1 \ && cd src \ && CFLAGS=-fPIC ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu \ --disable-documentation \ @@ -642,11 +559,9 @@ RUN aria2c \ && 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 \ - && mkdir src \ - && tar --extract --xz --file=gnutls.tar.xz --directory=src --strip-components=1 \ - && rm gnutls.tar.xz \ +RUN --mount=type=bind,from=sources,source=gnutls-3.8.13.tar.xz,target=/tmp/gnutls.tar.xz \ + mkdir src \ + && tar --extract --xz --file=/tmp/gnutls.tar.xz --directory=src --strip-components=1 \ && cd src \ && CFLAGS=-fPIC ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu \ --with-included-libtasn1 \ @@ -671,11 +586,9 @@ RUN curl --fail --location --output gnutls.tar.xz \ && cd .. \ && rm -rf src -RUN curl --fail --location --output libmaxminddb.tar.gz \ - https://wangguofang.net/github.com/maxmind/libmaxminddb/archive/1.13.3.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=libmaxminddb.tar.gz --directory=src --strip-components=1 \ - && rm libmaxminddb.tar.gz \ +RUN --mount=type=bind,from=sources,source=libmaxminddb-1.13.3.tar.gz,target=/tmp/libmaxminddb.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/libmaxminddb.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_TESTING=OFF \ @@ -685,11 +598,9 @@ RUN curl --fail --location --output libmaxminddb.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output libyaml.tar.gz \ - https://wangguofang.net/github.com/yaml/libyaml/archive/0.2.5.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=libyaml.tar.gz --directory=src --strip-components=1 \ - && rm libyaml.tar.gz \ +RUN --mount=type=bind,from=sources,source=libyaml-0.2.5.tar.gz,target=/tmp/libyaml.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/libyaml.tar.gz --directory=src --strip-components=1 \ && cd src \ && ./bootstrap \ && CFLAGS=-fPIC ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu --disable-shared --enable-static \ @@ -698,11 +609,9 @@ RUN curl --fail --location --output libyaml.tar.gz \ && cd .. \ && rm -rf src -RUN curl --fail --location --output libxml2.tar.gz \ - https://wangguofang.net/github.com/GNOME/libxml2/archive/refs/tags/v2.15.3.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=libxml2.tar.gz --directory=src --strip-components=1 \ - && rm libxml2.tar.gz \ +RUN --mount=type=bind,from=sources,source=libxml2-v2.15.3.tar.gz,target=/tmp/libxml2.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/libxml2.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ @@ -717,11 +626,9 @@ RUN curl --fail --location --output libxml2.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output redis-plus-plus.tar.gz \ - https://wangguofang.net/github.com/sewenew/redis-plus-plus/archive/1.3.15.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=redis-plus-plus.tar.gz --directory=src --strip-components=1 \ - && rm redis-plus-plus.tar.gz \ +RUN --mount=type=bind,from=sources,source=redis-plus-plus-1.3.15.tar.gz,target=/tmp/redis-plus-plus.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/redis-plus-plus.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ -DREDIS_PLUS_PLUS_BUILD_SHARED=OFF \ @@ -731,11 +638,9 @@ RUN curl --fail --location --output redis-plus-plus.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output libunwind.tar.gz \ - https://wangguofang.net/github.com/libunwind/libunwind/archive/v1.8.3.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=libunwind.tar.gz --directory=src --strip-components=1 \ - && rm libunwind.tar.gz \ +RUN --mount=type=bind,from=sources,source=libunwind-v1.8.3.tar.gz,target=/tmp/libunwind.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/libunwind.tar.gz --directory=src --strip-components=1 \ && cd src \ && autoreconf --install \ && CFLAGS=-fPIC ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu \ @@ -750,11 +655,9 @@ RUN curl --fail --location --output libunwind.tar.gz \ && cd .. \ && rm -rf src -RUN curl --fail --location --output jemalloc.tar.gz \ - https://wangguofang.net/github.com/jemalloc/jemalloc/archive/5.3.1.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=jemalloc.tar.gz --directory=src --strip-components=1 \ - && rm jemalloc.tar.gz \ +RUN --mount=type=bind,from=sources,source=jemalloc-5.3.1.tar.gz,target=/tmp/jemalloc.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/jemalloc.tar.gz --directory=src --strip-components=1 \ && cd src \ && ./autogen.sh \ && CFLAGS=-fPIC CXXFLAGS=-fPIC ./configure --prefix=/usr/local --libdir=/usr/local/lib/x86_64-linux-gnu \ @@ -768,32 +671,26 @@ RUN curl --fail --location --output jemalloc.tar.gz \ && cd .. \ && rm -rf src -RUN curl --fail --location --output libproxyprotocol.tar.gz \ - https://wangguofang.net/github.com/kosmas-valianos/libproxyprotocol/archive/v1.3.3.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=libproxyprotocol.tar.gz --directory=src --strip-components=1 \ - && rm libproxyprotocol.tar.gz \ +RUN --mount=type=bind,from=sources,source=libproxyprotocol-v1.3.3.tar.gz,target=/tmp/libproxyprotocol.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/libproxyprotocol.tar.gz --directory=src --strip-components=1 \ && gcc -fPIC -c -o src/src/proxy_protocol.o src/src/proxy_protocol.c \ && ar rcs /usr/local/lib/x86_64-linux-gnu/libproxyprotocol.a src/src/proxy_protocol.o \ && cp src/src/proxy_protocol.h /usr/local/include/ \ && rm -rf src -RUN curl --fail --location --output xsimd.tar.gz \ - https://wangguofang.net/github.com/xtensor-stack/xsimd/archive/14.2.0.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=xsimd.tar.gz --directory=src --strip-components=1 \ - && rm xsimd.tar.gz \ +RUN --mount=type=bind,from=sources,source=xsimd-14.2.0.tar.gz,target=/tmp/xsimd.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/xsimd.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_TESTS=OFF \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output thrift.tar.gz \ - https://wangguofang.net/github.com/apache/thrift/archive/v0.22.0.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=thrift.tar.gz --directory=src --strip-components=1 \ - && rm thrift.tar.gz \ +RUN --mount=type=bind,from=sources,source=thrift-v0.22.0.tar.gz,target=/tmp/thrift.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/thrift.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_COMPILER=OFF \ -DBUILD_SHARED_LIBS=OFF \ @@ -819,11 +716,9 @@ RUN curl --fail --location --output thrift.tar.gz \ /usr/local/lib/x86_64-linux-gnu/pkgconfig/thrift.pc \ && rm -rf build src -RUN curl --fail --location --output snappy.tar.gz \ - https://wangguofang.net/github.com/google/snappy/archive/1.2.2.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=snappy.tar.gz --directory=src --strip-components=1 \ - && rm snappy.tar.gz \ +RUN --mount=type=bind,from=sources,source=snappy-1.2.2.tar.gz,target=/tmp/snappy.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/snappy.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ @@ -833,11 +728,9 @@ RUN curl --fail --location --output snappy.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output lz4.tar.gz \ - https://wangguofang.net/github.com/lz4/lz4/archive/v1.10.0.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=lz4.tar.gz --directory=src --strip-components=1 \ - && rm lz4.tar.gz \ +RUN --mount=type=bind,from=sources,source=lz4-v1.10.0.tar.gz,target=/tmp/lz4.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/lz4.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src/build/cmake -B build -DCMAKE_BUILD_TYPE=Release \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_STATIC_LIBS=ON \ @@ -848,11 +741,9 @@ RUN curl --fail --location --output lz4.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN curl --fail --location --output arrow.tar.gz \ - https://wangguofang.net/github.com/apache/arrow/archive/apache-arrow-25.0.1.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=arrow.tar.gz --directory=src --strip-components=1 \ - && rm arrow.tar.gz \ +RUN --mount=type=bind,from=sources,source=arrow-apache-arrow-25.0.1.tar.gz,target=/tmp/arrow.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/arrow.tar.gz --directory=src --strip-components=1 \ && cmake -G Ninja -S src/cpp -B build -DCMAKE_BUILD_TYPE=Release \ -DARROW_BUILD_BENCHMARKS=OFF \ -DARROW_BUILD_EXAMPLES=OFF \ @@ -881,25 +772,20 @@ RUN curl --fail --location --output arrow.tar.gz \ && cmake --build build --parallel "$(nproc)" --target install \ && rm -rf build src -RUN aria2c \ - --max-connection-per-server=1 --retry-wait=3 \ - --out=rust.tar.xz \ - https://mirrors.cloud.tencent.com/rustup/dist/rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz \ - https://mirrors.tuna.tsinghua.edu.cn/rustup/dist/2026-10-15/rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz \ - https://repo.huaweicloud.com/rustup/dist/rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz \ - https://mirrors.ustc.edu.cn/rust-static/dist/rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz \ - https://static.rust-lang.org/dist/rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz \ - && mkdir rust-src \ - && tar -xJf rust.tar.xz -C rust-src --strip-components=1 \ +RUN --mount=type=bind,from=sources,source=rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz,target=/tmp/rust.tar.xz \ + mkdir rust-src \ + && tar -xJf /tmp/rust.tar.xz -C rust-src --strip-components=1 \ && rust-src/install.sh --prefix=/usr/local --without=rust-docs \ - && rm -rf rust.tar.xz rust-src + && rm -rf rust-src -RUN curl --fail --location --output duckdb.tar.gz \ - https://wangguofang.net/github.com/duckdb/duckdb/archive/v1.5.6.tar.gz \ - && mkdir src \ - && tar --extract --gzip --file=duckdb.tar.gz --directory=src --strip-components=1 \ - && rm duckdb.tar.gz \ +RUN --mount=type=bind,from=sources,source=duckdb-v1.5.6.tar.gz,target=/tmp/duckdb.tar.gz \ + --mount=type=bind,from=sources,source=duckdb-ui-0628932f74b1e2e9eaf68a05b22d737455541dca.tar.gz,target=/tmp/duckdb-ui.tar.gz \ + mkdir src \ + && tar --extract --gzip --file=/tmp/duckdb.tar.gz --directory=src --strip-components=1 \ + && mkdir ui-src \ + && tar --extract --gzip --file=/tmp/duckdb-ui.tar.gz --directory=ui-src --strip-components=1 \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ + -DDUCKDB_EXTENSION_CONFIGS="$PWD/ui-src/extension_config.cmake" \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_EXTENSIONS="core_functions;parquet;json" \ -DBUILD_SHELL=ON \ @@ -910,6 +796,6 @@ RUN curl --fail --location --output duckdb.tar.gz \ -DCMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ && cmake --build build --parallel "$(nproc)" --target install \ - && rm -rf build src + && rm -rf build src ui-src CMD ["/bin/bash"] diff --git a/debian13/build.sh b/debian13/build.sh index c433e58..ee96fd4 100755 --- a/debian13/build.sh +++ b/debian13/build.sh @@ -4,11 +4,15 @@ set -eu IMAGE_NAME="${IMAGE_NAME:-debian13-source-stack}" SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd) +SOURCES_DIR="${SOURCES_DIR:-$SCRIPT_DIR/../sources}" +FETCH_SCRIPT="$SCRIPT_DIR/../fetch-sources.sh" if ! command -v podman >/dev/null 2>&1; then echo "Error: Podman is required." >&2 exit 1 fi +SOURCES_DIR="$SOURCES_DIR" "$FETCH_SCRIPT" + echo "Building image $IMAGE_NAME with podman ..." -exec podman build --tag "$IMAGE_NAME" "$SCRIPT_DIR" +exec podman build --build-context sources="$SOURCES_DIR" --tag "$IMAGE_NAME" "$SCRIPT_DIR" diff --git a/fetch-sources.sh b/fetch-sources.sh new file mode 100755 index 0000000..9db3d94 --- /dev/null +++ b/fetch-sources.sh @@ -0,0 +1,146 @@ +#!/bin/sh + +# Downloads every source archive used by the Dockerfiles into the sources/ directory. +# Each entry is " [ ...]"; existing files are kept. + +set -eu + +if ! command -v aria2c >/dev/null 2>&1; then + echo "Error: aria2c is required." >&2 + exit 1 +fi + +SOURCES_DIR="${SOURCES_DIR:-$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)/sources}" +mkdir -p "$SOURCES_DIR" +cd "$SOURCES_DIR" + +fetch() { + name=$1 + shift + if [ -s "$name" ]; then + return 0 + fi + # aria2c fails over between the mirror URLs of one file. + if ! aria2c --max-connection-per-server=1 --retry-wait=3 --max-tries=3 \ + --allow-overwrite=true --auto-file-renaming=false \ + --dir=. --out="$name.part" "$@"; then + rm -f "$name.part" "$name.part.aria2" + echo "Error: failed to download $name" >&2 + return 1 + fi + mv "$name.part" "$name" +} + +fetch boost_1_83_0.tar.bz2 \ + https://mirrors.aliyun.com/blfs/conglomeration/boost/boost_1_83_0.tar.bz2 \ + https://archives.boost.io/release/1.83.0/source/boost_1_83_0.tar.bz2 +fetch openssl-openssl-3.0.15.tar.gz \ + https://wangguofang.net/github.com/openssl/openssl/archive/openssl-3.0.15.tar.gz +fetch libevent-release-2.1.12-stable.tar.gz \ + https://wangguofang.net/github.com/libevent/libevent/archive/release-2.1.12-stable.tar.gz +fetch zstd-v1.5.7.tar.gz \ + https://wangguofang.net/github.com/facebook/zstd/archive/v1.5.7.tar.gz +fetch zlib-v1.3.1.tar.gz \ + https://wangguofang.net/github.com/madler/zlib/archive/v1.3.1.tar.gz +fetch protobuf-v3.21.12.tar.gz \ + https://wangguofang.net/github.com/protocolbuffers/protobuf/archive/v3.21.12.tar.gz +fetch fmt-12.2.0.tar.gz \ + https://wangguofang.net/github.com/fmtlib/fmt/archive/12.2.0.tar.gz +fetch spdlog-v1.17.0.tar.gz \ + https://wangguofang.net/github.com/gabime/spdlog/archive/v1.17.0.tar.gz +fetch magic_enum-v0.9.8.tar.gz \ + https://wangguofang.net/github.com/Neargye/magic_enum/archive/v0.9.8.tar.gz +fetch fast_float-v8.2.10.tar.gz \ + https://wangguofang.net/github.com/fastfloat/fast_float/archive/v8.2.10.tar.gz +fetch sparse-map-v0.7.0.tar.gz \ + https://wangguofang.net/github.com/Tessil/sparse-map/archive/v0.7.0.tar.gz +fetch gflags-v2.3.1.tar.gz \ + https://wangguofang.net/github.com/gflags/gflags/archive/v2.3.1.tar.gz +fetch glog-v0.7.1.tar.gz \ + https://wangguofang.net/github.com/google/glog/archive/v0.7.1.tar.gz +fetch liburing-liburing-2.15.tar.gz \ + https://wangguofang.net/github.com/axboe/liburing/archive/liburing-2.15.tar.gz +fetch libaio_0.3.113.orig.tar.gz \ + https://mirrors.tuna.tsinghua.edu.cn/debian/pool/main/liba/libaio/libaio_0.3.113.orig.tar.gz +fetch libdwarf-code-v2.3.2.tar.gz \ + https://wangguofang.net/github.com/davea42/libdwarf-code/archive/v2.3.2.tar.gz +fetch libsodium-1.0.20-RELEASE.tar.gz \ + https://wangguofang.net/github.com/jedisct1/libsodium/archive/1.0.20-RELEASE.tar.gz +fetch xxHash-v0.8.3.tar.gz \ + https://wangguofang.net/github.com/Cyan4973/xxHash/archive/v0.8.3.tar.gz +fetch googletest-v1.17.0.tar.gz \ + https://wangguofang.net/github.com/google/googletest/archive/v1.17.0.tar.gz +fetch numactl-v2.0.19.tar.gz \ + https://wangguofang.net/github.com/numactl/numactl/archive/v2.0.19.tar.gz +fetch folly-v2026.08.03.00.tar.gz \ + https://wangguofang.net/github.com/facebook/folly/archive/v2026.08.03.00.tar.gz +fetch fizz-v2026.08.03.00.tar.gz \ + https://wangguofang.net/github.com/facebookincubator/fizz/archive/v2026.08.03.00.tar.gz +fetch wangle-v2026.08.03.00.tar.gz \ + https://wangguofang.net/github.com/facebook/wangle/archive/v2026.08.03.00.tar.gz +fetch mvfst-v2026.08.03.00.tar.gz \ + https://wangguofang.net/github.com/facebook/mvfst/archive/v2026.08.03.00.tar.gz +fetch fbthrift-v2026.08.03.00.tar.gz \ + https://wangguofang.net/github.com/facebook/fbthrift/archive/v2026.08.03.00.tar.gz +fetch CacheLib-v2026.08.03.00.tar.gz \ + https://wangguofang.net/github.com/facebook/CacheLib/archive/v2026.08.03.00.tar.gz +fetch util-linux-2.42.2.tar.xz \ + https://mirrors.edge.kernel.org/pub/linux/utils/util-linux/v2.42/util-linux-2.42.2.tar.xz +fetch libzmq-v4.3.5.tar.gz \ + https://wangguofang.net/github.com/zeromq/libzmq/archive/v4.3.5.tar.gz +fetch czmq-v4.2.1.tar.gz \ + https://wangguofang.net/github.com/zeromq/czmq/archive/v4.2.1.tar.gz +fetch jsoncpp-1.9.8.tar.gz \ + https://wangguofang.net/github.com/open-source-parsers/jsoncpp/archive/1.9.8.tar.gz +fetch librdkafka-v2.15.0.tar.gz \ + https://wangguofang.net/github.com/confluentinc/librdkafka/archive/v2.15.0.tar.gz +fetch json-c-json-c-0.19-20260627.tar.gz \ + https://wangguofang.net/github.com/json-c/json-c/archive/json-c-0.19-20260627.tar.gz +fetch rapidjson-v1.1.0.tar.gz \ + https://wangguofang.net/github.com/Tencent/rapidjson/archive/v1.1.0.tar.gz +fetch curl-curl-8_21_0.tar.gz \ + https://wangguofang.net/github.com/curl/curl/archive/curl-8_21_0.tar.gz +fetch hiredis-v1.4.1.tar.gz \ + https://wangguofang.net/github.com/redis/hiredis/archive/v1.4.1.tar.gz +fetch gmp-6.3.0.tar.xz \ + https://mirrors.ustc.edu.cn/gnu/gmp/gmp-6.3.0.tar.xz \ + https://mirrors.tuna.tsinghua.edu.cn/gnu/gmp/gmp-6.3.0.tar.xz +fetch nettle-3.10.2.tar.gz \ + https://mirrors.ustc.edu.cn/gnu/nettle/nettle-3.10.2.tar.gz \ + https://mirrors.tuna.tsinghua.edu.cn/gnu/nettle/nettle-3.10.2.tar.gz +fetch gnutls-3.8.13.tar.xz \ + https://mirrors.dotsrc.org/gcrypt/gnutls/v3.8/gnutls-3.8.13.tar.xz +fetch libmaxminddb-1.13.3.tar.gz \ + https://wangguofang.net/github.com/maxmind/libmaxminddb/archive/1.13.3.tar.gz +fetch libyaml-0.2.5.tar.gz \ + https://wangguofang.net/github.com/yaml/libyaml/archive/0.2.5.tar.gz +fetch libxml2-v2.15.3.tar.gz \ + https://wangguofang.net/github.com/GNOME/libxml2/archive/refs/tags/v2.15.3.tar.gz +fetch redis-plus-plus-1.3.15.tar.gz \ + https://wangguofang.net/github.com/sewenew/redis-plus-plus/archive/1.3.15.tar.gz +fetch libunwind-v1.8.3.tar.gz \ + https://wangguofang.net/github.com/libunwind/libunwind/archive/v1.8.3.tar.gz +fetch jemalloc-5.3.1.tar.gz \ + https://wangguofang.net/github.com/jemalloc/jemalloc/archive/5.3.1.tar.gz +fetch libproxyprotocol-v1.3.3.tar.gz \ + https://wangguofang.net/github.com/kosmas-valianos/libproxyprotocol/archive/v1.3.3.tar.gz +fetch xsimd-14.2.0.tar.gz \ + https://wangguofang.net/github.com/xtensor-stack/xsimd/archive/14.2.0.tar.gz +fetch thrift-v0.22.0.tar.gz \ + https://wangguofang.net/github.com/apache/thrift/archive/v0.22.0.tar.gz +fetch snappy-1.2.2.tar.gz \ + https://wangguofang.net/github.com/google/snappy/archive/1.2.2.tar.gz +fetch lz4-v1.10.0.tar.gz \ + https://wangguofang.net/github.com/lz4/lz4/archive/v1.10.0.tar.gz +fetch arrow-apache-arrow-25.0.1.tar.gz \ + https://wangguofang.net/github.com/apache/arrow/archive/apache-arrow-25.0.1.tar.gz +fetch rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz \ + https://mirrors.cloud.tencent.com/rustup/dist/rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz \ + https://mirrors.tuna.tsinghua.edu.cn/rustup/dist/2026-10-15/rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz \ + https://repo.huaweicloud.com/rustup/dist/rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz \ + https://mirrors.ustc.edu.cn/rust-static/dist/rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz \ + https://static.rust-lang.org/dist/rust-1.99.1-x86_64-unknown-linux-gnu.tar.xz +fetch duckdb-v1.5.6.tar.gz \ + https://wangguofang.net/github.com/duckdb/duckdb/archive/v1.5.6.tar.gz +fetch duckdb-ui-0628932f74b1e2e9eaf68a05b22d737455541dca.tar.gz \ + https://wangguofang.net/github.com/duckdb/duckdb-ui/archive/0628932f74b1e2e9eaf68a05b22d737455541dca.tar.gz diff --git a/rocky9/Dockerfile b/rocky9/Dockerfile index a5c3948..2b65058 100644 --- a/rocky9/Dockerfile +++ b/rocky9/Dockerfile @@ -781,7 +781,13 @@ RUN curl --fail --location --output duckdb.tar.gz \ && mkdir src \ && tar --extract --gzip --file=duckdb.tar.gz --directory=src --strip-components=1 \ && rm duckdb.tar.gz \ + && curl --fail --location --output duckdb-ui.tar.gz \ + https://wangguofang.net/github.com/duckdb/duckdb-ui/archive/0628932f74b1e2e9eaf68a05b22d737455541dca.tar.gz \ + && mkdir ui-src \ + && tar --extract --gzip --file=duckdb-ui.tar.gz --directory=ui-src --strip-components=1 \ + && rm duckdb-ui.tar.gz \ && cmake -G Ninja -S src -B build -DCMAKE_BUILD_TYPE=Release \ + -DDUCKDB_EXTENSION_CONFIGS="$PWD/ui-src/extension_config.cmake" \ -DBUILD_SHARED_LIBS=OFF \ -DBUILD_EXTENSIONS="core_functions;parquet;json" \ -DBUILD_SHELL=ON \ @@ -792,6 +798,6 @@ RUN curl --fail --location --output duckdb.tar.gz \ -DCMAKE_INSTALL_LIBDIR=lib64 \ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \ && cmake --build build --parallel "$(nproc)" --target install \ - && rm -rf build src + && rm -rf build src ui-src CMD ["/bin/bash"]