[GRASS-user] GRASS GIS 7.03 for Mac OS X, problem with wxPython (missing)
William Kyngesburye
woklist at kyngchaos.com
Tue Mar 15 13:43:16 PDT 2016
GRASS does not write to those SIP-restricted locations.
From what I've read, SIP also causes apps to ignore DYLD_LIBRARY_PATH, no matter where it points to. And the errors that have been reported point to it as well.
> On Mar 15, 2016, at 3:06 PM, Adam Dershowitz <adershowitz at exponent.com> wrote:
>
>
>
>
>
> On 3/15/16, 3:37 PM, "grass-user on behalf of William Kyngesburye"
> <grass-user-bounces at lists.osgeo.org on behalf of woklist at kyngchaos.com>
> wrote:
>
>> On Mar 15, 2016, at 2:05 PM, Rainer M Krug <Rainer at krugs.de> wrote:
>>>
>>> William Kyngesburye <woklist at kyngchaos.com> writes:
>>>
>>>> This is also a known issue, related to but separate from the packaging
>>>> issue. During compilation, GRASS also uses DYLD_LIBRARY_PATH to find
>>>> the in-compilation copies of the libraries so it can run the modules
>>>> to create the help files.
>>>
>>> OK - this aligns with what I guessed from the error messages.
>>>
>>> So the DYLD_LIBRARY_PATH is only used during compilation - and not
>>> during execution, even without "make install"?
>>>
>> No, DYLD_LIBRARY_PATH is also used during execution, that's what's
>> causing trouble in the app bundling.
>>
>>>>
>>>> The packaging issue with DYLD_LIBRARY_PATH can be fixed in packaging
>>>> so that everything within the GRASS app package looks directly inside
>>>> the package for libraries and not rely on DYLD_LIBRARY_PATH.
>>>> Homebrew, Macports and /usr/local builds don't need to worry about it
>>>> because the extra dependencies that are bundled in the app are already
>>>> in their proper place.
>>>
>>> OK - so in homebrew (I can't speak for Macports) the issue is at the
>>> moment only the one you discuss below.
>>>
>>>>
>>>> The compilation issue needs work to compile all libraries with the
>>>> temporary path inside the libraries and modules (this part is easy) so
>>>> that during compilation help file generation works.
>>>
>>> OK - so can you give me any suggestions how I can solve this to make
>>> GRASS at least compile on homebrew?
>>>
>>> Speaking generally - is this really the right approach to take, i.e. use
>>> the generated binaries to generate the help files during installation?
>>> Wouldn't it be much easier to do this during installation?
>>>
>> Well, the compilation approach is how it's been done as long as I can
>> remember, it's nothing specific to OS X. Changing this would be major.
>>
>>>> And then during installation change all the embedded library paths to
>>>> the final destination (this is harder, to figure out the complex
>>>> makefile include system of GRASS to get this operation in the right
>>>> place).
>>>
>>> The paths are in the grass script file? Or in others as well?
>>>
>> No, the paths are embedded in the libraries and binary executables.
>>
>>> Wouldn't it make sense to
>>>
>>> 1) split the generation of the help files from the build step into a
>>> separate make target
>>> 2) call the make target for help pages as a last step in the install
>>> step?
>>>
>>> This might make packaging more difficult, but wouldn't it make the whole
>>> process clearer?
>>>
>>>> Homebrew, Macports, /usr/local AND app installs do have a problem with
>>>> this.
>>>
>>> It worked with Yosemite without problems. So this only needs to be done,
>>> because of the issues you describe above?
>>>
>> It's specifically an El Capitan+ issue, because of SIP.
>
> I wonder if you can explain this anymore. Because, it is not at all clear
> to me. DYLD_LIBRARY_PATH is something that is used all the time and works
> fine in El Capitan for most Applications. The only thing that SIP
> provides, if I understand correctly, is that it is not possible for an
> application to write to /System /bin /sbin or /usr (and a few Apple
> specifics in /Applications). Writing to /usr/local and /usr/lib should be
> OK. Just having all the different versions of libraries around, and
> dynamically finding them should work fine.
> So, during run time, why does GRASS attempt to write to /usr (or one of
> the other Apple owned folders? If it is using DYLD_LIBRARY_PATH to find
> the necessary libraries from within the GRASS bundle, there should be no
> need to write there.
> Is it doing something unusual, such as at startup it tries to copy a few
> files from the bundle to /usr so that it doesn¹t have to change
> DYLD_LIBRARY_PATH? Even if that is the case, just changing those paths to
> /usr/local would solve the SIP problem.
>
> If the problem relates to how GRASS finds the correct version of
> libraries, at least as a work around, it should be possible to use
> install_name_tool to point to the correct version of libraries for any
> specific build. This is what I first attempted, but just fixing one
> library didn¹t do the job for me, as it then triggered another problem.
> So, I really don¹t understand what it is that GRASS does, at runtime, that
> SIP objects to.
>
>
>>
>>>> It works for Michael (and me) for the "official" packages because we
>>>> compile on older systems that don't have SIP.
>>>
>>> Thanks for these clarifications.
>>>
>>> I would very much appreciate if we could see to get the compilation and
>>> installation working using homebrew so that there is at least one way of
>>> t=running GRASS on El Capitan without having to interfere with the
>>> security settings.
>>>
>>> Thanks,
>>>
>>> Rainer
>>>
>>>>
>>>>> On Mar 15, 2016, at 11:39 AM, Rainer M Krug <Rainer at krugs.de> wrote:
>>>>>
>>>>>
>>>>> I tried again to install 7.1 head without GUI using homwbrew, and I
>>>>> get
>>>>> the following error:
>>>>>
>>>>> ,----
>>>>> | bash-4.3$ less
>>>>> /Users/rainerkrug/Library/Logs/Homebrew/grass-71/02.make
>>>>> | bash-4.3$ cd
>>>>> /private/tmp/grass-7120160315-47344-1ybn5ar/scripts/d.rast.leg
>>>>> | bash-4.3$ ls
>>>>> | Makefile d.rast.leg.html d.rast.leg.py
>>>>> | bash-4.3$ make
>>>>> | if [
>>>>> |
>>>>> "/private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86_64-apple-darwin15
>>>>> .3.0/scripts/d.rast.leg"
>>>>> | != "" ] ; then
>>>>> |
>>>>> GISRC=/private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86_64-apple-dar
>>>>> win15.3.0/demolocation/.grassrc71
>>>>> |
>>>>> GISBASE=/private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86_64-apple-d
>>>>> arwin15.3.0
>>>>> |
>>>>> PATH="/private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86_64-apple-dar
>>>>> win15.3.0/bin:/private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86_64-a
>>>>> pple-darwin15.3.0/bin:/private/tmp/grass-7120160315-47344-1ybn5ar/dist.
>>>>> x86_64-apple-darwin15.3.0/scripts:$PATH"
>>>>> |
>>>>> PYTHONPATH="/private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86_64-app
>>>>> le-darwin15.3.0/etc/python:/private/tmp/grass-7120160315-47344-1ybn5ar/
>>>>> dist.x86_64-apple-darwin15.3.0/gui/wxpython:$PYTHONPATH"
>>>>> |
>>>>> DYLD_LIBRARY_PATH="/private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86
>>>>> _64-apple-darwin15.3.0/bin:/private/tmp/grass-7120160315-47344-1ybn5ar/
>>>>> dist.x86_64-apple-darwin15.3.0/bin:/private/tmp/grass-7120160315-47344-
>>>>> 1ybn5ar/dist.x86_64-apple-darwin15.3.0/scripts:/private/tmp/grass-71201
>>>>> 60315-47344-1ybn5ar/dist.x86_64-apple-darwin15.3.0/lib:/private/tmp/gra
>>>>> ss-7120160315-47344-1ybn5ar/dist.x86_64-apple-darwin15.3.0/lib:"
>>>>> | LC_ALL=C
>>>>> |
>>>>> /private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86_64-apple-darwin15.
>>>>> 3.0/scripts/d.rast.leg
>>>>> | --html-description < /dev/null | grep -v '</body>\|</html>' >
>>>>> | d.rast.leg.tmp.html ; fi
>>>>> | dyld: Library not loaded:
>>>>> /usr/local/Cellar/grass-71/HEAD/grass-7.1.svn/lib/libgrass_gis.7.1.svn.
>>>>> dylib
>>>>> | Referenced from:
>>>>> |
>>>>> /private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86_64-apple-darwin15.
>>>>> 3.0/bin/g.parser
>>>>> | Reason: image not found
>>>>> | make: *** [d.rast.leg.tmp.html] Error 1
>>>>> | rm d.rast.leg.tmp.html
>>>>> | bash-4.3$
>>>>> `----
>>>>>
>>>>> In other words: grass is looking during the compilation for a dynamic
>>>>> library
>>>>>
>>>>> (/usr/local/Cellar/grass-71/HEAD/grass-7.1.svn/lib/libgrass_gis.7.1.svn
>>>>> .dylib)
>>>>> which has been created, but will only be there when installing.
>>>>>
>>>>> Also important: this error only occurs when the html manual pages are
>>>>> created!
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Rainer
>>>>>
>>>>>
>>>>> Rainer M Krug <Rainer at krugs.de> writes:
>>>>>
>>>>>> Adam Dershowitz <adershowitz at exponent.com> writes:
>>>>>>
>>>>>>> I use Macports for a bunch of other things (and Homebrew is
>>>>>>> incompatible
>>>>>>> with Macports) So, I figured that I would just tried to install
>>>>>>> grass7
>>>>>>> using macports. It does seem to install, but the gui doesn¹t work:
>>>>>>>
>>>>>>> $grass70
>>>>>>> Cleaning up temporary files...
>>>>>>> Starting GRASS GIS...
>>>>>>> ERROR: wxGUI requires wxPython. No module named wxversion
>>>>>>> Error in GUI startup. If necessary, please report this error to the
>>>>>>> GRASS
>>>>>>> developers.
>>>>>>> Switching to text mode now.
>>>>>>>
>>>>>>
>>>>>> I don't use MacPorts - but can you try to install without GUI?
>>>>>>
>>>>>>>
>>>>>>> Hit RETURN to continue...
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> This is odd, since wxpython is installed.
>>>>>>> But, it seems like this is a different problem.
>>>>>>>
>>
>> -----
>> William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__www.kyngchaos.com_&d=C
>> wIGaQ&c=t0wRGL5ICVzH157W8C8Wew&r=5usL3OGqXabRLtSzGmh8YEvbco28TaiOmWcn6rCn8
>> wM&m=r1HkNs7RjOpSnmLwmP3Cs2L1e3PUB46Ip-W1bup-rFc&s=4w5wYepEPeebD54T1h_V7mJ
>> Bf8t6V3mbREBfgUP8u90&e=
>>
>> "Oh, look, I seem to have fallen down a deep, dark hole. Now what does
>> that remind me of? Ah, yes - life."
>>
>> - Marvin
>>
>>
>> _______________________________________________
>> grass-user mailing list
>> grass-user at lists.osgeo.org
>> https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.osgeo.org_mailma
>> n_listinfo_grass-2Duser&d=CwIGaQ&c=t0wRGL5ICVzH157W8C8Wew&r=5usL3OGqXabRLt
>> SzGmh8YEvbco28TaiOmWcn6rCn8wM&m=r1HkNs7RjOpSnmLwmP3Cs2L1e3PUB46Ip-W1bup-rF
>> c&s=Wvr4pv5ar3OjaTpiOn-UaLvVb2_IFgxGgKN0IHHRSXo&e=
>
> _______________________________________________
> grass-user mailing list
> grass-user at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/grass-user
-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/
"I ache, therefore I am. Or in my case - I am, therefore I ache."
- Marvin
More information about the grass-user
mailing list