From 604755db152b245e2b7b1fccbc4f930f8b30b2f1 Mon Sep 17 00:00:00 2001 From: einhorn_b Date: Tue, 27 Apr 2021 00:05:40 +0200 Subject: [PATCH] rebuilding debug build strategie for minimum space and time requirements for user --- .gitmodules | 13 +- docker-compose.override.yml | 12 +- login_server/CMakeLists.txt | 12 +- login_server/CMakeLists.txt.lib | 133 ++++++++++++++++++ login_server/Dockerfile | 2 +- login_server/Dockerfile.alpine-debug | 21 +++ login_server/Dockerfile.debug | 17 +-- .../Dockerfiles/Dockerfile.dependencies | 113 ++++++++++----- .../Dockerfile.dependencies-alpine | 87 ++++++++++++ login_server/Dockerfiles/build_and_run.sh | 22 --- login_server/README | 2 +- login_server/compile_pot.sh | 2 - login_server/dependencies/libsodium | 1 + login_server/dependencies/mariadb-connector-c | 1 - login_server/parse_proto.sh | 16 --- login_server/scripts/build_debug.sh | 25 ++++ login_server/scripts/compile_pot.sh | 2 + .../{ => scripts}/files_to_translate.txt | 0 login_server/scripts/prepare_build.sh | 15 ++ login_server/scripts/unix_parse_proto.sh | 19 +++ login_server/scripts/windows_parse_proto.sh | 19 +++ login_server/src/cpp/lib/DRHashList.cpp | 1 + login_server/unix_parse_proto.sh | 19 --- login_server/windows_parse_proto.sh | 19 --- 24 files changed, 432 insertions(+), 141 deletions(-) create mode 100644 login_server/CMakeLists.txt.lib create mode 100644 login_server/Dockerfile.alpine-debug create mode 100644 login_server/Dockerfiles/Dockerfile.dependencies-alpine delete mode 100644 login_server/Dockerfiles/build_and_run.sh delete mode 100755 login_server/compile_pot.sh create mode 160000 login_server/dependencies/libsodium delete mode 160000 login_server/dependencies/mariadb-connector-c delete mode 100644 login_server/parse_proto.sh create mode 100755 login_server/scripts/build_debug.sh create mode 100755 login_server/scripts/compile_pot.sh rename login_server/{ => scripts}/files_to_translate.txt (100%) create mode 100755 login_server/scripts/prepare_build.sh create mode 100755 login_server/scripts/unix_parse_proto.sh create mode 100644 login_server/scripts/windows_parse_proto.sh delete mode 100755 login_server/unix_parse_proto.sh delete mode 100644 login_server/windows_parse_proto.sh diff --git a/.gitmodules b/.gitmodules index 7ebe00a4d..216f32025 100644 --- a/.gitmodules +++ b/.gitmodules @@ -28,4 +28,15 @@ [submodule "community_server/src/protobuf"] path = community_server/src/protobuf url = git@github.com:gradido/gradido_protocol.git - +[submodule "login_server/dependencies/libsodium"] + path = login_server/dependencies/libsodium + url = https://github.com/jedisct1/libsodium.git +[submodule "login_server/dependencies/boost/static_assert"] + path = login_server/dependencies/boost/static_assert + url = https://github.com/boostorg/static_assert.git +[submodule "login_server/dependencies/boost/iterator"] + path = login_server/dependencies/boost/iterator + url = https://github.com/boostorg/iterator.git +[submodule "login_server/dependencies/boost/spirit"] + path = login_server/dependencies/boost/spirit + url = https://github.com/boostorg/spirit.git diff --git a/docker-compose.override.yml b/docker-compose.override.yml index b3c399d3a..a95b3dde1 100644 --- a/docker-compose.override.yml +++ b/docker-compose.override.yml @@ -24,8 +24,8 @@ services: ######################################################### login-server: build: - target: login_server_debug - dockerfile: Dockerfile.debug + target: login_server_alpine_debug + dockerfile: Dockerfile.alpine-debug security_opt: - seccomp:unconfined cap_add: @@ -33,9 +33,10 @@ services: volumes: - ./logs:/var/log/grd_login - ./login_server/src:/code/src + - ./login_server/dependencies:/code/dependencies + - ./login_server/scripts:/code/scripts - ./configs/login_server:/etc/grd_login - - login_build:/code/build - - conan:/root/.conan + - login_build_alpine:/code/build ######################################################### @@ -100,6 +101,5 @@ services: volumes: frontend_node_modules: - login_build: - conan: + login_build_alpine: diff --git a/login_server/CMakeLists.txt b/login_server/CMakeLists.txt index 4ab4ad2de..b43127a48 100644 --- a/login_server/CMakeLists.txt +++ b/login_server/CMakeLists.txt @@ -14,10 +14,12 @@ else() set(INSTALL_BINDIR "bin") set(INSTALL_PLUGINDIR "bin") endif() +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ./lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ./lib) include_directories( "dependencies" - "dependencies/tinf/src/" + "dependencies/tinf/src" "dependencies/mariadb-connector-c/include" "dependencies/mariadb-connector-c/build/include" "dependencies/spirit-po/include" @@ -131,10 +133,12 @@ if(WIN32) endif() ############################## config and add poco ################################### +#SET(SOME_EXPAT_OPTION OFF CACHE BOOL "Use some expat option") +SET(ENABLE_MONGODB OFF CACHE BOOL "" FORCE) +SET(ENABLE_DATA_SQLITE OFF CACHE BOOL "" FORCE) +SET(ENABLE_REDIS OFF CACHE BOOL "" FORCE) +SET(ENABLE_PAGECOMPILER_FILE2PAGE OFF CACHE BOOL "" FORCE) add_subdirectory("dependencies/poco") -set(ENABLE_MONGODB OFF) -set(ENABLE_DATA_SQLITE OFF) -set(ENABLE_REDIS OFF) set(POCO_LIBS PocoFoundation PocoUtil PocoNet PocoNetSSL PocoData) diff --git a/login_server/CMakeLists.txt.lib b/login_server/CMakeLists.txt.lib new file mode 100644 index 000000000..89640db06 --- /dev/null +++ b/login_server/CMakeLists.txt.lib @@ -0,0 +1,133 @@ +cmake_minimum_required(VERSION 3.18.2) +project(Gradido_LoginServer C CXX) +SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "bin" ) + +SET ( CMAKE_CXX_FLAGS "-std=c++17" ) +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +if(WIN32) + set(CMAKE_CXX_FLAGS "/MP /EHsc") + set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3") + set(CMAKE_CXX_FLAGS_RELEASE "-O3") +else() + set(INSTALL_BINDIR "bin") + set(INSTALL_PLUGINDIR "bin") +endif() + +include_directories( + "dependencies" + "dependencies/tinf/src" + "dependencies/mariadb-connector-c/include" + "dependencies/mariadb-connector-c/build/include" + "dependencies/spirit-po/include" + "dependencies/grpc/include" + "dependencies/grpc/third_party/protobuf/src" + "dependencies/grpc/third_party/googletest/googletest/include" + "dependencies/poco/Crypto/include" + "dependencies/poco/Data/include" + "dependencies/poco/Util/include" + "dependencies/poco/Foundation/include" + "dependencies/poco/JSON/include" + "dependencies/poco/Net/include" + "dependencies/poco/NetSSL_OpenSSL/include" + "src/cpp/proto" +) + + + + +#set(MYSQL_INCLUDE_DIR "dependencies/mariadb-connector-c/include") + +FILE(GLOB CONTROLLER "src/cpp/controller/*.cpp" "src/cpp/controller/*.h") +FILE(GLOB TINF "dependencies/tinf/src/*.c" "dependencies/tinf/src/*.h") +FILE(GLOB HTTPInterface "src/cpp/HTTPInterface/*.h" "src/cpp/HTTPInterface/*.cpp") +FILE(GLOB JSONInterface "src/cpp/JSONInterface/*.h" "src/cpp/JSONInterface/*.cpp") +FILE(GLOB TASKS "src/cpp/tasks/*.cpp" "src/cpp/tasks/*.h") +FILE(GLOB SINGLETON_MANAGER "src/cpp/SingletonManager/*.h" "src/cpp/SingletonManager/*.cpp") +FILE(GLOB LIB_SRC "src/cpp/lib/*.h" "src/cpp/lib/*.cpp") +FILE(GLOB MODEL "src/cpp/model/*.h" "src/cpp/model/*.cpp") +FILE(GLOB MODEL_TABLE "src/cpp/model/table/*.h" "src/cpp/model/table/*.cpp") +FILE(GLOB MODEL_EMAIL "src/cpp/model/email/*.h" "src/cpp/model/email/*.cpp") +FILE(GLOB MODEL_HEDERA "src/cpp/model/hedera/*.h" "src/cpp/model/hedera/*.cpp") +FILE(GLOB MODEL_GRADIDO "src/cpp/model/gradido/*.h" "src/cpp/model/gradido/*.cpp") +FILE(GLOB CRYPTO "src/cpp/Crypto/*.h" "src/cpp/Crypto/*.cpp") +FILE(GLOB MAIN "src/cpp/*.cpp" "src/cpp/*.c" "src/cpp/*.h") +FILE(GLOB MYSQL "src/cpp/MySQL/*.cpp" "src/cpp/MySQL/*.h" "src/cpp/MySQL/Poco/*.h") +FILE(GLOB PROTO_GRADIDO "src/cpp/proto/gradido/*.cc" "src/cpp/proto/gradido/*.h") +FILE(GLOB PROTO_HEDERA "src/cpp/proto/hedera/*.cc" "src/cpp/proto/hedera/*.h") + +# used only for test project +FILE(GLOB TEST "src/cpp/test/*.cpp" "src/cpp/test/*.h") +FILE(GLOB TEST_CRYPTO "src/cpp/test/crypto/*.cpp" "src/cpp/test/crypto/*.h") +FILE(GLOB TEST_MODEL "src/cpp/test/model/*.cpp" "src/cpp/test/model/*.h") +FILE(GLOB TEST_MODEL_TABLE "src/cpp/test/model/table/*.cpp" "src/cpp/test/model/table/*.h") +FILE(GLOB TEST_CONTROLLER "src/cpp/test/controller/*.cpp" "src/cpp/test/controller/*.h") + +SET(LOCAL_SRCS + ${CONTROLLER} ${TINF} ${MAIN} ${HTTPInterface} + ${JSONInterface} ${CRYPTO} + ${MODEL} ${MODEL_TABLE} ${MODEL_EMAIL} ${MODEL_HEDERA} ${MODEL_GRADIDO} + ${SINGLETON_MANAGER} ${LIB_SRC} ${MYSQL} ${TASKS} + ${PROTO_GRADIDO} ${PROTO_HEDERA} +) +SET(LOCAL_TEST_SRC + ${TEST} ${TEST_CRYPTO} ${TEST_MODEL} ${TEST_MODEL_TABLE} ${TEST_CONTROLLER} +) +aux_source_directory("src/cpp" LOCAL_SRCS) + +if(MSVC) + # src + source_group("controller" FILES ${CONTROLLER}) + source_group("proto\\gradido" FILES ${PROTO_GRADIDO}) + source_group("proto\\hedera" FILES ${PROTO_HEDERA}) + source_group("tinf" FILES ${TINF}) + source_group("Crypto" FILES ${CRYPTO}) + source_group("tasks" FILES ${TASKS}) + source_group("model\\table" FILES ${MODEL_TABLE}) + source_group("model\\email" FILES ${MODEL_EMAIL}) + source_group("model\\hedera" FILES ${MODEL_HEDERA}) + source_group("model\\gradido" FILES ${MODEL_GRADIDO}) + source_group("model" FILES ${MODEL}) + source_group("mysql" FILES ${MYSQL}) + source_group("SingletonManager" FILES ${SINGLETON_MANAGER}) + source_group("lib" FILES ${LIB_SRC}) + source_group("HTTP-Interface" FILES ${HTTPInterface}) + source_group("Json-Interface" FILES ${JSONInterface}) + source_group("Test\\crypto" FILES ${TEST_CRYPTO}) + source_group("Test\\model\\table" FILES ${TEST_MODEL_TABLE}) + source_group("Test\\model" FILES ${TEST_MODEL}) + source_group("Test\\controller" FILES ${TEST_CONTROLLER}) + source_group("Test" FILES ${TEST}) +endif() + +add_executable(Gradido_LoginServer ${LOCAL_SRCS}) + +############################## config and add mariadb ################################### + +find_library(MYSQL_LIBRARIES mariadbd PATHS "pre_build/dependencies/mariadb-connector-c/libmariadb/lib" REQUIRED) + +############################## config and add poco ################################### +set(BUILD_LIB_PATH "pre_build/lib") +find_library(POCO_FOUNDATION_LIB PocoFoundationd PATHS ${BUILD_LIB_PATH} REQUIRED) +find_library(POCO_UTIL_LIB PocoUtild PATHS ${BUILD_LIB_PATH} REQUIRED) +find_library(POCO_NET_SSL_LIB PocoNetSSLd PATHS ${BUILD_LIB_PATH} REQUIRED) +find_library(POCO_DATA_LIB PocoDatad PATHS ${BUILD_LIB_PATH} REQUIRED) +find_library(POCO_JSON_LIB PocoJSONd PATHS ${BUILD_LIB_PATH} REQUIRED) +find_library(POCO_NET_LIB PocoNetd PATHS ${BUILD_LIB_PATH} REQUIRED) + +set(POCO_LIBS ${POCO_FOUNDATION_LIB} ${POCO_UTIL_LIB} ${POCO_NET_SSL_LIB} ${POCO_DATA_LIB} ${POCO_JSON_LIB} ${POCO_NET_LIB}) + +############################## config and add grpc ################################### + + +find_library(PROTOBUF_LIB protobufd PATHS "pre_build/dependencies/grpc/third_party/protobuf/lib" REQUIRED) +set(DEPENDENCIES_GRPC_LIB_PATH "pre_build/dependencies/grpc/lib") +find_library(GRPC_PP_REFLECTION grpc++_reflectiond PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) +find_library(GRPC_PP grpc++d PATHS ${DEPENDENCIES_GRPC_LIB_PATH} REQUIRED) + +set(GRPC_LIBS, ${GRPC_PP_REFLECTION} ${GRPC_PP} ${PROTOBUF_LIB}) +############################## build login server ################################### + +target_link_libraries(Gradido_LoginServer ${GRPC_LIBS} ${POCO_LIBS} ${MYSQL_LIBRARIES} sodium) + diff --git a/login_server/Dockerfile b/login_server/Dockerfile index 221045de3..224cc3964 100644 --- a/login_server/Dockerfile +++ b/login_server/Dockerfile @@ -26,7 +26,7 @@ ENV DOCKER_WORKDIR="/code" USER root RUN apt-get update \ - && apt-get -y --no-install-recommends install libsodium-dev libboost-all-dev gettext \ + && apt-get -y --no-install-recommends install libboost-all-dev gettext \ && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* RUN mkdir -p ${DOCKER_WORKDIR} diff --git a/login_server/Dockerfile.alpine-debug b/login_server/Dockerfile.alpine-debug new file mode 100644 index 000000000..3ca2b5da3 --- /dev/null +++ b/login_server/Dockerfile.alpine-debug @@ -0,0 +1,21 @@ +FROM gradido/login_dependencies:alpine-stage2.1 as login_server_alpine_debug + +ENV DOCKER_WORKDIR="/code" + + +EXPOSE 1200 +EXPOSE 1201 +WORKDIR ${DOCKER_WORKDIR} + +COPY ./CMakeLists.txt.lib ./CMakeLists.txt +RUN ls -la ${DOCKER_WORKDIR}/pre_build && \ + ls -la ${DOCKER_WORKDIR}/pre_build/lib && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/protobuf/lib && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/lib && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/ && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/libmariadb && \ + ls -la ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/libmariadb/lib + +CMD cp -r ${DOCKER_WORKDIR}/pre_build/bin ${DOCKER_WORKDIR}/build/bin; cd scripts; ./prepare_build.sh; ./build_debug.sh; cd ..; ./build/bin/Gradido_LoginServer + diff --git a/login_server/Dockerfile.debug b/login_server/Dockerfile.debug index ae54eb062..6b68c9593 100644 --- a/login_server/Dockerfile.debug +++ b/login_server/Dockerfile.debug @@ -12,7 +12,7 @@ USER root RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 \ && cd CMake \ && ./bootstrap \ - && make -j${nproc} \ + && make -j$(nproc) \ && make install ######################################################################################################### @@ -24,19 +24,14 @@ USER root ENV DOCKER_WORKDIR="/code" -RUN apt-get update \ - && apt-get -y --no-install-recommends install libsodium-dev libboost-all-dev \ - && apt-get clean; rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* - RUN mkdir -p ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR} COPY . . -RUN cd dependencies/mariadb-connector-c && \ - mkdir build && \ - cd build && \ - cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSL=OFF .. +RUN cd scripts \ + && chmod +x ./prepare_build.sh \ + && ./prepare_build.sh ######################################################################################################### # run debug @@ -48,7 +43,7 @@ ENV DOCKER_WORKDIR="/code" EXPOSE 1200 EXPOSE 1201 WORKDIR ${DOCKER_WORKDIR} -RUN chmod +x ./Dockerfiles/build_and_run.sh +RUN chmod +x ./scripts/build_and_run.sh -CMD ./Dockerfiles/build_and_run.sh; ./build/bin/Gradido_LoginServer +CMD ./scripts/build_and_run.sh; ./build/bin/Gradido_LoginServer diff --git a/login_server/Dockerfiles/Dockerfile.dependencies b/login_server/Dockerfiles/Dockerfile.dependencies index 0194c7c82..79a573ea2 100644 --- a/login_server/Dockerfiles/Dockerfile.dependencies +++ b/login_server/Dockerfiles/Dockerfile.dependencies @@ -1,56 +1,93 @@ ######################################################################################################### -# debug build preparation +# gcc 9 with libssl ######################################################################################################### -From conanio/gcc9 as build_debug_preparation +FROM gcc:9 as gcc_9_libssl USER root +RUN apt-get update && \ + apt-get install -y --no-install-recommends libssl-dev libboost-dev && \ + apt-get autoclean && \ + apt-get autoremove && \ + apt-get clean && \ + rm -rf /var/lib/apt/lists/* + + +######################################################################################################### +# gcc 9 cmake +######################################################################################################### +FROM gcc_9_libssl as gcc_9_cmake + +USER root ENV DOCKER_WORKDIR="/code" - + RUN mkdir -p ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR} + +RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 && \ + cd CMake && \ + ./bootstrap --parallel=$(nproc) && \ + make -j$(nproc) && \ + make install && \ + cd .. && \ + rm -rf CMake + +######################################################################################################### +# debug build preparation +######################################################################################################### +FROM gcc_9_libssl as build_debug_dependencies + +USER root +ENV DOCKER_WORKDIR="/code" + +RUN mkdir -p ${DOCKER_WORKDIR} +WORKDIR ${DOCKER_WORKDIR} + +# copy CMake from last stage +COPY --from=gcc_9_cmake /usr/local/bin/cmake /usr/local/bin/cmake +COPY --from=gcc_9_cmake /usr/local/share/cmake-3.19/Modules /usr/local/share/cmake-3.19/Modules +COPY --from=gcc_9_cmake /usr/local/share/cmake-3.19/Templates /usr/local/share/cmake-3.19/Templates + COPY ./dependencies ./dependencies -COPY ./conanfile.txt ./conanfile.txt - - -RUN cd dependencies/mariadb-connector-c && \ - mkdir build && \ - cd build && \ - cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_SSL=OFF .. - - -RUN mkdir build && \ - cd build && \ - conan install .. --build=missing -s build_type=Debug - - -######################################################################################################### -# debug build proto and grpc -######################################################################################################### -From build_debug_preparation as proto_grpc - -ENV DOCKER_WORKDIR="/code" -WORKDIR ${DOCKER_WORKDIR} - +COPY ./scripts ./scripts COPY ./CMakeLists.txt . -RUN cd build && \ - cmake -DCMAKE_BUILD_TYPE=Debug .. && \ - make -j${CPU_COUNT} protoc grpc_cpp_plugin +COPY ./src ./src + + +RUN cd scripts && \ + chmod +x ./prepare_build.sh && \ + ./prepare_build.sh && \ + mkdir ../build && \ + chmod +x ./build_debug.sh && \ + ./build_debug.sh + +# remove unneccessary stuff +RUN rm -rf build/bin/Gradido_LoginServer ######################################################################################################### -# parse proto and gettext +# debug build ######################################################################################################### -From proto_grpc as proto_parse +FROM gcc_9_libssl as build_debug +USER root ENV DOCKER_WORKDIR="/code" + +RUN mkdir -p ${DOCKER_WORKDIR} WORKDIR ${DOCKER_WORKDIR} -RUN mkdir src && \ - cd src && \ - mkdir cpp -COPY ./src/proto ./src/proto -COPY ./unix_parse_proto.sh . -RUN chmod +x unix_parse_proto.sh && \ - ./unix_parse_proto.sh - +# copy CMake from last stage +COPY --from=build_debug_dependencies /usr/local/bin/cmake /usr/local/bin/cmake +COPY --from=build_debug_dependencies /usr/local/share/cmake-3.19 /usr/local/share/cmake-3.19 + +COPY --from=build_debug_dependencies /code/build/bin /code/build/bin +COPY --from=build_debug_dependencies /code/build/lib /code/build/lib + +# grpc +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/lib /build/dependencies/grpc/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/protobuf/lib /build/dependencies/grpc/third_party/protobuf/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/re2/lib /build/dependencies/grpc/third_party/re2/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/zlib/lib /build/dependencies/grpc/third_party/zlib/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/cares/cares/lib /build/dependencies/grpc/third_party/cares/cares/lib +COPY --from=build_debug_dependencies /code/build/dependencies/mariadb-connector-c/libmariadb/lib /build/dependencies/mariadb-connector-c/libmariadb/lib + diff --git a/login_server/Dockerfiles/Dockerfile.dependencies-alpine b/login_server/Dockerfiles/Dockerfile.dependencies-alpine new file mode 100644 index 000000000..3d06df22c --- /dev/null +++ b/login_server/Dockerfiles/Dockerfile.dependencies-alpine @@ -0,0 +1,87 @@ + +##### BUILD-ENV ##### +FROM alpine:3.13.5 as alpine-build + +RUN apk add --update --no-cache icu-dev +RUN apk add --no-cache git openssl-dev make gcc musl-dev g++ linux-headers libintl gettext-dev boost-dev libsodium-dev + + +##### CMAKE ##### +FROM alpine-build as alpine-gxx-cmake + +USER root +ENV DOCKER_WORKDIR="/code" + +RUN mkdir -p ${DOCKER_WORKDIR} +WORKDIR ${DOCKER_WORKDIR} + +RUN git clone https://github.com/Kitware/CMake.git --branch=v3.19.8 && \ + cd CMake && \ + ./bootstrap --parallel=$(nproc) && \ + make -j$(nproc) && \ + make install && \ + cd .. && \ + rm -rf CMake + +RUN ls -la /usr/include/boost + +##### BUILD ENV ############## +FROM alpine-build as build_debug_dependencies + +USER root +ENV DOCKER_WORKDIR="/code" + +RUN mkdir -p ${DOCKER_WORKDIR} +WORKDIR ${DOCKER_WORKDIR} + +RUN apk add --no-cache git make gettext openssl-dev +# copy CMake from last stage +COPY --from=alpine-gxx-cmake /usr/local/bin/cmake /usr/local/bin/cmake +COPY --from=alpine-gxx-cmake /usr/local/share/cmake-3.19/Modules /usr/local/share/cmake-3.19/Modules +COPY --from=alpine-gxx-cmake /usr/local/share/cmake-3.19/Templates /usr/local/share/cmake-3.19/Templates + + + +# COPY files from context +COPY ./dependencies ./dependencies +COPY ./scripts ./scripts +COPY ./CMakeLists.txt . +COPY ./src ./src + +# run build +RUN cd scripts && \ + chmod +x ./prepare_build.sh && \ + ./prepare_build.sh && \ + mkdir ../build && \ + chmod +x ./build_debug.sh && \ + ./build_debug.sh + +######################################################################################################### +# builded libs and binaries +######################################################################################################### +FROM alpine-build as debug_builded + +USER root +ENV DOCKER_WORKDIR="/code" + +RUN mkdir -p ${DOCKER_WORKDIR} +WORKDIR ${DOCKER_WORKDIR} + +RUN apk add --no-cache bash + +# copy CMake from last stage +COPY --from=build_debug_dependencies /usr/local/bin/cmake /usr/local/bin/cmake +COPY --from=build_debug_dependencies /usr/local/share/cmake-3.19 /usr/local/share/cmake-3.19 + +COPY --from=build_debug_dependencies /code/build/bin ${DOCKER_WORKDIR}/pre_build/bin +COPY --from=build_debug_dependencies /code/build/lib ${DOCKER_WORKDIR}/pre_build/lib + +# grpc +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/protobuf/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/protobuf/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/re2/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/re2/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/zlib/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/zlib/lib +COPY --from=build_debug_dependencies /code/build/dependencies/grpc/third_party/cares/cares/lib ${DOCKER_WORKDIR}/pre_build/dependencies/grpc/third_party/cares/cares/lib +COPY --from=build_debug_dependencies /code/build/dependencies/mariadb-connector-c/libmariadb/lib ${DOCKER_WORKDIR}/pre_build/dependencies/mariadb-connector-c/libmariadb/lib + + diff --git a/login_server/Dockerfiles/build_and_run.sh b/login_server/Dockerfiles/build_and_run.sh deleted file mode 100644 index d7ad51ef2..000000000 --- a/login_server/Dockerfiles/build_and_run.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash - -cd build -cmake -DCMAKE_BUILD_TYPE=Debug .. -make -j${nproc} protoc grpc_cpp_plugin -cd .. - -if [ ! -d "./src/cpp/proto/hedera" ] ; then -#if [ ! -f "./src/cpp/proto/gradido/TransactionBody.pb.h"] ; then - chmod +x unix_parse_proto.sh - ./unix_parse_proto.sh -fi -chmod +x compile_pot.sh - -./compile_pot.sh - -cd build -cmake -DCMAKE_BUILD_TYPE=Debug .. -make -j$(nproc) Gradido_LoginServer -#echo "building done" -chmod +x ./bin/Gradido_LoginServer -#./bin/Gradido_LoginServer diff --git a/login_server/README b/login_server/README index 3e7843a58..400aee30a 100644 --- a/login_server/README +++ b/login_server/README @@ -1,4 +1,4 @@ -sudo apt install libsodium-dev libboost-all-dev +sudo apt install libsodium-dev # get dependencies git submodule update --init --recursive diff --git a/login_server/compile_pot.sh b/login_server/compile_pot.sh deleted file mode 100755 index df6f5e435..000000000 --- a/login_server/compile_pot.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -xgettext -D src/cpp -p src/LOCALE -o messages.pot --from-code=UTF-8 --files-from=files_to_translate.txt diff --git a/login_server/dependencies/libsodium b/login_server/dependencies/libsodium new file mode 160000 index 000000000..8aedf4733 --- /dev/null +++ b/login_server/dependencies/libsodium @@ -0,0 +1 @@ +Subproject commit 8aedf4733884a25434b5c17c79c7e7dee27e6eb0 diff --git a/login_server/dependencies/mariadb-connector-c b/login_server/dependencies/mariadb-connector-c deleted file mode 160000 index 159540fe8..000000000 --- a/login_server/dependencies/mariadb-connector-c +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 159540fe8c8f30b281748fe8a1b79e8b17993a67 diff --git a/login_server/parse_proto.sh b/login_server/parse_proto.sh deleted file mode 100644 index 1ec7c106e..000000000 --- a/login_server/parse_proto.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -if [ ! -d "./src/cpp/proto" ] ; then - mkdir ./src/cpp/proto -fi -if [ ! -d "./src/cpp/proto/gradido" ] ; then - mkdir ./src/cpp/proto/gradido -fi - -./protoc --cpp_out=./src/cpp/proto --proto_path=./src/proto ./src/proto/gradido/*.proto - -if [ ! -d "./src/cpp/proto/hedera" ] ; then - mkdir ./src/cpp/proto/hedera -fi - - -./protoc --plugin=protoc-gen-grpc=./grpc_cpp_plugin.exe --cpp_out=./src/cpp/proto/hedera --grpc_out=./src/cpp/proto/hedera --proto_path=./src/proto/hedera/hedera-protobuf/src/main/proto ./src/proto/hedera/hedera-protobuf/src/main/proto/*.proto diff --git a/login_server/scripts/build_debug.sh b/login_server/scripts/build_debug.sh new file mode 100755 index 000000000..9f6158da8 --- /dev/null +++ b/login_server/scripts/build_debug.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +cd ../build +cmake -DCMAKE_BUILD_TYPE=Debug .. +if [ ! -f "./bin/protoc" ] ; then + make -j$(nproc) protoc + cp ./dependencies/grpc/third_party/protobuf/bin/* ./bin/ +fi +if [ ! -f "./bin/grpc_cpp_plugin" ] ; then + make -j$(nproc) grpc_cpp_plugin + cp ./dependencies/grpc/bin/grpc_cpp_plugin ./bin/grpc_cpp_plugin +fi +cd ../scripts +if [ ! -d "./src/cpp/proto/hedera" ] ; then + chmod +x unix_parse_proto.sh + ./unix_parse_proto.sh +fi +chmod +x compile_pot.sh +./compile_pot.sh + +cd ../build +cmake -DCMAKE_BUILD_TYPE=Debug .. +make -j$(nproc) Gradido_LoginServer PageCompiler + +chmod +x ./bin/Gradido_LoginServer diff --git a/login_server/scripts/compile_pot.sh b/login_server/scripts/compile_pot.sh new file mode 100755 index 000000000..1d817be55 --- /dev/null +++ b/login_server/scripts/compile_pot.sh @@ -0,0 +1,2 @@ +#!/bin/sh +xgettext -D ../src/cpp -p ../src/LOCALE -o messages.pot --from-code=UTF-8 --files-from=files_to_translate.txt diff --git a/login_server/files_to_translate.txt b/login_server/scripts/files_to_translate.txt similarity index 100% rename from login_server/files_to_translate.txt rename to login_server/scripts/files_to_translate.txt diff --git a/login_server/scripts/prepare_build.sh b/login_server/scripts/prepare_build.sh new file mode 100755 index 000000000..8706e4139 --- /dev/null +++ b/login_server/scripts/prepare_build.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# generate version for mariadb connector + +cd ../dependencies/mariadb-connector-c +if [ -d "./build" ] ; then + rm -rf ./build +fi +mkdir build +cd build +cmake -DWITH_SSL=OFF .. +cd ../../ + + + diff --git a/login_server/scripts/unix_parse_proto.sh b/login_server/scripts/unix_parse_proto.sh new file mode 100755 index 000000000..5f8a86023 --- /dev/null +++ b/login_server/scripts/unix_parse_proto.sh @@ -0,0 +1,19 @@ +#!/bin/sh +if [ ! -d "../src/cpp/proto" ] ; then + mkdir ../src/cpp/proto +fi +if [ ! -d "../src/cpp/proto/gradido" ] ; then + mkdir ../src/cpp/proto/gradido +fi +PROTOC_PATH=../build/bin +CPP_PLUGIN_PATH=../build/bin +$PROTOC_PATH/protoc --cpp_out=../src/cpp/proto --proto_path=../src/proto ../src/proto/gradido/*.proto + +if [ ! -d "../src/cpp/proto/hedera" ] ; then + mkdir ../src/cpp/proto/hedera +fi + +GOOGLE_PROTOBUF_INCLUDES=../dependencies/grpc/third_party/protobuf/src +$PROTOC_PATH/protoc --plugin=protoc-gen-grpc=$CPP_PLUGIN_PATH/grpc_cpp_plugin --cpp_out=../src/cpp/proto/hedera --grpc_out=../src/cpp/proto/hedera --proto_path=$GOOGLE_PROTOBUF_INCLUDES --proto_path=../src/proto/hedera/hedera-protobuf/src/main/proto ../src/proto/hedera/hedera-protobuf/src/main/proto/*.proto + + diff --git a/login_server/scripts/windows_parse_proto.sh b/login_server/scripts/windows_parse_proto.sh new file mode 100644 index 000000000..b01ae74d7 --- /dev/null +++ b/login_server/scripts/windows_parse_proto.sh @@ -0,0 +1,19 @@ +#!/bin/bash +if [ ! -d "../src/cpp/proto" ] ; then + mkdir ../src/cpp/proto +fi +if [ ! -d "../src/cpp/proto/gradido" ] ; then + mkdir ../src/cpp/proto/gradido +fi +PROTOC_PATH=build/bin +CPP_PLUGIN_PATH=build/bin +$PROTOC_PATH/protoc.exe --cpp_out=../src/cpp/proto --proto_path=../src/proto ../src/proto/gradido/*.proto + +if [ ! -d "./src/cpp/proto/hedera" ] ; then + mkdir ./src/cpp/proto/hedera +fi + +GOOGLE_PROTOBUF_INCLUDES=../dependencies/grpc/third_party/protobuf/src +$PROTOC_PATH/protoc.exe --plugin=protoc-gen-grpc=$CPP_PLUGIN_PATH/grpc_cpp_plugin.exe --cpp_out=../src/cpp/proto/hedera --grpc_out=../src/cpp/proto/hedera --proto_path=$GOOGLE_PROTOBUF_INCLUDES --proto_path=../src/proto/hedera/hedera-protobuf/src/main/proto ../src/proto/hedera/hedera-protobuf/src/main/proto/*.proto + + diff --git a/login_server/src/cpp/lib/DRHashList.cpp b/login_server/src/cpp/lib/DRHashList.cpp index b912f742c..62429b094 100644 --- a/login_server/src/cpp/lib/DRHashList.cpp +++ b/login_server/src/cpp/lib/DRHashList.cpp @@ -6,6 +6,7 @@ #include #include +#include using namespace std; diff --git a/login_server/unix_parse_proto.sh b/login_server/unix_parse_proto.sh deleted file mode 100755 index 88c4c4b5d..000000000 --- a/login_server/unix_parse_proto.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -if [ ! -d "./src/cpp/proto" ] ; then - mkdir ./src/cpp/proto -fi -if [ ! -d "./src/cpp/proto/gradido" ] ; then - mkdir ./src/cpp/proto/gradido -fi -PROTOC_PATH=./build/dependencies/grpc/third_party/protobuf/bin -CPP_PLUGIN_PATH=./build/dependencies/grpc/bin -$PROTOC_PATH/protoc --cpp_out=./src/cpp/proto --proto_path=./src/proto ./src/proto/gradido/*.proto - -if [ ! -d "./src/cpp/proto/hedera" ] ; then - mkdir ./src/cpp/proto/hedera -fi - -GOOGLE_PROTOBUF_INCLUDES=./dependencies/grpc/third_party/protobuf/src -$PROTOC_PATH/protoc --plugin=protoc-gen-grpc=$CPP_PLUGIN_PATH/grpc_cpp_plugin --cpp_out=./src/cpp/proto/hedera --grpc_out=./src/cpp/proto/hedera --proto_path=$GOOGLE_PROTOBUF_INCLUDES --proto_path=./src/proto/hedera/hedera-protobuf/src/main/proto ./src/proto/hedera/hedera-protobuf/src/main/proto/*.proto - - diff --git a/login_server/windows_parse_proto.sh b/login_server/windows_parse_proto.sh deleted file mode 100644 index 90497e6b8..000000000 --- a/login_server/windows_parse_proto.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/bash -if [ ! -d "./src/cpp/proto" ] ; then - mkdir ./src/cpp/proto -fi -if [ ! -d "./src/cpp/proto/gradido" ] ; then - mkdir ./src/cpp/proto/gradido -fi -PROTOC_PATH=build/bin -CPP_PLUGIN_PATH=build/bin -$PROTOC_PATH/protoc.exe --cpp_out=./src/cpp/proto --proto_path=./src/proto ./src/proto/gradido/*.proto - -if [ ! -d "./src/cpp/proto/hedera" ] ; then - mkdir ./src/cpp/proto/hedera -fi - -GOOGLE_PROTOBUF_INCLUDES=./dependencies/grpc/third_party/protobuf/src -$PROTOC_PATH/protoc.exe --plugin=protoc-gen-grpc=$CPP_PLUGIN_PATH/grpc_cpp_plugin.exe --cpp_out=./src/cpp/proto/hedera --grpc_out=./src/cpp/proto/hedera --proto_path=$GOOGLE_PROTOBUF_INCLUDES --proto_path=./src/proto/hedera/hedera-protobuf/src/main/proto ./src/proto/hedera/hedera-protobuf/src/main/proto/*.proto - -