print

Grasp4Mac

Test downloads

Project with Charles Dewhurst

Grasp home page
Grasp manual

PSI quotes a wrong link : "The official website with the actual version of GRASP can be fount at http://www.ill.eu/instruments-support/instruments-groups/groups/lss/grasp/"

Version v2.0.3 - 27 Feb 2023

The Grasp4Mac bundle contains the embedded bundle grap.app provided by Charles Dewhurst. It is NOT yet signed and notarized.
Grasp4Mac checks for the availability of a suitable MatLab runtime and warns the user if it is missing.

In 2015 macOS El Capitan (10.11) introduced SIP (System Integrity Protection)
When enabled the environment variable DYLD_LIBRARY_PATH is ignored and one has to use the RPATH mechanism instead for loading libraries.
Unfortunately enough some MatLab libraries also use DYLD_LIBRARY_PATH for the access to some data files. These files are not found and Grasp stops.

Error: Could not find version 9.11 of the MATLAB Runtime.
Attempting to load libmwmclmcrrt.9.11.dylib.

This message is missleading since the dylib is found but some some auxiliary files.

Test download: Grasp4Mac-v203.dmg (dmg - 27 Mi)     <-- NOT signed/notarized

Version 2.0.0 - 7 Feb 2023

First notarized bundle

Xcode problem

In Xcode 13 and 14, the folder "Products" may not show.

<https://developer.apple.com/forums/thread/77406>; Xcode "Products" folder missing in project navigator

The problem is still present with Xcode 14.2. I prepared a fresh new project and the Products folder never showed up.
The solution for me was inherited from Pulsar's post but with much less editing of the ".pbxproj" file:

1- Quit Xcode
2- Open the bundle MYPROJECT.xcodeproj
3- Edit the file MYPROJECT.pbxproj
4- Search for "Products"
I found the following :

/* Begin PBXGroup section */
        5D1FC2932992BC6900AA5910 = {
            isa = PBXGroup;
            children = (
                5D1FC2B92992BEC100AA5910 /* myBinary1 */,
                5D1FC29E2992BC6900AA5910 /* myProject */,
                5D1FC2BB2992BEF000AA5910 /* myBinary2 */,
                5D1FC29D2992BC6900AA5910 /* Products */,
            );
5- Simply move the "/* Products */" line to the top of the "children" list
                5D1FC29D2992BC6900AA5910 /* Products */,
                5D1FC2B92992BEC100AA5910 /* myBinary1 */,
                5D1FC29E2992BC6900AA5910 /* myProject */,
                5D1FC2BB2992BEF000AA5910 /* myBinary2 */,
6- Save and reopen Xcode.
The folder "Products" was again visible in the project navigator.

Library problem

<https://developer.apple.com/forums/thread/725674>  Apple Developer Forums

DYLD_LIBRARY_PATH=.

DYLD_LIBRARY_PATH=/Applications/MATLAB/MATLAB_Runtime/v911/runtime/maci64
DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Applications/MATLAB/MATLAB_Runtime/v911/sys/os/maci64
DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Applications/MATLAB/MATLAB_Runtime/v911/bin/maci64
DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/Applications/MATLAB/MATLAB_Runtime/v911/extern/bin/maci64

The RPATH alternative compatible with SIP

install_name_tool -add_rpath "/." grasp
install_name_tool -add_rpath "/Applications/MATLAB/MATLAB_Runtime/v911/bin/maci64" grasp
install_name_tool -add_rpath "/Applications/MATLAB/MATLAB_Runtime/v911/runtime/maci64" grasp
install_name_tool -add_rpath "/Applications/MATLAB/MATLAB_Runtime/v911/sys/os/maci64" grasp
install_name_tool -add_rpath "/Applications/MATLAB/MATLAB_Runtime/v911/extern/bin/maci64" grasp
otool -l grasp | grep -B 1 -A 2 LC_RPATH

This libraries are loaded but auxiliary files are not found since DYLD_LIBRARY_PATH is hidden by SIP.