Skip to content

Commit 143c0a2

Browse files
committed
fix
1 parent 8378346 commit 143c0a2

File tree

6 files changed

+119
-41
lines changed

6 files changed

+119
-41
lines changed

.devcontainer/Dockerfile

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ RUN apt-get -y update && apt-get -y install software-properties-common && add-ap
77
RUN apt-get -y update && apt-get -y install \
88
git gdb ninja-build libidn11-dev ragel yasm libc-ares-dev libre2-dev \
99
rapidjson-dev zlib1g-dev libxxhash-dev libzstd-dev libsnappy-dev libgtest-dev libgmock-dev \
10-
libbz2-dev libdouble-conversion-dev libstdc++-13-dev gcc-13 g++-13 liblz4-dev libssl-dev \
10+
libbz2-dev liblz4-dev libdouble-conversion-dev libstdc++-13-dev gcc-13 g++-13
1111
&& apt-get clean && rm -rf /var/lib/apt/lists/*
1212

1313
# Install CMake
@@ -35,32 +35,48 @@ RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 10000 && \
3535

3636
# Install abseil-cpp
3737
ENV ABSEIL_CPP_VERSION=20230802.0
38+
ENV ABSEIL_CPP_INSTALL_DIR=~/ydb_deps/abseil-cpp
3839
RUN wget -O abseil-cpp-${ABSEIL_CPP_VERSION}.tar.gz https://github.com/abseil/abseil-cpp/archive/refs/tags/${ABSEIL_CPP_VERSION}.tar.gz && \
3940
tar -xvzf abseil-cpp-${ABSEIL_CPP_VERSION}.tar.gz && cd abseil-cpp-${ABSEIL_CPP_VERSION} && \
4041
mkdir build && cd build && \
4142
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DABSL_PROPAGATE_CXX_STD=ON .. && \
42-
cmake --build . --config Release --target install
43+
cmake --build . --config Release && \
44+
cmake --install . --config Release --prefix ${ABSEIL_CPP_INSTALL_DIR}
4345

4446
# Install protobuf
4547
ENV PROTOBUF_VERSION=3.21.12
48+
ENV PROTOBUF_INSTALL_DIR=~/ydb_deps/protobuf
4649
RUN wget -O protobuf-${PROTOBUF_VERSION}.tar.gz https://github.com/protocolbuffers/protobuf/archive/refs/tags/v${PROTOBUF_VERSION}.tar.gz && \
4750
tar -xvzf protobuf-${PROTOBUF_VERSION}.tar.gz && cd protobuf-${PROTOBUF_VERSION} && \
4851
mkdir build && cd build && \
4952
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_INSTALL=ON -Dprotobuf_ABSL_PROVIDER=package .. && \
50-
cmake --build . --config Release --target install
53+
cmake --build . --config Release && \
54+
cmake --install . --config Release --prefix ${PROTOBUF_INSTALL_DIR}
55+
56+
# Install openssl
57+
ENV OPENSSL_VERSION=1.1.1t
58+
ENV OPENSSL_INSTALL_DIR=~/ydb_deps/openssl
59+
RUN mkdir -p ${OPENSSL_INSTALL_DIR}
60+
RUN wget -O openssl-${OPENSSL_VERSION}.tar.gz https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz && \
61+
tar -xvzf openssl-${OPENSSL_VERSION}.tar.gz && cd openssl-${OPENSSL_VERSION} && \
62+
./config --prefix=${OPENSSL_INSTALL_DIR} && \
63+
make && make install
5164

5265
# Install grpc
53-
ENV GRPC_VERSION=1.41.0
66+
ENV GRPC_VERSION=1.54.3
67+
ENV GRPC_INSTALL_DIR=~/ydb_deps/grpc
5468
RUN wget -O grpc-${GRPC_VERSION}.tar.gz https://github.com/grpc/grpc/archive/refs/tags/v${GRPC_VERSION}.tar.gz && \
5569
tar -xvzf grpc-${GRPC_VERSION}.tar.gz && cd grpc-${GRPC_VERSION} && \
5670
mkdir build && cd build && \
57-
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 \
71+
cmake -G Ninja -DCMAKE_PREFIX_PATH="${OPENSSL_INSTALL_DIR};${ABSEIL_CPP_INSTALL_DIR};${PROTOBUF_INSTALL_DIR}" \
72+
-DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 \
5873
-DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DgRPC_BUILD_CSHARP_EXT=OFF \
5974
-DgRPC_ZLIB_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_RE2_PROVIDER=package \
6075
-DgRPC_SSL_PROVIDER=package -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_ABSL_PROVIDER=package \
6176
-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \
6277
-DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF .. && \
63-
cmake --build . --config Release --target install
78+
cmake --build . --config Release && \
79+
cmake --install . --config Release --prefix ${GRPC_INSTALL_DIR}
6480

6581
# Install base64
6682
ENV BASE64_VERSION=0.5.2

.github/actions/prepare_vm/action.yaml

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,19 @@ runs:
1111
run: |
1212
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
1313
sudo apt-get -y update
14-
sudo apt-get -y install git ninja-build libidn11-dev ragel yasm libc-ares-dev libre2-dev \
14+
sudo apt-get -y install git gdb ninja-build libidn11-dev ragel yasm libc-ares-dev libre2-dev \
1515
rapidjson-dev zlib1g-dev libxxhash-dev libzstd-dev libsnappy-dev libgtest-dev libgmock-dev \
1616
libbz2-dev liblz4-dev libdouble-conversion-dev libstdc++-13-dev gcc-13 g++-13
17+
18+
# Install ccache
19+
(V=4.8.1; curl -L https://github.com/ccache/ccache/releases/download/v${V}/ccache-${V}-linux-x86_64.tar.xz | \
20+
sudo tar -xJ -C /usr/local/bin/ --strip-components=1 --no-same-owner ccache-${V}-linux-x86_64/ccache)
21+
22+
ccache -o base_dir=`realpath ..`
23+
ccache -o cache_dir=~/.ccache
24+
ccache -z
25+
export ENABLE_CCACHE="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
26+
1727
wget https://apt.llvm.org/llvm.sh
1828
chmod u+x llvm.sh
1929
sudo ./llvm.sh 16
@@ -28,7 +38,7 @@ runs:
2838
tar -xvzf abseil-cpp-20230802.0.tar.gz
2939
cd abseil-cpp-20230802.0
3040
mkdir build && cd build
31-
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DABSL_PROPAGATE_CXX_STD=ON ..
41+
cmake -G Ninja ${ENABLE_CCACHE} -DCMAKE_BUILD_TYPE=Release -DABSL_PROPAGATE_CXX_STD=ON ..
3242
cmake --build . --config Release
3343
cmake --install . --config Release --prefix ~/ydb_deps/absl
3444
cd ../../
@@ -38,7 +48,7 @@ runs:
3848
tar -xvzf protobuf-3.21.12.tar.gz
3949
cd protobuf-3.21.12
4050
mkdir build && cd build
41-
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_INSTALL=ON ..
51+
cmake -G Ninja ${ENABLE_CCACHE} -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_INSTALL=ON ..
4252
cmake --build . --config Release
4353
cmake --install . --config Release --prefix ~/ydb_deps/protobuf
4454
cd ../../
@@ -57,7 +67,7 @@ runs:
5767
wget -O grpc-1.54.3.tar.gz https://github.com/grpc/grpc/archive/refs/tags/v1.54.3.tar.gz
5868
tar -xvzf grpc-1.54.3.tar.gz && cd grpc-1.54.3
5969
mkdir build && cd build
60-
cmake -G Ninja -DCMAKE_PREFIX_PATH="~/ydb_deps/absl;~/ydb_deps/protobuf;~/ydb_deps/openssl" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 \
70+
cmake -G Ninja ${ENABLE_CCACHE} -DCMAKE_PREFIX_PATH="~/ydb_deps/absl;~/ydb_deps/protobuf;~/ydb_deps/openssl" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 \
6171
-DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DgRPC_BUILD_CSHARP_EXT=OFF \
6272
-DgRPC_ZLIB_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_RE2_PROVIDER=package \
6373
-DgRPC_SSL_PROVIDER=package -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_ABSL_PROVIDER=package \
@@ -71,7 +81,7 @@ runs:
7181
wget -O base64-0.5.2.tar.gz https://github.com/aklomp/base64/archive/refs/tags/v0.5.2.tar.gz
7282
tar -xvzf base64-0.5.2.tar.gz && cd base64-0.5.2
7383
mkdir build && cd build
74-
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
84+
cmake -G Ninja ${ENABLE_CCACHE} -DCMAKE_BUILD_TYPE=Release ..
7585
cmake --build . --config Release
7686
cmake --install . --config Release --prefix ~/ydb_deps/base64
7787
cd ../../
@@ -80,7 +90,7 @@ runs:
8090
wget -O brotli-1.1.0.tar.gz https://github.com/google/brotli/archive/refs/tags/v1.1.0.tar.gz
8191
tar -xvzf brotli-1.1.0.tar.gz && cd brotli-1.1.0
8292
mkdir build && cd build
83-
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
93+
cmake -G Ninja ${ENABLE_CCACHE} -DCMAKE_BUILD_TYPE=Release ..
8494
cmake --build . --config Release
8595
cmake --install . --config Release --prefix ~/ydb_deps/brotli
8696
cd ../../
@@ -89,14 +99,13 @@ runs:
8999
wget -O jwt-cpp-0.7.0.tar.gz https://github.com/Thalhammer/jwt-cpp/archive/refs/tags/v0.7.0.tar.gz
90100
tar -xvzf jwt-cpp-0.7.0.tar.gz && cd jwt-cpp-0.7.0
91101
mkdir build && cd build
92-
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
102+
cmake -G Ninja ${ENABLE_CCACHE} -DCMAKE_BUILD_TYPE=Release ..
93103
cmake --build . --config Release
94104
cmake --install . --config Release --prefix ~/ydb_deps/jwt-cpp
95105
cd ../../
96106
97-
# Install ccache
98-
(V=4.8.1; curl -L https://github.com/ccache/ccache/releases/download/v${V}/ccache-${V}-linux-x86_64.tar.xz | \
99-
sudo tar -xJ -C /usr/local/bin/ --strip-components=1 --no-same-owner ccache-${V}-linux-x86_64/ccache)
107+
# Clean up
108+
ccache -s
100109
sudo rm -rf llvm.sh abseil-cpp-20230802.0.tar.gz protobuf-3.21.12.tar.gz grpc-1.54.3.tar.gz \
101110
base64-0.5.2.tar.gz brotli-1.1.0.tar.gz jwt-cpp-0.7.0.tar.gz openssl-1.1.1t.tar.gz abseil-cpp-20230802.0 \
102111
protobuf-3.21.12 grpc-1.54.3 base64-0.5.2 brotli-1.1.0 jwt-cpp-0.7.0 openssl-OpenSSL_1_1_1t

.github/workflows/examples.yaml

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,6 @@ jobs:
4141
with:
4242
submodules: true
4343
ref: ${{ github.event.pull_request.head.sha }}
44-
- name: Checkout
45-
uses: actions/checkout@v4
46-
if: github.event.pull_request.head.sha == ''
47-
with:
48-
submodules: true
49-
- name: Install dependencies
50-
uses: ./.github/actions/prepare_vm
5144
- name: Prepare ccache timestamp
5245
id: ccache_cache_timestamp
5346
shell: cmake -P {0}
@@ -61,6 +54,13 @@ jobs:
6154
key: ubuntu-22.04-ccache-${{ matrix.compiler }}-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
6255
restore-keys: |
6356
ubuntu-22.04-ccache-${{ matrix.compiler }}-
57+
- name: Checkout
58+
uses: actions/checkout@v4
59+
if: github.event.pull_request.head.sha == ''
60+
with:
61+
submodules: true
62+
- name: Install dependencies
63+
uses: ./.github/actions/prepare_vm
6464
- name: Build
6565
uses: ./.github/actions/build
6666
with:

.github/workflows/tests.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ jobs:
3535
if: github.event.pull_request.head.sha == ''
3636
with:
3737
submodules: true
38-
- name: Install dependencies
39-
uses: ./.github/actions/prepare_vm
4038
- name: Prepare ccache timestamp
4139
id: ccache_cache_timestamp
4240
shell: cmake -P {0}
@@ -50,6 +48,8 @@ jobs:
5048
key: ubuntu-22.04-ccache-${{ matrix.compiler }}-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
5149
restore-keys: |
5250
ubuntu-22.04-ccache-${{ matrix.compiler }}-
51+
- name: Install dependencies
52+
uses: ./.github/actions/prepare_vm
5353
- name: Build
5454
uses: ./.github/actions/build
5555
with:
@@ -95,8 +95,6 @@ jobs:
9595
if: github.event.pull_request.head.sha == ''
9696
with:
9797
submodules: true
98-
- name: Install dependencies
99-
uses: ./.github/actions/prepare_vm
10098
- name: Prepare ccache timestamp
10199
id: ccache_cache_timestamp
102100
shell: cmake -P {0}
@@ -110,6 +108,8 @@ jobs:
110108
key: ubuntu-22.04-ccache-${{ matrix.compiler }}-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
111109
restore-keys: |
112110
ubuntu-22.04-ccache-${{ matrix.compiler }}-
111+
- name: Install dependencies
112+
uses: ./.github/actions/prepare_vm
113113
- name: Build
114114
uses: ./.github/actions/build
115115
with:

.github/workflows/warmup_cache.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ jobs:
1717
uses: actions/checkout@v4
1818
with:
1919
submodules: true
20+
- name: Restore cache files
21+
uses: actions/cache/restore@v4
22+
with:
23+
path: ~/.ccache
24+
key: ubuntu-22.04-ccache-${{ matrix.compiler }}-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
25+
restore-keys: |
26+
ubuntu-22.04-ccache-${{ matrix.compiler }}-
2027
- name: Install dependencies
2128
uses: ./.github/actions/prepare_vm
2229
- name: Prepare ccache timestamp

README.md

Lines changed: 60 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,38 +44,84 @@
4444

4545
```bash
4646
sudo apt-get -y update
47-
sudo apt-get -y install git cmake ninja-build libidn11-dev ragel yasm protobuf-compiler \
48-
protobuf-compiler-grpc libprotobuf-dev libgrpc++-dev libgrpc-dev libgrpc++1 libgrpc10 \
49-
rapidjson-dev zlib1g-dev libxxhash-dev libzstd-dev libsnappy-dev liblz4-dev \
50-
libgtest-dev libgmock-dev libbz2-dev libdouble-conversion-dev libssl-dev
47+
sudo apt-get -y install git gdb ninja-build libidn11-dev ragel yasm libc-ares-dev libre2-dev \
48+
rapidjson-dev zlib1g-dev libxxhash-dev libzstd-dev libsnappy-dev libgtest-dev libgmock-dev \
49+
libbz2-dev liblz4-dev libdouble-conversion-dev libstdc++-13-dev gcc-13 g++-13
5150

5251
wget https://apt.llvm.org/llvm.sh
5352
chmod u+x llvm.sh
5453
sudo ./llvm.sh 16
5554

56-
wget https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
57-
tar -xvzf libiconv-1.15.tar.gz && cd libiconv-1.15
58-
./configure --prefix=/usr/local
55+
# Install abseil-cpp
56+
wget -O abseil-cpp-20230802.0.tar.gz https://github.com/abseil/abseil-cpp/archive/refs/tags/20230802.0.tar.gz
57+
tar -xvzf abseil-cpp-20230802.0.tar.gz
58+
cd abseil-cpp-20230802.0
59+
mkdir build && cd build
60+
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DABSL_PROPAGATE_CXX_STD=ON ..
61+
cmake --build . --config Release
62+
cmake --install . --config Release --prefix ~/ydb_deps/absl
63+
cd ../../
64+
65+
# Install protobuf
66+
wget -O protobuf-3.21.12.tar.gz https://github.com/protocolbuffers/protobuf/archive/refs/tags/v3.21.12.tar.gz
67+
tar -xvzf protobuf-3.21.12.tar.gz
68+
cd protobuf-3.21.12
69+
mkdir build && cd build
70+
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_INSTALL=ON ..
71+
cmake --build . --config Release
72+
cmake --install . --config Release --prefix ~/ydb_deps/protobuf
73+
cd ../../
74+
75+
# Install openssl
76+
wget -O openssl-1.1.1t.tar.gz https://github.com/openssl/openssl/archive/refs/tags/OpenSSL_1_1_1t.tar.gz
77+
tar -xvzf openssl-1.1.1t.tar.gz
78+
cd openssl-OpenSSL_1_1_1t
79+
YDB_DEPS_DIR=~/ydb_deps
80+
./config --prefix=$YDB_DEPS_DIR/openssl
5981
make
60-
sudo make install
82+
make install
83+
cd ../../
6184

85+
# Install gRPC
86+
wget -O grpc-1.54.3.tar.gz https://github.com/grpc/grpc/archive/refs/tags/v1.54.3.tar.gz
87+
tar -xvzf grpc-1.54.3.tar.gz && cd grpc-1.54.3
88+
mkdir build && cd build
89+
cmake -G Ninja -DCMAKE_PREFIX_PATH="~/ydb_deps/absl;~/ydb_deps/protobuf;~/ydb_deps/openssl" -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 \
90+
-DgRPC_INSTALL=ON -DgRPC_BUILD_TESTS=OFF -DgRPC_BUILD_CSHARP_EXT=OFF \
91+
-DgRPC_ZLIB_PROVIDER=package -DgRPC_CARES_PROVIDER=package -DgRPC_RE2_PROVIDER=package \
92+
-DgRPC_SSL_PROVIDER=package -DgRPC_PROTOBUF_PROVIDER=package -DgRPC_ABSL_PROVIDER=package \
93+
-DgRPC_BUILD_GRPC_NODE_PLUGIN=OFF -DgRPC_BUILD_GRPC_OBJECTIVE_C_PLUGIN=OFF -DgRPC_BUILD_GRPC_PHP_PLUGIN=OFF \
94+
-DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF -DgRPC_BUILD_GRPC_CSHARP_PLUGIN=OFF -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF ..
95+
cmake --build . --config Release
96+
cmake --install . --config Release --prefix ~/ydb_deps/grpc
97+
cd ../../
98+
99+
# Install base64
62100
wget -O base64-0.5.2.tar.gz https://github.com/aklomp/base64/archive/refs/tags/v0.5.2.tar.gz
63101
tar -xvzf base64-0.5.2.tar.gz && cd base64-0.5.2
64102
mkdir build && cd build
65-
cmake -DCMAKE_BUILD_TYPE=Release ..
66-
sudo cmake --build . --config Release --target install
103+
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
104+
cmake --build . --config Release
105+
cmake --install . --config Release --prefix ~/ydb_deps/base64
106+
cd ../../
67107

108+
# Install brotli
68109
wget -O brotli-1.1.0.tar.gz https://github.com/google/brotli/archive/refs/tags/v1.1.0.tar.gz
69110
tar -xvzf brotli-1.1.0.tar.gz && cd brotli-1.1.0
70111
mkdir build && cd build
71-
cmake -DCMAKE_BUILD_TYPE=Release ..
72-
sudo cmake --build . --config Release --target install
112+
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
113+
cmake --build . --config Release
114+
cmake --install . --config Release --prefix ~/ydb_deps/brotli
115+
cd ../../
73116

117+
# Install jwt-cpp
74118
wget -O jwt-cpp-0.7.0.tar.gz https://github.com/Thalhammer/jwt-cpp/archive/refs/tags/v0.7.0.tar.gz
75119
tar -xvzf jwt-cpp-0.7.0.tar.gz && cd jwt-cpp-0.7.0
76120
mkdir build && cd build
77-
cmake -DCMAKE_BUILD_TYPE=Release ..
78-
sudo cmake --build . --config Release --target install
121+
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release ..
122+
cmake --build . --config Release
123+
cmake --install . --config Release --prefix ~/ydb_deps/jwt-cpp
124+
cd ../../
79125
```
80126

81127
### Create the work directory

0 commit comments

Comments
 (0)