From ce1d3200d81a44cb33c49e50c79540a9444841f3 Mon Sep 17 00:00:00 2001 From: kamilsa <kamilsa16@gmail.com> Date: Wed, 26 Feb 2025 14:07:53 +0300 Subject: [PATCH 1/5] Initial example --- CMakeLists.txt | 2 + example/00-vcpkg-install/CMakeLists.txt | 13 +++ example/00-vcpkg-install/main.cpp | 12 +++ .../00-vcpkg-install/vcpkg-configuration.json | 10 +++ .../vcpkg-overlay/boost-di/portfile.cmake | 14 ++++ .../vcpkg-overlay/boost-di/vcpkg.json | 8 ++ .../vcpkg-overlay/fmt/portfile.cmake | 20 +++++ .../vcpkg-overlay/fmt/vcpkg.json | 8 ++ .../liblsquic/disable-asan.patch | 23 ++++++ .../liblsquic/fix-found-boringssl.patch | 53 ++++++++++++ .../liblsquic/lsquic_conn_ssl.patch | 80 +++++++++++++++++++ .../vcpkg-overlay/liblsquic/portfile.cmake | 78 ++++++++++++++++++ .../vcpkg-overlay/liblsquic/vcpkg.json | 25 ++++++ .../vcpkg-overlay/libp2p/portfile.cmake | 18 +++++ .../vcpkg-overlay/libp2p/vcpkg.json | 34 ++++++++ .../vcpkg-overlay/libsecp256k1/portfile.cmake | 11 +++ .../vcpkg-overlay/libsecp256k1/vcpkg.json | 8 ++ .../vcpkg-overlay/qtils/portfile.cmake | 11 +++ .../vcpkg-overlay/qtils/vcpkg.json | 19 +++++ .../vcpkg-overlay/soralog/portfile.cmake | 11 +++ .../vcpkg-overlay/soralog/vcpkg.json | 18 +++++ .../vcpkg-overlay/tsl-hat-trie/portfile.cmake | 11 +++ .../vcpkg-overlay/tsl-hat-trie/vcpkg.json | 8 ++ example/00-vcpkg-install/vcpkg.json | 7 ++ 24 files changed, 502 insertions(+) create mode 100644 example/00-vcpkg-install/CMakeLists.txt create mode 100644 example/00-vcpkg-install/main.cpp create mode 100644 example/00-vcpkg-install/vcpkg-configuration.json create mode 100644 example/00-vcpkg-install/vcpkg-overlay/boost-di/portfile.cmake create mode 100644 example/00-vcpkg-install/vcpkg-overlay/boost-di/vcpkg.json create mode 100644 example/00-vcpkg-install/vcpkg-overlay/fmt/portfile.cmake create mode 100644 example/00-vcpkg-install/vcpkg-overlay/fmt/vcpkg.json create mode 100644 example/00-vcpkg-install/vcpkg-overlay/liblsquic/disable-asan.patch create mode 100644 example/00-vcpkg-install/vcpkg-overlay/liblsquic/fix-found-boringssl.patch create mode 100644 example/00-vcpkg-install/vcpkg-overlay/liblsquic/lsquic_conn_ssl.patch create mode 100644 example/00-vcpkg-install/vcpkg-overlay/liblsquic/portfile.cmake create mode 100644 example/00-vcpkg-install/vcpkg-overlay/liblsquic/vcpkg.json create mode 100644 example/00-vcpkg-install/vcpkg-overlay/libp2p/portfile.cmake create mode 100644 example/00-vcpkg-install/vcpkg-overlay/libp2p/vcpkg.json create mode 100644 example/00-vcpkg-install/vcpkg-overlay/libsecp256k1/portfile.cmake create mode 100644 example/00-vcpkg-install/vcpkg-overlay/libsecp256k1/vcpkg.json create mode 100644 example/00-vcpkg-install/vcpkg-overlay/qtils/portfile.cmake create mode 100644 example/00-vcpkg-install/vcpkg-overlay/qtils/vcpkg.json create mode 100644 example/00-vcpkg-install/vcpkg-overlay/soralog/portfile.cmake create mode 100644 example/00-vcpkg-install/vcpkg-overlay/soralog/vcpkg.json create mode 100644 example/00-vcpkg-install/vcpkg-overlay/tsl-hat-trie/portfile.cmake create mode 100644 example/00-vcpkg-install/vcpkg-overlay/tsl-hat-trie/vcpkg.json create mode 100644 example/00-vcpkg-install/vcpkg.json diff --git a/CMakeLists.txt b/CMakeLists.txt index 2d732bd5..84887783 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -43,6 +43,8 @@ endif () project(libp2p VERSION 0.1.17 LANGUAGES C CXX) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) option(TESTING "Build tests" ON) option(EXAMPLES "Build examples" ON) diff --git a/example/00-vcpkg-install/CMakeLists.txt b/example/00-vcpkg-install/CMakeLists.txt new file mode 100644 index 00000000..326e059e --- /dev/null +++ b/example/00-vcpkg-install/CMakeLists.txt @@ -0,0 +1,13 @@ +cmake_minimum_required(VERSION 3.15) +project(libp2p-example CXX) + +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +find_package(libsecp256k1 CONFIG REQUIRED) +find_package(ZLIB REQUIRED) + +find_package(libp2p CONFIG REQUIRED) + +add_executable(example main.cpp) +target_link_libraries(example PRIVATE p2p::p2p) \ No newline at end of file diff --git a/example/00-vcpkg-install/main.cpp b/example/00-vcpkg-install/main.cpp new file mode 100644 index 00000000..1180388d --- /dev/null +++ b/example/00-vcpkg-install/main.cpp @@ -0,0 +1,12 @@ +#include <iostream> +#include <libp2p/multi/multiaddress.hpp> +#include <libp2p/peer/peer_id.hpp> + +int main() { + auto ma_res = libp2p::multi::Multiaddress::create("/ip4/127.0.0.1/tcp/8080"); + if (ma_res.has_value()) { + std::cout << "Created multiaddress: " + << ma_res.value().getStringAddress() << std::endl; + } + return 0; +} \ No newline at end of file diff --git a/example/00-vcpkg-install/vcpkg-configuration.json b/example/00-vcpkg-install/vcpkg-configuration.json new file mode 100644 index 00000000..0d5930c1 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-configuration.json @@ -0,0 +1,10 @@ +{ + "default-registry": { + "kind": "git", + "baseline": "fe1cde61e971d53c9687cf9a46308f8f55da19fa", + "repository": "https://github.com/microsoft/vcpkg" + }, + "overlay-ports": [ + "vcpkg-overlay" + ] +} \ No newline at end of file diff --git a/example/00-vcpkg-install/vcpkg-overlay/boost-di/portfile.cmake b/example/00-vcpkg-install/vcpkg-overlay/boost-di/portfile.cmake new file mode 100644 index 00000000..1b725444 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/boost-di/portfile.cmake @@ -0,0 +1,14 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO qdrvm/boost-di + REF d5de6c9840c7fc2e44bf37134b4a14b88151ecc4 + SHA512 98e924d02bde23940ab59330730de6d4198d1e98cbb303ef713e3ee06f88e90707a952e6aa9a0372213b46d6c9d3478e86ed5cd64d74899861984e786e21c319 +) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DBOOST_DI_OPT_BUILD_TESTS=OFF + -DBOOST_DI_OPT_BUILD_EXAMPLES=OFF +) +vcpkg_cmake_install() diff --git a/example/00-vcpkg-install/vcpkg-overlay/boost-di/vcpkg.json b/example/00-vcpkg-install/vcpkg-overlay/boost-di/vcpkg.json new file mode 100644 index 00000000..8090168d --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/boost-di/vcpkg.json @@ -0,0 +1,8 @@ +{ + "name": "boost-di", + "version": "1.1.0.1", + "dependencies": [ + { "name": "vcpkg-cmake", "host": true }, + { "name": "vcpkg-cmake-config", "host": true } + ] +} diff --git a/example/00-vcpkg-install/vcpkg-overlay/fmt/portfile.cmake b/example/00-vcpkg-install/vcpkg-overlay/fmt/portfile.cmake new file mode 100644 index 00000000..7842871f --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/fmt/portfile.cmake @@ -0,0 +1,20 @@ +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO fmtlib/fmt + REF 10.1.1 + SHA512 288c349baac5f96f527d5b1bed0fa5f031aa509b4526560c684281388e91909a280c3262a2474d963b5d1bf7064b1c9930c6677fe54a0d8f86982d063296a54c +) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DFMT_DOC=OFF + -DFMT_TEST=OFF + -DFMT_INSTALL=ON + -DCMAKE_CXX_STANDARD=20 +) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() +vcpkg_cmake_config_fixup(PACKAGE_NAME fmt CONFIG_PATH lib/cmake/fmt) +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") \ No newline at end of file diff --git a/example/00-vcpkg-install/vcpkg-overlay/fmt/vcpkg.json b/example/00-vcpkg-install/vcpkg-overlay/fmt/vcpkg.json new file mode 100644 index 00000000..bb7945e1 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/fmt/vcpkg.json @@ -0,0 +1,8 @@ +{ + "name": "fmt", + "version": "10.1.1", + "dependencies": [ + { "name": "vcpkg-cmake", "host": true }, + { "name": "vcpkg-cmake-config", "host": true } + ] +} \ No newline at end of file diff --git a/example/00-vcpkg-install/vcpkg-overlay/liblsquic/disable-asan.patch b/example/00-vcpkg-install/vcpkg-overlay/liblsquic/disable-asan.patch new file mode 100644 index 00000000..2b05d0ee --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/liblsquic/disable-asan.patch @@ -0,0 +1,23 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 65c4776..5d4086a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -60,12 +60,12 @@ ENDIF() + + IF(CMAKE_BUILD_TYPE STREQUAL "Debug") + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -O0 -g3") +- IF(CMAKE_C_COMPILER MATCHES "clang" AND +- NOT "$ENV{TRAVIS}" MATCHES "^true$" AND +- NOT "$ENV{EXTRA_CFLAGS}" MATCHES "-fsanitize") +- SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -fsanitize=address") +- SET(LIBS ${LIBS} -fsanitize=address) +- ENDIF() ++ # IF(CMAKE_C_COMPILER MATCHES "clang" AND ++ # NOT "$ENV{TRAVIS}" MATCHES "^true$" AND ++ # NOT "$ENV{EXTRA_CFLAGS}" MATCHES "-fsanitize") ++ # SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -fsanitize=address") ++ # SET(LIBS ${LIBS} -fsanitize=address) ++ # ENDIF() + # Uncomment to enable cleartext protocol mode (no crypto): + #SET (MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_ENABLE_HANDSHAKE_DISABLE=1") + ELSE() diff --git a/example/00-vcpkg-install/vcpkg-overlay/liblsquic/fix-found-boringssl.patch b/example/00-vcpkg-install/vcpkg-overlay/liblsquic/fix-found-boringssl.patch new file mode 100644 index 00000000..a3a632c5 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/liblsquic/fix-found-boringssl.patch @@ -0,0 +1,53 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 5d4086a..e085a83 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -120,10 +120,12 @@ IF(CMAKE_BUILD_TYPE STREQUAL "Debug") + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Od") + #SET (MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DFIU_ENABLE=1") + #SET(LIBS ${LIBS} fiu) ++ SET(LIB_NAME ssld cryptod) + ELSE() + SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -Ox") + # Comment out the following line to compile out debug messages: + #SET(MY_CMAKE_FLAGS "${MY_CMAKE_FLAGS} -DLSQUIC_LOWEST_LOG_LEVEL=LSQ_LOG_INFO") ++ SET(LIB_NAME ssl crypto) + ENDIF() + + ENDIF() #MSVC +@@ -191,7 +193,7 @@ IF (NOT DEFINED BORINGSSL_LIB AND DEFINED BORINGSSL_DIR) + ELSE() + + +- FOREACH(LIB_NAME ssl crypto) ++ FOREACH(LIB ${LIB_NAME}) + # If BORINGSSL_LIB is defined, try find each lib. Otherwise, user should define BORINGSSL_LIB_ssl, + # BORINGSSL_LIB_crypto and so on explicitly. For example, including boringssl and lsquic both via + # add_subdirectory: +@@ -201,20 +203,20 @@ ELSE() + # add_subdirectory(third_party/lsquic) + IF (DEFINED BORINGSSL_LIB) + IF (CMAKE_SYSTEM_NAME STREQUAL Windows) +- FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME} +- NAMES ${LIB_NAME} ++ FIND_LIBRARY(BORINGSSL_LIB_${LIB} ++ NAMES ${LIB} + PATHS ${BORINGSSL_LIB} + PATH_SUFFIXES Debug Release MinSizeRel RelWithDebInfo + NO_DEFAULT_PATH) + ELSE() +- FIND_LIBRARY(BORINGSSL_LIB_${LIB_NAME} +- NAMES lib${LIB_NAME}${LIB_SUFFIX} ++ FIND_LIBRARY(BORINGSSL_LIB_${LIB} ++ NAMES lib${LI}${LIB_SUFFIX} + PATHS ${BORINGSSL_LIB} +- PATH_SUFFIXES ${LIB_NAME} ++ PATH_SUFFIXES ${LIB} + NO_DEFAULT_PATH) + ENDIF() + ENDIF() +- IF(BORINGSSL_LIB_${LIB_NAME}) ++ IF(BORINGSSL_LIB_${LIB}) + MESSAGE(STATUS "Found ${LIB_NAME} library: ${BORINGSSL_LIB_${LIB_NAME}}") + ELSE() + MESSAGE(FATAL_ERROR "BORINGSSL_LIB_${LIB_NAME} library not found") diff --git a/example/00-vcpkg-install/vcpkg-overlay/liblsquic/lsquic_conn_ssl.patch b/example/00-vcpkg-install/vcpkg-overlay/liblsquic/lsquic_conn_ssl.patch new file mode 100644 index 00000000..ae7be541 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/liblsquic/lsquic_conn_ssl.patch @@ -0,0 +1,80 @@ +diff --git a/include/lsquic.h b/include/lsquic.h +index 389fbcc..c38d027 100644 +--- a/include/lsquic.h ++++ b/include/lsquic.h +@@ -1671,6 +1671,10 @@ int lsquic_stream_close(lsquic_stream_t *s); + int + lsquic_stream_has_unacked_data (lsquic_stream_t *s); + ++/* Return SSL object associated with this connection */ ++struct ssl_st * ++lsquic_conn_ssl(struct lsquic_conn *conn); ++ + /** + * Get certificate chain returned by the server. This can be used for + * server certificate verification. +diff --git a/src/liblsquic/lsquic_conn.c b/src/liblsquic/lsquic_conn.c +index f76550d..31e5285 100644 +--- a/src/liblsquic/lsquic_conn.c ++++ b/src/liblsquic/lsquic_conn.c +@@ -128,6 +128,12 @@ lsquic_conn_crypto_alg_keysize (const lsquic_conn_t *lconn) + } + + ++struct ssl_st * ++lsquic_conn_ssl(struct lsquic_conn *lconn) { ++ return lconn->cn_esf_c->esf_get_ssl(lconn->cn_enc_session); ++} ++ ++ + struct stack_st_X509 * + lsquic_conn_get_server_cert_chain (struct lsquic_conn *lconn) + { +diff --git a/src/liblsquic/lsquic_enc_sess.h b/src/liblsquic/lsquic_enc_sess.h +index f45c15f..3505fbd 100644 +--- a/src/liblsquic/lsquic_enc_sess.h ++++ b/src/liblsquic/lsquic_enc_sess.h +@@ -115,6 +115,9 @@ struct enc_session_funcs_common + (*esf_decrypt_packet)(enc_session_t *, struct lsquic_engine_public *, + const struct lsquic_conn *, struct lsquic_packet_in *); + ++ struct ssl_st * ++ (*esf_get_ssl)(enc_session_t *); ++ + struct stack_st_X509 * + (*esf_get_server_cert_chain) (enc_session_t *); + +diff --git a/src/liblsquic/lsquic_enc_sess_ietf.c b/src/liblsquic/lsquic_enc_sess_ietf.c +index 66329c1..076c4c5 100644 +--- a/src/liblsquic/lsquic_enc_sess_ietf.c ++++ b/src/liblsquic/lsquic_enc_sess_ietf.c +@@ -2519,6 +2519,13 @@ iquic_esf_global_cleanup (void) + } + + ++static struct ssl_st * ++iquic_esf_get_ssl(enc_session_t *enc_session_p) { ++ struct enc_sess_iquic *const enc_sess = enc_session_p; ++ return enc_sess->esi_ssl; ++} ++ ++ + static struct stack_st_X509 * + iquic_esf_get_server_cert_chain (enc_session_t *enc_session_p) + { +@@ -2744,6 +2751,7 @@ const struct enc_session_funcs_common lsquic_enc_session_common_ietf_v1 = + .esf_global_cleanup = iquic_esf_global_cleanup, + .esf_global_init = iquic_esf_global_init, + .esf_tag_len = IQUIC_TAG_LEN, ++ .esf_get_ssl = iquic_esf_get_ssl, + .esf_get_server_cert_chain + = iquic_esf_get_server_cert_chain, + .esf_get_sni = iquic_esf_get_sni, +@@ -2763,6 +2771,7 @@ const struct enc_session_funcs_common lsquic_enc_session_common_ietf_v1_no_flush + .esf_global_cleanup = iquic_esf_global_cleanup, + .esf_global_init = iquic_esf_global_init, + .esf_tag_len = IQUIC_TAG_LEN, ++ .esf_get_ssl = iquic_esf_get_ssl, + .esf_get_server_cert_chain + = iquic_esf_get_server_cert_chain, + .esf_get_sni = iquic_esf_get_sni, diff --git a/example/00-vcpkg-install/vcpkg-overlay/liblsquic/portfile.cmake b/example/00-vcpkg-install/vcpkg-overlay/liblsquic/portfile.cmake new file mode 100644 index 00000000..3602c595 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/liblsquic/portfile.cmake @@ -0,0 +1,78 @@ +if(VCPKG_TARGET_IS_WINDOWS) + # The lib uses CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS, at least until + # https://github.com/litespeedtech/lsquic/pull/371 or similar is merged + vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +endif() + +vcpkg_from_github(OUT_SOURCE_PATH SOURCE_PATH + REPO litespeedtech/lsquic + REF v${VERSION} + SHA512 40d742779bfa2dc6fdaf0ee8e9349498d373dcffcc6dd27867c18d87309a288ea6811d693043b5d98364d816b818b49445214497475844201241193c0f37b349 + HEAD_REF master + PATCHES + disable-asan.patch + fix-found-boringssl.patch + lsquic_conn_ssl.patch +) + +# Submodules +vcpkg_from_github(OUT_SOURCE_PATH LSQPACK_SOURCE_PATH + REPO litespeedtech/ls-qpack + REF v2.5.3 + HEAD_REF master + SHA512 f90502c763abc84532f33d1b8f952aea7869e4e0c5f6bd344532ddd51c4a180958de4086d88b9ec96673a059c806eec9e70007651d4d4e1a73395919dee47ce0 +) +if(NOT EXISTS "${SOURCE_PATH}/src/ls-hpack/CMakeLists.txt") + file(REMOVE_RECURSE "${SOURCE_PATH}/src/liblsquic/ls-qpack") + file(RENAME "${LSQPACK_SOURCE_PATH}" "${SOURCE_PATH}/src/liblsquic/ls-qpack") +endif() + +vcpkg_from_github(OUT_SOURCE_PATH LSHPACK_SOURCE_PATH + REPO litespeedtech/ls-hpack + REF v2.3.2 + HEAD_REF master + SHA512 45d6c8296e8eee511e6a083f89460d5333fc9a49bc078dac55fdec6c46db199de9f150379f02e054571f954a5e3c79af3864dbc53dc57d10a8d2ed26a92d4278 +) +if(NOT EXISTS "${SOURCE_PATH}/src/lshpack/CMakeLists.txt") + file(REMOVE_RECURSE "${SOURCE_PATH}/src/lshpack") + file(RENAME "${LSHPACK_SOURCE_PATH}" "${SOURCE_PATH}/src/lshpack") +endif() + +# Configuration +vcpkg_find_acquire_program(PERL) + +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" LSQUIC_SHARED_LIB) + +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + "-DPERL=${PERL}" + "-DPERL_EXECUTABLE=${PERL}" + "-DLSQUIC_SHARED_LIB=${LSQUIC_SHARED_LIB}" + "-DBORINGSSL_INCLUDE=${CURRENT_INSTALLED_DIR}/include" + -DLSQUIC_BIN=OFF + -DLSQUIC_TESTS=OFF + OPTIONS_RELEASE + "-DBORINGSSL_LIB=${CURRENT_INSTALLED_DIR}/lib" + OPTIONS_DEBUG + "-DBORINGSSL_LIB=${CURRENT_INSTALLED_DIR}/debug/lib" + -DLSQUIC_DEVEL=ON +) + +vcpkg_cmake_install() +if(VCPKG_TARGET_IS_WINDOWS) + # Upstream removed installation of this header after merging changes + file(INSTALL "${SOURCE_PATH}/wincompat/vc_compat.h" DESTINATION "${CURRENT_INSTALLED_DIR}/include/lsquic") +endif() + +vcpkg_cmake_config_fixup(PACKAGE_NAME lsquic) + +# Concatenate license files and install +vcpkg_install_copyright(FILE_LIST + "${SOURCE_PATH}/LICENSE" + "${SOURCE_PATH}/LICENSE.chrome" +) + +# Remove duplicated include directory +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") + diff --git a/example/00-vcpkg-install/vcpkg-overlay/liblsquic/vcpkg.json b/example/00-vcpkg-install/vcpkg-overlay/liblsquic/vcpkg.json new file mode 100644 index 00000000..ec900322 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/liblsquic/vcpkg.json @@ -0,0 +1,25 @@ +{ + "name": "liblsquic", + "version": "3.3.2", + "port-version": 1, + "description": "An implementation of the QUIC and HTTP/3 protocols.", + "homepage": "https://github.com/litespeedtech/lsquic", + "license": "MIT AND BSD-3-Clause", + "supports": "!x86", + "dependencies": [ + "boringssl", + { + "name": "getopt", + "platform": "windows" + }, + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + }, + "zlib" + ] +} diff --git a/example/00-vcpkg-install/vcpkg-overlay/libp2p/portfile.cmake b/example/00-vcpkg-install/vcpkg-overlay/libp2p/portfile.cmake new file mode 100644 index 00000000..375806c0 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/libp2p/portfile.cmake @@ -0,0 +1,18 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO libp2p/cpp-libp2p + REF 5d0013db9850a1c23dfe9ef6673077959b2d784f + SHA512 fdc97ef948edccf9f31c0b7807a813a79975c822e96c8dcb48f14a3827505422b47f1f693e62e0bfe56689079992ee548f5ca631bc84d6e4098eac220b5cf98d +) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + OPTIONS + -DCMAKE_CXX_STANDARD=20 + -DCMAKE_CXX_STANDARD_REQUIRED=ON + -DTESTING=OFF + -DEXAMPLES=OFF +) +vcpkg_cmake_install() +#vcpkg_cmake_config_fixup(PACKAGE_NAME "libsecp256k1") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") diff --git a/example/00-vcpkg-install/vcpkg-overlay/libp2p/vcpkg.json b/example/00-vcpkg-install/vcpkg-overlay/libp2p/vcpkg.json new file mode 100644 index 00000000..c5a66ae3 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/libp2p/vcpkg.json @@ -0,0 +1,34 @@ +{ + "name": "libp2p", + "version": "0.0.1", + "dependencies": [ + { "name": "vcpkg-cmake", "host": true }, + { "name": "vcpkg-cmake-config", "host": true }, + "boost-filesystem", + "boost-random", + "boost-program-options", + "qtils", + "boringssl", + "boost-signals2", + "boost-asio", + "soralog", + "fmt", + "gtest", + "boost-beast", + "protobuf", + "liblsquic", + "zlib", + "boost-di", + "sqlite-modern-cpp", + "libsecp256k1", + "tsl-hat-trie", + "boost-multi-index", + "c-ares" + ], + "overrides": [ + { + "name": "fmt", + "version": "10.1.1" + } + ] +} diff --git a/example/00-vcpkg-install/vcpkg-overlay/libsecp256k1/portfile.cmake b/example/00-vcpkg-install/vcpkg-overlay/libsecp256k1/portfile.cmake new file mode 100644 index 00000000..bfbc93c0 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/libsecp256k1/portfile.cmake @@ -0,0 +1,11 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO qdrvm/libsecp256k1 + REF 4370b9c336f86457c0b7bb97cd1ac6a281d951fa + SHA512 ed4660a66d8d74d5d5a27e54a247fe89d0fab4a5618ace27fe384690eebe296b89ababb7eb8a0184d64c339a27c7882306ecefb3fc8bf8c554ca3e244df627e5 +) +vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}") +vcpkg_cmake_install() +#vcpkg_cmake_config_fixup(PACKAGE_NAME "libsecp256k1") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") diff --git a/example/00-vcpkg-install/vcpkg-overlay/libsecp256k1/vcpkg.json b/example/00-vcpkg-install/vcpkg-overlay/libsecp256k1/vcpkg.json new file mode 100644 index 00000000..8143946f --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/libsecp256k1/vcpkg.json @@ -0,0 +1,8 @@ +{ + "name": "libsecp256k1", + "version": "0.5.1", + "dependencies": [ + { "name": "vcpkg-cmake", "host": true }, + { "name": "vcpkg-cmake-config", "host": true } + ] +} diff --git a/example/00-vcpkg-install/vcpkg-overlay/qtils/portfile.cmake b/example/00-vcpkg-install/vcpkg-overlay/qtils/portfile.cmake new file mode 100644 index 00000000..cc367ce3 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/qtils/portfile.cmake @@ -0,0 +1,11 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO qdrvm/qtils + REF 9a64dfd6ed0226dec29805aa89d4c713a6f81d9f + SHA512 bab32974f6926054ea11b0e6d8549d2b62e1def75cb4464ca47895bdd32d624ff6b9e25d10d7075581c4310c872b71560dfce76e92a60e83949b4af0276768ec +) +vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}") +vcpkg_cmake_install() +vcpkg_cmake_config_fixup(PACKAGE_NAME "qtils") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") diff --git a/example/00-vcpkg-install/vcpkg-overlay/qtils/vcpkg.json b/example/00-vcpkg-install/vcpkg-overlay/qtils/vcpkg.json new file mode 100644 index 00000000..a6f24b66 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/qtils/vcpkg.json @@ -0,0 +1,19 @@ +{ + "name": "qtils", + "version": "0.0.3", + "dependencies": [ + { "name": "vcpkg-cmake", "host": true }, + { "name": "vcpkg-cmake-config", "host": true }, + "boost-algorithm", + "boost-outcome", + "fmt" + ], + "features": { + "qtils-tests": { + "description": "Test compilable of qtils", + "dependencies": [ + "gtest" + ] + } + } +} diff --git a/example/00-vcpkg-install/vcpkg-overlay/soralog/portfile.cmake b/example/00-vcpkg-install/vcpkg-overlay/soralog/portfile.cmake new file mode 100644 index 00000000..53fd8938 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/soralog/portfile.cmake @@ -0,0 +1,11 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO xDimon/soralog + REF 4dfffd3d949b1c16a04db2e5756555a4031732f7 + SHA512 4a8f6066433e6bde504454ea256915e8e6975c060eabdaebd031df409d348b8c22ccd716ec11c4466b0f4322b1f2524350dcc77c3615a8511cba9886f88e7260 +) +vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}") +vcpkg_cmake_install() +#vcpkg_cmake_config_fixup(PACKAGE_NAME "soralog") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") diff --git a/example/00-vcpkg-install/vcpkg-overlay/soralog/vcpkg.json b/example/00-vcpkg-install/vcpkg-overlay/soralog/vcpkg.json new file mode 100644 index 00000000..f375fea9 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/soralog/vcpkg.json @@ -0,0 +1,18 @@ +{ + "name": "soralog", + "version": "0.2.5", + "dependencies": [ + { "name": "vcpkg-cmake", "host": true }, + { "name": "vcpkg-cmake-config", "host": true }, + "fmt", + "yaml-cpp" + ], + "features": { + "soralog-tests": { + "description": "Test of soralog's mechanisms", + "dependencies": [ + "gtest" + ] + } + } +} diff --git a/example/00-vcpkg-install/vcpkg-overlay/tsl-hat-trie/portfile.cmake b/example/00-vcpkg-install/vcpkg-overlay/tsl-hat-trie/portfile.cmake new file mode 100644 index 00000000..597fada1 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/tsl-hat-trie/portfile.cmake @@ -0,0 +1,11 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY) +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO masterjedy/hat-trie + REF 4fdfc75e75276185eed4b748ea09671601101b8e + SHA512 1f8e216037d06909a80dc89550a667cb1a8c64270c91b0ea5585c98f318fdbfe863a9766c9fadfb3da581b248fcd6b6b13576a2f855c61b7587516c38947c457 +) +vcpkg_cmake_configure(SOURCE_PATH "${SOURCE_PATH}") +vcpkg_cmake_install() +#vcpkg_cmake_config_fixup(PACKAGE_NAME "tsl-hat-trie") +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") diff --git a/example/00-vcpkg-install/vcpkg-overlay/tsl-hat-trie/vcpkg.json b/example/00-vcpkg-install/vcpkg-overlay/tsl-hat-trie/vcpkg.json new file mode 100644 index 00000000..0ad4d7be --- /dev/null +++ b/example/00-vcpkg-install/vcpkg-overlay/tsl-hat-trie/vcpkg.json @@ -0,0 +1,8 @@ +{ + "name": "tsl-hat-trie", + "version": "1.0.0", + "dependencies": [ + { "name": "vcpkg-cmake", "host": true }, + { "name": "vcpkg-cmake-config", "host": true } + ] +} diff --git a/example/00-vcpkg-install/vcpkg.json b/example/00-vcpkg-install/vcpkg.json new file mode 100644 index 00000000..eda2d070 --- /dev/null +++ b/example/00-vcpkg-install/vcpkg.json @@ -0,0 +1,7 @@ +{ + "name": "libp2p-example", + "version-string": "0.1.0", + "dependencies": [ + "libp2p" + ] +} \ No newline at end of file From c8b7b7860bb0da540108fd277a74be1a01fdf199 Mon Sep 17 00:00:00 2001 From: Dmitriy Khaustov aka xDimon <khaustov.dm@gmail.com> Date: Sun, 2 Mar 2025 23:21:24 +0800 Subject: [PATCH 2/5] update: qtils & scale Signed-off-by: Dmitriy Khaustov aka xDimon <khaustov.dm@gmail.com> --- cmake/Hunter/config.cmake | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cmake/Hunter/config.cmake b/cmake/Hunter/config.cmake index d8f5b2f5..276af818 100644 --- a/cmake/Hunter/config.cmake +++ b/cmake/Hunter/config.cmake @@ -17,9 +17,9 @@ hunter_config( soralog - URL https://github.com/xDimon/soralog/archive/4dfffd3d949b1c16a04db2e5756555a4031732f7.tar.gz - SHA1 60e3dcaab2d8e43f0ed4fd22087677663c618716 - # VERSION 0.2.4 + VERSION 0.2.5 + URL https://github.com/qdrvm/soralog/archive/7a76c991e1a80a9b79297fb544ef3512ea8f5789.tar.gz + SHA1 4a6cf3810fe9ec59f58be961234c063637667fab KEEP_PACKAGE_SOURCES ) @@ -32,8 +32,9 @@ hunter_config( hunter_config( qtils - URL https://github.com/qdrvm/qtils/archive/1e492cf09a3640570cae59a951502614320c0797.tar.gz - SHA1 033dd907e2566c95ce2ccf1fa6dd9766bc896894 + VERSION 0.1.0 + URL https://github.com/qdrvm/qtils/archive/refs/tags/v0.1.0.tar.gz + SHA1 acc28902af7dc5d74ac33d486ad2261906716f5e CMAKE_ARGS FORMAT_ERROR_WITH_FULLTYPE=ON KEEP_PACKAGE_SOURCES From 70a21ce10b5950d7c48fa2798ab573d904bad51d Mon Sep 17 00:00:00 2001 From: kamilsa <kamilsa16@gmail.com> Date: Tue, 4 Mar 2025 14:18:44 +0300 Subject: [PATCH 3/5] Add README.md --- example/00-vcpkg-install/README.md | 46 ++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 example/00-vcpkg-install/README.md diff --git a/example/00-vcpkg-install/README.md b/example/00-vcpkg-install/README.md new file mode 100644 index 00000000..626110cc --- /dev/null +++ b/example/00-vcpkg-install/README.md @@ -0,0 +1,46 @@ +# LibP2P Example with vcpkg + +This example demonstrates how to build and run a simple LibP2P application using vcpkg as the package manager. + +## Prerequisites + +- CMake 3.15 or higher +- A C++20 compatible compiler +- Git +- vcpkg + +## Getting Started + +1. Clone vcpkg if you haven't already: + +```bash +git clone https://github.com/microsoft/vcpkg.git + +./vcpkg/bootstrap-vcpkg.sh # For Linux/macOS +.\vcpkg\bootstrap-vcpkg.bat # For Windows +``` + +2. Clone this repository: + +```bash +git clone https://github.com/libp2p/libp2p.git +cd libp2p/example/00-vcpkg-install +``` + +3. Install LibP2P dependencies using vcpkg: + +```bash +cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=<path-to-vcpkg>/scripts/buildsystems/vcpkg.cmake +cmake --build build +``` + +4. Run the example: + +```bash +./build/example +``` + +## Notes + +- This example assumes you have a working vcpkg installation. If you encounter any issues, please refer to the [vcpkg documentation](https://vcpkg.io/en/getting-started.html) for troubleshooting. +- The example demonstrates how to build and run a simple LibP2P application using vcpkg as the package manager. From b0a40b6c8a85f5d4ddac5599275503b929b4e40f Mon Sep 17 00:00:00 2001 From: Dmitriy Khaustov aka xDimon <khaustov.dm@gmail.com> Date: Wed, 5 Mar 2025 02:56:59 +0800 Subject: [PATCH 4/5] update: soralog Signed-off-by: Dmitriy Khaustov aka xDimon <khaustov.dm@gmail.com> --- cmake/Hunter/config.cmake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/Hunter/config.cmake b/cmake/Hunter/config.cmake index 276af818..0a35fdb2 100644 --- a/cmake/Hunter/config.cmake +++ b/cmake/Hunter/config.cmake @@ -18,8 +18,8 @@ hunter_config( soralog VERSION 0.2.5 - URL https://github.com/qdrvm/soralog/archive/7a76c991e1a80a9b79297fb544ef3512ea8f5789.tar.gz - SHA1 4a6cf3810fe9ec59f58be961234c063637667fab + URL https://github.com/qdrvm/soralog/archive/refs/tags/v0.2.5.tar.gz + SHA1 67da2d17e93954c198b4419daa55911342c924a9 KEEP_PACKAGE_SOURCES ) From ed3888a1ea8ccc9fda93572371bdbde81e0f98f3 Mon Sep 17 00:00:00 2001 From: Dmitriy Khaustov aka xDimon <khaustov.dm@gmail.com> Date: Wed, 5 Mar 2025 03:03:29 +0800 Subject: [PATCH 5/5] update: bump version Signed-off-by: Dmitriy Khaustov aka xDimon <khaustov.dm@gmail.com> --- CMakeLists.txt | 2 +- README.md | 2 +- vcpkg.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 84887783..3500ff4c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,7 @@ if (PACKAGE_MANAGER STREQUAL "hunter") include("cmake/Hunter/init.cmake") endif () -project(libp2p VERSION 0.1.17 LANGUAGES C CXX) +project(libp2p VERSION 0.1.32 LANGUAGES C CXX) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_CXX_STANDARD 20) diff --git a/README.md b/README.md index 651fe793..77265d1a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # CPP-Libp2p -> Fully compatible C++17 implementation of libp2p library +> Fully compatible C++20 implementation of libp2p library Libp2p is a modular networking stack described in [spec](https://github.com/libp2p/specs) diff --git a/vcpkg.json b/vcpkg.json index 216339c9..2c7a36d2 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -1,6 +1,6 @@ { "name": "libp2p", - "version": "0.1.17", + "version": "0.1.32", "dependencies": [ "boost-filesystem", "boost-random",