build: Fix guix build for Windows, macOS cross-compile, and Namecoin branding#571
Conversation
|
Thanks! Please rebase and submit this for the What is the llvm-name-tool change? Why is that required specifically for Namecoin? |
Namecoin needs xpressive -> xpressive gets built via CMake in depends -> CMake searches for install_name_tool on darwin -> Guix only has llvm-install-name-tool -> build fails. Bitcoin Core never hits this because it doesn't build any Boost components that go through CMake in the depends system? |
|
Ok thanks for the explanation, that makes sense. |
- macnotificationhandler.mm: bundle identifier - Info.plist.in: icon reference (bitcoin.icns -> namecoin.icns) - Maintenance.cmake: icon copy path - debugwindow.ui, optionsdialog.ui, receivecoinsdialog.ui: user-visible descriptions
CMake cannot find install_name_tool when cross-compiling for Darwin because the guix environment only provides llvm-install-name-tool. This adds proper toolchain plumbing so CMAKE_INSTALL_NAME_TOOL is set to llvm-install-name-tool for darwin builds.
e0b60e5 to
ccb1c90
Compare
|
ACK ccb1c90. Thanks! |
Guix Build Fixes for Namecoin Core 30.x
This PR fixes several build issues encountered during reproducible (guix) builds of Namecoin Core, plus replaces remaining Bitcoin branding in user-visible macOS UI strings.
Commits
fix: rename bitcoin-gui to namecoin-gui in import_plugins— Qt plugin import referencedbitcoin-guitarget which doesn't exist in Namecoin.depends: add boost xpressive for Namecoin name RPCs— Namecoin name RPCs requireboost::xpressivewhich wasn't included in the depends boost build.fix: remove HAS_MANPAGE from bitcoin multiprocess wrapper— Thebitcoinwrapper binary'sinstall_binary_component(bitcoin)had no man page atdoc/man/bitcoin.1, causingcmake --installto fail on Darwin with:Fix CMake target names for Namecoin (deploy, check-symbols, NSIS, macOS bundle)— Namecoin renames most executables (bitcoind→namecoind,bitcoin-qt→namecoin-qt, etc.) butMaintenance.cmakeandGenerateSetupNsi.cmakestill referenced the Bitcoin target names. This caused:make: *** No rule to make target 'deploy'. Stop.— theadd_windows_deploy_target()function'sif(MINGW AND TARGET bitcoind AND TARGET bitcoin-qt ...)condition silently failed because those targets don't exist, so nodeploytarget was ever created.add_macos_deploy_target()checked forTARGET bitcoin-qtwhich doesn't exist.bitcoinwrapper binary, missing all the renamed executables.Replace Bitcoin with Namecoin in macOS UI and user-visible strings— Fixes remaining "Bitcoin" references that users would see:macnotificationhandler.mm: bundle identifierorg.bitcoinfoundation.Bitcoin-Qt→org.namecoin.Namecoin-QtInfo.plist.in: icon referencebitcoin.icns→namecoin.icnsMaintenance.cmake: macOS app bundle nameBitcoin-Qt.app→Namecoin-Qt.app, icon copy pathdebugwindow.ui,optionsdialog.ui,receivecoinsdialog.ui: "Bitcoin node/network/client" → "Namecoin"Fix macOS cross-compile: add CMAKE_INSTALL_NAME_TOOL for darwin targets— When cross-compiling for Darwin in the guix container, CMake'sCMakeFindBinUtilsmodule looks forinstall_name_toolin PATH. The guix environment only providesllvm-install-name-tool, causing:This failed during the boost depends configure for
x86_64-apple-darwin. Fixed by:darwin_INSTALL_NAME_TOOLtodepends/hosts/darwin.mkpointing tollvm-install-name-toolINSTALL_NAME_TOOLin the tool chain independs/hosts/default.mk-DCMAKE_INSTALL_NAME_TOOLindepends/funcs.mkfor darwin cross-compile cmake invocationsCMAKE_INSTALL_NAME_TOOLindepends/toolchain.cmake.infor the main buildAdditional Notes
JOBS=$(nproc)(16 jobs) and 8GB RAM, the Windows (mingw32) build was OOM-killed during heavy Qt/template compilation. Reducing toJOBS=4resolved this.BitcoinGUI,BitcoinUnits, etc.) were left unchanged as they have no user-visible impact.Build Outputs & Hashes
Linux targets (x86_64, aarch64, arm, powerpc64, riscv64):
Windows (x86_64-w64-mingw32):
macOS (x86_64 + arm64):