83 lines
2.3 KiB
Docker
83 lines
2.3 KiB
Docker
# syntax = docker/dockerfile:1.11-labs
|
|
|
|
FROM input AS rocksdb-fetch
|
|
WORKDIR /usr/src
|
|
COPY --link --from=recipe rocksdb.url .
|
|
RUN <<EOF
|
|
set -eux
|
|
submodule="librocksdb-sys/rocksdb"
|
|
url="$(cat rocksdb.url)"
|
|
git clone \
|
|
--depth 1 \
|
|
--recurse-submodules="${submodule}" \
|
|
"${url}" \
|
|
/usr/src/rocksdb
|
|
EOF
|
|
|
|
|
|
FROM input AS rocksdb-build
|
|
ARG rocksdb_shared=0
|
|
ARG rocksdb_portable=1
|
|
ARG rocksdb_opt_level="3"
|
|
ARG rocksdb_build_type="Release"
|
|
ARG rocksdb_cxx_flags="-ftls-model=initial-exec"
|
|
ARG rocksdb_make_verbose="ON"
|
|
ARG rocksdb_make_rule_messages="OFF"
|
|
ARG rocksdb_jemalloc=1
|
|
ARG rocksdb_iouring=1
|
|
ARG rocksdb_zstd=1
|
|
ARG rocksdb_lz4=0
|
|
ARG rocksdb_bz2=0
|
|
ARG rocksdb_zlib=0
|
|
ARG rocksdb_snappy=0
|
|
ARG nprocs
|
|
|
|
ENV CC="clang"
|
|
ENV CXX="clang++"
|
|
WORKDIR /usr/src/rocksdb/librocksdb-sys/rocksdb
|
|
ENV nprocs=${nprocs}
|
|
RUN \
|
|
--mount=type=cache,dst=/var/lock/uwu/${rocksdb_jemalloc}/${rocksdb_iouring}/${rocksdb_portable},sharing=locked \
|
|
<<EOF
|
|
set -eux
|
|
|
|
LDFLAGS="-Wl,--strip-all" \
|
|
cmake -H. -Bbuild \
|
|
"-DCMAKE_RULE_MESSAGES:BOOL=${rocksdb_make_rule_messages}" \
|
|
"-DCMAKE_VERBOSE_MAKEFILE:BOOL=${rocksdb_make_verbose}" \
|
|
"-DCMAKE_BUILD_TYPE=${rocksdb_build_type}" \
|
|
"-DBUILD_SHARED_LIBS=${rocksdb_shared}" \
|
|
"-DCMAKE_CXX_FLAGS:STRING=${rocksdb_cxx_flags}" \
|
|
"-DCMAKE_CXX_FLAGS_RELEASE:STRING=-g0 -O${rocksdb_opt_level} -DNDEBUG" \
|
|
"-DPORTABLE=${rocksdb_portable}" \
|
|
"-DFAIL_ON_WARNINGS=0" \
|
|
"-DUSE_RTTI=0" \
|
|
"-DWITH_RUNTIME_DEBUG=0" \
|
|
"-DWITH_JNI=0" \
|
|
"-DWITH_EXAMPLES=0" \
|
|
"-DWITH_BENCHMARK=0" \
|
|
"-DWITH_BENCHMARK_TOOLS=0" \
|
|
"-DWITH_TRACE_TOOLS=0" \
|
|
"-DWITH_CORE_TOOLS=0" \
|
|
"-DWITH_TOOLS=0" \
|
|
"-DWITH_TESTS=0" \
|
|
"-DWITH_GFLAGS=0" \
|
|
"-DWITH_LIBURING=${rocksdb_iouring}" \
|
|
"-DWITH_JEMALLOC=${rocksdb_jemalloc}" \
|
|
"-DWITH_ZSTD=${rocksdb_zstd}" \
|
|
"-DWITH_LZ4=${rocksdb_lz4}" \
|
|
"-DWITH_BZ2=${rocksdb_bz2}" \
|
|
"-DWITH_ZLIB=${rocksdb_zlib}" \
|
|
"-DWITH_SNAPPY=${rocksdb_snappy}"
|
|
|
|
nprocs=${nprocs:=$(nproc)}
|
|
cmake \
|
|
--build build \
|
|
--target install \
|
|
--parallel ${nprocs}
|
|
EOF
|
|
|
|
|
|
FROM scratch AS rocksdb
|
|
COPY --from=input /usr/src/rocksdb/librocksdb-sys/rocksdb/build/librocksdb.* .
|