启用 WITH_GRPC=ON 支持 Tari 合并挖矿
Build and Release / release (push) Successful in 11s
Build and Release / build-and-test (amd64) (push) Successful in 3m54s
Build and Release / build-and-test (arm64) (push) Successful in 20m46s

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-11 09:52:39 +08:00
co-authored by Claude Opus 4.8
parent b98a915df3
commit 1ecf2ca151
3 changed files with 17 additions and 13 deletions
+10 -7
View File
@@ -1,5 +1,5 @@
# p2pool musl 纯静态构建(参照上游官方 c-cpp.yml 的 Alpine static release 流程)
# Alpine + 自编 external 静态库(curl/libuv/libzmq) + 上游 boringssl + -DSTATIC_BINARY=ON
# p2pool musl 纯静态构建(external 静态库参照上游官方 c-cpp.yml 的 Alpine static 流程)
# Alpine + 自编 external 静态库(curl/libuv/libzmq) + 静态 grpc 栈(WITH_GRPC=ONTari 合并挖矿) + -DSTATIC_BINARY=ON
# 产物 fully-staticldd: not a dynamic executable),glibc/musl 任意发行版直接运行。
# 为何 muslmusl getaddrinfo 自包含,全静态可跨发行版;glibc 静态会因 NSS dlopen 失败。
FROM alpine:3.21 AS build
@@ -9,15 +9,18 @@ RUN apk add --no-cache git cmake gcc g++ make linux-headers perl
RUN git clone https://github.com/SChernykh/p2pool /src/p2pool
WORKDIR /src/p2pool
# 只拉构建所需子模块:8 个常规依赖 + grpc 仅取其 boringssl(p2pool cmake/ssl 无条件依赖)
# 不递归 grpc 其余巨型子模块(abseil/protobuf 等)WITH_GRPC=OFF 不编 grpc 本体。
# 8 个常规子模块 + grpc 及其 6 个必需 third_party(abseil/boringssl/cares/protobuf/re2/zlib)。
# WITH_GRPC=ON 需完整 grpc 栈静态编译以支持 Tari 合并挖矿;其余 9 个 grpc 子模块
# (benchmark/googletest/envoy/googleapis/xds 等测试或 xDS 依赖,已 GRPC_NO_XDS) 跳过省体积/时间。
RUN git checkout ${P2POOL_VERSION} && \
git submodule update --init --recursive \
external/src/RandomX external/src/rapidjson external/src/cppzmq \
external/src/libuv external/src/libzmq external/src/robin-hood-hashing \
external/src/curl external/src/miniupnp && \
git submodule update --init external/src/grpc && \
git -C external/src/grpc submodule update --init third_party/boringssl-with-bazel
git -C external/src/grpc submodule update --init --recursive \
third_party/abseil-cpp third_party/boringssl-with-bazel \
third_party/cares/cares third_party/protobuf third_party/re2 third_party/zlib
# external libcurlHTTP + p2pool boringssl 集成(保留 rpc-ssl 连 HTTPS monerod)。
# 完整照搬官方 c-cpp.yml 的 curl flagsP2POOL_BORINGSSL=ON 是上游给 curl 打的独立
@@ -59,11 +62,11 @@ RUN cd external/src/libzmq && mkdir build && cd build && \
-DENABLE_DRAFTS=OFF -DBUILD_SHARED=OFF && \
make -j"$(nproc)"
# p2pool 主体:纯静态(STATIC_BINARY) + grpc本体 + 禁合并挖矿捐赠(gitea-p2pool 定制)
# p2pool 主体:纯静态(STATIC_BINARY) + 启用 grpc(Tari 合并挖矿) + 禁合并挖矿捐赠(gitea-p2pool 定制)
RUN if [ "$TARGETARCH" = "arm64" ]; then ARCH_ID=aarch64; else ARCH_ID=x86_64; fi && \
mkdir build && cd build && \
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DSTATIC_BINARY=ON -DWITH_GRPC=OFF -DWITH_MERGE_MINING_DONATION=OFF \
-DSTATIC_BINARY=ON -DWITH_GRPC=ON -DWITH_MERGE_MINING_DONATION=OFF \
-DARCH_ID="$ARCH_ID" \
-DCMAKE_C_FLAGS='-Wl,-s -Wl,--gc-sections' \
-DCMAKE_CXX_FLAGS='-Wl,-s -Wl,--gc-sections' && \