Skip to content

Commit

Permalink
[WIP][userver] new port
Browse files Browse the repository at this point in the history
  • Loading branch information
podsvirov committed Oct 19, 2023
1 parent 2777331 commit 74e97dd
Show file tree
Hide file tree
Showing 3 changed files with 201 additions and 0 deletions.
14 changes: 14 additions & 0 deletions ports/userver/001_install_core.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
--- 590431d7d2-0ee422b08a.clean/core/CMakeLists.txt 2023-09-20 20:12:48.000000000 +0300
+++ 590431d7d2-0ee422b08a.fixed/core/CMakeLists.txt 2023-10-20 01:10:23.312122188 +0300
@@ -257,3 +257,11 @@
)
add_google_benchmark_tests(${PROJECT_NAME}-benchmark)
endif()
+
+include(GNUInstallDirs)
+install(TARGETS userver-core
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+)
+install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
134 changes: 134 additions & 0 deletions ports/userver/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
# Common Ambient Variables:
# CURRENT_BUILDTREES_DIR = ${VCPKG_ROOT_DIR}\buildtrees\${PORT}
# CURRENT_PACKAGES_DIR = ${VCPKG_ROOT_DIR}\packages\${PORT}_${TARGET_TRIPLET}
# CURRENT_PORT_DIR = ${VCPKG_ROOT_DIR}\ports\${PORT}
# CURRENT_INSTALLED_DIR = ${VCPKG_ROOT_DIR}\installed\${TRIPLET}
# DOWNLOADS = ${VCPKG_ROOT_DIR}\downloads
# PORT = current port name (zlib, etc)
# TARGET_TRIPLET = current triplet (x86-windows, x64-windows-static, etc)
# VCPKG_CRT_LINKAGE = C runtime linkage type (static, dynamic)
# VCPKG_LIBRARY_LINKAGE = target library linkage type (static, dynamic)
# VCPKG_ROOT_DIR = <C:\path\to\current\vcpkg>
# VCPKG_TARGET_ARCHITECTURE = target architecture (x64, x86, arm)
# VCPKG_TOOLCHAIN = ON OFF
# TRIPLET_SYSTEM_ARCH = arm x86 x64
# BUILD_ARCH = "Win32" "x64" "ARM"
# DEBUG_CONFIG = "Debug Static" "Debug Dll"
# RELEASE_CONFIG = "Release Static"" "Release DLL"
# VCPKG_TARGET_IS_WINDOWS
# VCPKG_TARGET_IS_UWP
# VCPKG_TARGET_IS_LINUX
# VCPKG_TARGET_IS_OSX
# VCPKG_TARGET_IS_FREEBSD
# VCPKG_TARGET_IS_ANDROID
# VCPKG_TARGET_IS_MINGW
# VCPKG_TARGET_EXECUTABLE_SUFFIX
# VCPKG_TARGET_STATIC_LIBRARY_SUFFIX
# VCPKG_TARGET_SHARED_LIBRARY_SUFFIX
#
# See additional helpful variables in /docs/maintainers/vcpkg_common_definitions.md

vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO userver-framework/userver
REF e1fbef56a94052f37e9fcde7d6fb91590431d7d2 # tag v1.0.0
SHA512 faac307aaa5299448710b2520edd7954f2a7ef6464d66cedfdb9afa9e2f0de8e1c5dc98544c3d387f5e6a0eeb341b49ffb522649610991ede7ec458e076d4a5a
HEAD_REF develop
PATCHES
001_install_core.patch
)

# # Check if one or more features are a part of a package installation.
# # See /docs/maintainers/vcpkg_check_features.md for more details
vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
FEATURES
# tbb WITH_TBB
core USERVER_FEATURE_CORE
mongodb USERVER_FEATURE_MONGODB
postgresql USERVER_FEATURE_POSTGRESQL
redis USERVER_FEATURE_REDIS
clickhouse USERVER_FEATURE_CLICKHOUSE
grpc USERVER_FEATURE_GRPC
rabbitmq USERVER_FEATURE_RABBITMQ
mysql USERVER_FEATURE_MYSQL
utest USERVER_FEATURE_UTEST
cryptopp-blake2 USERVER_FEATURE_CRYPTOPP_BLAKE2
patch-libpq USERVER_FEATURE_PATCH_LIBPQ
cryptopp-base64-url USERVER_FEATURE_CRYPTOPP_BASE64_URL
redis-hi-malloc USERVER_FEATURE_REDIS_HI_MALLOC
redis-tls USERVER_FEATURE_REDIS_TLS
stacktrace USERVER_FEATURE_STACKTRACE
jemalloc USERVER_FEATURE_JEMALLOC
dwcas USERVER_FEATURE_DWCAS
testsuite USERVER_FEATURE_TESTSUITE
grpc-channelz USERVER_FEATURE_GRPC_CHANNELZ
# INVERTED_FEATURES
# tbb ROCKSDB_IGNORE_PACKAGE_TBB
)

message(STATUS "USERVER_FEATURE_CORE: ${USERVER_FEATURE_CORE}")
message(STATUS "USERVER_FEATURE_MONGODB: ${USERVER_FEATURE_MONGODB}")
message(STATUS "USERVER_FEATURE_POSTGRESQL: ${USERVER_FEATURE_POSTGRESQL}")
message(STATUS "USERVER_FEATURE_REDIS: ${USERVER_FEATURE_REDIS}")
message(STATUS "USERVER_FEATURE_CLICKHOUSE: ${USERVER_FEATURE_CLICKHOUSE}")
message(STATUS "USERVER_FEATURE_GRPC: ${USERVER_FEATURE_GRPC}")
message(STATUS "USERVER_FEATURE_RABBITMQ: ${USERVER_FEATURE_RABBITMQ}")
message(STATUS "USERVER_FEATURE_MYSQL: ${USERVER_FEATURE_MYSQL}")
message(STATUS "USERVER_FEATURE_UTEST: ${USERVER_FEATURE_UTEST}")
message(STATUS "USERVER_FEATURE_CRYPTOPP_BLAKE2: ${USERVER_FEATURE_CRYPTOPP_BLAKE2}")
message(STATUS "USERVER_FEATURE_PATCH_LIBPQ: ${USERVER_FEATURE_PATCH_LIBPQ}")
message(STATUS "USERVER_FEATURE_CRYPTOPP_BASE64_URL: ${USERVER_FEATURE_CRYPTOPP_BASE64_URL}")
message(STATUS "USERVER_FEATURE_REDIS_HI_MALLOC: ${USERVER_FEATURE_REDIS_HI_MALLOC}")
message(STATUS "USERVER_FEATURE_REDIS_TLS: ${USERVER_FEATURE_REDIS_TLS}")
message(STATUS "USERVER_FEATURE_STACKTRACE: ${USERVER_FEATURE_STACKTRACE}")
message(STATUS "USERVER_FEATURE_JEMALLOC: ${USERVER_FEATURE_JEMALLOC}")
message(STATUS "USERVER_FEATURE_DWCAS: ${USERVER_FEATURE_DWCAS}")
message(STATUS "USERVER_FEATURE_TESTSUITE: ${USERVER_FEATURE_TESTSUITE}")
message(STATUS "USERVER_FEATURE_GRPC_CHANNELZ: ${USERVER_FEATURE_GRPC_CHANNELZ}")
message(STATUS "LibEv_INCLUDE_DIRS: ${CURRENT_INSTALLED_DIR}/include/libev")

vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
# OPTIONS -DUSE_THIS_IN_ALL_BUILDS=1 -DUSE_THIS_TOO=2
OPTIONS
-DUSERVER_FEATURE_CORE=${USERVER_FEATURE_CORE}
-DUSERVER_FEATURE_MONGODB=${USERVER_FEATURE_MONGODB}
-DUSERVER_FEATURE_POSTGRESQL=${USERVER_FEATURE_POSTGRESQL}
-DUSERVER_FEATURE_REDIS=${USERVER_FEATURE_REDIS}
-DUSERVER_FEATURE_CLICKHOUSE=${USERVER_FEATURE_CLICKHOUSE}
-DUSERVER_FEATURE_GRPC=${USERVER_FEATURE_GRPC}
-DUSERVER_FEATURE_RABBITMQ=${USERVER_FEATURE_RABBITMQ}
-DUSERVER_FEATURE_MYSQL=${USERVER_FEATURE_MYSQL}
-DUSERVER_FEATURE_UTEST=${USERVER_FEATURE_UTEST}
-DUSERVER_FEATURE_CRYPTOPP_BLAKE2=${USERVER_FEATURE_CRYPTOPP_BLAKE2}
-DUSERVER_FEATURE_PATCH_LIBPQ=${USERVER_FEATURE_PATCH_LIBPQ}
-DUSERVER_FEATURE_CRYPTOPP_BASE64_URL=${USERVER_FEATURE_CRYPTOPP_BASE64_URL}
-DUSERVER_FEATURE_REDIS_HI_MALLOC=${USERVER_FEATURE_REDIS_HI_MALLOC}
-DUSERVER_FEATURE_REDIS_TLS=${USERVER_FEATURE_REDIS_TLS}
-DUSERVER_FEATURE_STACKTRACE=${USERVER_FEATURE_STACKTRACE}
-DUSERVER_FEATURE_JEMALLOC=${USERVER_FEATURE_JEMALLOC}
-DUSERVER_FEATURE_DWCAS=${USERVER_FEATURE_DWCAS}
-DUSERVER_FEATURE_TESTSUITE=${USERVER_FEATURE_TESTSUITE}
-DUSERVER_FEATURE_GRPC_CHANNELZ=${USERVER_FEATURE_GRPC_CHANNELZ}
-DUSERVER_DOWNLOAD_PACKAGES=OFF
-DUSERVER_IS_THE_ROOT_PROJECT=OFF
-DUSERVER_FEATURE_UBOOST_CORO=OFF
-DLibEv_INCLUDE_DIRS_ev_h="${CURRENT_INSTALLED_DIR}/include/libev"
# OPTIONS_RELEASE -DOPTIMIZE=1
# OPTIONS_DEBUG -DDEBUGGABLE=1
)

vcpkg_cmake_install()

# # Moves all .cmake files from /debug/share/userver/ to /share/userver/
# # See /docs/maintainers/ports/vcpkg-cmake-config/vcpkg_cmake_config_fixup.md for more details
# When you uncomment "vcpkg_cmake_config_fixup()", you need to add the following to "dependencies" vcpkg.json:
#{
# "name": "vcpkg-cmake-config",
# "host": true
#}
# vcpkg_cmake_config_fixup()

file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")

vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
53 changes: 53 additions & 0 deletions ports/userver/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
{
"name": "userver",
"version": "1.0.0",
"description": "The C++ Asynchronous Framework",
"homepage": "https://userver.tech/",
"license": "Apache-2.0",
"dependencies": [
"amqpcpp",
"boost-context",
"boost-core",
"boost-coroutine",
"boost-coroutine2",
"boost-endian",
"boost-filesystem",
"boost-iostreams",
"boost-locale",
"boost-lockfree",
"boost-multiprecision",
"boost-program-options",
"boost-uuid",
"c-ares",
"cctz",
"cryptopp",
{
"name": "curl",
"features": [
"openssl"
]
},
"fmt",
"http-parser",
"libev",
"nghttp2",
"openssl",
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
},
"yaml-cpp"
],
"features": {
"mongodb": {
"description": "Provide asynchronous driver for MongoDB",
"dependencies": [
"mongo-cxx-driver"
]
}
}
}

0 comments on commit 74e97dd

Please sign in to comment.