diff --git a/services/base-image/Dockerfile b/services/base-image/Dockerfile --- a/services/base-image/Dockerfile +++ b/services/base-image/Dockerfile @@ -11,6 +11,7 @@ pkg-config \ libboost-all-dev \ libfmt-dev \ + libgflags-dev \ libgtest-dev \ libcurl4-openssl-dev \ libssl-dev \ @@ -29,6 +30,9 @@ COPY docker/install_glog.sh . RUN ./install_glog.sh +COPY docker/install_double.sh . +RUN ./install_double.sh + COPY docker/install_folly.sh . RUN ./install_folly.sh diff --git a/services/base-image/docker/install_aws_sdk.sh b/services/base-image/docker/install_aws_sdk.sh --- a/services/base-image/docker/install_aws_sdk.sh +++ b/services/base-image/docker/install_aws_sdk.sh @@ -4,12 +4,18 @@ cd /tmp -git clone --recurse-submodules -b 1.9.176 --single-branch https://github.com/aws/aws-sdk-cpp +git clone https://github.com/aws/aws-sdk-cpp \ + --recurse-submodules \ + -b 1.9.176 \ + --single-branch + mkdir aws-sdk-cpp/build pushd aws-sdk-cpp/build -cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/usr/local/aws_sdk -DBUILD_ONLY="core;s3;dynamodb" -make -make install +cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_PREFIX_PATH=/usr/local/aws_sdk \ + -DBUILD_ONLY="core;s3;dynamodb" +make install -l "$(nproc)" -j "$(nproc)" popd # aws-sdk-cpp/build rm -rf aws-sdk-cpp diff --git a/services/base-image/docker/install_double.sh b/services/base-image/docker/install_double.sh new file mode 100755 --- /dev/null +++ b/services/base-image/docker/install_double.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash + +set -euo pipefail + +pushd /usr/lib + +git clone https://github.com/google/double-conversion.git \ + --branch v3.1.5 --single-branch +pushd double-conversion +cmake . -DBUILD_SHARED_LIBS=ON +make install -l "$(nproc)" -j "$(nproc)" + +popd # double-conversion +rm -r double-conversion + +popd diff --git a/services/base-image/docker/install_folly.sh b/services/base-image/docker/install_folly.sh --- a/services/base-image/docker/install_folly.sh +++ b/services/base-image/docker/install_folly.sh @@ -4,7 +4,14 @@ pushd /usr/lib -git clone https://github.com/facebook/folly.git --branch v2020.01.13.00 --single-branch -git clone https://github.com/google/double-conversion.git --branch v3.1.5 --single-branch +git clone https://github.com/facebook/folly.git \ + --branch v2020.01.13.00 \ + --single-branch + +pushd folly +cmake . +make install -l "$(nproc)" -j "$(nproc)" +popd # folly +rm -r folly popd # /usr/lib diff --git a/services/base-image/docker/install_glog.sh b/services/base-image/docker/install_glog.sh --- a/services/base-image/docker/install_glog.sh +++ b/services/base-image/docker/install_glog.sh @@ -4,4 +4,12 @@ pushd /usr/lib git clone https://github.com/google/glog.git --branch v0.4.0 --single-branch + +pushd glog +cmake . -DBUILD_TESTING=OFF +make install -j "$(nproc)" -l "$(nproc)" +popd # glog + +rm -rf glog + popd # /usr/lib diff --git a/services/base-image/docker/install_grpc.sh b/services/base-image/docker/install_grpc.sh --- a/services/base-image/docker/install_grpc.sh +++ b/services/base-image/docker/install_grpc.sh @@ -29,8 +29,7 @@ -DgRPC_BUILD_GRPC_PYTHON_PLUGIN=OFF \ -DgRPC_BUILD_GRPC_RUBY_PLUGIN=OFF \ ../.. -make -make install +make install -j "$(nproc)" -l "$(nproc)" popd # cmake/build # Explicitly install abseil-cpp because of https://github.com/grpc/grpc/issues/25949 @@ -41,11 +40,23 @@ cmake \ -DCMAKE_POSITION_INDEPENDENT_CODE=TRUE \ ../.. -make -make install +make install -j "$(nproc)" -l "$(nproc)" popd # cmake/build popd # third_party/abseil-cpp/ +# Explicitly install a more up-to-date version of `protobuf`, which +# installs `protobuf-config.cmake`. The `libprotobuf-dev` Ubuntu package +# only exports the `pkg-config` `protobuf.pc`. This is important because +# the gRPC CMake configuration will attempt to find the `protobuf` CMake +# configuration. +pushd third_party/protobuf/ +mkdir -p _build +pushd _build +cmake ../cmake -Dprotobuf_BUILD_SHARED_LIBS=ON -Dprotobuf_ABSL_PROVIDER=package +make install -j "$(nproc)" -l "$(nproc)" +popd # _build +popd # third_party/protobuf/ + popd # grpc rm -rf grpc