Published Linux builds fail to start without libnatpmp, and have since v0.13.5 #45
Labels
No labels
do-not-open-till-X-Day
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
SubGeniusFinance/dobbscoin-source#45
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The published
.tar.gzLinux builds are dynamically linked and fail in the loader on a machinethat does not already have the right libraries:
The daemon never gets to print anything of its own, so it reads like a corrupt download.
How it was found
Smoke-testing the v0.13.8 daemon on three hosts before installing it. All three failed the same way;
only the machine that built it had the library. The full set the binary expects:
In practice everything except
libnatpmp1is usually present already.This is three releases old
v0.13.7linkslibnatpmptoo.v0.13.3does not, because NAT-PMP arrived in v0.13.5. Soevery published Linux build since v0.13.5 has had this, and it went unnoticed because the nodes we
run were older than the feature that introduced it.
Documented, not fixed
dobbscoin.info/downloadsand the v0.13.8 release page now list the packages. That is a workaround.Options for an actual fix, none of them chosen here:
libnatpmpandlibminiupnpcstatically. Smallest change, removes the two librariesalmost nobody has. Boost and OpenSSL stay dynamic.
depends/system already does for the Windows build. Biggestbinary, fewest surprises.
--without-natpmpand drop the feature from the Linux builds. Cheapest, and losessomething that was advertised in v0.13.5.
The AppImage is unaffected: it bundles 64 libraries including
libnatpmp.so.1, verified byextracting it.
Worth noting for its own sake
A dependency that only the build host satisfies is invisible to the people who ship it. Smoke-testing
a release binary on a machine that did not build it is the cheap check that catches this class, and it
is not currently part of cutting a release.