Can't add libp2p to project using hunter( libp2p versions available: [] [hunter ** INTERNAL **] Unexpected empty string)
- In manjaro Linux kernel 4.19.187-1-MANJARO
- cmake 3.20.1
- gcc 10.2
download HunterGate.cmake,
in main CMakeLists.txt
include("cmake/HunterGate.cmake")
HunterGate(
URL "https://github.com/cpp-pm/hunter/archive/v0.23.297.tar.gz"
SHA1 "3319fe6a3b08090df7df98dee75134d68e2ef5a3"
)
project(sync_db_cpp LANGUAGES CXX)
hunter_add_package(libp2p)
find_package(libp2p REQUIRED)
then I try to make project using command
cmake -H. -B_builds -DHUNTER_STATUS_DEBUG=ON -DCMAKE_BUILD_TYPE=Release
-- [hunter *** DEBUG *** 2021-04-25T17:05:02] HUNTER_ROOT set using HOME environment variable -- [hunter *** DEBUG *** 2021-04-25T17:05:02] HUNTER_ROOT: /home/dev/.hunter -- [hunter *** DEBUG *** 2021-04-25T17:05:02] Settings (initialize): -- [hunter *** DEBUG *** 2021-04-25T17:05:02] HunterGate done (NO) -- [hunter *** DEBUG *** 2021-04-25T17:05:02] Cache init (YES) -- [hunter *** DEBUG *** 2021-04-25T17:05:02] Single-configuration generator -- [hunter *** DEBUG *** 2021-04-25T17:05:02] Using default cache server -- [hunter *** DEBUG *** 2021-04-25T17:05:02] List of cache servers: -- [hunter *** DEBUG *** 2021-04-25T17:05:02] * https://github.com/cpp-pm/hunter-cache -- [hunter *** DEBUG *** 2021-04-25T17:05:02] Settings (finalize): -- [hunter *** DEBUG *** 2021-04-25T17:05:02] HunterGate done (NO) -- [hunter *** DEBUG *** 2021-04-25T17:05:02] Cache init (YES) -- [hunter *** DEBUG *** 2021-04-25T17:05:02] Variables from HunterGate: -- [hunter *** DEBUG *** 2021-04-25T17:05:02] HUNTER_GATE_ROOT: /home/dev/.hunter -- [hunter *** DEBUG *** 2021-04-25T17:05:02] HUNTER_GATE_VERSION: 0.23.297 -- [hunter *** DEBUG *** 2021-04-25T17:05:02] HUNTER_GATE_SHA1: 3319fe6a3b08090df7df98dee75134d68e2ef5a3 -- [hunter] Calculating Toolchain-SHA1 -- [hunter *** DEBUG *** 2021-04-25T17:05:02] [/home/dev/Projects/sync_db_cpp/_builds/_3rdParty/Hunter/toolchain] > "/usr/bin/cmake" "-DTOOLCHAIN_INFO_FILE=/home/dev/Projects/sync_db_cpp/_builds/_3rdParty/Hunter/toolchain/toolchain.info.NOLF" "-DHUNTER_SELF=/home/dev/.hunter/_Base/Download/Hunter/0.23.297/3319fe6/Unpacked" "-GUnix Makefiles" "-H/home/dev/Projects/sync_db_cpp/_builds/_3rdParty/Hunter/toolchain" "-B/home/dev/Projects/sync_db_cpp/_builds/_3rdParty/Hunter/toolchain/_builds" "-DCMAKE_MAKE_PROGRAM=/usr/bin/make" "-DCMAKE_RELEASE_POSTFIX=" "-DCMAKE_DEBUG_POSTFIX=d" -- The C compiler identification is GNU 10.2.0 -- The CXX compiler identification is GNU 10.2.0 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working C compiler: /usr/bin/cc - skipped -- Detecting C compile features -- Detecting C compile features - done -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /home/dev/Projects/sync_db_cpp/_builds/_3rdParty/Hunter/toolchain/_builds -- [hunter *** DEBUG *** 2021-04-25T17:05:03] Already exists: /home/dev/.hunter/_Base/3319fe6/020aca2/toolchain.info -- [hunter] Calculating Config-SHA1 -- [hunter *** DEBUG *** 2021-04-25T17:05:03] Cache data is up-to-date -- [hunter] HUNTER_ROOT: /home/dev/.hunter -- [hunter *** DEBUG *** 2021-04-25T17:05:03] HUNTER_TOOLCHAIN_ID_PATH: /home/dev/.hunter/_Base/3319fe6/020aca2 -- [hunter *** DEBUG *** 2021-04-25T17:05:03] HUNTER_CONFIGURATION_TYPES: Release;Debug -- [hunter *** DEBUG *** 2021-04-25T17:05:03] HUNTER_BUILD_SHARED_LIBS: -- [hunter] [ Hunter-ID: 3319fe6 | Toolchain-ID: 020aca2 | Config-ID: 65f8faa ] -- [hunter *** DEBUG *** 2021-04-25T17:05:03] File not found (injected package): /home/dev/.hunter/_Base/Download/Hunter/0.23.297/3319fe6/Unpacked/cmake/projects/libp2p/hunter.cmake -- [hunter *** DEBUG *** 2021-04-25T17:05:03] Injected package 'libp2p' -- [hunter *** DEBUG *** 2021-04-25T17:05:03] libp2p versions available: []
[hunter ** INTERNAL **] Unexpected empty string [hunter ** INTERNAL **] [Directory:/home/dev/Projects/sync_db_cpp]
------------------------------ ERROR ----------------------------- https://hunter.readthedocs.io/en/latest/reference/errors/error.internal.html
CMake Error at /home/dev/.hunter/_Base/Download/Hunter/0.23.297/3319fe6/Unpacked/cmake/modules/hunter_error_page.cmake:12 (message): Call Stack (most recent call first): /home/dev/.hunter/_Base/Download/Hunter/0.23.297/3319fe6/Unpacked/cmake/modules/hunter_internal_error.cmake:13 (hunter_error_page) /home/dev/.hunter/_Base/Download/Hunter/0.23.297/3319fe6/Unpacked/cmake/modules/hunter_assert_not_empty_string.cmake:9 (hunter_internal_error) /home/dev/.hunter/_Base/Download/Hunter/0.23.297/3319fe6/Unpacked/cmake/modules/hunter_get_package_sha1.cmake:26 (hunter_assert_not_empty_string) /home/dev/.hunter/_Base/Download/Hunter/0.23.297/3319fe6/Unpacked/cmake/modules/hunter_download.cmake:83 (hunter_get_package_sha1) /home/dev/.hunter/_Base/Download/Hunter/0.23.297/3319fe6/Unpacked/cmake/modules/hunter_add_package.cmake:53 (hunter_download) CMakeLists.txt:15 (hunter_add_package)
same here. do you find a solution?
so do I. what is the solution?
Okay, I think I (might) know what's going wrong here:
"FindOpenSSL.cmake" line ~303
Here, a regex match attempts to extract the version number from "openssl/opensslv.h". Inside the header, it seraches for:
#define OPEN_SSL_VERSION <value>
Investigating, it appears some versions of OpenSSL (perhaps newer ones), this fails. In my header, the "OPEN_SSL_VERSION" is defined as a combination of macros.
The regex expects something like this:
#define OPEN_SSL_VERSION 12345
However, it instead encounters this:
# define OPENSSL_VERSION_NUMBER \
( (OPENSSL_VERSION_MAJOR<<28) \
|(OPENSSL_VERSION_MINOR<<20) \
|(OPENSSL_VERSION_PATCH<<4) \
|_OPENSSL_VERSION_PRE_RELEASE )
Consequently, the extracted version number ends up being empty.
(Note: I am using OPENSSL_VERSION_STR "3.1.3")
PS: I've hack-fixed this locally by modifying the "opensslv.h" header via:
# define OPENSSL_VERSION_NUMBER 0x30100030L // version, in hex value
/*# define OPENSSL_VERSION_NUMBER \
( (OPENSSL_VERSION_MAJOR<<28) \
|(OPENSSL_VERSION_MINOR<<20) \
|(OPENSSL_VERSION_PATCH<<4) \
|_OPENSSL_VERSION_PRE_RELEASE )
*/
... not the best, but it looks like things are building now.
You need to specify where it can get the version from:
Change your cmake to this:
include("cmake/HunterGate.cmake")
HunterGate(
URL "https://github.com/cpp-pm/hunter/archive/v0.23.297.tar.gz"
SHA1 "3319fe6a3b08090df7df98dee75134d68e2ef5a3"
LOCAL
)
project(sync_db_cpp LANGUAGES CXX)
hunter_add_package(libp2p)
find_package(libp2p REQUIRED)
(add the local keyword in HunterGate to specify locally where huntergate can get the packages).
Then add a config.cmake in a Hunter folder, which should be in the same folder as your HunterGate.cmake (so cmake/Hunter/config.cmake for you) and write:
message("Loading CMAKE\n\n\n\n\n\n\n")
hunter_config(
GTest
VERSION 1.8.0-hunter-p11
)
hunter_config(sr25519
URL https://github.com/Warchant/sr25519-crust/archive/1.0.1.tar.gz
SHA1 3005d79b23b92ff27848c24a7751543a03a2dd13
)
hunter_config(
spdlog
URL https://github.com/gabime/spdlog/archive/v1.4.2.zip
SHA1 4b10e9aa17f7d568e24f464b48358ab46cb6f39c
)
hunter_config(libp2p
URL https://github.com/libp2p/cpp-libp2p/archive/dad84a03a9651c7c2bb8a8f17d0e5ea67bd10b4f.zip
SHA1 022162226f350942f3a4dac599058382b02ab4ef
)
This fixed it for me (might have to play with the hashes a bit, as in the SHA1 value). Also this for me fixed the issue above BUT lead me into another list of issues, which I can't even fix.