|
1 | | -FROM ubuntu:22.04 AS build |
| 1 | +FROM ubuntu:22.04 |
2 | 2 |
|
3 | | -ARG SRC_PATH |
4 | | -ARG BINARY_NAME |
5 | | -ARG REF="unknown" |
| 3 | +ARG PRESET=release-test-clang |
| 4 | +ARG REF=unknown |
6 | 5 |
|
7 | | -RUN apt-get update \ |
8 | | - && apt-get install -y --no-install-recommends python3 \ |
9 | | - && apt-get clean \ |
10 | | - && rm -rf /var/lib/apt/lists/* |
| 6 | +# Install software-properties-common for add-apt-repository |
| 7 | +RUN apt-get -y update && apt-get -y install software-properties-common && add-apt-repository ppa:ubuntu-toolchain-r/test |
11 | 8 |
|
12 | | -COPY build/ /build/ |
13 | | -COPY certs/ /certs/ |
14 | | -COPY contrib/ /contrib/ |
15 | | -COPY library/cpp/ /library/cpp/ |
16 | | -COPY tools/ /tools/ |
17 | | -COPY util/ /util/ |
18 | | -COPY ydb/library/yverify_stream/ /ydb/library/yverify_stream/ |
19 | | -COPY ydb/public/api/ /ydb/public/api/ |
20 | | -COPY ydb/public/lib/protobuf/ /ydb/public/lib/protobuf/ |
21 | | -COPY ydb/public/lib/validation/ /ydb/public/lib/validation/ |
22 | | -COPY ydb/public/sdk/cpp/ /ydb/public/sdk/cpp/ |
| 9 | +# Install C++ tools and libraries |
| 10 | +RUN apt-get -y update && apt-get -y install \ |
| 11 | + git gdb wget ninja-build libidn11-dev ragel yasm libc-ares-dev libre2-dev \ |
| 12 | + rapidjson-dev zlib1g-dev libxxhash-dev libzstd-dev libsnappy-dev libgtest-dev libgmock-dev \ |
| 13 | + libbz2-dev liblz4-dev libdouble-conversion-dev libssl-dev libstdc++-13-dev gcc-13 g++-13 \ |
| 14 | + && apt-get clean && rm -rf /var/lib/apt/lists/* |
23 | 15 |
|
24 | | -COPY ./ya / |
| 16 | +# Install CMake |
| 17 | +ENV CMAKE_VERSION=3.27.7 |
| 18 | +RUN wget https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-x86_64.sh \ |
| 19 | + -q -O cmake-install.sh \ |
| 20 | + && chmod u+x cmake-install.sh \ |
| 21 | + && ./cmake-install.sh --skip-license --prefix=/usr/local \ |
| 22 | + && rm cmake-install.sh |
25 | 23 |
|
26 | | -RUN ./ya make -r -D REF=${REF} ydb/public/sdk/cpp/tests/slo_workloads/${SRC_PATH} && cp ydb/public/sdk/cpp/tests/slo_workloads/${SRC_PATH}/${BINARY_NAME} /slo-workload-bin |
| 24 | +# Install LLVM |
| 25 | +ENV LLVM_VERSION=16 |
| 26 | +RUN wget https://apt.llvm.org/llvm.sh && \ |
| 27 | + chmod u+x llvm.sh && \ |
| 28 | + ./llvm.sh ${LLVM_VERSION} && \ |
| 29 | + rm llvm.sh |
27 | 30 |
|
28 | | -FROM ubuntu:22.04 |
| 31 | +# Update alternatives to use clang-16 by default |
| 32 | +RUN update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${LLVM_VERSION} 10000 && \ |
| 33 | + update-alternatives --install /usr/bin/clangd clangd /usr/bin/clangd-${LLVM_VERSION} 10000 && \ |
| 34 | + update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-${LLVM_VERSION} 10000 |
| 35 | + |
| 36 | +# Update alternatives to use gcc-13 by default |
| 37 | +RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 10000 && \ |
| 38 | + update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 10000 |
| 39 | + |
| 40 | +# Install abseil-cpp |
| 41 | +ENV ABSEIL_CPP_VERSION=20230802.0 |
| 42 | +ENV ABSEIL_CPP_INSTALL_DIR=/root/ydb_deps/absl |
| 43 | +RUN wget -O abseil-cpp-${ABSEIL_CPP_VERSION}.tar.gz https://github.com/abseil/abseil-cpp/archive/refs/tags/${ABSEIL_CPP_VERSION}.tar.gz && \ |
| 44 | + tar -xvzf abseil-cpp-${ABSEIL_CPP_VERSION}.tar.gz && cd abseil-cpp-${ABSEIL_CPP_VERSION} && \ |
| 45 | + mkdir build && cd build && \ |
| 46 | + cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DABSL_PROPAGATE_CXX_STD=ON .. && \ |
| 47 | + cmake --build . --config Release && \ |
| 48 | + cmake --install . --config Release --prefix ${ABSEIL_CPP_INSTALL_DIR} && \ |
| 49 | + rm -rf abseil-cpp-${ABSEIL_CPP_VERSION}.tar.gz abseil-cpp-${ABSEIL_CPP_VERSION} |
| 50 | + |
| 51 | +# Install protobuf |
| 52 | +ENV PROTOBUF_VERSION=3.21.12 |
| 53 | +ENV PROTOBUF_INSTALL_DIR=/root/ydb_deps/protobuf |
| 54 | +RUN wget -O protobuf-${PROTOBUF_VERSION}.tar.gz https://github.com/protocolbuffers/protobuf/archive/refs/tags/v${PROTOBUF_VERSION}.tar.gz && \ |
| 55 | + tar -xvzf protobuf-${PROTOBUF_VERSION}.tar.gz && cd protobuf-${PROTOBUF_VERSION} && \ |
| 56 | + mkdir build && cd build && \ |
| 57 | + cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_INSTALL=ON -Dprotobuf_ABSL_PROVIDER=package .. && \ |
| 58 | + cmake --build . --config Release && \ |
| 59 | + cmake --install . --config Release --prefix ${PROTOBUF_INSTALL_DIR} && \ |
| 60 | + rm -rf protobuf-${PROTOBUF_VERSION}.tar.gz protobuf-${PROTOBUF_VERSION} |
| 61 | + |
| 62 | +# Install grpc |
| 63 | +ENV GRPC_VERSION=1.54.3 |
| 64 | +ENV GRPC_INSTALL_DIR=/root/ydb_deps/grpc |
| 65 | +RUN wget -O grpc-${GRPC_VERSION}.tar.gz https://github.com/grpc/grpc/archive/refs/tags/v${GRPC_VERSION}.tar.gz && \ |
| 66 | + tar -xvzf grpc-${GRPC_VERSION}.tar.gz && cd grpc-${GRPC_VERSION} && \ |
| 67 | + mkdir build && cd build && \ |
| 68 | + cmake -G Ninja -DCMAKE_PREFIX_PATH="${ABSEIL_CPP_INSTALL_DIR};${PROTOBUF_INSTALL_DIR}" \ |
| 69 | + -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 \ |
| 70 | + -DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DgRPC_BUILD_CSHARP_EXT=OFF \ |
| 71 | + -DgRPC_ZLIB_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_RE2_PROVIDER=package \ |
| 72 | + -DgRPC_SSL_PROVIDER=package -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_ABSL_PROVIDER=package \ |
| 73 | + -DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \ |
| 74 | + -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF .. && \ |
| 75 | + cmake --build . --config Release && \ |
| 76 | + cmake --install . --config Release --prefix ${GRPC_INSTALL_DIR} && \ |
| 77 | + rm -rf grpc-${GRPC_VERSION}.tar.gz grpc-${GRPC_VERSION} |
| 78 | + |
| 79 | +# Install base64 |
| 80 | +ENV BASE64_VERSION=0.5.2 |
| 81 | +ENV BASE64_INSTALL_DIR=/root/ydb_deps/base64 |
| 82 | +RUN wget -O base64-${BASE64_VERSION}.tar.gz https://github.com/aklomp/base64/archive/refs/tags/v${BASE64_VERSION}.tar.gz && \ |
| 83 | + tar -xvzf base64-${BASE64_VERSION}.tar.gz && cd base64-${BASE64_VERSION} && \ |
| 84 | + mkdir build && cd build && \ |
| 85 | + cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. && \ |
| 86 | + cmake --build . --config Release && \ |
| 87 | + cmake --install . --config Release --prefix ${BASE64_INSTALL_DIR} && \ |
| 88 | + rm -rf base64-${BASE64_VERSION}.tar.gz base64-${BASE64_VERSION} |
| 89 | + |
| 90 | +# Install brotli |
| 91 | +ENV BROTLI_VERSION=1.1.0 |
| 92 | +ENV BROTLI_INSTALL_DIR=/root/ydb_deps/brotli |
| 93 | +RUN wget -O brotli-${BROTLI_VERSION}.tar.gz https://github.com/google/brotli/archive/refs/tags/v${BROTLI_VERSION}.tar.gz && \ |
| 94 | + tar -xvzf brotli-${BROTLI_VERSION}.tar.gz && cd brotli-${BROTLI_VERSION} && \ |
| 95 | + mkdir build && cd build && \ |
| 96 | + cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. && \ |
| 97 | + cmake --build . --config Release && \ |
| 98 | + cmake --install . --config Release --prefix ${BROTLI_INSTALL_DIR} && \ |
| 99 | + rm -rf brotli-${BROTLI_VERSION}.tar.gz brotli-${BROTLI_VERSION} |
| 100 | + |
| 101 | +# Install jwt-cpp |
| 102 | +ENV JWT_CPP_VERSION=0.7.0 |
| 103 | +ENV JWT_CPP_INSTALL_DIR=/root/ydb_deps/jwt-cpp |
| 104 | +RUN wget -O jwt-cpp-${JWT_CPP_VERSION}.tar.gz https://github.com/Thalhammer/jwt-cpp/archive/refs/tags/v${JWT_CPP_VERSION}.tar.gz && \ |
| 105 | + tar -xvzf jwt-cpp-${JWT_CPP_VERSION}.tar.gz && cd jwt-cpp-${JWT_CPP_VERSION} && \ |
| 106 | + mkdir build && cd build && \ |
| 107 | + cmake -G Ninja -DCMAKE_BUILD_TYPE=Release .. && \ |
| 108 | + cmake --build . --config Release && \ |
| 109 | + cmake --install . --config Release --prefix ${JWT_CPP_INSTALL_DIR} && \ |
| 110 | + rm -rf jwt-cpp-${JWT_CPP_VERSION}.tar.gz jwt-cpp-${JWT_CPP_VERSION} |
| 111 | + |
| 112 | +# Install ccache 4.8.1 or above |
| 113 | +ENV CCACHE_VERSION=4.8.1 |
| 114 | +RUN wget https://github.com/ccache/ccache/releases/download/v${CCACHE_VERSION}/ccache-${CCACHE_VERSION}-linux-x86_64.tar.xz \ |
| 115 | + && tar -xf ccache-${CCACHE_VERSION}-linux-x86_64.tar.xz \ |
| 116 | + && cp ccache-${CCACHE_VERSION}-linux-x86_64/ccache /usr/local/bin/ \ |
| 117 | + && rm -rf ccache-${CCACHE_VERSION}-linux-x86_64 ccache-${CCACHE_VERSION}-linux-x86_64.tar.xz |
| 118 | + |
| 119 | +COPY . /ydb-cpp-sdk |
| 120 | +WORKDIR /ydb-cpp-sdk |
| 121 | +RUN rm -rf build |
| 122 | + |
| 123 | +RUN cmake -DSLO_BRANCH_REF=${REF} --preset ${PRESET} |
| 124 | +RUN cmake --build --preset default --target slo-key-value |
29 | 125 |
|
30 | | -COPY --from=build /slo-workload-bin / |
31 | | -ENTRYPOINT ["/slo-workload-bin"] |
| 126 | +ENTRYPOINT ["./build/tests/slo_workloads/key_value/slo-key-value"] |
0 commit comments