diff options
author | Sven Eden <sven.eden@prydeworx.com> | 2022-08-06 13:21:09 +0200 |
---|---|---|
committer | Sven Eden <sven.eden@prydeworx.com> | 2022-08-06 13:21:09 +0200 |
commit | fc92622574ca402a1704a26b5ee205b9426f80b0 (patch) | |
tree | a8278b523ced1f580389310c7e219aa996f05cc0 /net-p2p | |
parent | dev-cpp/cli11: new package, add 2.2.0 (diff) | |
download | seden-fc92622574ca402a1704a26b5ee205b9426f80b0.tar.gz seden-fc92622574ca402a1704a26b5ee205b9426f80b0.tar.bz2 seden-fc92622574ca402a1704a26b5ee205b9426f80b0.zip |
net-p2p/ethminer: new package, add 9999
Signed-off-by: Sven Eden <sven.eden@prydeworx.com>
Diffstat (limited to 'net-p2p')
-rw-r--r-- | net-p2p/ethminer/Manifest | 3 | ||||
-rw-r--r-- | net-p2p/ethminer/ethminer-9999.ebuild | 161 | ||||
-rw-r--r-- | net-p2p/ethminer/files/9999-fix_compilation_issues.patch | 254 | ||||
-rw-r--r-- | net-p2p/ethminer/metadata.xml | 11 |
4 files changed, 429 insertions, 0 deletions
diff --git a/net-p2p/ethminer/Manifest b/net-p2p/ethminer/Manifest new file mode 100644 index 0000000..7bcc2bd --- /dev/null +++ b/net-p2p/ethminer/Manifest @@ -0,0 +1,3 @@ +AUX 9999-fix_compilation_issues.patch 11640 BLAKE2B 5c99160b2c695fa5a0aa41210c139a302c11984fcec8b9152bfc0fbf63756459f77e494def404a62b65046683e4b4da7ddbad5a483a7d087f9e2b6b0041a73de SHA512 d2619149d524e51700e6c180eac89ea706fea41c8f7f378e1a573df802bba0c02c679a8c4f8f0305d067c57b87ec2c683b8d41ee481a9ec06987ce5027b1ae7a +EBUILD ethminer-9999.ebuild 3751 BLAKE2B fe74dcb80e7c8a22534121d9d71b194c71fe7c3eb6c7870299324fd0118133d65f6d099d638299bfaf55310977dddcf509921494f43288dcc1c6558852702f2a SHA512 702e03983acd7cd599089f85dd8e2779c505ebf46ef93ac2a65047e6c908bca1a563de103584277bb926673b16d0b17daeca27bd5f72acbec9ad2d1b1c13ee80 +MISC metadata.xml 323 BLAKE2B 858e66c19f576045cf5d0c6b36865df9bd2cc09efb44fd1d110337a8854fe6e9ec6bdb97446967e5728db14dcc3ba86eb27d32319b822468b85dad320ce8ed0f SHA512 77f870c3e75de60a329716d3fce3fb5eefd037b646e6730abe8dfc794dcc1ad81cfc097fddcafe14c5958175b60658716d166379da7d4025405abbd8c57d8e5d diff --git a/net-p2p/ethminer/ethminer-9999.ebuild b/net-p2p/ethminer/ethminer-9999.ebuild new file mode 100644 index 0000000..f2dd14e --- /dev/null +++ b/net-p2p/ethminer/ethminer-9999.ebuild @@ -0,0 +1,161 @@ +# Copyright 1999-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake flag-o-matic git-r3 + +KERNELS_DIR="opt/lib" + +DESCRIPTION="Ethereum miner with CUDA and stratum support" +HOMEPAGE="https://github.com/ethereum-mining/ethminer" + +EGIT_REPO_URI="https://github.com/ethereum-mining/${PN}.git" +EGIT_SUBMODULES=( cmake/cable ) + +KEYWORDS="" + +LICENSE="GPL-3+ LGPL-3+" +SLOT="0" +IUSE="apicore binkern cpu cuda dbus debug +opencl verbose-debug" + +QA_PREBUILT="${KERNELS_DIR}/ethash_*" + +RDEPEND=" + dev-cpp/ethash + >=dev-cpp/libjson-rpc-cpp-1.0.0[http-client] + dev-libs/boost + dev-libs/jsoncpp + dev-libs/openssl + cuda? ( dev-util/nvidia-cuda-toolkit ) + dbus? ( sys-apps/dbus ) + opencl? ( virtual/opencl ) +" +DEPEND="${RDEPEND} + dbus? ( virtual/pkgconfig ) + acct-user/ethminer +" +BDEPEND=" + >=dev-util/cmake-3.5 + dev-cpp/cli11 + virtual/pkgconfig +" + +PATCHES=( + ${FILESDIR}/${PV}-fix_compilation_issues.patch +) + +src_unpack() { + default + + if [[ ${PV} == 9999 ]] + then + git-r3_src_unpack + return + fi + + rmdir ${S}/cmake/cable || die + mv cable-${CABLE_VER} ${S}/cmake/cable || die +} + +src_prepare() { + rm cmake/cable/HunterGate.cmake || die + + find -name CMakeLists.txt | xargs sed -i \ + -e '/find_package/ s/CONFIG//' \ + -e '/hunter_add_package/d' + + find -name *.h | xargs sed -i \ + -e '/include.*json/ s:json/json\.h:jsoncpp/&:' + + sed -i \ + -e '/include.*Hunter/d' \ + -e '/^HunterGate(/,/^)/d' \ + -e '/cable_set_build_type/d' \ + -e '/find_package.*jsoncpp/d' \ + CMakeLists.txt || die + + sed -i \ + -e '/include_directories.+BEFORE/ s:\.\.:& \.:' \ + -e '/find_package.*CLI11/d' \ + -e '/target_link_libraries/ s/CLI11::CLI11//' \ + -e 's/target_link_libraries.*ethminer.*PRIVATE/& crypto/' \ + -e '/find_package.*PkgConfig/ s/PkgConfig/DBus1 REQUIRED/' \ + -e '/set.*ENV/d' \ + -e '/pkg_check_modules.*DBUS/d' \ + -e '/include_directories.*DBUS_INCLUDE_DIRS/ s/DBUS/DBus1/' \ + -e '/link_directories.*DBUS/d' \ + -e '/target_link_libraries.*DBUS_LIBRARIES/ s/DBUS_LIBRARIES/DBus1_LIBRARY/' \ + ethminer/CMakeLists.txt || die + + sed -i \ + -e '/target_link_libraries/ s/ethcore//' \ + libethash-{cl,cpu,cuda}/CMakeLists.txt + + sed -i \ + -e "/install/ s:\(DESTINATION.*\)\$.*kernels:\1/${KERNELS_DIR}:" \ + libethash-cl/kernels/CMakeLists.txt + + sed -i \ + -e 's/jsoncpp_lib_static/jsoncpp/' \ + -e 's/jsoncpp_static/jsoncpp/' \ + libpoolprotocols/CMakeLists.txt || die + + sed -i \ + -e 's/fname_strm.*<<.*program_location.*/fname_strm/' \ + -e "s:/kernels/ethash_:/${KERNELS_DIR}/ethash_:" \ + libethash-cl/CLMiner.cpp + + sed -i \ + -e 's/get_io_service()/context()/' \ + libethcore/Farm.cpp || die + + sed -i \ + -e '/boost::bind/ s/_1/boost::placeholders::_1/' \ + libpoolprotocols/getwork/EthGetworkClient.cpp || die + + if [[ ${PV} != 9999 ]] + then + sed -i -e '/find_package.*Git/d' \ + cmake/cable/CableBuildInfo.cmake + fi + + # fix build with >nvidia-cuda-toolkit-10.2 (https://stackoverflow.com/q/64774548/5424487) + sed -i -e 's/compute_30/compute_50/' -e 's/sm_30/sm_50/' libethash-cuda/CMakeLists.txt || die + + cmake_src_prepare +} + +src_configure() { + local mycxxflags=( + -Wno-deprecated-declarations + -I"${WORKDIR}/CLI11-${CLI11_VER}/include" + -DBOOST_BIND_GLOBAL_PLACEHOLDERS + ) + + append-cxxflags ${mycxxflags[@]} + + local mycmakeargs=( + -DBUILD_SHARED_LIBS=OFF + + -DAPICORE=$(usex apicore) + -DBINKERN=$(usex binkern) + -DDEVBUILD=$(usex verbose-debug) + -DETHASHCL=$(usex opencl) + -DETHASHCPU=$(usex cpu) + -DETHASHCUDA=$(usex cuda) + -DETHDBUS=$(usex dbus) + ) + + cmake_src_configure +} + +src_install() { + cmake_src_install + +## newinitd "${FILESDIR}/${PN}-initd" "${PN}" +## newconfd "${FILESDIR}/${PN}-confd" "${PN}" + + keepdir /var/{lib,log}/ethminer + fowners ethminer:ethminer /var/{lib,log}/ethminer +} diff --git a/net-p2p/ethminer/files/9999-fix_compilation_issues.patch b/net-p2p/ethminer/files/9999-fix_compilation_issues.patch new file mode 100644 index 0000000..1fbe25d --- /dev/null +++ b/net-p2p/ethminer/files/9999-fix_compilation_issues.patch @@ -0,0 +1,254 @@ +--- a/libdevcore/CommonData.cpp 2022-08-06 11:36:39.164665153 +0200 ++++ b/libdevcore/CommonData.cpp 2022-08-06 11:37:21.741666453 +0200 +@@ -58,7 +58,7 @@ + int h = fromHex(_s[i], WhenError::DontThrow); + int l = fromHex(_s[i + 1], WhenError::DontThrow); + if (h != -1 && l != -1) +- ret.push_back((byte)(h * 16 + l)); ++ ret.push_back((uint8_t)(h * 16 + l)); + else if (_throw == WhenError::Throw) + BOOST_THROW_EXCEPTION(BadHexCharacter()); + else +--- a/libethcore/EthashAux.cpp 2022-08-06 11:39:12.405669830 +0200 ++++ b/libethcore/EthashAux.cpp 2022-08-06 11:44:07.371678832 +0200 +@@ -18,6 +18,7 @@ + #include "EthashAux.h" + + #include <ethash/ethash.hpp> ++#include <ethash/global_context.hpp> + + using namespace dev; + using namespace eth; +--- a/libethcore/Farm.cpp 2022-08-06 12:20:33.334745542 +0200 ++++ b/libethcore/Farm.cpp 2022-08-06 12:20:59.183746331 +0200 +@@ -16,6 +16,7 @@ + */ + + ++#include <ethash/global_context.hpp> + #include <libethcore/Farm.h> + + #if ETH_ETHASHCL +--- a/ethminer/main.cpp 2022-08-06 12:25:48.675755165 +0200 ++++ b/ethminer/main.cpp 2022-08-06 12:43:23.219787347 +0200 +@@ -223,7 +223,7 @@ + app.set_help_flag(); + app.add_flag("-h,--help", bhelp, "Show help"); + +- app.add_set("-H,--help-ext", shelpExt, ++ app.add_option("-H,--help-ext", shelpExt)->check(CLI::IsMember( + { + "con", "test", + #if ETH_ETHASHCL +@@ -239,55 +239,48 @@ + "api", + #endif + "misc", "env" +- }, +- "", true); ++ }))->capture_default_str(); + + bool version = false; + +- app.add_option("--ergodicity", m_FarmSettings.ergodicity, "", true)->check(CLI::Range(0, 2)); ++ app.add_option("--ergodicity", m_FarmSettings.ergodicity)->check(CLI::Range(0, 2))->capture_default_str(); + + app.add_flag("-V,--version", version, "Show program version"); + +- app.add_option("-v,--verbosity", g_logOptions, "", true)->check(CLI::Range(LOG_NEXT - 1)); ++ app.add_option("-v,--verbosity", g_logOptions)->check(CLI::Range(LOG_NEXT - 1))->capture_default_str(); + +- app.add_option("--farm-recheck", m_PoolSettings.getWorkPollInterval, "", true)->check(CLI::Range(1, 99999)); ++ app.add_option("--farm-recheck", m_PoolSettings.getWorkPollInterval)->check(CLI::Range(1, 99999))->capture_default_str(); + +- app.add_option("--farm-retries", m_PoolSettings.connectionMaxRetries, "", true)->check(CLI::Range(0, 99999)); ++ app.add_option("--farm-retries", m_PoolSettings.connectionMaxRetries)->check(CLI::Range(0, 99999))->capture_default_str(); + +- app.add_option("--retry-delay", m_PoolSettings.delayBeforeRetry, "", true) +- ->check(CLI::Range(1, 999)); ++ app.add_option("--retry-delay", m_PoolSettings.delayBeforeRetry)->check(CLI::Range(1, 999))->capture_default_str(); + +- app.add_option("--work-timeout", m_PoolSettings.noWorkTimeout, "", true) +- ->check(CLI::Range(180, 99999)); ++ app.add_option("--work-timeout", m_PoolSettings.noWorkTimeout)->check(CLI::Range(180, 99999))->capture_default_str(); + +- app.add_option("--response-timeout", m_PoolSettings.noResponseTimeout, "", true) +- ->check(CLI::Range(2, 999)); ++ app.add_option("--response-timeout", m_PoolSettings.noResponseTimeout)->check(CLI::Range(2, 999))->capture_default_str(); + +- app.add_flag("-R,--report-hashrate,--report-hr", m_PoolSettings.reportHashrate, ""); ++ app.add_flag("-R,--report-hashrate,--report-hr", m_PoolSettings.reportHashrate); + +- app.add_option("--display-interval", m_cliDisplayInterval, "", true) +- ->check(CLI::Range(1, 1800)); ++ app.add_option("--display-interval", m_cliDisplayInterval)->check(CLI::Range(1, 1800))->capture_default_str(); + +- app.add_option("--HWMON", m_FarmSettings.hwMon, "", true)->check(CLI::Range(0, 2)); ++ app.add_option("--HWMON", m_FarmSettings.hwMon)->check(CLI::Range(0, 2))->capture_default_str(); + +- app.add_flag("--exit", g_exitOnError, ""); ++ app.add_flag("--exit", g_exitOnError); + + vector<string> pools; +- app.add_option("-P,--pool", pools, ""); ++ app.add_option("-P,--pool", pools); + +- app.add_option("--failover-timeout", m_PoolSettings.poolFailoverTimeout, "", true) +- ->check(CLI::Range(0, 999)); ++ app.add_option("--failover-timeout", m_PoolSettings.poolFailoverTimeout) ->check(CLI::Range(0, 999))->capture_default_str(); + +- app.add_flag("--nocolor", g_logNoColor, ""); ++ app.add_flag("--nocolor", g_logNoColor); + +- app.add_flag("--syslog", g_logSyslog, ""); ++ app.add_flag("--syslog", g_logSyslog); + +- app.add_flag("--stdout", g_logStdout, ""); ++ app.add_flag("--stdout", g_logStdout); + + #if API_CORE + +- app.add_option("--api-bind", m_api_bind, "", true) +- ->check([this](const string& bind_arg) -> string { ++ app.add_option("--api-bind", m_api_bind)->check([this](const string& bind_arg)->string { + try + { + MinerCLI::ParseBind(bind_arg, this->m_api_address, this->m_api_port, true); +@@ -299,77 +292,81 @@ + // not sure what to return, and the documentation doesn't say either. + // https://github.com/CLIUtils/CLI11/issues/144 + return string(""); +- }); ++ })->capture_default_str(); + +- app.add_option("--api-port", m_api_port, "", true)->check(CLI::Range(-65535, 65535)); ++ app.add_option("--api-port", m_api_port)->check(CLI::Range(-65535, 65535))->capture_default_str(); + +- app.add_option("--api-password", m_api_password, ""); ++ app.add_option("--api-password", m_api_password); + + #endif + + #if ETH_ETHASHCL || ETH_ETHASHCUDA || ETH_ETHASH_CPU + +- app.add_flag("--list-devices", m_shouldListDevices, ""); ++ app.add_flag("--list-devices", m_shouldListDevices); + + #endif + + #if ETH_ETHASHCL + +- app.add_option("--opencl-device,--opencl-devices,--cl-devices", m_CLSettings.devices, ""); ++ app.add_option("--opencl-device,--opencl-devices,--cl-devices", m_CLSettings.devices); + +- app.add_option("--cl-global-work", m_CLSettings.globalWorkSize, "", true); ++ app.add_option("--cl-global-work", m_CLSettings.globalWorkSize)->capture_default_str(); + +- app.add_set("--cl-local-work", m_CLSettings.localWorkSize, {64, 128, 256}, "", true); ++ app.add_option("--cl-local-work", m_CLSettings.localWorkSize)->check(CLI::IsMember( ++ {64, 128, 256} ++ ))->capture_default_str(); + +- app.add_flag("--cl-nobin", m_CLSettings.noBinary, ""); ++ app.add_flag("--cl-nobin", m_CLSettings.noBinary); + +- app.add_flag("--cl-noexit", m_CLSettings.noExit, ""); ++ app.add_flag("--cl-noexit", m_CLSettings.noExit); + + #endif + + #if ETH_ETHASHCUDA + +- app.add_option("--cuda-devices,--cu-devices", m_CUSettings.devices, ""); ++ app.add_option("--cuda-devices,--cu-devices", m_CUSettings.devices); + +- app.add_option("--cuda-grid-size,--cu-grid-size", m_CUSettings.gridSize, "", true) +- ->check(CLI::Range(1, 131072)); ++ app.add_option("--cuda-grid-size,--cu-grid-size", m_CUSettings.gridSize)->check(CLI::Range(1, 131072))->capture_default_str(); + +- app.add_set( +- "--cuda-block-size,--cu-block-size", m_CUSettings.blockSize, {32, 64, 128, 256}, "", true); ++ app.add_option( ++ "--cuda-block-size,--cu-block-size", m_CUSettings.blockSize)->check(CLI::IsMember( ++ {32, 64, 128, 256} ++ ))->capture_default_str(); + + string sched = "sync"; +- app.add_set( +- "--cuda-schedule,--cu-schedule", sched, {"auto", "spin", "yield", "sync"}, "", true); ++ app.add_option( ++ "--cuda-schedule,--cu-schedule", sched)->check(CLI::IsMember( ++ {"auto", "spin", "yield", "sync"} ++ ))->capture_default_str(); + +- app.add_option("--cuda-streams,--cu-streams", m_CUSettings.streams, "", true) +- ->check(CLI::Range(1, 99)); ++ app.add_option("--cuda-streams,--cu-streams", m_CUSettings.streams)->check(CLI::Range(1, 99))->capture_default_str(); + + #endif + + #if ETH_ETHASHCPU + +- app.add_option("--cpu-devices,--cp-devices", m_CPSettings.devices, ""); ++ app.add_option("--cpu-devices,--cp-devices", m_CPSettings.devices); + + #endif + +- app.add_flag("--noeval", m_FarmSettings.noEval, ""); ++ app.add_flag("--noeval", m_FarmSettings.noEval); + +- app.add_option("-L,--dag-load-mode", m_FarmSettings.dagLoadMode, "", true)->check(CLI::Range(1)); ++ app.add_option("-L,--dag-load-mode", m_FarmSettings.dagLoadMode)->check(CLI::Range(1))->capture_default_str(); + + bool cl_miner = false; +- app.add_flag("-G,--opencl", cl_miner, ""); ++ app.add_flag("-G,--opencl", cl_miner); + + bool cuda_miner = false; +- app.add_flag("-U,--cuda", cuda_miner, ""); ++ app.add_flag("-U,--cuda", cuda_miner); + + bool cpu_miner = false; + #if ETH_ETHASHCPU +- app.add_flag("--cpu", cpu_miner, ""); ++ app.add_flag("--cpu", cpu_miner); + #endif +- auto sim_opt = app.add_option("-Z,--simulation,-M,--benchmark", m_PoolSettings.benchmarkBlock, "", true); ++ auto sim_opt = app.add_option("-Z,--simulation,-M,--benchmark", m_PoolSettings.benchmarkBlock)->capture_default_str(); + +- app.add_option("--tstop", m_FarmSettings.tempStop, "", true)->check(CLI::Range(30, 100)); +- app.add_option("--tstart", m_FarmSettings.tempStart, "", true)->check(CLI::Range(30, 100)); ++ app.add_option("--tstop", m_FarmSettings.tempStop)->check(CLI::Range(30, 100))->capture_default_str(); ++ app.add_option("--tstart", m_FarmSettings.tempStart)->check(CLI::Range(30, 100))->capture_default_str(); + + + // Exception handling is held at higher level +--- a/libethash-cl/CMakeLists.txt 2022-08-06 13:04:47.033826526 +0200 ++++ b/libethash-cl/CMakeLists.txt 2022-08-06 13:09:17.986834795 +0200 +@@ -31,6 +31,6 @@ + include_directories(..) + + add_library(ethash-cl ${SOURCES}) +-target_link_libraries(ethash-cl PUBLIC ethash::ethash) ++target_link_libraries(ethash-cl PUBLIC ethash::ethash ethash-global-context) + target_link_libraries(ethash-cl PRIVATE OpenCL::OpenCL) + target_link_libraries(ethash-cl PRIVATE Boost::filesystem Boost::thread) +--- a/libethash-cpu/CMakeLists.txt 2022-08-06 13:04:52.272826686 +0200 ++++ b/libethash-cpu/CMakeLists.txt 2022-08-06 13:09:19.680834847 +0200 +@@ -3,5 +3,5 @@ + + add_library(ethash-cpu ${sources} ${headers}) + #target_link_libraries(ethash-cpu ethash::ethash Boost::fiber Boost::thread) +-target_link_libraries(ethash-cpu ethash::ethash Boost::thread) ++target_link_libraries(ethash-cpu ethash::ethash ethash-global-context Boost::thread) + target_include_directories(ethash-cpu PRIVATE .. ${CMAKE_CURRENT_BINARY_DIR}) +--- a/libethash-cuda/CMakeLists.txt 2022-08-06 13:04:57.532826847 +0200 ++++ b/libethash-cuda/CMakeLists.txt 2022-08-06 13:09:20.601834875 +0200 +@@ -42,6 +42,6 @@ + file(GLOB headers "*.h" "*.cuh") + + cuda_add_library(ethash-cuda STATIC ${sources} ${headers}) +-target_link_libraries(ethash-cuda ethash::ethash Boost::thread) ++target_link_libraries(ethash-cuda ethash::ethash ethash-global-context Boost::thread) + target_include_directories(ethash-cuda PUBLIC ${CUDA_INCLUDE_DIRS}) + target_include_directories(ethash-cuda PRIVATE .. ${CMAKE_CURRENT_BINARY_DIR}) diff --git a/net-p2p/ethminer/metadata.xml b/net-p2p/ethminer/metadata.xml new file mode 100644 index 0000000..bf694ac --- /dev/null +++ b/net-p2p/ethminer/metadata.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <upstream> + <remote-id type="github">CLIUtils/CLI11</remote-id> + </upstream> + <maintainer type="person"> + <email>sven@eden-worx.com</email> + <name>Sven Eden</name> + </maintainer> +</pkgmetadata> |