#51287: Inkscape crashes on startup if enchant is installed with +applespell -------------------------------+---------------------- Reporter: jo.vanoost@… | Owner: devans@… Type: defect | Status: assigned Priority: Normal | Milestone: Component: ports | Version: Resolution: | Keywords: Port: inkscape enchant | -------------------------------+---------------------- Comment (by devans@…): Replying to [comment:6 raimue@…]:
Thank you for the analysis, David.
The idea of switching to enchant +applespell as default was meant to reduce the setup overhead for new users. As spell checking in the system is already configured for local language, users do not need to install extra dictionaries. Also, suggestions and custom additions would be adopted automatically.
It is interesting to see it actually crashes inside the call for [[https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSSpellChecker_Class/#//apple_ref/occ/clm/NSSpellChecker/sharedSpellChecker|'[NSSpellChecker sharedSpellChecker]']], which is provided by AppKit.framework. I don't think we have any more influence on the underlying libraries. This crash might even be specific to OS X 10.8.
To add some data point, I cannot reproduce this crash on OS X 10.10.5 Yosemite: {{{ $ port -q installed enchant inkscape enchant @1.6.0_4+applespell (active) inkscape @0.91_14+strict+x11 (active) }}}
Same here so it appears to be OS X version dependent. I can check 10.8+ but not earlier.
For the inkscape issue, it looks like inkscape picks up aspell on build
time opportunistically without declaring a dependency. This functionality should be disabled or the explicit dependency must be added. Agreed. The current dependencies were based on the expectation that enchant would configure with aspell by default (as it used to). The problem is that inkscape does the spellchecking in two pieces. It uses gtkspell -> enchant to transparently check spelling and underline spelling errors on the contents the text widget used to display a text object but then accesses aspell directly (not via enchant) to find suggested spellings, add to the dictionary, etc. Basically everything that is done in the spell checking dialog in the side pane. So for things to work consistently, enchant needs to be configured with aspell. Not great. In addition, during configuration they use the presence of aspell to indicate that the spell checking item should be enabled in the text menu but use an independent check for gtkspell to enable its use in the text widget. So it will try to use gtkspell even if aspell isn't available. A few things to think about upstream. I can use require_active_variants to mandate enchant +aspell but that will break the default build on the buildbots if enchant isn't configured with aspell by default. As the port description says, enchant was originally designed to use an aspell-like API. I believe this is generally the default on most Linux platforms. If applespell didn't break on 10.8, I'd suggest enchant +applespell +aspell by default. -- Ticket URL: <https://trac.macports.org/ticket/51287#comment:7> MacPorts <https://www.macports.org/> Ports system for OS X