From a8b0b46b1a754e4643c50cba3a28659241164515 Mon Sep 17 00:00:00 2001 From: Johann Hoffmann Date: Thu, 20 Oct 2022 17:16:25 +0200 Subject: [PATCH] Install AWS SDK and json-schema-validator via vcpkg Signed-off-by: Johann Hoffmann --- Dockerfile | 81 ++++++--------------------------- overlays/curl/portfile.cmake | 1 + overlays/curl/vcpkg.json | 4 ++ overlays/openssl/portfile.cmake | 1 + overlays/openssl/vcpkg.json | 4 ++ overlays/zlib/portfile.cmake | 1 + overlays/zlib/vcpkg.json | 4 ++ 7 files changed, 29 insertions(+), 67 deletions(-) create mode 100644 overlays/curl/portfile.cmake create mode 100644 overlays/curl/vcpkg.json create mode 100644 overlays/openssl/portfile.cmake create mode 100644 overlays/openssl/vcpkg.json create mode 100644 overlays/zlib/portfile.cmake create mode 100644 overlays/zlib/vcpkg.json diff --git a/Dockerfile b/Dockerfile index afd924d..62cbf4a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,14 @@ ARG DEBIAN_VERSION=11.5-slim ARG POCO_VERSION=poco-tip-v1 -ARG FMTLIB_VERSION=9.0.0 ARG CPPKAFKA_VERSION=tip-v1 -ARG JSON_VALIDATOR_VERSION=2.1.0 -ARG AWS_SDK_VERSION=1.9.315 FROM debian:$DEBIAN_VERSION AS build-base RUN apt-get update && apt-get install --no-install-recommends -y \ - make cmake g++ git \ + make cmake g++ git curl zip unzip pkg-config \ libpq-dev libmariadb-dev libmariadbclient-dev-compat \ librdkafka-dev libboost-all-dev libssl-dev \ - zlib1g-dev nlohmann-json3-dev ca-certificates libcurl4-openssl-dev + zlib1g-dev ca-certificates libcurl4-openssl-dev libfmt-dev FROM build-base AS poco-build @@ -27,20 +24,6 @@ RUN cmake .. RUN cmake --build . --config Release -j8 RUN cmake --build . --target install -FROM build-base AS fmtlib-build - -ARG FMTLIB_VERSION - -ADD https://api.github.com/repos/fmtlib/fmt/git/refs/tags/${FMTLIB_VERSION} version.json -RUN git clone https://github.com/fmtlib/fmt --branch ${FMTLIB_VERSION} /fmtlib - -WORKDIR /fmtlib -RUN mkdir cmake-build -WORKDIR cmake-build -RUN cmake .. -RUN make -RUN make install - FROM build-base AS cppkafka-build ARG CPPKAFKA_VERSION @@ -55,63 +38,29 @@ RUN cmake .. RUN cmake --build . --config Release -j8 RUN cmake --build . --target install -FROM build-base AS json-schema-validator-build - -ARG JSON_VALIDATOR_VERSION - -ADD https://api.github.com/repos/pboettch/json-schema-validator/git/refs/tags/${JSON_VALIDATOR_VERSION} version.json -RUN git clone https://github.com/pboettch/json-schema-validator --branch ${JSON_VALIDATOR_VERSION} /json-schema-validator - -WORKDIR /json-schema-validator -RUN mkdir cmake-build -WORKDIR cmake-build -RUN cmake .. -RUN make -RUN make install - -FROM build-base AS aws-sdk-cpp-build - -ARG AWS_SDK_VERSION - -ADD https://api.github.com/repos/aws/aws-sdk-cpp/git/refs/tags/${AWS_SDK_VERSION} version.json -RUN git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp --branch ${AWS_SDK_VERSION} /aws-sdk-cpp - -WORKDIR /aws-sdk-cpp -RUN mkdir cmake-build -WORKDIR cmake-build -RUN cmake .. -DBUILD_ONLY="sns;s3" \ - -DCMAKE_BUILD_TYPE=Release \ - -DUSE_OPENSSL=ON \ - -DCPP_STANDARD=17 \ - -DBUILD_SHARED_LIBS=ON \ - -DCMAKE_CXX_FLAGS="-Wno-error=stringop-overflow -Wno-error=uninitialized" \ - -DAUTORUN_UNIT_TESTS=OFF -RUN cmake --build . --config Release -j8 -RUN cmake --build . --target install - FROM build-base AS owsec-build ADD CMakeLists.txt build /owsec/ +ADD overlays /owsec/overlays ADD cmake /owsec/cmake ADD src /owsec/src ADD .git /owsec/.git +RUN git clone https://github.com/microsoft/vcpkg && \ + ./vcpkg/bootstrap-vcpkg.sh && \ + mkdir /vcpkg/custom-triplets && \ + cp /vcpkg/triplets/x64-linux.cmake /vcpkg/custom-triplets/x64-linux.cmake && \ + sed -i 's/set(VCPKG_LIBRARY.*/set(VCPKG_LIBRARY_LINKAGE dynamic)/g' /vcpkg/custom-triplets/x64-linux.cmake && \ + ./vcpkg/vcpkg install aws-sdk-cpp[s3]:x64-linux json-schema-validator:x64-linux --overlay-triplets=/vcpkg/custom-triplets --overlay-ports=/owsec/overlays COPY --from=poco-build /usr/local/include /usr/local/include COPY --from=poco-build /usr/local/lib /usr/local/lib COPY --from=cppkafka-build /usr/local/include /usr/local/include COPY --from=cppkafka-build /usr/local/lib /usr/local/lib -COPY --from=json-schema-validator-build /usr/local/include /usr/local/include -COPY --from=json-schema-validator-build /usr/local/lib /usr/local/lib -COPY --from=aws-sdk-cpp-build /usr/local/include /usr/local/include -COPY --from=aws-sdk-cpp-build /usr/local/lib /usr/local/lib - -COPY --from=fmtlib-build /usr/local/include /usr/local/include -COPY --from=fmtlib-build /usr/local/lib /usr/local/lib WORKDIR /owsec RUN mkdir cmake-build WORKDIR /owsec/cmake-build -RUN cmake .. +RUN cmake -DCMAKE_TOOLCHAIN_FILE=/vcpkg/scripts/buildsystems/vcpkg.cmake .. RUN cmake --build . --config Release -j8 FROM debian:$DEBIAN_VERSION @@ -128,7 +77,7 @@ RUN mkdir -p "$OWSEC_ROOT" "$OWSEC_CONFIG" && \ RUN apt-get update && apt-get install --no-install-recommends -y \ librdkafka++1 gosu gettext ca-certificates bash jq curl wget \ - libmariadb-dev-compat libpq5 unixodbc postgresql-client + libmariadb-dev-compat libpq5 unixodbc postgresql-client libfmt7 COPY readiness_check /readiness_check COPY test_scripts/curl/cli /cli @@ -142,11 +91,9 @@ RUN wget https://raw.githubusercontent.com/Telecominfraproject/wlan-cloud-ucentr -O /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt COPY --from=owsec-build /owsec/cmake-build/owsec /openwifi/owsec -COPY --from=cppkafka-build /cppkafka/cmake-build/src/lib/* /usr/local/lib -COPY --from=poco-build /poco/cmake-build/lib/* /usr/local/lib -COPY --from=aws-sdk-cpp-build /aws-sdk-cpp/cmake-build/aws-cpp-sdk-core/libaws-cpp-sdk-core.so /usr/local/lib -COPY --from=aws-sdk-cpp-build /aws-sdk-cpp/cmake-build/aws-cpp-sdk-s3/libaws-cpp-sdk-s3.so /usr/local/lib -COPY --from=aws-sdk-cpp-build /aws-sdk-cpp/cmake-build/aws-cpp-sdk-sns/libaws-cpp-sdk-sns.so /usr/local/lib +COPY --from=owsec-build /vcpkg/installed/x64-linux/lib/ /usr/local/lib/ +COPY --from=cppkafka-build /cppkafka/cmake-build/src/lib/ /usr/local/lib/ +COPY --from=poco-build /poco/cmake-build/lib/ /usr/local/lib/ RUN ldconfig diff --git a/overlays/curl/portfile.cmake b/overlays/curl/portfile.cmake new file mode 100644 index 0000000..065116c --- /dev/null +++ b/overlays/curl/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/overlays/curl/vcpkg.json b/overlays/curl/vcpkg.json new file mode 100644 index 0000000..6b80e36 --- /dev/null +++ b/overlays/curl/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "curl", + "version-string": "7.74.0-1.3+deb11u3" +} diff --git a/overlays/openssl/portfile.cmake b/overlays/openssl/portfile.cmake new file mode 100644 index 0000000..065116c --- /dev/null +++ b/overlays/openssl/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/overlays/openssl/vcpkg.json b/overlays/openssl/vcpkg.json new file mode 100644 index 0000000..7c940dc --- /dev/null +++ b/overlays/openssl/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "openssl", + "version-string": "1.1.1n-0+deb11u3" +} diff --git a/overlays/zlib/portfile.cmake b/overlays/zlib/portfile.cmake new file mode 100644 index 0000000..065116c --- /dev/null +++ b/overlays/zlib/portfile.cmake @@ -0,0 +1 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) diff --git a/overlays/zlib/vcpkg.json b/overlays/zlib/vcpkg.json new file mode 100644 index 0000000..163553d --- /dev/null +++ b/overlays/zlib/vcpkg.json @@ -0,0 +1,4 @@ +{ + "name": "zlib", + "version-string": "1:1.2.11.dfsg-2+deb11u2" +}