fix(miner): keep an updated miner, don't re-extract the bundled one
Builds that embed xmrig (Windows release) re-extracted the bundled miner whenever its size differed from the file on disk. An "Update miner..." install always differs, so the next start silently put the bundled build back while settings still showed the updated version. - The bundled miner is now placed only when it is missing, like the node binaries (kXmrigRefreshOnSizeMismatch = false in the provision table). Params and asmap still follow the bundled size. - Behaviour change: a wallet upgrade no longer refreshes a miner the user never updated; "Update miner..." is the way to get a newer build. - The uncalled needsXmrigExtraction() is removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -41,6 +41,9 @@ bool extractEmbeddedResources(ProvisionProgress* progress = nullptr, const Cance
|
||||
// Does `destPath` need (re)writing? Missing -> yes. Present: only when `refreshOnSizeMismatch` and the size
|
||||
// differs. embeddedSize == 0 -> never. (Pure apart from the stat; exposed for tests.)
|
||||
bool resourceNeedsWrite(std::uint64_t embeddedSize, bool refreshOnSizeMismatch, const std::string& destPath);
|
||||
// The bundled miner is placed only when MISSING: a present xmrig is never replaced by the bundled copy, even when
|
||||
// its size differs, so an "Update miner..." install survives a wallet restart or upgrade.
|
||||
inline constexpr bool kXmrigRefreshOnSizeMismatch = false; // the in-app updater owns the miner once placed
|
||||
// Write `data` to `destPath` via `destPath + kPartialFileSuffix`, flush it to disk, then move it into place
|
||||
// (POSIX rename; Windows MoveFileEx with retry and move-aside of a running .exe to ".old"). POSIX: chmod 0755
|
||||
// first when `executable`. Returns false (temp removed, original kept) on any failure or on cancel.
|
||||
@@ -152,9 +155,6 @@ bool hasDaemonAvailable();
|
||||
// Get daemon executable path (extracts if needed)
|
||||
std::string getDaemonPath();
|
||||
|
||||
// Check if xmrig needs to be extracted
|
||||
bool needsXmrigExtraction();
|
||||
|
||||
// Check if xmrig is available (embedded or in app directory)
|
||||
bool hasXmrigAvailable();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user