gnudatalanguage / gdl

GDL - GNU Data Language
GNU General Public License v2.0
277 stars 61 forks source link

OSX Intel installation problem #1642

Closed tkleespies closed 1 year ago

tkleespies commented 1 year ago

When I execute

spctl --add /Applications/GNU Data Language.app

I get

invalid API object reference

iMac 3.8 GHz 8-core Intel i7 OS Ventura 13.5.2

Any ideas?

Barney-9000 commented 1 year ago

Ah, yes -- you need to escape the spaces in the app name. Try:

spctl --add /Applications/GNU\ Data\ Language.app

Having said that, I recently tried myself to install 1.0.3 on macOS using the dmg package. Starting GDL by double-clicking the app launches a Terminal window, which reports:

- Using WxWidgets as graphics library (windows and widgets). - Using local drivers in /Applications/GNU Data Language.app/Contents/Resources/bin/../share/gnudatalanguage/drivers

However, any command that creates a graphics window fails:

GDL> tvscl, dist(100) % Compiled module: DIST. % TVSCL: PLplot installation lacks the requested driver: wxwidgets

Is it possible that it could also be spaces in the file or directory names causing problems?

tkleespies commented 1 year ago

Thanks for the suggestion about escaping the spaces. My unix is a couple of decades rusty and it was not very strong to begin with.

So the spctl seemed to run OK, but when I double click the GNU Data Language icon I get:

=============================================================== Last login: Fri Sep 22 21:34:55 on ttys040 /Applications/GNU\ Data\ Language.app/Contents/Resources/bin/gdl ; exit;

The default interactive shell is now zsh. To update your account to use zsh, please run chsh -s /bin/zsh. For more details, please visit https://support.apple.com/kb/HT208050. lauries-imac:~ Laurie$ /Applications/GNU\ Data\ Language.app/Contents/Resources/bin/gdl ; exit; dyld[36822]: Library not loaded: @rpath/libcsirocsa.0.dylib Referenced from: <3A7FAEE7-378E-3D84-B1AB-A8987061A57F> /Applications/GNU Data Language.app/Contents/Frameworks/libplplot.17.dylib Reason: tried: '/usr/local/lib/libcsirocsa.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/lib/libcsirocsa.0.dylib' (no such file), '/Applications/GNU Data Language.app/Contents/Resources/bin/./libcsirocsa.0.dylib' (no such file), '/usr/local/lib/libcsirocsa.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/lib/libcsirocsa.0.dylib' (no such file), '/usr/local/Cellar/netcdf/4.9.2_1/lib/libcsirocsa.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/Cellar/netcdf/4.9.2_1/lib/libcsirocsa.0.dylib' (no such file), '/usr/local/Cellar/llvm/16.0.6/lib/libcsirocsa.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/Cellar/llvm/16.0.6/lib/libcsirocsa.0.dylib' (no such file), '/Applications/GNU Data Language.app/Contents/Frameworks/libcsirocsa.0.dylib' (no such file), '/usr/local/lib/libcsirocsa.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/lib/libcsirocsa.0.dylib' (no such file), '/usr/local/Cellar/netcdf/4.9.2_1/lib/libcsirocsa.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/Cellar/netcdf/4.9.2_1/lib/libcsirocsa.0.dylib' (no such file), '/usr/local/Cellar/llvm/16.0.6/lib/libcsirocsa.0.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/usr/local/Cellar/llvm/16.0.6/lib/libcsirocsa.0.dylib' (no such file), '/Applications/GNU Data Language.app/Contents/Frameworks/libcsirocsa.0.dylib' (no such file), '/usr/local/lib/libcsirocsa.0.dylib' (no such file), '/usr/lib/libcsirocsa.0.dylib' (no such file, not in dyld cache) Abort trap: 6 logout

Saving session... ...copying shared history... ...saving history...truncating history files... ...completed.

[Process completed]

=============================================================== So, GDL is not activating. It looks like a lot of paths are not defined.

GillesDuvert commented 1 year ago

That's too bad. There was a lot of effort put in convincing OSX not only to include all needed libraries in the App but also to find these and not any others at runtime. Obviously some more effort is required since there is some problem with this plpot (unnecessary) dependency. Installing plplot independently would probably provide this libcsirocsa dylib but this would almost amount to compile GDL, unfortunately.

GillesDuvert commented 1 year ago

@tkleespies I however wonder: is there a libcsirocsa dylib present in the App (right-click on the App, select "Show Content" and it should be in the Frameworks subdirectory?

tkleespies commented 1 year ago

There is not a libcsirocsa dylib present in the App .

This should be a jpg of a screen capture of the contents:

GNU_libaries

Barney-9000 commented 1 year ago

There is not a libcsirocsa dylib present in the App .

Same here.

BTW, on macOS 11.7.10, the terminal created when GDL is launched from the app has the following (all on one line) in the startup report: Using local drivers in /Applications/GNU Data Language.app/Contents/Resources/bin/../share/gnudatalanguage/drivers

Is is possible (on macOS) that is literally where GDL is looking? Rather than: /Applications/GNU\ Data\ Language.app/Contents/Resources/bin/../share/gnudatalanguage/drivers

Just a thought...

GillesDuvert commented 1 year ago

No, no need to escape the blanks. Actually the DMG works well on the two machines, a M1 and a Intel, where GDL has been compiled and the DMG created. But since the plplot libraries are installed (even if it is locally) on the machine, OSX finds them in the @rpath. The problem apparently concerns only libcsirocsa (and probably libcsironn too) that are two libraries needed by the libplplot library itself (and of no interest for us, BTW). The building procedure of the App find recursively all needed libraries (so libcsirocsa should be found) and should copy all of them in Resources but this is complicated for plplot as plplot has been compiled locally, after we make patches. The @rpath redefinition mechanism does not work well in this case. See build_gdl.sh for more info. As nobody in the team and me to begin with do not understand the OSX dylib 'rpath' subtetlies (and we are not alone on the Web) this may need an expert...

tkleespies commented 1 year ago

There is no libcsirocsa anywhere on this iMac. It seems to be a cubic spline library from CSIRO. I would have thought all of the necessary libraries would be included in a binary distribution. Is this library a PLPLOT requirement? (I don't have that installed either, having been a PGPLOT user in my working life).

While I am a passable scientific programmer, I am not a systems programmer, and could use any help anyone can offer.

GillesDuvert commented 1 year ago

The library is part of the plplot installation and is AFAIK distributed only with plplot. As GDL does not use it (GDL gridding algorithm is ~1000 times more efficient :smile:) we did not realize it could be a problem.

Now that the absence of libscirocsa is identified, there will be a patch in the DMG building procedure and you'll be able to retrieve a new DMG from the unstable weekly DMG.

Until then, as the library must be present somewhere, you could install plplot with macports or homebrew. Or find the dylib on the web (?).

GillesDuvert commented 1 year ago

The absence of needed libs is now solved. the weekly release of dmg may thus work, however only for a machine with the same version of OS libraries as the one its is buit with, on the Github continuous integration machine. See https://github.com/gnudatalanguage/gdl/releases/download/weekly-release. Installing by compiling is alas the only general way to get gdl on mac, please see the wiki for updated instructions.