2

I've been stuck with this since this morning. Basically I ran into an issue with this cmake .. -DETHASHCUDA=ON -DETHASHCL=OFF command while following this https://medium.com/coinmonks/eth-x-nvidia-x-ubuntu-1980393a36f8 tutorial.

Things I know for sure:

The problem isn't in the paramaters, I tried without them, I get the same error.

I have internet connection.

Things I tried:

I found a similar problem which had the solution to manually download boost, put it in the destination folder and enable an option to take a local file if there is one (I forgot what it is and I can't find that question thread right now, sorry). This of course did not work for me.

I've also seen on their sites that they have changed their download urls, but I have no idea what to do with that information.

Here is the relevant message:

-- SHA1 hash of
    /root/.hunter/_Base/Download/Boost/1.66.0/075d0b4/boost_1_66_0.7z
  does not match expected value
    expected: '075d0b43980614054b1f1bafd189f863bba6600e'
      actual: 'da39a3ee5e6b4b0d3255bfef95601890afd80709'
-- File already exists but hash mismatch. Removing...
-- Downloading...
   dst='/root/.hunter/_Base/Download/Boost/1.66.0/075d0b4/boost_1_66_0.7z'
   timeout='none'
-- Using src='https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.7z'
-- Retrying...
-- Using src='https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.7z'
-- Retry after 5 seconds (attempt #2) ...
-- Using src='https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.7z'
-- Retry after 5 seconds (attempt #3) ...
-- Using src='https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.7z'
-- Retry after 15 seconds (attempt #4) ...
-- Using src='https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.7z'
-- Retry after 60 seconds (attempt #5) ...
-- Using src='https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.7z'
CMake Error at Build/Boost-prefix/src/Boost-stamp/download-Boost.cmake:159 (message):
  Each download failed!

    error: downloading 'https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.7z' failed
         status_code: 22
         status_string: "HTTP response code said error"

When I try to run cmake without hunter with -DHUNTER_ENABLED=OFF I get the following error message:

CMake Error at CMakeLists.txt:68 (find_package):
  Could not find a package configuration file provided by "jsoncpp" with any
  of the following names:

    jsoncppConfig.cmake
    jsoncpp-config.cmake

  Add the installation prefix of "jsoncpp" to CMAKE_PREFIX_PATH or set
  "jsoncpp_DIR" to a directory containing one of the above files.  If
  "jsoncpp" provides a separate development package or SDK, be sure it has
  been installed.

UPDATE: I've been able to manually install the necessary packages and I was able to run cmake .. successfully.

However, I have encountered another error when I run cmake --build .

Error:

In file included from /home/luka/ethrepoclone/ethminer/libethash-cuda/CUDAMiner.cpp:18:
/home/luka/ethrepoclone/ethminer/libethash-cuda/../libethcore/Farm.h:30:10: fatal error: json/json.h: No such file or directory
   30 | #include <json/json.h>
      |          ^~~~~~~~~~~~~
compilation terminated.

UPDATE#2: After fixing the above error with ln -s /usr/include/jsoncpp/json/ /usr/include/json I now get a different (compile-time I think) error from some sort of FixedHash.h file.

[ 56%] Building CXX object libethcore/CMakeFiles/ethcore.dir/EthashAux.cpp.o
/home/luka/ethmining/ethminer/libethcore/EthashAux.cpp: In static member function ‘static dev::eth::Result dev::eth::EthashAux::eval(int, const h256&, uint64_t)’:
/home/luka/ethmining/ethminer/libethcore/EthashAux.cpp:28:29: error: ‘get_global_epoch_context’ is not a member of ‘ethash’
   28 |     auto& context = ethash::get_global_epoch_context(epoch);
      |                             ^~~~~~~~~~~~~~~~~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/EthashAux.cpp:30:88: error: no matching function for call to ‘dev::FixedHash<32>::FixedHash(<brace-enclosed initializer list>)’
   30 |     h256 mix{reinterpret_cast<byte*>(result.mix_hash.bytes), h256::ConstructFromPointer};
      |                                                                                        ^
In file included from /home/luka/ethmining/ethminer/libethcore/../libdevcore/Exceptions.h:31,
                 from /home/luka/ethmining/ethminer/libethcore/EthashAux.h:21,
                 from /home/luka/ethmining/ethminer/libethcore/EthashAux.cpp:18:
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:136:14: note: candidate: ‘dev::FixedHash<N>::FixedHash(const string&) [with unsigned int N = 32; std::string = std::__cxx11::basic_string<char>]’
  136 |     explicit FixedHash(std::string const& _s)
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:136:14: note:   candidate expects 1 argument, 2 provided
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:130:14: note: candidate: ‘dev::FixedHash<N>::FixedHash(const byte*, dev::FixedHash<N>::ConstructFromPointerType) [with unsigned int N = 32; byte = unsigned char]’
  130 |     explicit FixedHash(byte const* _bs, ConstructFromPointerType /*unused*/)
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:130:14: note:   conversion of argument 1 would be ill-formed:
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:112:14: note: candidate: ‘dev::FixedHash<N>::FixedHash(dev::bytesConstRef, dev::FixedHash<N>::ConstructFromHashType) [with unsigned int N = 32; dev::bytesConstRef = dev::vector_ref<const unsigned char>]’
  112 |     explicit FixedHash(bytesConstRef _b, ConstructFromHashType _t = FailIfDifferent)
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:112:14: note:   conversion of argument 1 would be ill-formed:
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:94:14: note: candidate: ‘dev::FixedHash<N>::FixedHash(const bytes&, dev::FixedHash<N>::ConstructFromHashType) [with unsigned int N = 32; dev::bytes = std::vector<unsigned char>]’
   94 |     explicit FixedHash(bytes const& _b, ConstructFromHashType _t = FailIfDifferent)
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:94:14: note:   conversion of argument 1 would be ill-formed:
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:91:14: note: candidate: ‘dev::FixedHash<N>::FixedHash(unsigned int) [with unsigned int N = 32]’
   91 |     explicit FixedHash(unsigned _u) { toBigEndian(_u, m_data); }
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:91:14: note:   candidate expects 1 argument, 2 provided
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:88:5: note: candidate: ‘dev::FixedHash<N>::FixedHash(const Arith&) [with unsigned int N = 32; dev::FixedHash<N>::Arith = boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >]’
   88 |     FixedHash(Arith const& _arith) { toBigEndian(_arith, m_data); }
      |     ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:88:5: note:   candidate expects 1 argument, 2 provided
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:79:14: note: candidate: ‘template<unsigned int M> dev::FixedHash<N>::FixedHash(const dev::FixedHash<M>&, dev::FixedHash<N>::ConstructFromHashType)’
   79 |     explicit FixedHash(FixedHash<M> const& _h, ConstructFromHashType _t = AlignLeft)
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:79:14: note:   template argument deduction/substitution failed:
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:75:5: note: candidate: ‘dev::FixedHash<N>::FixedHash() [with unsigned int N = 32]’
   75 |     FixedHash() { m_data.fill(0); }
      |     ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:75:5: note:   candidate expects 0 arguments, 2 provided
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:41:7: note: candidate: ‘constexpr dev::FixedHash<32>::FixedHash(const dev::FixedHash<32>&)’
   41 | class FixedHash
      |       ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:41:7: note:   candidate expects 1 argument, 2 provided
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:41:7: note: candidate: ‘constexpr dev::FixedHash<32>::FixedHash(dev::FixedHash<32>&&)’
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:41:7: note:   candidate expects 1 argument, 2 provided
/home/luka/ethmining/ethminer/libethcore/EthashAux.cpp:31:92: error: no matching function for call to ‘dev::FixedHash<32>::FixedHash(<brace-enclosed initializer list>)’
   31 |     h256 final{reinterpret_cast<byte*>(result.final_hash.bytes), h256::ConstructFromPointer};
      |                                                                                            ^
In file included from /home/luka/ethmining/ethminer/libethcore/../libdevcore/Exceptions.h:31,
                 from /home/luka/ethmining/ethminer/libethcore/EthashAux.h:21,
                 from /home/luka/ethmining/ethminer/libethcore/EthashAux.cpp:18:
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:136:14: note: candidate: ‘dev::FixedHash<N>::FixedHash(const string&) [with unsigned int N = 32; std::string = std::__cxx11::basic_string<char>]’
  136 |     explicit FixedHash(std::string const& _s)
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:136:14: note:   candidate expects 1 argument, 2 provided
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:130:14: note: candidate: ‘dev::FixedHash<N>::FixedHash(const byte*, dev::FixedHash<N>::ConstructFromPointerType) [with unsigned int N = 32; byte = unsigned char]’
  130 |     explicit FixedHash(byte const* _bs, ConstructFromPointerType /*unused*/)
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:130:14: note:   conversion of argument 1 would be ill-formed:
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:112:14: note: candidate: ‘dev::FixedHash<N>::FixedHash(dev::bytesConstRef, dev::FixedHash<N>::ConstructFromHashType) [with unsigned int N = 32; dev::bytesConstRef = dev::vector_ref<const unsigned char>]’
  112 |     explicit FixedHash(bytesConstRef _b, ConstructFromHashType _t = FailIfDifferent)
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:112:14: note:   conversion of argument 1 would be ill-formed:
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:94:14: note: candidate: ‘dev::FixedHash<N>::FixedHash(const bytes&, dev::FixedHash<N>::ConstructFromHashType) [with unsigned int N = 32; dev::bytes = std::vector<unsigned char>]’
   94 |     explicit FixedHash(bytes const& _b, ConstructFromHashType _t = FailIfDifferent)
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:94:14: note:   conversion of argument 1 would be ill-formed:
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:91:14: note: candidate: ‘dev::FixedHash<N>::FixedHash(unsigned int) [with unsigned int N = 32]’
   91 |     explicit FixedHash(unsigned _u) { toBigEndian(_u, m_data); }
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:91:14: note:   candidate expects 1 argument, 2 provided
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:88:5: note: candidate: ‘dev::FixedHash<N>::FixedHash(const Arith&) [with unsigned int N = 32; dev::FixedHash<N>::Arith = boost::multiprecision::number<boost::multiprecision::backends::cpp_int_backend<256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void> >]’
   88 |     FixedHash(Arith const& _arith) { toBigEndian(_arith, m_data); }
      |     ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:88:5: note:   candidate expects 1 argument, 2 provided
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:79:14: note: candidate: ‘template<unsigned int M> dev::FixedHash<N>::FixedHash(const dev::FixedHash<M>&, dev::FixedHash<N>::ConstructFromHashType)’
   79 |     explicit FixedHash(FixedHash<M> const& _h, ConstructFromHashType _t = AlignLeft)
      |              ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:79:14: note:   template argument deduction/substitution failed:
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:75:5: note: candidate: ‘dev::FixedHash<N>::FixedHash() [with unsigned int N = 32]’
   75 |     FixedHash() { m_data.fill(0); }
      |     ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:75:5: note:   candidate expects 0 arguments, 2 provided
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:41:7: note: candidate: ‘constexpr dev::FixedHash<32>::FixedHash(const dev::FixedHash<32>&)’
   41 | class FixedHash
      |       ^~~~~~~~~
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:41:7: note:   candidate expects 1 argument, 2 provided
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:41:7: note: candidate: ‘constexpr dev::FixedHash<32>::FixedHash(dev::FixedHash<32>&&)’
/home/luka/ethmining/ethminer/libethcore/../libdevcore/FixedHash.h:41:7: note:   candidate expects 1 argument, 2 provided
make[2]: *** [libethcore/CMakeFiles/ethcore.dir/build.make:63: libethcore/CMakeFiles/ethcore.dir/EthashAux.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:304: libethcore/CMakeFiles/ethcore.dir/all] Error 2
make: *** [Makefile:152: all] Error 2
  • It looks like the [bintray.com](https://bintray.com/) site is no longer active (*"Thanks for supporting Bintray! This service has now been sunset, and to assist with migration to the JFrog Platform, paid accounts can login until July 4th."*) – steeldriver Jun 04 '21 at 20:26
  • Yes, I've mentioned that I've seen that, but I still don't know what to do with that. – Luka Ivanić Jun 04 '21 at 20:58
  • The build process appears to use the [Hunter package manager](https://hunter.readthedocs.io/en/latest/) about which I know nothing - perhaps you (or the software's maintainer) can configure it to use a different source for the boost libraries? The documentation also suggests that you can [Disable hunter](https://github.com/ethereum-mining/ethminer/blob/master/docs/BUILD.md#disable-hunter) and install the dependencies yourself (Ubuntu already packages boost for example). – steeldriver Jun 04 '21 at 21:05
  • I already tried that and got some sort of a jsoncpp error. I will update the post. Also thank you for taking your time with helping me with this, I appreciate it. – Luka Ivanić Jun 04 '21 at 21:13
  • So I installed this jsoncpp package, more specifically libjsoncpp-dev. However I have trouble finding the destination to the installed packaged, I googled how to find it, but with no luck, is there any sort of default destination? – Luka Ivanić Jun 04 '21 at 21:32
  • In general, you can use `dpkg -L ` to see where the package manager puts things. On my x86_64 system, the find_package file appears to be at `/usr/lib/x86_64-linux-gnu/cmake/jsoncpp/jsoncppConfig.cmake`, and the system's `cmake` appears to find it without special measures i.e. `cmake --find-package -DNAME=jsoncpp -DCOMPILER_ID=GNU -DLANGUAGE=CXX -DMODE=EXIST` responds `jsoncpp found.` – steeldriver Jun 04 '21 at 22:03
  • Alright, so I made some progress. I was finally able to download all the packages necessary and update paths in CMakeCache.txt. I was able to execute `cmake .. -DETHASHCUDA=ON -DETHASHCL=OFF -DHUNTER_ENABLED=OFF`. Now I have encountered and error on the next step `cmake --build .` Here's the error code: `In file included from /home/luka/ethmining/ethminer/libethash-cuda/CUDAMiner.cpp:18: /home/luka/ethmining/ethminer/libethash-cuda/../libethcore/Farm.h:30:10: fatal error: json/json.h: No such file or directory 30 | #include | ^~~~~~~~~~~~~ ` – Luka Ivanić Jun 05 '21 at 10:42
  • I've seen some solutions to make a link with `ln -s /usr/include/jsoncpp/json/ /usr/include/json` But I get compile time errors, I will update it in the post if necessary. – Luka Ivanić Jun 05 '21 at 10:47
  • OK good luck - since your question is now largely about the mechanics of Hunter / cmake you may find that [stackoverflow.com](https://stackoverflow.com/) is a better forum – steeldriver Jun 05 '21 at 12:01
  • Thank you for your help, I'm at least a bit closer to the solution now – Luka Ivanić Jun 05 '21 at 15:18

2 Answers2

3

Boost has moved downloads to JFrog Artifactory

For the users of Boost, the only difference is that there is a new URL to download releases and snapshots.

Instead of: https://dl.bintray.com/boostorg/release/ you should use https://boostorg.jfrog.io/artifactory/main/release/ to retrieve boost releases.

Supposedly - this will fix it:

https://github.com/ethereum-mining/ethminer/commit/47348022be371df97ed1d8535bcb3969a085f60a

cmake/Hunter/config.cmake
@@ -1,2 +1,7 @@
  hunter_config(CURL VERSION ${HUNTER_CURL_VERSION} CMAKE_ARGS HTTP_ONLY=ON CMAKE_USE_OPENSSL=OFF CMAKE_USE_LIBSSH2=OFF CURL_CA_PATH=none)
- hunter_config(Boost VERSION 1.66.0)
+ hunter_config(
+     Boost
+     VERSION 1.66.0_new_url
+     SHA1 f0b20d2d9f64041e8e7450600de0267244649766
+     URL https://boostorg.jfrog.io/artifactory/main/release/1.66.0/source/boost_1_66_0.tar.gz
+ )
0

The fix is using the working version of hunter with the latest version of CMake. I have made a pull request with this solution; it is working.

Check it here: https://github.com/ethereum-mining/ethminer/pull/2413/files

Jeff Schaller
  • 66,199
  • 35
  • 114
  • 250