[GRASS-user] GRASS GIS 7.03 for Mac OS X, problem with wxPython (missing)

Rainer M Krug Rainer at krugs.de
Wed Mar 16 03:24:15 PDT 2016


Rainer M Krug <Rainer at krugs.de> writes:

> Adam Dershowitz <adershowitz at exponent.com> writes:
>
>> Got it.  Now, based on that, I have found it.  Apparently, it is for
>> protected processes:
>>
>> https://developer.apple.com/library/mac/documentation/Security/Conceptual/S
>> ystem_Integrity_Protection_Guide/RuntimeProtections/RuntimeProtections.html
>>
>
> Which seems to be the reason why during the make step (make is in
> /usr/bin, therefore a protected binary), the DYLD_LIBRARY_PATH is
> ignored.
>
> But when running GRASS, it should work.
>
> Has anybody tried out to
>
> 1) disable SIP
> 2) compile GRASS from source
> 3) install GRASS
> 4) enable SIP
>
> and does it run?


Just tried it out, ant it works. So the DYLD_LIBRARY_PATH issue only
affects the compilation / installation of GRASS.


>
> Do you know if Macports uses an own make (and possibly other tools?), or
> the one supplied by OS X?
>
>
>> So, would it be possible to just just the paths that are used for the
>> search paths in the Application bundle itself?
>>
>> -- Adam
>>
>>
>>
>>
>>
>>
>> On 3/15/16, 4:43 PM, "William Kyngesburye" <woklist at kyngchaos.com> wrote:
>>
>>>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-darwin
>>>>>>>>15
>>>>>>>> .3.0/scripts/d.rast.leg"
>>>>>>>> | != "" ] ; then
>>>>>>>> | 
>>>>>>>> 
>>>>>>>>GISRC=/private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86_64-apple-d
>>>>>>>>ar
>>>>>>>> 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-d
>>>>>>>>ar
>>>>>>>> 
>>>>>>>>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/dis
>>>>>>>>t.
>>>>>>>> x86_64-apple-darwin15.3.0/scripts:$PATH"
>>>>>>>> | 
>>>>>>>> 
>>>>>>>>PYTHONPATH="/private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86_64-a
>>>>>>>>pp
>>>>>>>> 
>>>>>>>>le-darwin15.3.0/etc/python:/private/tmp/grass-7120160315-47344-1ybn5a
>>>>>>>>r/
>>>>>>>> dist.x86_64-apple-darwin15.3.0/gui/wxpython:$PYTHONPATH"
>>>>>>>> | 
>>>>>>>> 
>>>>>>>>DYLD_LIBRARY_PATH="/private/tmp/grass-7120160315-47344-1ybn5ar/dist.x
>>>>>>>>86
>>>>>>>> 
>>>>>>>>_64-apple-darwin15.3.0/bin:/private/tmp/grass-7120160315-47344-1ybn5a
>>>>>>>>r/
>>>>>>>> 
>>>>>>>>dist.x86_64-apple-darwin15.3.0/bin:/private/tmp/grass-7120160315-4734
>>>>>>>>4-
>>>>>>>> 
>>>>>>>>1ybn5ar/dist.x86_64-apple-darwin15.3.0/scripts:/private/tmp/grass-712
>>>>>>>>01
>>>>>>>> 
>>>>>>>>60315-47344-1ybn5ar/dist.x86_64-apple-darwin15.3.0/lib:/private/tmp/g
>>>>>>>>ra
>>>>>>>> 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-darwin1
>>>>>>>>5.
>>>>>>>> 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.sv
>>>>>>>>n.
>>>>>>>> dylib
>>>>>>>> |   Referenced from:
>>>>>>>> | 
>>>>>>>> 
>>>>>>>>/private/tmp/grass-7120160315-47344-1ybn5ar/dist.x86_64-apple-darwin1
>>>>>>>>5.
>>>>>>>> 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.s
>>>>>>>>vn
>>>>>>>> .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=5usL3OGqXabRLtSzGmh8YEvbco28TaiOmWcn6rC
>>>>>n8
>>>>> 
>>>>>wM&m=r1HkNs7RjOpSnmLwmP3Cs2L1e3PUB46Ip-W1bup-rFc&s=4w5wYepEPeebD54T1h_V7
>>>>>mJ
>>>>> 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_mail
>>>>>ma
>>>>> 
>>>>>n_listinfo_grass-2Duser&d=CwIGaQ&c=t0wRGL5ICVzH157W8C8Wew&r=5usL3OGqXabR
>>>>>Lt
>>>>> 
>>>>>SzGmh8YEvbco28TaiOmWcn6rCn8wM&m=r1HkNs7RjOpSnmLwmP3Cs2L1e3PUB46Ip-W1bup-
>>>>>rF
>>>>> c&s=Wvr4pv5ar3OjaTpiOn-UaLvVb2_IFgxGgKN0IHHRSXo&e=
>>>> 
>>>> _______________________________________________
>>>> grass-user mailing list
>>>> grass-user at lists.osgeo.org
>>>> 
>>>>https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.osgeo.org_mailm
>>>>an_listinfo_grass-2Duser&d=CwIFaQ&c=t0wRGL5ICVzH157W8C8Wew&r=5usL3OGqXabR
>>>>LtSzGmh8YEvbco28TaiOmWcn6rCn8wM&m=wBZVhJR1Vijar8vPd0vMw-5LMplYPnRZhF_TOf4
>>>>CZvY&s=dFMvzAURv7ExJqKWuHhJuiWSp1tVxWAQLXdLERfRUcY&e=
>>>
>>>-----
>>>William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
>>>https://urldefense.proofpoint.com/v2/url?u=http-3A__www.kyngchaos.com_&d=C
>>>wIFaQ&c=t0wRGL5ICVzH157W8C8Wew&r=5usL3OGqXabRLtSzGmh8YEvbco28TaiOmWcn6rCn8
>>>wM&m=wBZVhJR1Vijar8vPd0vMw-5LMplYPnRZhF_TOf4CZvY&s=GvawdpD6TkYdZwsdpwjWw1t
>>>6syI0zj0Ou2szNtTSNWQ&e=
>>>
>>>"I ache, therefore I am.  Or in my case - I am, therefore I ache."
>>>
>>>- Marvin
>>>
>>>
>>
>> _______________________________________________
>> grass-user mailing list
>> grass-user at lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/grass-user

-- 
Rainer M. Krug
email: Rainer<at>krugs<dot>de
PGP: 0x0F52F982
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 454 bytes
Desc: not available
URL: <http://lists.osgeo.org/pipermail/grass-user/attachments/20160316/eb3f83eb/attachment.sig>


More information about the grass-user mailing list