labstreaminglayer / App-LabRecorder

An application for streaming one or more LSL streams to disk in XDF file format.
MIT License
123 stars 45 forks source link

MacOS .app fails to run due to bad RPATH #88

Closed joshgoheen closed 1 year ago

joshgoheen commented 1 year ago

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

cboulay commented 1 year ago

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.

cboulay commented 1 year ago

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)

cboulay commented 1 year ago

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

szerfas1 commented 1 year ago

-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:

Voila!

svenwinkelmann commented 1 year ago

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

cboulay commented 1 year ago

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

Dunya-8a commented 7 months ago

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 🥲