Resolve "Update hunter packege"

This commit is contained in:
Bartosz Wieczorek 2019-01-04 09:56:52 +01:00
parent c5b8020c90
commit 94b2e6cb65
19 changed files with 199 additions and 124 deletions

View File

@ -3,12 +3,9 @@ stages:
Build:
stage: build
image: eedb.pl:5001/eedb_buildsystem
tags:
- c++
image: rikorose/gcc-cmake:gcc-7
script:
- mkdir build -p; cd build
- cmake -GNinja -DCMAKE_BUILD_TYPE=Release ../
- cmake --build .
- ccache -s
- cmake -DCMAKE_BUILD_TYPE=Release ../
- cmake --build . -- -j14

View File

@ -1,23 +1,21 @@
cmake_minimum_required(VERSION 3.8)
cmake_minimum_required(VERSION 3.9)
include(cmake/HunterGate.cmake)
HunterGate(
URL "https://github.com/ruslo/hunter/archive/v0.23.1.tar.gz"
SHA1 "51d2d6be411251c8de18c4ca20ef778880cf4cce"
URL "https://github.com/ruslo/hunter/archive/v0.23.83.tar.gz"
SHA1 "12dec078717539eb7b03e6d2a17797cba9be9ba9"
LOCAL
)
project(eedb)
find_package(Threads)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
set(HUNTER_BUILD_SHARED_LIBS TRUE)
#pip install conan
#cmake -DSIPLASPLAS_LIBCLANG_VERSION=5.0 -DSIPLASPLAS_LIBCLANG_SYSTEM_INCLUDE_DIR=/usr/lib/clang/5.0/include -DSIPLASPLAS_LIBCLANG_LIBRARY=/usr/lib/clang/5.0/lib
#set(HUNTER_STATUS_DEBUG TRUE)
set(HUNTER_BUILD_SHARED_LIBS TRUE)
include(cmake/Compiler.cmake)
include(cmake/FindAllRequirements.cmake)
@ -35,7 +33,6 @@ set(Sqlpp11_DIR "${CMAKE_BINARY_DIR}/local/lib/cmake/Sqlpp11")
set(wt_DIR "${CMAKE_BINARY_DIR}/local/lib/cmake/wt")
set(Sqlpp-connector-postgresql_DIR "${CMAKE_BINARY_DIR}/local/lib/cmake/sqlpp-connector-postgresql")
find_program(
CLANG_TIDY_EXE
NAMES "clang-tidy-5.0"

View File

@ -1,4 +1,5 @@
SET(_BOOST_COMPONENTS program_options system filesystem thread chrono atomic date_time)
hunter_add_package(Boost COMPONENTS ${_BOOST_COMPONENTS})
find_package(Boost CONFIG REQUIRED ${_BOOST_COMPONENTS})
@ -19,6 +20,7 @@ find_package(spdlog CONFIG REQUIRED)
#hunter_add_package(range-v3)
#find_package(range-v3 CONFIG REQUIRED)
hunter_add_package(date)
find_package(date CONFIG REQUIRED)
@ -28,8 +30,17 @@ hunter_add_package(flex)
hunter_add_package(PostgreSQL)
find_package(PostgreSQL REQUIRED)
add_library(install_deps STATIC ./cmake/install_deps.sh)
set_target_properties(install_deps PROPERTIES LINKER_LANGUAGE C)
set(INSTALL_DEPS_SCRIPT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/install_deps.sh")
message(INFO "cmake prefix path: ${CMAKE_PREFIX_PATH}")
list(REVERSE CMAKE_PREFIX_PATH)
message(INFO "cmake prefix path: ${Boost_LIBRARY_DIR_DEBUG}")
execute_process(
COMMAND ${INSTALL_DEPS_SCRIPT}
"${CMAKE_COMMAND}"

21
cmake/Hunter/config.cmake Normal file
View File

@ -0,0 +1,21 @@
#hunter_config(wt
# VERSION
# 4.0.4-p0
# CMAKE_ARGS
# BUILD_EXAMPLES=OFF
# ENABLE_SSL=OFF
# ENABLE_HARU=OFF
# ENABLE_PANGO=OFF
# ENABLE_SQLITE=OFF
# ENABLE_POSTGRES=OFF
# ENABLE_FIREBIRD=OFF
# ENABLE_MYSQL=OFF
# ENABLE_MSSQLSERVER=OFF
# ENABLE_LIBWTDBO=TRUE
# ENABLE_QT4=OFF
# ENABLE_OPENGL=OFF
# ENABLE_UNWIND=OFF
# INSTALL_RESOURCES=ON
# CONNECTOR_FCGI=OFF
# WT_CPP17_ANY_IMPLEMENTATION=std
#)

View File

@ -1,4 +1,4 @@
# Copyright (c) 2013-2017, Ruslan Baratov
# Copyright (c) 2013-2018, Ruslan Baratov
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@ -25,7 +25,7 @@
# This is a gate file to Hunter package manager.
# Include this file using `include` command and add package you need, example:
#
# cmake_minimum_required(VERSION 3.0)
# cmake_minimum_required(VERSION 3.2)
#
# include("cmake/HunterGate.cmake")
# HunterGate(
@ -43,10 +43,14 @@
# * https://github.com/ruslo/hunter
option(HUNTER_ENABLED "Enable Hunter package manager support" ON)
if(HUNTER_ENABLED)
if(CMAKE_VERSION VERSION_LESS "3.0")
message(FATAL_ERROR "At least CMake version 3.0 required for hunter dependency management."
" Update CMake or set HUNTER_ENABLED to OFF.")
if(CMAKE_VERSION VERSION_LESS "3.2")
message(
FATAL_ERROR
"At least CMake version 3.2 required for Hunter dependency management."
" Update CMake or set HUNTER_ENABLED to OFF."
)
endif()
endif()
@ -59,20 +63,20 @@ option(HUNTER_TLS_VERIFY "Enable/disable TLS certificate checking on downloads"
set(HUNTER_WIKI "https://github.com/ruslo/hunter/wiki")
function(hunter_gate_status_print)
foreach(print_message ${ARGV})
if(HUNTER_STATUS_PRINT OR HUNTER_STATUS_DEBUG)
foreach(print_message ${ARGV})
message(STATUS "[hunter] ${print_message}")
endif()
endforeach()
endif()
endfunction()
function(hunter_gate_status_debug)
foreach(print_message ${ARGV})
if(HUNTER_STATUS_DEBUG)
foreach(print_message ${ARGV})
string(TIMESTAMP timestamp)
message(STATUS "[hunter *** DEBUG *** ${timestamp}] ${print_message}")
endif()
endforeach()
endif()
endfunction()
function(hunter_gate_wiki wiki_page)
@ -195,20 +199,6 @@ function(hunter_gate_detect_root)
)
endfunction()
macro(hunter_gate_lock dir)
if(NOT HUNTER_SKIP_LOCK)
if("${CMAKE_VERSION}" VERSION_LESS "3.2")
hunter_gate_fatal_error(
"Can't lock, upgrade to CMake 3.2 or use HUNTER_SKIP_LOCK"
WIKI "error.can.not.lock"
)
endif()
hunter_gate_status_debug("Locking directory: ${dir}")
file(LOCK "${dir}" DIRECTORY GUARD FUNCTION)
hunter_gate_status_debug("Lock done")
endif()
endmacro()
function(hunter_gate_download dir)
string(
COMPARE
@ -248,7 +238,10 @@ function(hunter_gate_download dir)
set(build_dir "${dir}/Build")
set(cmakelists "${dir}/CMakeLists.txt")
hunter_gate_lock("${dir}")
hunter_gate_status_debug("Locking directory: ${dir}")
file(LOCK "${dir}" DIRECTORY GUARD FUNCTION)
hunter_gate_status_debug("Lock done")
if(EXISTS "${done_location}")
# while waiting for lock other instance can do all the job
hunter_gate_status_debug("File '${done_location}' found, skip install")
@ -265,7 +258,7 @@ function(hunter_gate_download dir)
file(
WRITE
"${cmakelists}"
"cmake_minimum_required(VERSION 3.0)\n"
"cmake_minimum_required(VERSION 3.2)\n"
"project(HunterDownload LANGUAGES NONE)\n"
"include(ExternalProject)\n"
"ExternalProject_Add(\n"
@ -330,7 +323,11 @@ function(hunter_gate_download dir)
)
if(NOT download_result EQUAL 0)
hunter_gate_internal_error("Configure project failed")
hunter_gate_internal_error(
"Configure project failed."
"To reproduce the error run: ${CMAKE_COMMAND} -H${dir} -B${build_dir} -G${CMAKE_GENERATOR} ${toolchain_arg} ${make_arg}"
"In directory ${dir}"
)
endif()
hunter_gate_status_print(
@ -396,7 +393,7 @@ macro(HunterGate)
)
include("${_hunter_self}/cmake/Hunter")
else()
set(HUNTER_GATE_LOCATION "${CMAKE_CURRENT_LIST_DIR}")
set(HUNTER_GATE_LOCATION "${CMAKE_CURRENT_SOURCE_DIR}")
string(COMPARE NOTEQUAL "${PROJECT_NAME}" "" _have_project_name)
if(_have_project_name)

View File

@ -1,3 +1,5 @@
#!/bin/bash
CMAKE_COMMAND=$1
CMAKE_GENERATOR=$2
CMAKE_CXX_COMPILER=$3
@ -7,6 +9,8 @@ CMAKE_RPATH=$6
CMAKE_INSTALL_PREFIX=$7
CMAKE_BUILD_TYPE=$8
echo "CMAKE prefix path in script: ${CMAKE_PREFIX_PATH}"
if [ ! -d ${CMAKE_INSTALL_PREFIX} ]; then
mkdir -p ${CMAKE_INSTALL_PREFIX}
fi
@ -36,9 +40,8 @@ else
cd ChaiScript; git pull; cd ../
fi
echo ${CMAKE_PREFIX_PATH}
# install all
echo "building sqlpp11"
mkdir sqlpp11-build -p; cd sqlpp11-build
${CMAKE_COMMAND} -G"${CMAKE_GENERATOR}" ../sqlpp11\
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}\
@ -49,6 +52,7 @@ ${CMAKE_COMMAND} -G"${CMAKE_GENERATOR}" ../sqlpp11\
${CMAKE_COMMAND} --build . --target install
cd ../
echo "building sqlpp11-connector-postgresql"
mkdir sqlpp11-connector-postgresql-build -p; cd sqlpp11-connector-postgresql-build
${CMAKE_COMMAND} -G"${CMAKE_GENERATOR}" ../sqlpp11-connector-postgresql\
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}\
@ -57,19 +61,41 @@ ${CMAKE_COMMAND} -G"${CMAKE_GENERATOR}" ../sqlpp11-connector-postgresql\
-DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}"\
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}"\
-DENABLE_TESTS=FALSE
${CMAKE_COMMAND} --build . --target install
${CMAKE_COMMAND} --build . --target install -- -j$(nproc)
cd ../
echo "building wt"
echo "fixing boost library names"
(
cd "${CMAKE_RPATH}"
files="libboost_*.so.*"
regex="libboost_([a-z_]*-mt(-d)?).*.so*"
for f in $files # unquoted in order to allow the glob to expand
do
if [[ $f =~ $regex ]]
then
libname="${BASH_REMATCH[1]}"
linkname="libboost_${libname}.so"
if [ ! -e ${linkname} ]; then
echo "Linking ${f} as libboost_${libname}.so"
ln -s "${f}" "libboost_${libname}.so" # same thing stored in a variable
fi
else
echo "$f doesn't match" >&2 # this could get noisy if there are a lot of non-matching files
fi
done
)
mkdir wt-build -p; cd wt-build
${CMAKE_COMMAND} -G"${CMAKE_GENERATOR}" ../wt\
${CMAKE_COMMAND} -G"${CMAKE_GENERATOR}" \
../wt\
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}\
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}\
-DCMAKE_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}"\
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}"\
-DCMAKE_INSTALL_RPATH="${CMAKE_RPATH}"\
-DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH}"\
-DBoost_NO_BOOST_CMAKE=FALSE\
-DBoost_NO_SYSTEM_PATHS=TRUE\
-DBUILD_EXAMPLES=OFF\
-DINSTALL_RESOURCES=ON\
-DENABLE_SSL=OFF\
@ -85,9 +111,10 @@ ${CMAKE_COMMAND} -G"${CMAKE_GENERATOR}" ../wt\
-DENABLE_OPENGL=OFF\
-DENABLE_UNWIND=OFF\
-DCONNECTOR_FCGI=OFF
${CMAKE_COMMAND} --build . --target install
${CMAKE_COMMAND} --build . --target install -- -j$(nproc)
cd ../
echo "building ChaiScript"
mkdir ChaiScript-build -p; cd ChaiScript-build
${CMAKE_COMMAND} -G"${CMAKE_GENERATOR}" ../ChaiScript\
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}\
@ -102,5 +129,5 @@ ${CMAKE_COMMAND} -G"${CMAKE_GENERATOR}" ../ChaiScript\
-DRUN_FUZZY_TESTS=FALSE\
-DUSE_STD_MAKE_SHARED=TRUE\
-DRUN_PERFORMANCE_TESTS=FALSE
${CMAKE_COMMAND} --build . --target install
${CMAKE_COMMAND} --build . --target install -- -j$(expr $(nproc) / 2)
cd ../

View File

@ -5,8 +5,9 @@ set(SOURCES
add_executable(eedb ${SOURCES})
target_link_libraries(eedb
PRIVATE webapp
PRIVATE postgres_connector
PRIVATE dl
PRIVATE chaiscript_bindings
PRIVATE
webapp
postgres_connector
dl
chaiscript_bindings
)

View File

@ -1,4 +1,6 @@
#include <spdlog/spdlog.h>
#include <spdlog/sinks/stdout_sinks.h>
#include <spdlog/sinks/rotating_file_sink.h>
#include <eedb/pg/config.hpp>
#include <eedb/pg/connection.hpp>
@ -15,9 +17,9 @@
static auto _createSinks() {
std::vector< spdlog::sink_ptr > sinks;
auto stdout_sink = spdlog::sinks::stdout_sink_mt::instance();
auto stdout_sink = spdlog::stdout_logger_mt("default");
// sinks.emplace_back(std::make_shared< spdlog::sinks::ansicolor_sink >(stdout_sink));
sinks.emplace_back(std::make_shared< spdlog::sinks::daily_file_sink_st >("logfile", 23, 59));
// sinks.emplace_back(std::make_shared< spdlog::sinks::daily_file_sink_st >("logfile", 23, 59));
return sinks;
}

View File

@ -5,6 +5,9 @@ set(LIB auth)
file(GLOB ${LIB}_SOURCE src/*)
# find packages
#hunter_add_package(wt)
find_package(wt REQUIRED)
find_package(nlohmann_json CONFIG REQUIRED)
# create library
@ -12,12 +15,15 @@ add_library(${LIB} ${${LIB}_SOURCE})
# link all
target_include_directories( ${LIB}
PUBLIC include
PUBLIC
include
)
target_link_libraries( ${LIB}
PRIVATE nlohmann_json
PRIVATE eedb_api
PRIVATE
nlohmann_json::nlohmann_json
eedb_api
Wt::Wt
)
# add cotire

View File

@ -13,12 +13,15 @@ add_library(${LIB} src/chai_bindings.cpp )
# link all
target_include_directories(${LIB}
PUBLIC include
PUBLIC
include
)
target_link_libraries(${LIB}
PUBLIC eedb_api
PRIVATE Boost::system
PRIVATE Boost::filesystem
PUBLIC
eedb_api
PRIVATE
Boost::system
Boost::filesystem
)

View File

@ -7,25 +7,31 @@ find_package(Sqlpp11 REQUIRED)
find_package(Sqlpp-connector-postgresql REQUIRED)
# create library
add_library(${LIB} STATIC ${${LIB}_SOURCE})
add_library(${LIB} STATIC
${${LIB}_SOURCE}
)
# link all
target_include_directories (${LIB}
PRIVATE ${CMAKE_BINARY_DIR}/external/include SYSTEM
PRIVATE ${PostgreSQL_INCLUDE_DIRS}
PRIVATE
${CMAKE_BINARY_DIR}/external/include SYSTEM
${PostgreSQL_INCLUDE_DIRS}
)
target_include_directories(${LIB}
PUBLIC include
PUBLIC
include
)
target_link_libraries(${LIB}
PUBLIC eedb_api
PRIVATE sqlpp11-connector-postgresql
PRIVATE pq
PRIVATE Boost::system
PRIVATE Boost::filesystem
PRIVATE stdc++fs
PUBLIC
eedb_api
PRIVATE
sqlpp11-connector-postgresql
pq
Boost::system
Boost::filesystem
stdc++fs
)
set_target_properties(

View File

@ -11,8 +11,8 @@
#include <experimental/array>
namespace {
SQLPP_ALIAS_PROVIDER(cteLastLogin);
SQLPP_ALIAS_PROVIDER(cteLastFailed);
SQLPP_ALIAS_PROVIDER(cteLastLogin)
SQLPP_ALIAS_PROVIDER(cteLastFailed)
constexpr auto actions = std::experimental::make_array("login", "logout", "failed_login");

View File

@ -11,10 +11,11 @@ file(GLOB_RECURSE TEST_FILES test_*.cpp )
add_executable( ${TEST_EXECUTABLE_NAME} ${TEST_FILES})
target_link_libraries(${TEST_EXECUTABLE_NAME}
PRIVATE postgres_connector-mock
PRIVATE eedb_api
PRIVATE postgres_connector
PRIVATE GMock::main
PRIVATE
postgres_connector-mock
eedb_api
postgres_connector
GMock::main
)
add_test( ${TEST_EXECUTABLE_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TEST_EXECUTABLE_NAME})

View File

@ -12,7 +12,7 @@ class AuthInfoConst final : public AuthInfo {
using string = std::string;
public:
virtual ~AuthInfoConst() = default;
virtual ~AuthInfoConst() override = default;
AuthInfoConst(Password pass, Email email) : _password{std::move(pass)}, _email{std::move(email)} {}
@ -24,7 +24,9 @@ class AuthInfoConst final : public AuthInfo {
return _email;
}
virtual bool emailVerified() const override {}
virtual bool emailVerified() const override {
return true;
}
private:
Password _password;

View File

@ -9,9 +9,10 @@ file(GLOB_RECURSE TEST_FILES test_*.cpp )
add_executable( ${TEST_EXECUTABLE_NAME} ${TEST_FILES})
target_link_libraries(${TEST_EXECUTABLE_NAME}
PRIVATE eedb_api
PRIVATE eedb_api-mock
PRIVATE GMock::main
PRIVATE
eedb_api
eedb_api-mock
GMock::main
)
add_test( ${TEST_EXECUTABLE_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TEST_EXECUTABLE_NAME})

View File

@ -6,38 +6,36 @@ file(GLOB ${LIB}_CONFIG config/*)
configure_file(config/wt_config_${CMAKE_BUILD_TYPE}.xml ${CMAKE_BINARY_DIR}/local/etc/wt/wt_config.xml COPYONLY)
# find packages
#hunter_add_package(wt)
find_package(wt REQUIRED)
find_package(nlohmann_json CONFIG REQUIRED)
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(Wt_LIBRARY wtd)
set(Wt_HTTP_LIBRARY wthttpd)
set(Wt_TEST_LIBRARY wttestd)
else (CMAKE_BUILD_TYPE STREQUAL "Release")
set(Wt_LIBRARY wt)
set(Wt_HTTP_LIBRARY wthttp)
set(Wt_TEST_LIBRARY wttest)
endif()
# create library
add_library(${LIB} STATIC ${${LIB}_SOURCE} ${${LIB}_CONFIG})
add_library(${LIB} STATIC
${${LIB}_SOURCE}
${${LIB}_CONFIG}
)
# link all
target_include_directories(${LIB}
PUBLIC include
PUBLIC
include
)
target_link_libraries(${LIB}
PUBLIC auth
PUBLIC eedb_api
PUBLIC stdc++fs
PUBLIC nlohmann_json
PRIVATE ${Wt_HTTP_LIBRARY}
PRIVATE ${Wt_LIBRARY}
PRIVATE Boost::system
PRIVATE Boost::filesystem
PRIVATE Boost::thread
PRIVATE Boost::program_options
PUBLIC
auth
eedb_api
stdc++fs
nlohmann_json::nlohmann_json
PRIVATE
Wt::Wt
Wt::HTTP
Boost::system
Boost::filesystem
Boost::thread
Boost::program_options
)
# add cotire

View File

@ -15,7 +15,9 @@ public:
// HomePage interface
public:
NavigationBar *navigationBar() const override{};
NavigationBar * navigationBar() const override {
return nullptr;
};
};
} // namespace eedb

View File

@ -10,11 +10,12 @@ file(GLOB_RECURSE TEST_FILES *.cpp )
add_executable( ${TEST_EXECUTABLE_NAME} ${TEST_FILES})
target_link_libraries(${TEST_EXECUTABLE_NAME}
PRIVATE ${Wt_TEST_LIBRARY}
PRIVATE eedb_api
PRIVATE webapp
PRIVATE webapp-mock
PRIVATE GMock::gmock
PRIVATE
Wt::Test
eedb_api
webapp
webapp-mock
GMock::gmock
)
add_test( ${TEST_EXECUTABLE_NAME} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/${TEST_EXECUTABLE_NAME})

View File

@ -3,12 +3,15 @@
#include <spdlog/spdlog.h>
class nullsink : public spdlog::sinks::sink {
// sink interface
public:
void log(const spdlog::details::log_msg &) override {}
void flush() override {}
// sink interface
public:
void set_pattern(const std::string &) override {}
void set_formatter(std::unique_ptr< spdlog::formatter >) override {}
};
static auto _createSinks() {
@ -26,7 +29,6 @@ static void initializeLogs() {
spdlog::register_logger(combined_logger);
}
int main(int argc, char * argv[]) {
testing::InitGoogleTest(&argc, argv);
initializeLogs();