mirror of
https://github.com/SChernykh/p2pool.git
synced 2024-12-23 03:49:23 +00:00
Added macOS build
This commit is contained in:
parent
e527b0c660
commit
b31adbd5ae
12 changed files with 54 additions and 19 deletions
33
.github/workflows/c-cpp.yml
vendored
33
.github/workflows/c-cpp.yml
vendored
|
@ -110,3 +110,36 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
cd tests/build/Release
|
cd tests/build/Release
|
||||||
./p2pool_tests.exe
|
./p2pool_tests.exe
|
||||||
|
|
||||||
|
build-macos:
|
||||||
|
|
||||||
|
runs-on: macOS-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: HOMEBREW_NO_AUTO_UPDATE=1 brew install cmake libuv zmq libpgm
|
||||||
|
|
||||||
|
- name: Build p2pool
|
||||||
|
run: |
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make
|
||||||
|
|
||||||
|
- name: Build tests
|
||||||
|
run: |
|
||||||
|
cd tests
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make
|
||||||
|
|
||||||
|
- name: Run tests
|
||||||
|
run: |
|
||||||
|
cd tests/build
|
||||||
|
./p2pool_tests
|
||||||
|
|
|
@ -39,7 +39,7 @@ elseif (CMAKE_CXX_COMPILER_ID MATCHES MSVC)
|
||||||
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${WARNING_FLAGS} ${SECURITY_FLAGS} /Ob1 /Ot /Zi /MT")
|
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${WARNING_FLAGS} ${SECURITY_FLAGS} /Ob1 /Ot /Zi /MT")
|
||||||
|
|
||||||
elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang)
|
elseif (CMAKE_CXX_COMPILER_ID MATCHES Clang)
|
||||||
set(WARNING_FLAGS "-Wall -Wextra")
|
set(WARNING_FLAGS "-Wall -Wextra -Wno-undefined-internal -Werror")
|
||||||
set(OPTIMIZATION_FLAGS "-Ofast -funroll-loops -fmerge-all-constants")
|
set(OPTIMIZATION_FLAGS "-Ofast -funroll-loops -fmerge-all-constants")
|
||||||
|
|
||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS}")
|
||||||
|
|
|
@ -204,7 +204,7 @@ void BlockTemplate::update(const MinerData& data, const Mempool& mempool, Wallet
|
||||||
// Select 1000 transactions with the highest fee per byte
|
// Select 1000 transactions with the highest fee per byte
|
||||||
if (m_mempoolTxs.size() > 1000) {
|
if (m_mempoolTxs.size() > 1000) {
|
||||||
std::nth_element(m_mempoolTxs.begin(), m_mempoolTxs.begin() + 1000, m_mempoolTxs.end(),
|
std::nth_element(m_mempoolTxs.begin(), m_mempoolTxs.begin() + 1000, m_mempoolTxs.end(),
|
||||||
[this](const TxMempoolData& tx_a, const TxMempoolData& tx_b)
|
[](const TxMempoolData& tx_a, const TxMempoolData& tx_b)
|
||||||
{
|
{
|
||||||
return tx_a.fee * tx_b.weight > tx_b.fee * tx_a.weight;
|
return tx_a.fee * tx_b.weight > tx_b.fee * tx_a.weight;
|
||||||
});
|
});
|
||||||
|
@ -749,7 +749,7 @@ hash BlockTemplate::calc_miner_tx_hash(uint32_t extra_nonce) const
|
||||||
|
|
||||||
// 1. Prefix (everything except vin_rct_type byte in the end)
|
// 1. Prefix (everything except vin_rct_type byte in the end)
|
||||||
// Apply extra_nonce in-place because we can't write to the block template here
|
// Apply extra_nonce in-place because we can't write to the block template here
|
||||||
keccak_custom([this, data, extra_nonce_offset, &extra_nonce_buf](int offset)
|
keccak_custom([data, extra_nonce_offset, &extra_nonce_buf](int offset)
|
||||||
{
|
{
|
||||||
const uint32_t k = static_cast<uint32_t>(offset - extra_nonce_offset);
|
const uint32_t k = static_cast<uint32_t>(offset - extra_nonce_offset);
|
||||||
if (k < EXTRA_NONCE_SIZE) {
|
if (k < EXTRA_NONCE_SIZE) {
|
||||||
|
|
|
@ -25,8 +25,6 @@ extern "C" {
|
||||||
#include "crypto-ops.h"
|
#include "crypto-ops.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr char log_category_prefix[] = "Crypto ";
|
|
||||||
|
|
||||||
namespace p2pool {
|
namespace p2pool {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
|
@ -172,6 +172,7 @@ INT_ENTRY(uint32_t)
|
||||||
INT_ENTRY(uint64_t)
|
INT_ENTRY(uint64_t)
|
||||||
|
|
||||||
#ifdef __clang__
|
#ifdef __clang__
|
||||||
|
INT_ENTRY(long)
|
||||||
INT_ENTRY(unsigned long)
|
INT_ENTRY(unsigned long)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -667,7 +667,7 @@ void P2PServer::download_missing_blocks()
|
||||||
}
|
}
|
||||||
|
|
||||||
send(client,
|
send(client,
|
||||||
[this, &id](void* buf)
|
[&id](void* buf)
|
||||||
{
|
{
|
||||||
uint8_t* p0 = reinterpret_cast<uint8_t*>(buf);
|
uint8_t* p0 = reinterpret_cast<uint8_t*>(buf);
|
||||||
uint8_t* p = p0;
|
uint8_t* p = p0;
|
||||||
|
@ -1093,7 +1093,7 @@ bool P2PServer::P2PClient::check_handshake_solution(const hash& solution, const
|
||||||
|
|
||||||
hash check{};
|
hash check{};
|
||||||
keccak_custom(
|
keccak_custom(
|
||||||
[this, &challenge, &solution_salt, &consensus_id, consensus_id_size](int offset) -> uint8_t
|
[&challenge, &solution_salt, &consensus_id, consensus_id_size](int offset) -> uint8_t
|
||||||
{
|
{
|
||||||
if (offset < CHALLENGE_SIZE) {
|
if (offset < CHALLENGE_SIZE) {
|
||||||
return challenge[offset];
|
return challenge[offset];
|
||||||
|
@ -1185,7 +1185,7 @@ bool P2PServer::P2PClient::on_handshake_solution(const uint8_t* buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
return m_owner->send(this,
|
return m_owner->send(this,
|
||||||
[this, &solution, &solution_salt](void* buf)
|
[this](void* buf)
|
||||||
{
|
{
|
||||||
uint8_t* p0 = reinterpret_cast<uint8_t*>(buf);
|
uint8_t* p0 = reinterpret_cast<uint8_t*>(buf);
|
||||||
uint8_t* p = p0;
|
uint8_t* p = p0;
|
||||||
|
@ -1243,7 +1243,7 @@ bool P2PServer::P2PClient::on_block_request(const uint8_t* buf)
|
||||||
}
|
}
|
||||||
|
|
||||||
return server->send(this,
|
return server->send(this,
|
||||||
[this, &blob](void* buf)
|
[&blob](void* buf)
|
||||||
{
|
{
|
||||||
uint8_t* p0 = reinterpret_cast<uint8_t*>(buf);
|
uint8_t* p0 = reinterpret_cast<uint8_t*>(buf);
|
||||||
uint8_t* p = p0;
|
uint8_t* p = p0;
|
||||||
|
@ -1526,7 +1526,7 @@ void P2PServer::P2PClient::post_handle_incoming_block(const uint32_t reset_count
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool result = m_owner->send(this,
|
const bool result = m_owner->send(this,
|
||||||
[this, &id](void* buf)
|
[&id](void* buf)
|
||||||
{
|
{
|
||||||
uint8_t* p0 = reinterpret_cast<uint8_t*>(buf);
|
uint8_t* p0 = reinterpret_cast<uint8_t*>(buf);
|
||||||
uint8_t* p = p0;
|
uint8_t* p = p0;
|
||||||
|
|
|
@ -810,7 +810,7 @@ void p2pool::api_update_network_stats()
|
||||||
}
|
}
|
||||||
|
|
||||||
m_api->set(p2pool_api::Category::NETWORK, "stats",
|
m_api->set(p2pool_api::Category::NETWORK, "stats",
|
||||||
[this, mainnet_tip](log::Stream& s)
|
[mainnet_tip](log::Stream& s)
|
||||||
{
|
{
|
||||||
s << "{\"difficulty\":" << mainnet_tip.difficulty
|
s << "{\"difficulty\":" << mainnet_tip.difficulty
|
||||||
<< ",\"hash\":\"" << mainnet_tip.id
|
<< ",\"hash\":\"" << mainnet_tip.id
|
||||||
|
@ -1000,7 +1000,7 @@ int p2pool::run()
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
ZMQReader z(m_params->m_host, m_params->m_rpcPort, m_params->m_zmqPort, this);
|
ZMQReader z(m_params->m_host, m_params->m_zmqPort, this);
|
||||||
get_info();
|
get_info();
|
||||||
const int rc = uv_run(uv_default_loop_checked(), UV_RUN_DEFAULT);
|
const int rc = uv_run(uv_default_loop_checked(), UV_RUN_DEFAULT);
|
||||||
LOGINFO(1, "uv_run exited, result = " << rc);
|
LOGINFO(1, "uv_run exited, result = " << rc);
|
||||||
|
|
|
@ -493,7 +493,7 @@ void StratumServer::on_blobs_ready()
|
||||||
}
|
}
|
||||||
|
|
||||||
const bool result = send(client,
|
const bool result = send(client,
|
||||||
[data, target, client, hashing_blob, &job_id](void* buf)
|
[data, target, hashing_blob, &job_id](void* buf)
|
||||||
{
|
{
|
||||||
log::hex_buf target_hex(reinterpret_cast<const uint8_t*>(&target), sizeof(uint64_t));
|
log::hex_buf target_hex(reinterpret_cast<const uint8_t*>(&target), sizeof(uint64_t));
|
||||||
|
|
||||||
|
|
|
@ -28,8 +28,6 @@ extern "C" {
|
||||||
#include "crypto-ops.h"
|
#include "crypto-ops.h"
|
||||||
}
|
}
|
||||||
|
|
||||||
static constexpr char log_category_prefix[] = "Wallet ";
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
// public keys: 64 bytes -> 88 characters in base58
|
// public keys: 64 bytes -> 88 characters in base58
|
||||||
|
|
|
@ -24,9 +24,8 @@ static constexpr char log_category_prefix[] = "ZMQReader ";
|
||||||
|
|
||||||
namespace p2pool {
|
namespace p2pool {
|
||||||
|
|
||||||
ZMQReader::ZMQReader(const char* address, uint32_t rpc_port, uint32_t zmq_port, MinerCallbackHandler* handler)
|
ZMQReader::ZMQReader(const char* address, uint32_t zmq_port, MinerCallbackHandler* handler)
|
||||||
: m_address(address)
|
: m_address(address)
|
||||||
, m_rpcPort(rpc_port)
|
|
||||||
, m_zmqPort(zmq_port)
|
, m_zmqPort(zmq_port)
|
||||||
, m_handler(handler)
|
, m_handler(handler)
|
||||||
, m_tx()
|
, m_tx()
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace p2pool {
|
||||||
|
|
||||||
class ZMQReader {
|
class ZMQReader {
|
||||||
public:
|
public:
|
||||||
ZMQReader(const char* address, uint32_t rpc_port, uint32_t zmq_port, MinerCallbackHandler* handler);
|
ZMQReader(const char* address, uint32_t zmq_port, MinerCallbackHandler* handler);
|
||||||
~ZMQReader();
|
~ZMQReader();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -34,7 +34,6 @@ private:
|
||||||
void parse(char* data, size_t size);
|
void parse(char* data, size_t size);
|
||||||
|
|
||||||
const char* m_address;
|
const char* m_address;
|
||||||
uint32_t m_rpcPort;
|
|
||||||
uint32_t m_zmqPort;
|
uint32_t m_zmqPort;
|
||||||
MinerCallbackHandler* m_handler;
|
MinerCallbackHandler* m_handler;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,13 @@
|
||||||
cmake_minimum_required(VERSION 2.8.12)
|
cmake_minimum_required(VERSION 2.8.12)
|
||||||
project(p2pool_tests)
|
project(p2pool_tests)
|
||||||
|
|
||||||
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||||
|
set(CMAKE_CXX_STANDARD 14)
|
||||||
|
|
||||||
|
set(CMAKE_C_STANDARD 99)
|
||||||
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
||||||
|
|
||||||
add_subdirectory(googletest)
|
add_subdirectory(googletest)
|
||||||
set(LIBS gtest)
|
set(LIBS gtest)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue