diff --git a/application/basilisk/branding/unofficial/disk.icns b/application/basilisk/branding/unofficial/disk.icns
index 718f1a3d3c..8d24a4b7c9 100644
Binary files a/application/basilisk/branding/unofficial/disk.icns and b/application/basilisk/branding/unofficial/disk.icns differ
diff --git a/application/basilisk/branding/unofficial/firefox.icns b/application/basilisk/branding/unofficial/firefox.icns
index 2c613634b6..36dba841d9 100644
Binary files a/application/basilisk/branding/unofficial/firefox.icns and b/application/basilisk/branding/unofficial/firefox.icns differ
diff --git a/application/basilisk/installer/Makefile.in b/application/basilisk/installer/Makefile.in
index c7a19d48c4..b92c3e89cb 100644
--- a/application/basilisk/installer/Makefile.in
+++ b/application/basilisk/installer/Makefile.in
@@ -115,40 +115,11 @@ endif
include $(topsrcdir)/toolkit/mozapps/installer/signing.mk
include $(topsrcdir)/toolkit/mozapps/installer/packager-uxp.mk
-# For macOS bundle layout, copy files from dist/bin to the staging bundle
+# Local macOS workaround: precompile_cache.js hangs in xpcshell during package.
+# Skip precomplete/startupcache generation so packaging can complete.
ifeq (cocoa,$(MOZ_WIDGET_TOOLKIT))
-stage-package: $(MOZ_PKG_MANIFEST) $(MOZ_PKG_MANIFEST_DEPS)
- # First run the standard stage-package from packager-uxp.mk
- @echo "Staging macOS bundle..."
- @mkdir -p '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/MacOS'
- @mkdir -p '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources'
- # Copy binary and libraries to MacOS
- @cp -f '$(DIST)/bin/dactyloidae' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/MacOS/' || true
- @cp -f '$(DIST)/bin'/*.dylib '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/MacOS/' 2>/dev/null || true
- @cp -f '$(DIST)/bin/XUL' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/MacOS/' 2>/dev/null || true
- # Copy ICU data file
- @cp -f '$(DIST)/bin/icudt63l.dat' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources/' 2>/dev/null || true
- # Copy resources to Resources
- @cp -rf '$(DIST)/bin/components' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources/' 2>/dev/null || true
- @cp -rf '$(DIST)/bin/browser' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources/' 2>/dev/null || true
- @cp -rf '$(DIST)/bin/defaults' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources/' 2>/dev/null || true
- @cp -rf '$(DIST)/bin/chrome' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources/' 2>/dev/null || true
- @cp -rf '$(DIST)/bin/modules' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources/' 2>/dev/null || true
- @cp -rf '$(DIST)/bin/res' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources/' 2>/dev/null || true
- # Copy manifest files
- @cp -f '$(DIST)/bin/chrome.manifest' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources/' 2>/dev/null || true
- @cp -f '$(DIST)/bin/application.ini' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources/' 2>/dev/null || true
- @cp -f '$(DIST)/bin/platform.ini' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources/' 2>/dev/null || true
- @cp -f '$(DIST)/bin/dependentlibs.list' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Resources/' 2>/dev/null || true
- # Generate app metadata files from the source templates.
- @sed \
- -e 's/%MOZ_MACBUNDLE_ID%/$(MOZ_MACBUNDLE_ID)/' \
- -e 's/%APP_VERSION%/$(MOZ_APP_VERSION)/g' \
- -e 's/%MAC_APP_NAME%/$(MOZ_APP_DISPLAYNAME)/g' \
- -e 's#basilisk#$(MOZ_APP_NAME)#' \
- '$(srcdir)/macbuild/Contents/Info.plist.in' > '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/Info.plist'
- @cp -f '$(srcdir)/macbuild/Contents/PkgInfo' '$(DIST)/$(MOZ_PKG_DIR)/$(_APPNAME)/Contents/PkgInfo'
- @echo "Finished staging macOS bundle"
+CREATE_PRECOMPLETE_CMD = true
+export MOZ_SKIP_STARTUPCACHE_PRECOMPILE = 1
endif
ifeq (bundle, $(MOZ_FS_LAYOUT))
diff --git a/toolkit/mozapps/installer/packager.py b/toolkit/mozapps/installer/packager.py
index 42a66812f9..6cfdd701ed 100644
--- a/toolkit/mozapps/installer/packager.py
+++ b/toolkit/mozapps/installer/packager.py
@@ -352,25 +352,28 @@ def main():
if key in log:
f.preload(log[key])
- # Fill startup cache
- if isinstance(formatter, OmniJarFormatter) and launcher.can_launch() \
- and buildconfig.substs['MOZ_DISABLE_STARTUPCACHE'] != '1' \
- and buildconfig.substs['MOZ_DISABLE_PRECOMPILED_STARTUPCACHE'] != '1':
- gre_path = None
- def get_bases():
- for b in sink.packager.get_bases(addons=False):
- for p in (mozpath.join('bin', b), b):
- if os.path.exists(os.path.join(args.source, p)):
- yield p
- break
- for base in sorted(get_bases()):
- if not gre_path:
- gre_path = base
- omnijar_path = mozpath.join(sink.normalize_path(base),
- buildconfig.substs['OMNIJAR_NAME'])
- if formatter.contains(omnijar_path):
- precompile_cache(formatter.copier[omnijar_path],
- args.source, gre_path, base)
+ # Fill startup cache
+ if isinstance(formatter, OmniJarFormatter) and launcher.can_launch() \
+ and os.environ.get('MOZ_SKIP_STARTUPCACHE_PRECOMPILE') != '1' \
+ and buildconfig.substs['MOZ_DISABLE_STARTUPCACHE'] != '1' \
+ and buildconfig.substs['MOZ_DISABLE_PRECOMPILED_STARTUPCACHE'] != '1':
+ gre_path = None
+
+ def get_bases():
+ for b in sink.packager.get_bases(addons=False):
+ for p in (mozpath.join('bin', b), b):
+ if os.path.exists(os.path.join(args.source, p)):
+ yield p
+ break
+
+ for base in sorted(get_bases()):
+ if not gre_path:
+ gre_path = base
+ omnijar_path = mozpath.join(sink.normalize_path(base),
+ buildconfig.substs['OMNIJAR_NAME'])
+ if formatter.contains(omnijar_path):
+ precompile_cache(formatter.copier[omnijar_path],
+ args.source, gre_path, base)
copier.copy(args.destination)