diff --git a/Makefile.am b/Makefile.am index 8b61763ae4..c5ebaf0567 100644 --- a/Makefile.am +++ b/Makefile.am @@ -38,6 +38,7 @@ space := $(empty) $(empty) OSX_APP=Bitcoin-Qt.app OSX_VOLNAME = $(subst $(space),-,$(PACKAGE_NAME)) OSX_DMG = $(OSX_VOLNAME).dmg +MAKE_DMG_OPEN_FINDER_SCRIPT=$(top_srcdir)/contrib/macdeploy/make-dmg-open-finder OSX_DEPLOY_SCRIPT=$(top_srcdir)/contrib/macdeploy/macdeployqtplus OSX_INSTALLER_ICONS=$(top_srcdir)/src/qt/res/icons/bitcoin.icns OSX_PLIST=$(top_builddir)/share/qt/Info.plist #not installed @@ -132,7 +133,8 @@ else !BUILD_DARWIN APP_DIST_DIR=$(top_builddir)/dist $(OSX_DMG): deploydir - $(XORRISOFS) -D -l -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -o $@ $(APP_DIST_DIR) -- $(if $(SOURCE_DATE_EPOCH),-volume_date all_file_dates =$(SOURCE_DATE_EPOCH)) + $(XORRISOFS) -D -l -V "$(OSX_VOLNAME)" -no-pad -r -dir-mode 0755 -hfsplus -o $@ $(APP_DIST_DIR) -- $(if $(SOURCE_DATE_EPOCH),-volume_date all_file_dates =$(SOURCE_DATE_EPOCH)) + $(PYTHON) $(MAKE_DMG_OPEN_FINDER_SCRIPT) $@ $(APP_DIST_DIR)/$(OSX_APP)/Contents/MacOS/Bitcoin-Qt: $(OSX_APP_BUILT) $(OSX_PACKAGING) INSTALL_NAME_TOOL=$(INSTALL_NAME_TOOL) OTOOL=$(OTOOL) STRIP=$(STRIP) $(PYTHON) $(OSX_DEPLOY_SCRIPT) $(OSX_APP) $(OSX_VOLNAME) -translations-dir=$(QT_TRANSLATION_DIR) diff --git a/contrib/guix/libexec/codesign.sh b/contrib/guix/libexec/codesign.sh index 6ffa0f07b2..270918b657 100755 --- a/contrib/guix/libexec/codesign.sh +++ b/contrib/guix/libexec/codesign.sh @@ -87,9 +87,11 @@ mkdir -p "$DISTSRC" # Make a DMG from dist/ xorrisofs -D -l -V "$(< osx_volname)" -no-pad -r -dir-mode 0755 \ + -hfsplus \ -o "${OUTDIR}/${DISTNAME}-${HOST}.dmg" \ dist \ -- -volume_date all_file_dates ="$SOURCE_DATE_EPOCH" + contrib/macdeploy/make-dmg-open-finder "${OUTDIR}/${DISTNAME}-${HOST}.dmg" ;; *) exit 1 diff --git a/contrib/macdeploy/make-dmg-open-finder b/contrib/macdeploy/make-dmg-open-finder new file mode 100755 index 0000000000..1ddae862a2 --- /dev/null +++ b/contrib/macdeploy/make-dmg-open-finder @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 +# Copyright (c) 2023 Luke Dashjr +# Distributed under the MIT software license, see the accompanying +# file COPYING or http://www.opensource.org/licenses/mit-license.php. + +import sys + +with open(sys.argv[1], "r+b") as dmg: + # Ensure HFS+ header is where we expect it + dmg.seek(0x10400) + assert dmg.read(4) == b'\x48\x2b\0\x04' + + # Set Finder info to open directory ID 2 when mounted + dmg.seek(0x10458) + dmg.write(b'\0\0\0\x02')