[GRASS-dev] GRASS on OS X El Capitan - slowly dying or is something happening?

AFAICT, the binaries I am compiling under Mavericks work with El Capitan IF you turn off System Integrity Protection (to get to the same level of security available in Mavericks).

I have not yet updated to El Capitan because I’m hoping someone can tell me if they can compile GRASS with it. I don’t want to get to situation where I can’t produce binaries for the community. But I would like to upgrade pretty soon.

There are several things in process right now. William, Brian Miles, and I have talked about how to deal with the SIP problem. William has an idea of why it is a problem. Fixing it will require significant change for how dependencies are packaged and referenced. This related to the second thing.

We’ve had to compile GRASS with dual 32 bit/64 bit architecture for several years because v. 2.8.x of wxPython is 32 bit and subsequent versions of wxPython did not work well or did not work with GRASS. We’ve started trying again to get GRASS working with 64 bit wxPython 3 and are having some success. (If anyone wants to test a version, please let me know and I’ll provide a link to a binary). Because we have to package wxPython with GRASS, and the 32/64 bit dual architecture compilation is causing increasing problems, we need to solve that.

If we can get these things worked out, I hope someone can try to compile GRASS with El Capitan and stock Mac Python, etc. to make sure it all works.

Michael


C. Michael Barton
Director, Center for Social Dynamics & Complexity
Professor of Anthropology, School of Human Evolution & Social Change
Head, Graduate Faculty in Complex Adaptive Systems Science
Arizona State University

voice: 480-965-6262 (SHESC), 480-965-8130/727-9746 (CSDC)
fax: 480-965-7671 (SHESC), 480-727-0709 (CSDC)

www: http://www.public.asu.edu/~cmbarton, http://csdc.asu.edu

On Jan 21, 2016, at 6:51 AM, grass-dev-request@lists.osgeo.org wrote:

From: Rainer M Krug <Rainer@krugs.de>

Subject: Re: [GRASS-dev] GRASS on OS X El Capitan - slowly dying or is something happening?

Date: January 21, 2016 at 2:01:56 AM MST

To: William Kyngesburye <woklist@kyngchaos.com>

Cc: <grass-dev@lists.osgeo.org>, William Kyngesburye <kyngchaos@kyngchaos.com>

William Kyngesburye <woklist@kyngchaos.com> writes:

There are a couple ideas floating around.

I’m surprised Homebrew has a problem. Since it would leave everything
in the configured location (/usr/local), there should not be library
paths pointing somewhere else that would need DYLD_LIBRARY_PATH to
divert.

homebrew is compiling in a temporary location, and than installing it to
/usr/local/Cellar/.

The problem is the same why I had to install and than compile again:

,----
| bash-4.3$ make
| if [ “/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/scripts/d.out.file” != “” ] ; then GISRC=/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/demolocation/.grassrc70 GISBASE=/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0 PATH=“/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/bin:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/bin:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/scripts:$PATH” PYTHONPATH=“/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/etc/python:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/gui/wxpython:$PYTHONPATH” DYLD_LIBRARY_PATH=“/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/bin:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/scripts:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/lib:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/lib:” LC_ALL=C /private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/scripts/d.out.file --html-description < /dev/null | grep -v ‘|’ > d.out.file.tmp.html ; fi
| dyld: Library not loaded: /usr/local/Cellar/grass-70/7.0.1/grass-7.0.1/lib/libgrass_gis.7.0.1.dylib
| Referenced from: /private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/bin/g.parser
| Reason: image not found
| make: *** [d.out.file.tmp.html] Error 1
| rm d.out.file.tmp.html
| bash-4.3$
`----

During make, the html documentation is created. For this,
libgrass_gis.7.0.1.dylib is needed. It is already compiled, but not
installed.

It is in

,----
| bash-4.3$ ls -la /private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/lib/libgrass_gis*
| -rwxr-xr-x 1 rainerkrug wheel 218244 Jan 21 09:37 /private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/lib/libgrass_gis.7.0.1.dylib
| lrwxr-xr-x 1 rainerkrug wheel 24 Jan 21 09:37 /private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/lib/libgrass_gis.dylib → libgrass_gis.7.0.1.dylib
| bash-4.3$
`----

And I assume the path where it is located is in the DYNLIB_ variable
which is ignored.

This problem should be solvable, when somehow the path to the compiled
(but not installed) could be temporarily added during the make.

Any suggestions how this could be done?

Rainer

First of all thanks a lot for the positive responses from William and
Michael that GRASS on OS X is not dying - this makes me feel much better.

Furthewr responses below in text.

Michael Barton <Michael.Barton@asu.edu> writes:

AFAICT, the binaries I am compiling under Mavericks work with El
Capitan IF you turn off System Integrity Protection (to get to the
same level of security available in Mavericks).

That is good to know.

I have not yet updated to El Capitan because I'm hoping someone can
tell me if they can compile GRASS with it. I don't want to get to
situation where I can't produce binaries for the community. But I
would like to upgrade pretty soon.

I upgraded and apart from GRASS and the bash variables which are not
passed on to new processes started via Finder (sorry - no reference for
this at hand) did not regret it - but as you say, your binaries are
quite important for the community.

There are several things in process right now. William, Brian Miles,
and I have talked about how to deal with the SIP problem. William has
an idea of why it is a problem. Fixing it will require significant
change for how dependencies are packaged and referenced. This related
to the second thing.

Good to know.

We've had to compile GRASS with dual 32 bit/64 bit architecture for
several years because v. 2.8.x of wxPython is 32 bit and subsequent
versions of wxPython did not work well or did not work with GRASS.
We've started trying again to get GRASS working with 64 bit wxPython 3
and are having some success. (If anyone wants to test a version,
please let me know and I'll provide a link to a binary). Because we
have to package wxPython with GRASS, and the 32/64 bit dual
architecture compilation is causing increasing problems, we need to
solve that.

If we can get these things worked out, I hope someone can try to
compile GRASS with El Capitan and stock Mac Python, etc. to make sure
it all works.

I must say I am a homebrew user, and I compiled GRASS from source on El
Capitan. Following the steps described in earlier emails, I was able to
compile and install GRASS, although it still needs the source directory
where it is compiled to run (I guess this is what you are referring
above).

I am happy to try to compile it and try it out (although I am not using
GRASS directly, only from R). But I have python 2.7.11 from homebrew. I
have also python 3.5.1 installed via homebrew.

Let me know if I can help with compiling / testing as I would like to
have it running again in homebrew as well.

Cheers,

Rainer

Michael
____________________
C. Michael Barton
Director, Center for Social Dynamics & Complexity
Professor of Anthropology, School of Human Evolution & Social Change
Head, Graduate Faculty in Complex Adaptive Systems Science
Arizona State University

voice: 480-965-6262 (SHESC), 480-965-8130/727-9746 (CSDC)
fax: 480-965-7671 (SHESC), 480-727-0709 (CSDC)
www: http://www.public.asu.edu/~cmbarton, http://csdc.asu.edu

    On Jan 21, 2016, at 6:51 AM, grass-dev-request@lists.osgeo.org
    wrote:

    From: Rainer M Krug <Rainer@krugs.de>
    
    Subject: Re: [GRASS-dev] GRASS on OS X El Capitan - slowly dying
    or is something happening?
    
    Date: January 21, 2016 at 2:01:56 AM MST
    
    To: William Kyngesburye <woklist@kyngchaos.com>
    
    Cc: <grass-dev@lists.osgeo.org>, William Kyngesburye
    <kyngchaos@kyngchaos.com>
    
    William Kyngesburye <woklist@kyngchaos.com> writes:
    
        There are a couple ideas floating around.
        
        I'm surprised Homebrew has a problem. Since it would leave
        everything
        in the configured location (/usr/local), there should not be
        library
        paths pointing somewhere else that would need
        DYLD_LIBRARY_PATH to
        divert.
        
    homebrew is compiling in a temporary location, and than installing
    it to
    /usr/local/Cellar/.
    
    The problem is the same why I had to install and than compile
    again:
    
    ,----
    | bash-4.3$ make
    | if [
    "/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/scripts/d.out.file"
    != "" ] ; then
    GISRC=/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/demolocation/.grassrc70
    GISBASE=/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0
    PATH="/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/bin:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/bin:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/scripts:$PATH"
    PYTHONPATH="/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/etc/python:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/gui/wxpython:$PYTHONPATH"
    DYLD_LIBRARY_PATH="/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/bin:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/scripts:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/lib:/private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/lib:"
    LC_ALL=C
    /private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/scripts/d.out.file
    --html-description < /dev/null | grep -v '</body>\|</html>' >
    d.out.file.tmp.html ; fi
    | dyld: Library not loaded:
    /usr/local/Cellar/grass-70/7.0.1/grass-7.0.1/lib/libgrass_gis.7.0.1.dylib
   
    | Referenced from:
    /private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/bin/g.parser
   
    | Reason: image not found
    | make: *** [d.out.file.tmp.html] Error 1
    | rm d.out.file.tmp.html
    | bash-4.3$
    `----
    
    During make, the html documentation is created. For this,
    libgrass_gis.7.0.1.dylib is needed. It is already compiled, but
    not
    installed.
    
    It is in
    
    ,----
    | bash-4.3$ ls -la
    /private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/lib/libgrass_gis*
   
    | -rwxr-xr-x 1 rainerkrug wheel 218244 Jan 21 09:37
    /private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/lib/libgrass_gis.7.0.1.dylib
   
    | lrwxr-xr-x 1 rainerkrug wheel 24 Jan 21 09:37
    /private/tmp/grass-7020160121-38274-ed29gx/grass-7.0.1/dist.x86_64-apple-darwin15.2.0/lib/libgrass_gis.dylib
    -> libgrass_gis.7.0.1.dylib
    | bash-4.3$
    `----
    
    And I assume the path where it is located is in the DYNLIB_
    variable
    which is ignored.
    
    This problem should be solvable, when somehow the path to the
    compiled
    (but not installed) could be temporarily added during the make.
    
    Any suggestions how this could be done?
    
    Rainer

--
Rainer M. Krug
email: Rainer<at>krugs<dot>de
PGP: 0x0F52F982