From 8a1dcee8e1b1ee116ca35b628666cff67ec23beb Mon Sep 17 00:00:00 2001 From: deepend Date: Wed, 18 Feb 2026 16:09:30 -0700 Subject: [PATCH] Updated the macOS bundling script to dynamically adapt the enchant data path before invoking gtk-mac-bundler, instead of assuming share/enchant always exists. It now checks the resolved enchant prefix and rewrites the bundle definition to use share/enchant or share/enchant-2 depending on what is present. Added a fallback that removes the enchant copy stanza entirely when neither share directory exists, preventing the exact Cannot find source to copy bundler failure you reported. --- osx/makebundle.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/osx/makebundle.sh b/osx/makebundle.sh index 66381ef7..377769b6 100755 --- a/osx/makebundle.sh +++ b/osx/makebundle.sh @@ -30,6 +30,27 @@ fi rm -rf "$APP_NAME" rm -f ./*.app.zip +# Enchant packaging changed between releases/package managers: +# - some installs provide share/enchant +# - others provide share/enchant-2 +# - some have no share-level config dir at all +# Keep the bundle definition in sync with what's actually available so +# gtk-mac-bundler doesn't fail on a missing source path. +ENCHANT_PREFIX_PATH="${ENCHANT_PREFIX:-}" +if [ -z "$ENCHANT_PREFIX_PATH" ] && command -v brew >/dev/null 2>&1; then + ENCHANT_PREFIX_PATH="$(brew --prefix enchant 2>/dev/null || true)" +fi + +if [ -n "$ENCHANT_PREFIX_PATH" ]; then + if [ -d "$ENCHANT_PREFIX_PATH/share/enchant" ]; then + perl -0pi -e 's|(\s*)\$\{prefix:enchant\}/share/enchant(?:-2)?(\s*)|$1\$\{prefix:enchant\}/share/enchant$2|s' "$BUNDLE_DEF" + elif [ -d "$ENCHANT_PREFIX_PATH/share/enchant-2" ]; then + perl -0pi -e 's|(\s*)\$\{prefix:enchant\}/share/enchant(?:-2)?(\s*)|$1\$\{prefix:enchant\}/share/enchant-2$2|s' "$BUNDLE_DEF" + else + perl -0pi -e 's|\n\s*\s*\$\{prefix:enchant\}/share/enchant(?:-2)?\s*\n|\n|s' "$BUNDLE_DEF" + fi +fi + # Keep Info.plist generation deterministic by always rendering from template # using a single, explicit version source.