cpp-libp2p icon indicating copy to clipboard operation
cpp-libp2p copied to clipboard

Can't add libp2p to project using hunter( libp2p versions available: [] [hunter ** INTERNAL **] Unexpected empty string)

Open Kintawesar opened this issue 4 years ago • 5 comments

  • 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)

Kintawesar avatar Apr 25 '21 14:04 Kintawesar

same here. do you find a solution?

akash-siv avatar May 05 '22 19:05 akash-siv

so do I. what is the solution?

Ben3World avatar Jul 05 '23 08:07 Ben3World

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.

zach-r-hughes avatar Oct 18 '23 13:10 zach-r-hughes

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.

NikolayBlagoev avatar Feb 07 '24 21:02 NikolayBlagoev