Compare commits
3
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
40ca3c693f | ||
|
|
9608a9616f | ||
|
|
4a1a0a903f |
No files matched your search
@@ -34,7 +34,7 @@
|
||||
| CZMQ | `4.2.1` |
|
||||
| JsonCpp | `1.9.8` |
|
||||
| librdkafka | `2.15.0` |
|
||||
| json-c | `0.19` |
|
||||
| json-c | `0.18` |
|
||||
| RapidJSON | `1.1.0` |
|
||||
| curl | `8.21.0` |
|
||||
| hiredis | `1.4.1` |
|
||||
@@ -50,6 +50,7 @@
|
||||
| Snappy | `1.2.2` |
|
||||
| LZ4 | `v1.10.0` |
|
||||
| Apache Arrow / Parquet | `25.0.1` |
|
||||
| SQLite | `3.54.1` |
|
||||
|
||||
The image includes position-independent static builds of these libraries. Protobuf and libxml2 enable zlib support, and LibDwarf enables compressed debug section support using zlib and Zstd. ZeroMQ enables CURVE security using static libsodium. CZMQ enables UUID support using static util-linux libuuid while disabling undeclared optional integrations. librdkafka includes SSL, zlib, Zstd, and bundled LZ4 support while disabling undeclared optional integrations. spdlog uses external fmt, glog uses gflags, and all Meta libraries share the same release tag. Apache Arrow is built with Parquet (including OpenSSL-based Parquet encryption) and Snappy, LZ4, zlib, and Zstd compression using only the pinned system dependencies above (`ARROW_DEPENDENCY_SOURCE=SYSTEM`), with the bundled jemalloc and mimalloc allocators disabled. Apache Thrift only builds its C++ library, and its headers sit next to fbthrift's under `include/thrift` without overlapping.
|
||||
|
||||
|
||||
+11
-1
@@ -388,7 +388,7 @@ RUN --mount=type=bind,from=sources,source=librdkafka-v2.15.0.tar.gz,target=/tmp/
|
||||
&& cmake --build build --parallel "$(nproc)" --target install \
|
||||
&& rm -rf build src
|
||||
|
||||
RUN --mount=type=bind,from=sources,source=json-c-json-c-0.19-20260627.tar.gz,target=/tmp/json-c.tar.gz \
|
||||
RUN --mount=type=bind,from=sources,source=json-c-json-c-0.18-20240915.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 \
|
||||
@@ -607,4 +607,14 @@ RUN --mount=type=bind,from=sources,source=makeself-release-2.7.1.tar.gz,target=/
|
||||
&& ln -s makeself.sh /usr/local/bin/makeself \
|
||||
&& rm -rf src
|
||||
|
||||
RUN --mount=type=bind,from=sources,source=sqlite-autoconf-3540100.tar.gz,target=/tmp/sqlite.tar.gz \
|
||||
mkdir src \
|
||||
&& tar --extract --gzip --file=/tmp/sqlite.tar.gz --directory=src --strip-components=1 \
|
||||
&& cd src \
|
||||
&& CFLAGS="-O2 -fPIC" ./configure --prefix=/usr/local --libdir=/usr/local/lib --disable-shared --enable-static \
|
||||
&& make --jobs="$(nproc)" \
|
||||
&& make install \
|
||||
&& cd .. \
|
||||
&& rm -rf src
|
||||
|
||||
CMD ["/bin/sh"]
|
||||
+21
-1
@@ -493,7 +493,7 @@ RUN --mount=type=bind,from=sources,source=librdkafka-v2.15.0.tar.gz,target=/tmp/
|
||||
&& cmake --build build --parallel "$(nproc)" --target install \
|
||||
&& rm -rf build src
|
||||
|
||||
RUN --mount=type=bind,from=sources,source=json-c-json-c-0.19-20260627.tar.gz,target=/tmp/json-c.tar.gz \
|
||||
RUN --mount=type=bind,from=sources,source=json-c-json-c-0.18-20240915.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 \
|
||||
@@ -819,8 +819,28 @@ RUN --mount=type=bind,from=sources,source=duckdb-v1.5.6.tar.gz,target=/tmp/duckd
|
||||
&& cmake --build build --parallel "$(nproc)" --target install \
|
||||
&& rm -rf build src ui-src
|
||||
|
||||
RUN --mount=type=bind,from=sources,source=sqlite-autoconf-3540100.tar.gz,target=/tmp/sqlite.tar.gz \
|
||||
mkdir src \
|
||||
&& tar --extract --gzip --file=/tmp/sqlite.tar.gz --directory=src --strip-components=1 \
|
||||
&& cd src \
|
||||
&& CFLAGS="-O2 -fPIC" ./configure --prefix=${PREFIX} --libdir=${PREFIX}/lib/$(gcc -dumpmachine) --disable-shared --enable-static \
|
||||
&& make --jobs="$(nproc)" \
|
||||
&& make install \
|
||||
&& cd .. \
|
||||
&& rm -rf src
|
||||
|
||||
COPY source-stack.cmake.in /tmp/
|
||||
RUN mkdir -p ${PREFIX}/share/source-stack \
|
||||
&& sed "s|@MULTIARCH@|$(gcc -dumpmachine)|" /tmp/source-stack.cmake.in \
|
||||
> ${PREFIX}/share/source-stack/source-stack.cmake \
|
||||
&& rm /tmp/source-stack.cmake.in
|
||||
|
||||
RUN useradd --create-home develop
|
||||
USER develop
|
||||
|
||||
ENV CLAUDE_CONFIG_DIR="$HOME/my-claude"
|
||||
ENV DISABLE_AUTOUPDATER="1"
|
||||
RUN bash -c 'curl -fsSL https://claude.ai/install.sh | bash'
|
||||
|
||||
ARG CLAUDE_CODE_OAUTH_TOKEN
|
||||
ENV CLAUDE_CODE_OAUTH_TOKEN=${CLAUDE_CODE_OAUTH_TOKEN}
|
||||
+47
-1
@@ -1,10 +1,38 @@
|
||||
#!/bin/sh
|
||||
# Usage:
|
||||
# ./build.sh build the image, asking for the password that unlocks the token
|
||||
# ./build.sh --encrypt encrypt a token and print the value to paste into ENCRYPTED_TOKEN
|
||||
|
||||
set -eu
|
||||
|
||||
IMAGE_NAME="${IMAGE_NAME:-debian13-source-stack}"
|
||||
PREFIX="${PREFIX:-/opt/local}"
|
||||
SCRIPT_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
|
||||
|
||||
# CLAUDE_CODE_OAUTH_TOKEN encrypted with AES-256-CBC (PBKDF2, base64). Generate with --encrypt.
|
||||
ENCRYPTED_TOKEN='U2FsdGVkX1/BCTASs0tR40hsT+sngp46zANCbGZnklLN1M0wSJs/DxbQ6JDg593G09A+cVtVius4hJHRzB6caOO2KwBV0/+i7yUjr/PfreZksrdkz1DnFc7oorxXfvB7azuNEkQfAE2fZg8cnYL5jy3/LKRdAm11SUm83fU8ke8='
|
||||
|
||||
OPENSSL_ARGS="enc -aes-256-cbc -pbkdf2 -iter 600000 -a -A"
|
||||
|
||||
if ! command -v openssl >/dev/null 2>&1; then
|
||||
echo "Error: OpenSSL is required." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# read_secret PROMPT VARNAME: read the input with echo on, so it stays visible while typing.
|
||||
read_secret() {
|
||||
printf '%s' "$1" >&2
|
||||
IFS= read -r "$2"
|
||||
}
|
||||
|
||||
if [ "${1:-}" = "--encrypt" ]; then
|
||||
read_secret "OAuth token: " token
|
||||
read_secret "Password: " BUILD_PASSWORD
|
||||
export BUILD_PASSWORD
|
||||
printf '%s' "$token" | openssl $OPENSSL_ARGS -pass env:BUILD_PASSWORD
|
||||
echo
|
||||
exit 0
|
||||
fi
|
||||
SOURCES_DIR="${SOURCES_DIR:-$SCRIPT_DIR/../sources}"
|
||||
FETCH_SCRIPT="$SCRIPT_DIR/../fetch-sources.sh"
|
||||
|
||||
@@ -13,6 +41,22 @@ if ! command -v podman >/dev/null 2>&1; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$ENCRYPTED_TOKEN" ]; then
|
||||
echo "Error: ENCRYPTED_TOKEN is empty; run './build.sh --encrypt' and paste the output into build.sh." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
read_secret "Password for CLAUDE_CODE_OAUTH_TOKEN: " BUILD_PASSWORD
|
||||
export BUILD_PASSWORD
|
||||
if ! CLAUDE_CODE_OAUTH_TOKEN=$(printf '%s' "$ENCRYPTED_TOKEN" | openssl $OPENSSL_ARGS -d -pass env:BUILD_PASSWORD 2>/dev/null); then
|
||||
echo "Error: wrong password or corrupted token." >&2
|
||||
exit 1
|
||||
fi
|
||||
unset BUILD_PASSWORD
|
||||
|
||||
# Exported so podman reads the value from the environment and it never appears in the command line.
|
||||
export CLAUDE_CODE_OAUTH_TOKEN
|
||||
|
||||
SOURCES_DIR="$SOURCES_DIR" "$FETCH_SCRIPT"
|
||||
|
||||
# macOS reports arm64 where Linux (and Debian multiarch) call it aarch64.
|
||||
@@ -20,6 +64,8 @@ ARCH=$(uname -m)
|
||||
[ "$ARCH" = arm64 ] && ARCH=aarch64
|
||||
|
||||
echo "Building image $IMAGE_NAME with podman (prefix $PREFIX) ..."
|
||||
exec podman build --build-context sources="$SOURCES_DIR" \
|
||||
exec podman build \
|
||||
--build-arg CLAUDE_CODE_OAUTH_TOKEN \
|
||||
--build-context sources="$SOURCES_DIR" \
|
||||
--build-arg PREFIX="$PREFIX" --build-arg MULTIARCH="$ARCH-linux-gnu" \
|
||||
--tag "$IMAGE_NAME" "$SCRIPT_DIR"
|
||||
+4
-2
@@ -96,8 +96,8 @@ 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 json-c-json-c-0.18-20240915.tar.gz \
|
||||
https://wangguofang.net/github.com/json-c/json-c/archive/json-c-0.18-20240915.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 \
|
||||
@@ -162,3 +162,5 @@ fetch log4cplus-REL_2_0_5.tar.gz \
|
||||
https://wangguofang.net/github.com/log4cplus/log4cplus/archive/REL_2_0_5.tar.gz
|
||||
fetch ThreadPool-cc0b6371d3963f7028c2da5fc007733f9f3bf205.tar.gz \
|
||||
https://wangguofang.net/github.com/log4cplus/ThreadPool/archive/cc0b6371d3963f7028c2da5fc007733f9f3bf205.tar.gz
|
||||
fetch sqlite-autoconf-3540100.tar.gz \
|
||||
https://www.sqlite.org/2026/sqlite-autoconf-3540100.tar.gz
|
||||
@@ -80,6 +80,7 @@ RUN dnf install --assumeyes --enablerepo=crb,epel \
|
||||
librdkafka-devel \
|
||||
snappy-devel \
|
||||
spdlog-devel \
|
||||
sqlite-devel \
|
||||
thrift-devel \
|
||||
tsl-sparse-map-devel \
|
||||
xsimd-devel \
|
||||
|
||||
+11
-1
@@ -494,7 +494,7 @@ RUN --mount=type=bind,from=sources,source=librdkafka-v2.15.0.tar.gz,target=/tmp/
|
||||
&& cmake --build build --parallel "$(nproc)" --target install \
|
||||
&& rm -rf build src
|
||||
|
||||
RUN --mount=type=bind,from=sources,source=json-c-json-c-0.19-20260627.tar.gz,target=/tmp/json-c.tar.gz \
|
||||
RUN --mount=type=bind,from=sources,source=json-c-json-c-0.18-20240915.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 \
|
||||
@@ -814,6 +814,16 @@ RUN --mount=type=bind,from=sources,source=duckdb-v1.5.6.tar.gz,target=/tmp/duckd
|
||||
&& cmake --build build --parallel "$(nproc)" --target install \
|
||||
&& rm -rf build src ui-src
|
||||
|
||||
RUN --mount=type=bind,from=sources,source=sqlite-autoconf-3540100.tar.gz,target=/tmp/sqlite.tar.gz \
|
||||
mkdir src \
|
||||
&& tar --extract --gzip --file=/tmp/sqlite.tar.gz --directory=src --strip-components=1 \
|
||||
&& cd src \
|
||||
&& CFLAGS="-O2 -fPIC" ./configure --prefix=${PREFIX} --libdir=${PREFIX}/lib64 --disable-shared --enable-static \
|
||||
&& make --jobs="$(nproc)" \
|
||||
&& make install \
|
||||
&& cd .. \
|
||||
&& rm -rf src
|
||||
|
||||
COPY source-stack.cmake ${PREFIX}/share/source-stack/source-stack.cmake
|
||||
|
||||
CMD ["/bin/bash"]
|
||||
Reference in new issue
Block a user