summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSven Eden <sven.eden@prydeworx.com>2022-08-06 13:21:09 +0200
committerSven Eden <sven.eden@prydeworx.com>2022-08-06 13:21:09 +0200
commitfc92622574ca402a1704a26b5ee205b9426f80b0 (patch)
treea8278b523ced1f580389310c7e219aa996f05cc0 /net-p2p
parentdev-cpp/cli11: new package, add 2.2.0 (diff)
downloadseden-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/Manifest3
-rw-r--r--net-p2p/ethminer/ethminer-9999.ebuild161
-rw-r--r--net-p2p/ethminer/files/9999-fix_compilation_issues.patch254
-rw-r--r--net-p2p/ethminer/metadata.xml11
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>