labstreaminglayer / App-LabRecorder

An application for streaming one or more LSL streams to disk in XDF file format.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MacOS .app fails to run due to bad RPATH

joshgoheen opened this issue · comments

Hello,

We are trying to install LSL on a Mac OS Monterey 12.4. We followed the instructions (dependencies first, then homebrew) but firstly, the program got installed in a different place. Instead of

/usr/local/opt/labrecorder/LabRecorder/LabRecorder.app

The LabRecorder.app got installed in:

/opt/homebrew/Cellar/labrecorder/1.16.2_9/LabRecorder/LabRecorder.app

When we try to run it using either open command or double clicking, the program crashes (without even seeing it open) and gives the error message:

LabRecorder quit unexpectedly. Click Report to see more detailed information and send a report to Apple.

Any help would be greatly appreciated.
Thanks,
Josh

Instead of double-clicking, or "open", you can try running the application binary from console and that will give you a more descriptive error.
The .app file is just an archive. You can run the files inside it.

>./labrecorder/1.16.2_9/LabRecorder/LabRecorder.app/Contents/MacOS/LabRecorder

I'm guessing this will get you a libbrotlicommon.dylib not found. Can you confirm? I'm looking into it now.

AFAIK, it's this Qt bug:
https://bugreports.qt.io/browse/QTBUG-100686

I know I've seen this before and I've worked around it, but I just tried it now and failed.
Part of the problem is MacOS security. Modifying the library loader paths breaks the security signature of the package and you can't run it anymore.

So your options are to (A) build it yourself or (B) disable your security. Neither of those are very appealing, I know. Building LabRecorder yourself isn't impossible.

Another option is to wait for me to build and deploy signed packages. Given that I've had that in my queue for a couple years already, I don't see it happening anytime soon.

I just rebuilt LabRecorder myself (MacOS 13.0, M1) and it ran fine. Here are the cmake arguments I used:

-DLSL_INSTALL_ROOT=/opt/homebrew/Cellar/lsl/1.16.0 -DQt6_DIR=/opt/homebrew/opt/qt/lib/cmake/Qt6

(so you'll have to brew install lsl and qt first)

No expectation this will work for you, but you can try
LabRecorder.app.zip

-DLSL_INSTALL_ROOT=/opt/homebrew/Cellar/lsl/1.16.0 -DQt6_DIR=/opt/homebrew/opt/qt/lib/cmake/Qt6

I'm excited you got this working, Chadwick. My C is terribly rusty and it took me a while to get this working myself. Spelling out here for anyone else who needs the play-by-play (I'm running M1 MacOS 12.1)

Here's what I've done:

  • brew install lsl qt
  • git clone git@github.com:labstreaminglayer/App-LabRecorder.git
  • cd App-LabRecorder
  • cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="build/install" -DLSL_INSTALL_ROOT=/opt/homebrew/Cellar/lsl/1.16.0 -DQt6_DIR=/opt/homebrew/opt/qt/lib/cmake/Qt6 (per instructions here and your options above)
  • cmake --build build --config Release --target install (to actually build the file)
  • open build/LabRecorder.app

Voila!

I can confirm @szerfas1 solution works for M1 MacOS 13.1, when you add a cd build between the two cmake commands. Thanks!

Future readers, if you encounter this problem then you may have to build LabRecorder for yourself. See above.

Thank you all! The solution still worked for me on Mac M2 13.3. @szerfas1 it would be great if you could add the "cd build" that @svenwinkelmann mentioned to your play-by-play. I know I should read better but I'm human, I guess - spent 20m on searching for issues with my cmake and the build cache 🥲