Bug 438658 - Plugins referencing Python Framework won't load on macOS
Summary: Plugins referencing Python Framework won't load on macOS
Status: REPORTED
Alias: None
Product: Craft
Classification: Unmaintained
Component: Core (other bugs)
Version First Reported In: stable
Platform: macOS (DMG) macOS
: NOR normal
Target Milestone: ---
Assignee: Hannah von Reth
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2021-06-15 00:54 UTC by Dawid Wróbel
Modified: 2021-06-15 00:54 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Dawid Wróbel 2021-06-15 00:54:23 UTC
SUMMARY

The KMyMoney on macOS fails to load one of its plugins, which in turn references libpython. It fails specifically because it links to "@executable_path/../Frameworks/Python3.framework/Versions/3.7/Python3", which is not present in the bundle. 


STEPS TO REPRODUCE
1. Download macOS dmg image from BKO
2. Run the app from console, e.g. $ ./Applications/kmymoney.app/Contents/MacOS/kmymoney
 

OBSERVED RESULT

Loading "/Applications/kmymoney.app/Contents/PlugIns/kmymoney/weboob.so"
Could not load plugin '/Applications/kmymoney.app/Contents/PlugIns/kmymoney/weboob.so', error: Cannot load library /Applications/kmymoney.app/Contents/PlugIns/kmymoney/weboob.so: (dlopen(/Applications/kmymoney.app/Contents/PlugIns/kmymoney/weboob.so, 133): Library not loaded: @executable_path/../Frameworks/Python3.framework/Versions/3.7/Python3
  Referenced from: /Applications/kmymoney.app/Contents/PlugIns/kmymoney/weboob.so
  Reason: no suitable image found.  Did find:
	file system relative paths not allowed in hardened programs)


EXPECTED RESULT

The plugin should load properly, by using the Framework correctly symlinked in the bundle, or it should reference system's framework (not sure what is the correct approach here).


SOFTWARE/OS VERSIONS
macOS: 11.4 (20F71)
Qt Version: Craft's own

ADDITIONAL INFORMATION

$ otool -L /Applications/kmymoney.app/Contents/PlugIns/kmymoney/weboob.so
/Applications/kmymoney.app/Contents/PlugIns/kmymoney/weboob.so:
	@executable_path/../Frameworks/Python3.framework/Versions/3.7/Python3 (compatibility version 3.7.0, current version 3.7.0)
	@executable_path/../Frameworks/libKF5Notifications.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libkmm_mymoney.5.dylib (compatibility version 5.0.0, current version 5.1.1)
	@executable_path/../Frameworks/libkmm_plugin.5.dylib (compatibility version 5.0.0, current version 5.1.1)
	@executable_path/../Frameworks/libalkimia5.8.dylib (compatibility version 8.0.0, current version 8.1.0)
	@executable_path/../Frameworks/libKF5TextWidgets.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libgmp.10.dylib (compatibility version 14.0.0, current version 14.2.0)
	@executable_path/../Frameworks/QtWebKitWidgets.framework/Versions/5/QtWebKitWidgets (compatibility version 5.212.0, current version 5.212.0)
	@executable_path/../Frameworks/QtWebKit.framework/Versions/5/QtWebKit (compatibility version 5.212.0, current version 5.212.0)
	@executable_path/../Frameworks/libKF5IdentityManagement.5.dylib (compatibility version 5.0.0, current version 5.16.3)
	@executable_path/../Frameworks/libKF5PimTextEdit.5.dylib (compatibility version 5.0.0, current version 5.16.3)
	@executable_path/../Frameworks/libKF5SonnetUi.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5AkonadiCore.5.dylib (compatibility version 5.0.0, current version 5.16.3)
	@executable_path/../Frameworks/libKF5Contacts.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5KIOWidgets.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5Completion.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5KIOGui.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5KIOCore.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/QtConcurrent.framework/Versions/5/QtConcurrent (compatibility version 5.15.0, current version 5.15.2)
	@executable_path/../Frameworks/libKF5JobWidgets.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5Solid.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5WindowSystem.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5Service.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5XmlGui.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5ItemViews.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.15.0, current version 5.15.2)
	@executable_path/../Frameworks/libKF5ConfigWidgets.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5WidgetsAddons.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5I18n.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5Codecs.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5ConfigGui.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/QtXml.framework/Versions/5/QtXml (compatibility version 5.15.0, current version 5.15.2)
	@executable_path/../Frameworks/libKF5ConfigCore.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5Auth.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.15.0, current version 5.15.2)
	@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (compatibility version 5.15.0, current version 5.15.2)
	@executable_path/../Frameworks/libKF5AuthCore.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/libKF5CoreAddons.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/QtDBus.framework/Versions/5/QtDBus (compatibility version 5.15.0, current version 5.15.2)
	@executable_path/../Frameworks/libKF5ItemModels.5.dylib (compatibility version 5.0.0, current version 5.83.0)
	@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore (compatibility version 5.15.0, current version 5.15.2)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 800.7.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.0.0)