Skip to content
This repository has been archived by the owner on Dec 15, 2020. It is now read-only.

Nightly builds #42

Merged
merged 4 commits into from
Apr 23, 2020
Merged

Nightly builds #42

merged 4 commits into from
Apr 23, 2020

Conversation

cienijr
Copy link
Contributor

@cienijr cienijr commented Apr 23, 2020

Hey there,

First of all, thank you for your amazing work. I've had no major issues with this plugin as-is so far.
I developed some OBS plugins in the past and for me it was always a huge deal having to download its source and dependencies (I have a low-end mac which is always running low on disk space), so I came up with this simple workflow using Github Actions to automatically build your plugin when pushing to master (I used it myself instead of building the plugin locally).

It probably does need some polishing (maybe bundle an install script with the library files), but I think it's a good starting point. My guess is that most interested users might not be familiar with building software at all, so providing the binaries may help them. I'm building them against 25.0.7 (latest macOS release until now).

This pipeline generates three artifacts on Github: one containing both the DAL plugin and OBS plugin, and two others containing the individual plugins. The DAL plugin must be copied to /Library/CoreMediaIO/Plug-Ins/DAL (as usual) and the OBS plugin must be copied to /Library/Application Support/obs-studio/plugins/obs-mac-virtualcam/bin.

Copy link
Owner

@johnboiles johnboiles left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So cool! Thank you for doing this. Looks good to me 🚀 🚢 🎉


on:
push:
branches:
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Eventually we'll probably only want to cut releases on tags if that's possible. But I think master is more appropriate at this stage in the development.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure! Shortly after submitting this PR, I realized that I named everything on my workflow as "release", although the PR itself was "nightly builds" haha

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we change the name to nightly builds?


- name: Fix runtime QT deps
run: |
install_name_tool \
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this point the plugin to the QT bundled in the .app (instead of the system QT?)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yep, it's the same trick that obs-websocket (and OBS itself) uses to fix the libs

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Neat

@johnboiles johnboiles merged commit 4af6396 into johnboiles:master Apr 23, 2020
@johnboiles johnboiles mentioned this pull request Apr 23, 2020
@johnboiles
Copy link
Owner

Do you have the codesigning command handy that users will need to run to codesign the plugin in such a way that OBS can load it?

@cienijr
Copy link
Contributor Author

cienijr commented Apr 23, 2020

@johnboiles unfortunately I don't 😞 I didn't even know that there was an issue until I stumbled upon #4 later yesterday, as I was only using it with Chrome and Skype and both had no issues whatsoever

@johnboiles
Copy link
Owner

I think #4 is a little bit different. That's codesigning for the DAL plugin. I'm asking about codesigning for the OBS plugin (obs-mac-virtualcam.so). This is what I get when I try to use that file with my OBS (25.0.7 release from the obsproject site).

image

@johnboiles
Copy link
Owner

Hmm I tried to re-codesign both OBS.app and the plugin but didn't get a change. I wonder if it's not actually a codesigning thing.

I tried

codesign --force --sign [MYDEVELOPERID] --timestamp=none obs-mac-virtualcam.so
codesign --force --deep --sign [MYDEVELOPERID] --timestamp=none /Applications/OBS.app

I got my developer ID string from security find-identity -v -p codesigning

But have the same results.

@cienijr
Copy link
Contributor Author

cienijr commented Apr 23, 2020

Hmmm, that is new for me. I failed to replicate it, but I'm guessing I might already have some security exceptions from a while ago (I have Catalina 10.15.3 here)

I did try to run codesign -dv against obs-ndi and obs-websocket on my machine, but they both result in the following (the same for obs-mac-virtualcam.so)

➜  ~ codesign -dv /Library/Application\ Support/obs-studio/plugins/obs-ndi/bin/obs-ndi.so
/Library/Application Support/obs-studio/plugins/obs-ndi/bin/obs-ndi.so: code object is not signed at all

I checked at obs-ndi and found DistroAV/DistroAV#434, which is quite recent and adds both codesigning and notarization for release builds, which makes me think that maybe Apple changed something recently...

@cienijr
Copy link
Contributor Author

cienijr commented Apr 23, 2020

DistroAV/DistroAV#385 seems to be similar, although the screenshots are from the installer and not the shared library

@dodgepong
Copy link

Also that is an old installer -- the latest version is 4.8.0 and that issue has been resolved in CI.

@cienijr
Copy link
Contributor Author

cienijr commented Apr 23, 2020

Ok, it probably has to do with macOS 10.15.14. I just updated my MacBook and now both the DAL plugin and the OBS plugin stopped working 🚀🚀

@johnboiles
Copy link
Owner

Glad to know the issue is reproducible at least!

@johnboiles
Copy link
Owner

In the console i'm getting Library load (/Users/jboiles/Library/Application Support/obs-studio/plugins/obs-mac-virtualcam/bin/obs-mac-virtualcam.so) rejected: library load disallowed by system policy

@johnboiles
Copy link
Owner

Oh i found it

image

@johnboiles
Copy link
Owner

Confirmed that clicking Allow Anyway in Security.prefPane then restarting OBS allows it to run.

I wonder if there's a way to avoid this short of codesigning the plugin with the same code signature as OBS.

@jburbs
Copy link

jburbs commented Apr 24, 2020

Thanks to both of you for the updates, I've got a good feeling about this, and happy to be the dumb/smart audience. All of this makes awesome sense, and I'd love to test it. I'm at 10.15.4. However, I'm kinda at a loss with what to do with the .yml file. A basic tutorial on actually executing Github Actions via yml (which is what I think I need to do) is surprisingly difficult to find.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants