Skip to content

release: all-coin packaging fix (libsecp256k1 bundle + per-coin configs) for v0.2.3.1#742

Merged
frstrtr merged 1 commit into
masterfrom
ci-steward/v0231-packaging
Jul 18, 2026
Merged

release: all-coin packaging fix (libsecp256k1 bundle + per-coin configs) for v0.2.3.1#742
frstrtr merged 1 commit into
masterfrom
ci-steward/v0231-packaging

Conversation

@frstrtr

@frstrtr frstrtr commented Jul 18, 2026

Copy link
Copy Markdown
Owner

Supersedes the #740-only task. Field audit of v0.2.3 confirmed two all-coin packaging bugs; both fixed here. Retag as v0.2.3.1 (tag-build path, same source) on merge.

Audit matrix (needs vs bundles, v0.2.3 live assets)

platform needs (dynamic) bundled config verdict
Linux x86_64 (all 5) libsecp256k1.so.1 leveldb+snappy only (secp MISSING) LTC header BROKEN / DOA
macOS universal (all 5) secp+boost+leveldb+yaml-cpp all present, rpath-ed LTC header closure OK / config wrong
Windows x86_64 (all 5) libsecp256k1-6.dll present (exe + lib/) LTC header closure OK / config wrong

leveldb/snappy/boost/gmp/event are statically linked on Linux — libsecp256k1.so.1 is the ONLY dynamic non-glibc dep, and it was the one omitted. No other unbundled deps on any platform.

BUG A — libsecp256k1 missing (Linux only, all 5 coins)

Root cause: Linux packaging hardcoded libsecp256k1.so.2; the runner libsecp256k1-dev provides .so.1, so find matched nothing and it was never copied. Fixed by resolving the real runtime closure via ldd of the built binary (SONAME-agnostic; survives the next SONAME bump). macOS/Windows already bundle secp256k1 correctly.

BUG B — wrong-coin config (all 15 packages)

Every tarball shipped the Litecoin config, so a DASH pool logged LTC and bound LTC ports. Added config//c2pool_{mainnet,testnet}.yaml with coin-correct headers and authoritative sharechain ports (btc 9333, ltc 9326/9327, dgb 5024/5025, dash 8999/7903, bch 9349); release.yml selects config/${COIN}/ on all three platforms. DASH config documents the external dashd-RPC fallback (embedded SPV unwired per #738). Checkpoints/RPC left as commented guidance rather than fabricated values.

Guards

  • release.yml packaging tripwires: assert each Linux package bundles libsecp256k1 and its config header names the coin (fails the build otherwise).
  • start.sh / start.bat refuse to launch a binary against a mismatched-coin config.

Closes #740, closes #741. No self-merge — on approval I take the tag-build path to v0.2.3.1.

…gs) for v0.2.3.1

BUG A (Linux, all 5 coins): every v0.2.3 Linux tarball was dead-on-arrival.
The Linux packaging step hardcoded libsecp256k1.so.2, but the runners
libsecp256k1-dev provides .so.1, so the find matched nothing and the binary
only dynamic non-glibc dependency (libsecp256k1.so.1) was never bundled;
lib/ carried only the statically-redundant leveldb/snappy. Replace the
hardcoded SONAME list with an ldd-resolved copy of the real runtime closure
(SONAME-agnostic). macOS/Windows already bundle secp256k1 correctly.

BUG B (all 15 packages): every coin tarball shipped the Litecoin config
(LTC header, ports 9326/9327, LTC/DOGE checkpoints, embedded_ltc), so a
DASH pool logged LTC and bound LTC ports. Add per-coin config/<coin>/
mainnet+testnet files with coin-correct headers and authoritative sharechain
ports (btc 9333, ltc 9326/9327, dgb 5024/5025, dash 8999/7903, bch 9349);
release.yml selects config/${COIN}/ on all three platforms. DASH config
documents the external dashd-RPC fallback (embedded SPV unwired per #738).

Guards: release.yml packaging asserts each Linux package bundles
libsecp256k1 and its config header names the coin (fail-fast tripwires);
start.sh/start.bat refuse to launch a binary against a mismatched-coin
config.
@frstrtr
frstrtr merged commit d16a152 into master Jul 18, 2026
26 checks passed
@frstrtr
frstrtr deleted the ci-steward/v0231-packaging branch July 18, 2026 22:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant