Merge bitcoin/bitcoin#34787: build: fix native macOS deployment

d03e3be246f64065002268e74ee9a834089de37a ci: check macos bundle structure and codesigning (fanquake)
66d80d57b48982d8301e21321a9d82780586908d macdeploy: use plugins dir to find plugins (fanquake)
ab137cbfe2763f2306e52c7c5f1860d87defc636 macdeploy: subprocess out to zip rather than shutil.make_archive (fanquake)

Pull request description:

  Fix bundle format.
  Add a CI check that codesigning works.
  Fixes #34744.

ACKs for top commit:
  Sjors:
    tACK d03e3be246f64065002268e74ee9a834089de37a
  hebasto:
    ACK d03e3be246f64065002268e74ee9a834089de37a, tested on macOS Tahoe 26.3.1.
  sedited:
    ACK d03e3be246f64065002268e74ee9a834089de37a

Tree-SHA512: 5a7db896952edf338ff4fe8c934f1e1c992642850a99d5fafbb1212c6979601b3b72b6f3af880fb6f6ac8759cd4102e9f01792abb05410ceaf36cbffaec48e47
This commit is contained in:
merge-script 2026-03-13 11:16:48 +01:00
commit 390e7d61bd
No known key found for this signature in database
GPG Key ID: 9B79B45691DB4173
2 changed files with 10 additions and 2 deletions

View File

@ -155,6 +155,14 @@ if [ "$RUN_CHECK_DEPS" = "true" ]; then
"${BASE_ROOT_DIR}/contrib/devtools/check-deps.sh" "${BASE_BUILD_DIR}"
fi
if [[ "$CI_OS_NAME" == "macos" && "${GOAL}" = "install deploy" ]]; then
unzip "${BASE_BUILD_DIR}/bitcoin-macos-app.zip" -d "${BASE_BUILD_DIR}/deploy"
if ! ( codesign --verify "${BASE_BUILD_DIR}/deploy/Bitcoin-Qt.app" ); then
echo "Codesigning failed."
false
fi
fi
if [ "$RUN_UNIT_TESTS" = "true" ]; then
DIR_UNIT_TEST_DATA="${DIR_UNIT_TEST_DATA}" \
LD_LIBRARY_PATH="${DEPENDS_DIR}/${HOST}/lib" \

View File

@ -160,7 +160,7 @@ class DeploymentInfo(object):
def detectQtPath(self, frameworkDirectory: str):
parentDir = os.path.dirname(frameworkDirectory)
if os.path.exists(os.path.join(parentDir, "share", "qt", "translations")):
if os.path.exists(os.path.join(parentDir, "share", "qt", "plugins")):
self.qtPath = parentDir
else:
self.qtPath = os.getenv("QTDIR", None)
@ -499,7 +499,7 @@ if config.zip is not None:
print("+ Removing existing .zip +")
os.unlink(name + ".zip")
shutil.make_archive('{}'.format(name), format='zip', root_dir='dist', base_dir='Bitcoin-Qt.app')
subprocess.check_call(["zip", "-ry", os.path.abspath(name + ".zip"), 'Bitcoin-Qt.app'], cwd='dist')
# ------------------------------------------------