Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Stand-alone Build Instructions for Mac? #411

Closed
MisutaaAsriel opened this issue Dec 12, 2020 · 7 comments
Closed

Stand-alone Build Instructions for Mac? #411

MisutaaAsriel opened this issue Dec 12, 2020 · 7 comments

Comments

@MisutaaAsriel
Copy link

MisutaaAsriel commented Dec 12, 2020

Description

I am interested in trying this out for Mac, but due to both space constraints and other reasons, I don't really want to build OBS from scratch; I would rather build this project stand-alone and add the built plugin to my plugins folder, seeing as there are no pre-built macOS binaries.

However, I am unable to get a standalone build working. I tried modifying the build instructions to follow that of OBS', resulting in a command line that looks like this:

cmake -H. -B"build/flux" -DOBS_DOWNLOAD=ON -DCMAKE_PACKAGE_NAME=StreamFX -DCMAKE_PACKAGE_PREFIX="build/package" -DCMAKE_INSTALL_PREFIX="build/distrib" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.15 -DCMAKE_PREFIX_PATH="/tmp/obsdeps" -DDepsPath="/tmp/obsdeps" .

And using obs-deps prebuilt binaries for the necessary dependancies. However, whilst it does build, it crashes OBS.

OBS reports an issue with the QT framework when attempting to load StreamFX. Here is the crash output on the relevant thread:

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
abort() called

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff202ed462 __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff2031b610 pthread_kill + 263
2   libsystem_c.dylib             	0x00007fff2026e720 abort + 120
3   org.qt-project.QtCore         	0x0000000019d761e9 0x19d5e000 + 98793
4   org.qt-project.QtCore         	0x000000001a0ab1de QMessageLogger::fatal(char const*, ...) const + 196
5   org.qt-project.QtWidgets      	0x000000001957a3f1 0x191c4000 + 3892209
6   org.qt-project.QtWidgets      	0x00000000191f99e5 QWidgetPrivate::QWidgetPrivate(int) + 485
7   org.qt-project.QtWidgets      	0x000000001934f2da QMenu::QMenu(QWidget*) + 42
8   StreamFX.so                   	0x0000000024012b6d streamfx::ui::handler::handler() + 333
9   StreamFX.so                   	0x0000000024013a75 streamfx::ui::handler::handler() + 21
10  StreamFX.so                   	0x0000000024015935 std::__1::__compressed_pair_elem<streamfx::ui::handler, 1, false>::__compressed_pair_elem(std::__1::__value_init_tag) + 21
11  StreamFX.so                   	0x00000000240158d6 std::__1::__compressed_pair<std::__1::allocator<streamfx::ui::handler>, streamfx::ui::handler>::__compressed_pair<std::__1::allocator<streamfx::ui::handler>, std::__1::__value_init_tag>(std::__1::allocator<streamfx::ui::handler>&&, std::__1::__value_init_tag&&) + 86
12  StreamFX.so                   	0x0000000024015755 std::__1::__compressed_pair<std::__1::allocator<streamfx::ui::handler>, streamfx::ui::handler>::__compressed_pair<std::__1::allocator<streamfx::ui::handler>, std::__1::__value_init_tag>(std::__1::allocator<streamfx::ui::handler>&&, std::__1::__value_init_tag&&) + 37
13  StreamFX.so                   	0x00000000240156a3 std::__1::__shared_ptr_emplace<streamfx::ui::handler, std::__1::allocator<streamfx::ui::handler> >::__shared_ptr_emplace(std::__1::allocator<streamfx::ui::handler>) + 83
14  StreamFX.so                   	0x00000000240151a5 std::__1::__shared_ptr_emplace<streamfx::ui::handler, std::__1::allocator<streamfx::ui::handler> >::__shared_ptr_emplace(std::__1::allocator<streamfx::ui::handler>) + 21
15  StreamFX.so                   	0x0000000024013daa std::__1::enable_if<!(is_array<streamfx::ui::handler>::value), std::__1::shared_ptr<streamfx::ui::handler> >::type std::__1::make_shared<streamfx::ui::handler>() + 170
16  StreamFX.so                   	0x0000000024013cd1 streamfx::ui::handler::initialize() + 17
17  StreamFX.so                   	0x0000000023daa2ad obs_module_load + 781
18  libobs.0.dylib                	0x0000000102fcaede obs_init_module + 78
19  libobs.0.dylib                	0x0000000102fcbd50 load_all_callback + 64
20  libobs.0.dylib                	0x0000000102fcbc4e obs_find_modules + 2046
21  libobs.0.dylib                	0x0000000102fcb433 obs_load_all_modules + 35
22  com.obsproject.obs-studio     	0x000000010019990e OBSBasic::OBSInit() + 734
23  com.obsproject.obs-studio     	0x0000000100175b39 OBSApp::OBSInit() + 505
24  com.obsproject.obs-studio     	0x0000000100179b58 main + 5016
25  libdyld.dylib                 	0x00007fff20336621 start + 1

Am I doing something wrong? It says it builds successfully. in the terminal, and while the folder layout is incorrect (StreamFX.so must be in the root of plugins/StreamFX/bin, not in the folder "64-bit"), remedying it allows OBS to load it, but then it crashes with that QT framework error.

Is the version of QT Framework used by obs-deps incompatible, even though it purportedly builds as part of OBS? Or is there some additional (or superfluous) configuration that I'm missing in the configuration command?


System: macOS Big Sur 11.0
Target SDK: macOS Catalina 10.15

@Xaymar
Copy link
Owner

Xaymar commented Dec 12, 2020

StreamFX does not support standalone builds for MacOS, as described on the Wiki.

@Xaymar Xaymar closed this as completed Dec 12, 2020
@MisutaaAsriel
Copy link
Author

MisutaaAsriel commented Dec 12, 2020

StreamFX does not support standalone builds for MacOS, as described on the Wiki.

I didn't see anything explicitly saying this isn't possible. It's just not listed as a method, unless I'm missing some kind of notice.

May I ask why it's not supported? I would really like to test the macOS build of StreamFX, but I don't have the environment to fully build OBS, and you don't provide any experimental binaries to test with.

@Xaymar
Copy link
Owner

Xaymar commented Dec 13, 2020

Because nobody has put in the work necessary to make StreamFX work on MacOS. I do not own a Mac system, and am unwilling to give in to crowd pressure to support Apple with my purchase - others can happily do so, I'll stick with Linux/Ubuntu and Windows.

I didn't see anything explicitly saying this isn't possible. It's just not listed as a method, unless I'm missing some kind of notice.

Yes that means that its officially not supported.

@MisutaaAsriel
Copy link
Author

Because nobody has put in the work necessary to make StreamFX work on MacOS. I do not own a Mac system, and am unwilling to give in to crowd pressure to support Apple with my purchase - others can happily do so, I'll stick with Linux/Ubuntu and Windows.

I mean you can hackintosh it. No need to support Apple there if you feel so strongly. El Capitan will run on a Core 2 Duo with 6GB of RAM. There's even ways to make bootable flash drives. ‪¯\_(・–・)_/¯‬

I didn't see anything explicitly saying this isn't possible. It's just not listed as a method, unless I'm missing some kind of notice.

Yes that means that its officially not supported.

I'm aware of that, but your install page and build page both list macOS in some fashion. It just doesn't list build instructions for standalone. — I actively wouldn't mind troubleshooting the issue with you if you'd be willing to cooperate with me. I'm unfamiliar with how the project is coded (my area of knowledge is Swift), but I have a Mac. I have XCode.

If you don't want the project to run on macOS and are against it, why have the option at all?

@Xaymar
Copy link
Owner

Xaymar commented Dec 14, 2020

If you don't want the project to run on macOS and are against it, why have the option at all?

At no point in this thread, or any earlier thread, have I stated that I don't want the plugin to run on MacOS. I have only stated that it currently does not build as a standalone, which in itself is already a luxury to have anyway.

I mean you can hackintosh it. No need to support Apple there if you feel so strongly. El Capitan will run on a Core 2 Duo with 6GB of RAM. There's even ways to make bootable flash drives. ‪¯_(・–・)_/¯‬
I actively wouldn't mind troubleshooting the issue with you if you'd be willing to cooperate with me. I'm unfamiliar with how the project is coded (my area of knowledge is Swift), but I have a Mac. I have XCode.

No. Do the work yourself, I will not do the work for you. I have nothing to gain from MacOS support.

I'm aware of that, but your install page and build page both list macOS in some fashion. It just doesn't list build instructions for standalone.

Yes, that's because the standalone build mechanism is a luxury by itself.

@MisutaaAsriel
Copy link
Author

MisutaaAsriel commented Dec 18, 2020

...The ability to build the project is not a luxury. That's... programming 101. OBS isn't a dependancy. You even have standalone build on Linux, which is a POSIX-compliant system, similar to Mac (a BSD Unix system, and POSIX-compliant OS.)

Why do you even list Mac at all if you have no intents of properly supporting it? Why not just let users fork your project if they want a Mac version?

I actively wouldn't... or didn't mind, trying to help remedy build issues with this project. But I'm not it's developer so I wouldn't know what to look for.

@Xaymar
Copy link
Owner

Xaymar commented Dec 19, 2020

The standalone build method (aka "outside of its natural environment") is a luxury, and not a given. It should not be taken for granted, as the only reason it exists is because I put work into making it so. Since I use both Linux and Windows, lately shifting more and more towards Linux, I support those two platforms myself.

MacOS is listed because building StreamFX with OBS Studio (aka "in its natural environment") actually works just fine, as long as you disable Windows/Linux exclusive features. This is due to Clang being a very popular compiler, and C++ and Qt being cross-platform compatible enough to just work. I do not care what is and isn't POSIX compliant. That is irrelevant to this discussion, and you know it is completely irrelevant.

Additionally you should already know that you can just fork the project if it irks you so much. There's nothing stopped you, though you may not use the StreamFX name itself or advertise it as being officially endorsed by any of the maintainers of the StreamFX project.

Repository owner locked as resolved and limited conversation to collaborators Apr 26, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants