Git Product home page Git Product logo

obs-plugintemplate's People

Contributors

cg2121 avatar exeldro avatar ez64cool avatar fenrirthviti avatar glikely avatar gxalpha avatar palakis avatar patthemav avatar paulpv avatar pkviet avatar qwertychouskie avatar royshil avatar rytoex avatar sorayuki avatar susko3 avatar tt2468 avatar tytan652 avatar umireon avatar viscountexx avatar warmuptill avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

obs-plugintemplate's Issues

make install does not install to a directory that is searched by OBS

Operating System Info

Other

Other OS

Debian Sid (64 bit)

OBS Studio Version

27.0.1

OBS Studio Version (Other)

No response

OBS Studio Log URL

https://obsproject.com/logs/WLp4Nql50comrVG6z

OBS Studio Crash Log URL

No response

Expected Behavior

When I compile the project template on Linux and use make install the plugin is installed to /usr/local/lib/obs-plugins. I would expect either OBS to load the plugin after doing this or I would expect make install to install the plugin to a directory that's actually searched by OBS.

Current Behavior

OBS does not search /usr/local/lib/obs-plugins/ and the make install command doesn't do what one would expect because the plugin is installed incorrectly. Installing the plugin to a path which is not searched appears to be pretty useless.

Steps to Reproduce

  1. Clone the project repository
  2. mkdir build && cd build
  3. cmake ..
  4. make
  5. sudo make install
  6. Start OBS
  7. Log file doesn't show the text that the template plugin writes to the log (i.e. plugin is not loaded)

Anything else we should know?

No response

Is GPL2 the required license for all plugins developed using this template.

Operating System Info

Windows 11

Other OS

No response

OBS Studio Version

29.1.3

OBS Studio Version (Other)

No response

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

I am currently developing a plugin I would like to release for OBS. I've noticed that both the OBS source and this plugin template use the GPL2 license. As this is a template/boilerplate generation of a set of cmake build scripts, is the GPL2 LICENSE file that is automatically generated the license that any plugin created with this template is expected to use? Or am I able to license my own plugin code with the license of my choosing (e.g.- MIT)?

Current Behavior

N/A

Steps to Reproduce

N/A

Anything else we should know?

No response

macOS build of plugin excludes files from libobs's util directory

Operating System Info

macOS 13

Other OS

No response

OBS Studio Version

Other

OBS Studio Version (Other)

29.1.2

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

My plugin should build without errors from libobs on macOS using GitHub Actions.

Current Behavior

The GitHub Actions build succeeds for all OSes except for macOS. A "file not found" error from the line #include <util/config-file.h> is why the build stops.

Error

More testing indicated that some files in the resulting libobs/util include directory were missing, as shown below.

Missing Files

Steps to Reproduce

  1. Generate from this repo.
  2. Add #include <util/config-file.h> to the source code.
  3. Commit and push.
  4. The macOS run fails.

Anything else we should know?

The other libobs include files and directories are all there. It is only the util directory that is having this problem. Also, this has occurred every time I have run the workflow - it is not a one-time thing.

RFC: Create Multiple Plugin Templates

Summary

As there are multiple types of plugins, It would make sense to have a basic template for each of those various types.

Motivation

I know I have helped a couple of people out now, getting basic functions such as a menu setup, with a plugin setup window dialog started.

Drawbacks

PluginTemplate would most likely need to be changed to give links and descriptions for each of the plugin templates

Additional Information

Wrong packaging directory on macos

Operating System Info

macOS 12

Other OS

No response

OBS Studio Version

28.0.3

OBS Studio Version (Other)

No response

OBS Studio Log URL

Nope

OBS Studio Crash Log URL

No response

Expected Behavior

Generate plugin pkg installer file.

Current Behavior

packages failed to packaging plugin to pkg installer file.

Steps to Reproduce

  1. run ./.github/script/package-macos.zsh

Anything else we should know?

<string>../@RELATIVE_INSTALL_PATH@/@[email protected]</string>

at installer-macos.pkgproj.in , @RELATIVE_INSTALL_PATH@ is expanded to build_x64/install

but at .build.zsh, plugin is installed to release

cmake --install build_${target##*-} --config ${BUILD_CONFIG:-RelWithDebInfo} --prefix "${project_root}/release" ${cmake_args}

so package failed

Windows helper copies plugin to `obs-plugin` instead of `obs-plugins`

Operating System Info

Windows 11

Other OS

No response

OBS Studio Version

30.0.0-beta2

OBS Studio Version (Other)

No response

OBS Studio Log URL

n/a

OBS Studio Crash Log URL

No response

Expected Behavior

Defining OBS_BUILD_DIR should copy the plugin to the correct path.

Current Behavior

It tries to copy to the folder .../obs-studio/build_x64/rundir/Debug/obs-plugin/64bit

Steps to Reproduce

  1. Define OBS_BUILD_DIR in cmake to the obs build directory
  2. Build the plugin
  3. It fails because the folder doesn't exist

Anything else we should know?

Should be a simple fix, just add the missing 's' here:

"$<$<CONFIG:Debug,RelWithDebInfo>:$<TARGET_PDB_FILE:${target}>>" "${OBS_BUILD_DIR}/obs-plugin/64bit"

Wrong CMake minimum required version.

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

30.1.2

OBS Studio Version (Other)

No response

OBS Studio Log URL

example.org

OBS Studio Crash Log URL

No response

Expected Behavior

Build-Windows.ps1 runs successfully when installed CMake version is older than 3.24.

Current Behavior

Build-Windows.ps1 raises an error when installed CMake version is older than 3.24.

Steps to Reproduce

  1. Install CMake 3.23
  2. Run .github/scripts/Build-Windows-ps1 -Configuration Release -Target x64

Anything else we should know?

The error is caused because CMake versions older than 3.24, which do not support --fresh.
It is raised here:

It would be less confusing if the minimum required version is raised to 3.24 here:

cmake_minimum_required(VERSION 3.16...3.26)

An alternative is obviously to remove the usage of --fresh.

Windows installer flagged by Windows Defender

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

30.0.0

OBS Studio Version (Other)

No response

OBS Studio Log URL

NA

OBS Studio Crash Log URL

No response

Expected Behavior

The windows installer shouldn't be flagged as a trojan

Current Behavior

Windows Defender currently flags the "*-windows-x64-Installer.exe" as a Trojan:Win32/OffLoader!MTB and promptly deletes the file.

Steps to Reproduce

  1. Create a release using tags
  2. Download the created "*-windows-x64-Installer.exe"
  3. Scan with windows defender
    ...

Anything else we should know?

This wasn't happening before I merged with latest.
EZ64cool/obs-hadowplay#9

s3 bucket takeover presented in https://github.com/obsproject/obs-plugintemplate/blob/9f8e6d86a1bc287d4232db81561e65b34180cd83/ci/macos/install-build-obs-macos.sh

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

Git

OBS Studio Version (Other)

No response

OBS Studio Log URL

https://github.com/obsproject/obs-plugintemplate/blob/9f8e6d86a1bc287d4232db81561e65b34180cd83/ci/macos/install-build-obs-macos.sh

OBS Studio Crash Log URL

No response

Expected Behavior

hey team,

the s3 bucket present in https://github.com/obsproject/obs-plugintemplate/blob/9f8e6d86a1bc287d4232db81561e65b34180cd83/ci/macos/install-build-obs-macos.sh in the code is unclaimed by you and the expected behavior of this is that you should not use unclaimed s3 bucket in the code for downloading of osx-deps-2018-08-09.tar.gz file.

Current Behavior

the s3 bucket present in https://github.com/obsproject/obs-plugintemplate/blob/9f8e6d86a1bc287d4232db81561e65b34180cd83/ci/macos/install-build-obs-macos.sh in the code is unclaimed by you and the current behavior of this is that you are using unclaimed s3 bucket in the code for downloading of osx-deps-2018-08-09.tar.gz file.

Steps to Reproduce

  1. Create a s3 bucket with name obs-nightly and us west 2 region
  2. Upload files with the name same as given in the code (e.g. osx-deps-2018-08-09.tar.gz)
  3. Make the settings and change it as a static website
  4. You have successfully taken the s3 bucket and now when any user runs the code the url with s3 get executed and an attacker can spread dangerous malware.

Anything else we should know?

Impact: An attacker can able to achieve remote code execution when any of the user runs the install-dependencies code due to unclaimed s3 bucket also an attacker can spread ransomware by adding his vulnerable payload

POC:

  1. Link for the s3 bucket takenover poc:- https://obs-nightly.s3-us-west-2.amazonaws.com/index.html

obspoc1

  1. Github link that shows the s3 bucket :- https://github.com/obsproject/obs-plugintemplate/blob/9f8e6d86a1bc287d4232db81561e65b34180cd83/ci/macos/install-build-obs-macos.sh

obspoc2

CI Builds Windows and Linux can't find libobs

Operating System Info

Other

Other OS

This is in the CI: Windows and Linux

OBS Studio Version

29.0.2

OBS Studio Version (Other)

No response

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

The CI scripts for Linux and Windows will build the plugin successfully.

Current Behavior

In both Linux and Windows CI build CMake is unable to find libobs

-- Configuring incomplete, errors occurred!
  By not providing "Findlibobs.cmake" in CMAKE_MODULE_PATH this project has
See also "/home/runner/work/obs-backgroundremoval/obs-backgroundremoval/plugin/build_x86_64/CMakeFiles/CMakeOutput.log".
  asked CMake to find a package configuration file provided by "libobs", but
  CMake did not find one.

  Could not find a package configuration file provided by "libobs" with any
  of the following names:

    libobsConfig.cmake
    libobs-config.cmake

  Add the installation prefix of "libobs" to CMAKE_PREFIX_PATH or set
  "libobs_DIR" to a directory containing one of the above files.  If "libobs"
  provides a separate development package or SDK, be sure it has been
  installed.

Even though in both cases it was able to build libobs successfully, e.g.

[96/101] Building C object libobs/CMakeFiles/libobs.dir/util/platform-nix-dbus.c.o
[97/101] Linking C shared library libobs/libobs.so.29
[98/101] Creating library symlink libobs/libobs.so.0 libobs/libobs.so
[99/101] Building CXX object UI/obs-frontend-api/CMakeFiles/obs-frontend-api.dir/obs-frontend-api.cpp.o
[100/101] Linking CXX shared library UI/obs-frontend-api/libobs-frontend-api.so.29
[101/101] Creating library symlink UI/obs-frontend-api/libobs-frontend-api.so.0 UI/obs-frontend-api/libobs-frontend-api.so
-- Installing: /home/runner/work/obs-backgroundremoval/obs-backgroundremoval/obs-build-dependencies/plugin-deps-2023-01-06-qt6-x86_64/lib/libobs.so.29

Steps to Reproduce

For me it's just that my plugin doesn't build in CI, using the default scripts provided in this repo.

Anything else we should know?

No response

Default formatter scripts don't work when run from source directory

Operating System Info

Ubuntu 22.04

Other OS

No response

OBS Studio Version

30.1.2

OBS Studio Version (Other)

No response

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

runs from the CWD or runs from src dir automatically

Current Behavior

expects to run from project_root (up a level from src)

Steps to Reproduce

  1. clone this repo
  2. change formatting of a c/c++ module
  3. cd src
  4. ../build-aux/run-clang-format
    ...

Anything else we should know?

I'm using the template to include a sub-project, and I can imagine a use case where someone includes a sub-repository not working well with the current clang-format script. It also seems very temperamental - it must be used exactly in one way.

MacOS Build packaging failing due to checksum for Packages.dmg no longer matching expected checksum.

Operating System Info

Windows 11

Other OS

No response

OBS Studio Version

30.0.0-beta2

OBS Studio Version (Other)

N/A

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

N/A

Expected Behavior

App should build and package properly, as the Packages.dmg checksum should be consistent.

Current Behavior

This is a potential security issue with the current plugin template. The downloaded dmg of the app used to package the MacOS version of the plugin (Packages.dmg) does not have a checksum that matches the expected checksum, and according to the Packages developer website and GitHub, no update has been posted since Feb of 2022. I was able to find a WebArchive (wayback machine) version of the file from July of this summer.

Current Packages.dmg Download: http://s.sudre.free.fr/Software/files/Packages.dmg
Wayback Machine: https://web.archive.org/web/20230727054218/http://s.sudre.free.fr/Software/files/Packages.dmg

Here are the results when looking at file size and checksum:

~/Downloads 
❯ ls -la Packages-*.dmg 
-rw-r--r--@ 1 mark  staff  8398465 Sep 24 13:09 Packages-Current.dmg
-rw-r--r--@ 1 mark  staff  8398202 Sep 24 13:22 Packages-Wayback.dmg

~/Downloads 
❯ sha256sum Packages-*.dmg       
9d9a73a64317ea6697a380014d2e5c8c8188b59d5fb8ce8872e56cec06cd78e8  Packages-Current.dmg
6afdd25386295974dad8f078b8f1e41cabebd08e72d970bf92f707c7e48b16c9  Packages-Wayback.dmg

Note- the Wayback version of the image has a checksum that matches the current checksum in the macOS package GH action script.

Something changed the file size and thus the checksum of the Packages.dmg file on the developer's server last night (I know it happened in the last 24 hours as I packaged up a plugin yesterday without issue). However, the version of the Packages app which is to be installed in both cases is the same: v1.2.10.

Honestly, the more I dig into the Packages app, the more concerned I get about using it. The fact that the downloads page (and the maintainer website) are not even https is a red flag to me, especially when checksums are changing. And as this is a packaging utility that generates .pkg files for plug-in users to install with (potentially with elevated permissions) its not something to take lightly.

Edit- I just checked the version of the webserver that is serving up the files, the Packages.dmg file was modified yesterday, and the Apache server being used was built in 2019:

❯ curl --head http://s.sudre.free.fr/Software/files/Packages.dmg
HTTP/1.1 200 OK
Date: Sun, 24 Sep 2023 21:06:10 GMT
Server: Apache/ProXad [Jan 23 2019 20:05:46]
Last-Modified: Sat, 23 Sep 2023 20:43:31 GMT
ETag: "2d84996d8-802681-650f4df3"
Connection: close
Accept-Ranges: bytes
Content-Length: 8398465
Content-Type: application/x-apple-diskimage

Steps to Reproduce

  1. Attempt to build/package any plugin using the current template
  2. Watch as the build fails as soon as Packages.dmg is (not) verified.

Anything else we should know?

No response

GitHub Actions - macOS arm64 run fails from CMake error "Bad CPU type in executable"

Operating System Info

macOS 12

Other OS

No response

OBS Studio Version

Other

OBS Studio Version (Other)

27.2.3

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

N/A

Expected Behavior

Expected CMake to generate the plugin properly (it doesn't even have to install).

Example: This is what happens on the macOS x86_64 build:

expected

Current Behavior

This is what happens on the macOS arm64 build:

image_2022-07-31_174724515

Steps to Reproduce

  1. Use the template and clone the resulting repository.
  2. Follow the README instructions.
  3. Add files (that are tested to be working in a Windows build) and adjust CMake accordingly.
  4. Commit and push new/fixed files to the remote repository.
  5. All GitHub Action runs succeed except macOS arm64.

Anything else we should know?

Also, I'm not sure if this is an issue (I don't think it is), but my repository has a dependency.

Running Build-Windows.ps1 appends \r\n to CMakeLists.txt every run

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

28.0.1

OBS Studio Version (Other)

No response

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

N/A

Expected Behavior

I'd expect the CMakeLists.txt to remain unchanged when running a build script. I understand this script is intended to be used in CI, but it is conventient to be used locally for development but then forces you to undo these line additions.

Current Behavior

Every time I run Build-Windows.ps1, I get one more line and they cause annoying diffs like this:

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 317be39..07734aa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -83,3 +83,6 @@ endif()
 # --- End of section ---

 setup_plugin_target(${CMAKE_PROJECT_NAME})
+
+
+

Although not visible in this diff, these newlines are DOS style line endings even if the CMakeLists.txt is Unix style.

Steps to Reproduce

  1. git clone "https://github.com/obsproject/obs-plugintemplate"
  2. cd obs-plugintemplate
  3. .\.github\scripts\Build-Windows.ps1
  4. script run completes
  5. CMakeLists.txt is altered

Anything else we should know?

No response

`CMakePresets.json` should have a single definition for `ENABLE_FRONTEND_API` and `ENABLE_QT`

Operating System Info

Windows 11

Expected Behavior

I should be able to change the values of ENABLE_FRONTEND_API and ENABLE_QT in one place and have them apply to all operating systems.

Current Behavior

I have to change ENABLE_FRONTEND_API and/or ENABLE_QT on each OS I support.

Steps to Reproduce

  1. Use this template
  2. In your plugin, make us of QT or the OBS frontend api
    • this requires setting the appropriate build variables, so you:
  3. Open CMakePresets.json and quickly realise you need to set the same value multiple times, leading to possible user-errors

Anything else we should know?

Using inheritance and a single preset for the two cross-platform variables makes sense as a solution.

can't use it don't know why

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

30.0.0

OBS Studio Version (Other)

No response

OBS Studio Log URL

no log

OBS Studio Crash Log URL

No response

Expected Behavior

...

Current Behavior

i can't use this.. i don't know why . I'm trying to test it and i get this error in vsc:

PS C:\github_repo\obsplugindiega> ..github\scripts\Package-Windows.ps1
=> Check Windows build requirements
> Found dependency cmake as C:\Program Files\CMake\bin\cmake.exe
> Installing package innosetup
Se encontró un paquete existente ya instalado. Intentando actualizar el paquete instalado...
No se ha encontrado ninguna actualización disponible.
No hay versiones más recientes del paquete disponibles en las fuentes configuradas.
=> Archiving obs-plugintemplate...
Write-Error: C:\github_repo\obsplugindiega.github\scripts\Package-Windows.ps1:96:1
Line |
96 | Package
| ~~~~~~~
| The argument is null or empty. Provide an argument that is not null or empty, and then try the command again.

and i'm using the github code :

[CmdletBinding()]
param(
[ValidateSet('x64')]
[string] $Target = 'x64',
[ValidateSet('Debug', 'RelWithDebInfo', 'Release', 'MinSizeRel')]
[string] $Configuration = 'RelWithDebInfo',
[switch] $BuildInstaller,
[switch] $SkipDeps
)

$ErrorActionPreference = 'Stop'

if ( $DebugPreference -eq 'Continue' ) {
$VerbosePreference = 'Continue'
$InformationPreference = 'Continue'
}

if ( ! ( [System.Environment]::Is64BitOperatingSystem ) ) {
throw "Packaging script requires a 64-bit system to build and run."
}

if ( $PSVersionTable.PSVersion -lt '7.0.0' ) {
Write-Warning 'The packaging script requires PowerShell Core 7. Install or upgrade your PowerShell version: https://aka.ms/pscore6'
exit 2
}

function Package {
trap {
Pop-Location -Stack BuildTemp -ErrorAction 'SilentlyContinue'
Write-Error $_
Log-Group
exit 2
}

$ScriptHome = $PSScriptRoot
$ProjectRoot = Resolve-Path -Path "$PSScriptRoot/../.."
$BuildSpecFile = "${ProjectRoot}/buildspec.json"

$UtilityFunctions = Get-ChildItem -Path $PSScriptRoot/utils.pwsh/*.ps1 -Recurse

foreach( $Utility in $UtilityFunctions ) {
    Write-Debug "Loading $($Utility.FullName)"
    . $Utility.FullName
}

$BuildSpec = Get-Content -Path ${BuildSpecFile} -Raw | ConvertFrom-Json
$ProductName = $BuildSpec.name
$ProductVersion = $BuildSpec.version

$OutputName = "${ProductName}-${ProductVersion}-windows-${Target}"

if ( ! $SkipDeps ) {
    Install-BuildDependencies -WingetFile "${ScriptHome}/.Wingetfile"
}

$RemoveArgs = @{
    ErrorAction = 'SilentlyContinue'
    Path = @(
        "${ProjectRoot}/release/${ProductName}-*-windows-*.zip"
        "${ProjectRoot}/release/${ProductName}-*-windows-*.exe"
    )
}

Remove-Item @RemoveArgs

if ( ( $BuildInstaller ) ) {
    Log-Group "Packaging ${ProductName}..."
    $IsccFile = "${ProjectRoot}/build_${Target}/installer-Windows.generated.iss"

    if ( ! ( Test-Path -Path $IsccFile ) ) {
        throw 'InnoSetup install script not found. Run the build script or the CMake build and install procedures first.'
    }

    Log-Information 'Creating InnoSetup installer...'
    Push-Location -Stack BuildTemp
    Ensure-Location -Path "${ProjectRoot}/release"
    Copy-Item -Path ${Configuration} -Destination Package -Recurse
    Invoke-External iscc ${IsccFile} /O"${ProjectRoot}/release" /F"${OutputName}-Installer"
    Remove-Item -Path Package -Recurse
    Pop-Location -Stack BuildTemp
} else {
    Log-Group "Archiving ${ProductName}..."
    $CompressArgs = @{
        Path = (Get-ChildItem -Path "${ProjectRoot}/release/${Configuration}" -Exclude "${OutputName}*.*")
        CompressionLevel = 'Optimal'
        DestinationPath = "${ProjectRoot}/release/${OutputName}.zip"
        Verbose = ($Env:CI -ne $null)
    }

    Compress-Archive -Force @CompressArgs
}
Log-Group

}

Package

what happend? how can i fix this? thanks

Steps to Reproduce

...

Anything else we should know?

No response

This template installs files back into the build directory when built with ninja

Operating System Info

Other

Other OS

FreeBSD

OBS Studio Version

28.1.2

OBS Studio Version (Other)

No response

OBS Studio Log URL

n/a

OBS Studio Crash Log URL

No response

Expected Behavior

n/a

Current Behavior

Installs:

lib/obs-plugins/obs-plugintemplate.so
share/obs/obs-plugins/obs-plugintemplate/locale/en-US.ini
/usr/ports/multimedia/obs-plugintemplate/work/.build/rundir/Release/lib/obs-plugins/obs-plugintemplate.so
/usr/ports/multimedia/obs-plugintemplate/work/.build/rundir/Release/share/obs/obs-plugins/obs-plugintemplate/data/locale/en-US.ini
@dir /usr/ports/multimedia/obs-plugintemplate/work/.build/rundir/Release/lib/obs-plugins
@dir /usr/ports/multimedia/obs-plugintemplate/work/.build/rundir/Release/lib
@dir /usr/ports/multimedia/obs-plugintemplate/work/.build/rundir/Release/share/obs/obs-plugins/obs-plugintemplate/data/locale
@dir /usr/ports/multimedia/obs-plugintemplate/work/.build/rundir/Release/share/obs/obs-plugins/obs-plugintemplate/data
@dir /usr/ports/multimedia/obs-plugintemplate/work/.build/rundir/Release/share/obs/obs-plugins/obs-plugintemplate
@dir /usr/ports/multimedia/obs-plugintemplate/work/.build/rundir/Release/share/obs/obs-plugins
@dir /usr/ports/multimedia/obs-plugintemplate/work/.build/rundir/Release/share/obs
@dir /usr/ports/multimedia/obs-plugintemplate/work/.build/rundir/Release/share
@dir /usr/ports/multimedia/obs-plugintemplate/work/.build/rundir/Release
@dir /usr/ports/multimedia/obs-plugintemplate/work/.build/rundir
@dir /usr/ports/multimedia/obs-plugintemplate/work/.build
@dir /usr/ports/multimedia/obs-plugintemplate/work
@dir /usr/ports/multimedia/obs-plugintemplate
@dir /usr/ports/multimedia
@dir /usr/ports

Steps to Reproduce

Build with ninja backend.

Anything else we should know?

No response

RFC: Update Plugin Template

Summary

I have heard some talk about updating the plugin template and would like to add in my two cents.

Motivation

Time to update

Additional Information

Here are the ideas I had

  • Multiple plugin templates, for various plugin types
  • Update internal CI to use GitHub actions instead of azure pipelines
  • setup CMakeLists.txt so that the plugin can be built either 'in tree' or 'out of tree' automatically
  • Automatically determine in the Mac CI if the signing certificates and other variables exist in the secrets
    • disable the code signing actions if they don't
  • update and expand information on setting up the mac signing CI pipeline.
    • It took me days and multiple sources across the internet to stumble on how to get it working.

macos github action fails with "sse2.h is missing" when used with obs 30.0.0-rc1

Operating System Info

Windows 11

Other OS

MacOS

OBS Studio Version

30.0.0-rc1

OBS Studio Version (Other)

No response

OBS Studio Log URL

Not relevant

OBS Studio Crash Log URL

No response

Expected Behavior

obs-plugintemplate build work on macos with obs-studio 30.0.0

Current Behavior

With the buildspec.json configure to use obs-studio 30.0.0-rc1

"obs-studio": {
            "version": "30.0.0-rc1",
            "baseUrl": "https://github.com/obsproject/obs-studio/archive/refs/tags",
            "label": "OBS sources",
            "hashes": {
                "macos": "77d1d0bef0e156e5e5b19646dc9372ea99a046e39de985496e291e9f23e60764",
                "windows-x64": "da07d21831571fa78e1d09a2d39ca88a7dd80dff77c4feedb1afa83c586b621b"
            }
        },

The macos build in github action fails with the error:

  [ZERO_CHECK] Running script Generate CMakeFiles/ZERO_CHECK
  [plugin-support] Compiling plugin-support.c
  [plugin-support] Compiling plugin-support.c
  [plugin-support] Building library libplugin-support.a
  [plugin-support] Building library libplugin-support.a
  [obs-plugintemplate] Processing empty-obs-plugintemplate.plist
  [obs-plugintemplate] Compiling plugin-main.c
  ❌ /Users/runner/work/obs-plugintemplate/obs-plugintemplate/.deps/Frameworks/libobs.framework/Headers/graphics/../util/sse-intrin.h:31:10: 'simde/x86/sse2.h' file not found
  #include "simde/x86/sse2.h"
           ^~~~~~~~~~~~~~~~~~
  [obs-plugintemplate] Compiling plugin-main.c
  ❌ /Users/runner/work/obs-plugintemplate/obs-plugintemplate/.deps/Frameworks/libobs.framework/Headers/graphics/../util/sse-intrin.h:31:10: 'simde/x86/sse2.h' file not found
  #include "simde/x86/sse2.h"

The detail error is (re run action with debug info):

  In file included from /Users/runner/work/obs-plugintemplate/obs-plugintemplate/src/plugin-main.c:19:
  In file included from /Users/runner/work/obs-plugintemplate/obs-plugintemplate/.deps/Frameworks/libobs.framework/Headers/obs-module.h:20:
  In file included from /Users/runner/work/obs-plugintemplate/obs-plugintemplate/.deps/Frameworks/libobs.framework/Headers/obs.h:26:
  In file included from /Users/runner/work/obs-plugintemplate/obs-plugintemplate/.deps/Frameworks/libobs.framework/Headers/graphics/vec3.h:21:
  In file included from /Users/runner/work/obs-plugintemplate/obs-plugintemplate/.deps/Frameworks/libobs.framework/Headers/graphics/vec4.h:23:
  /Users/runner/work/obs-plugintemplate/obs-plugintemplate/.deps/Frameworks/libobs.framework/Headers/graphics/../util/sse-intrin.h:31:10: fatal error: 'simde/x86/sse2.h' file not found
  #include "simde/x86/sse2.h"

After some digging it appears that

  • AFAIU The root cause is that the ARCH_SIMDE_FLAGS is not set during the obs-studio build for MacOS as the obs-studio build is using the new "framework 3.0" cause the OBS_CMAKE_VERSION is forced to 3.0.0 for MacOS and obs-studio CMakeList.txt uses "framework 3.0" for "Darwin"

    The use of "framework 3.0" (instead of legacy) does not expose the simde header for libobs cause ARCH_SIMD_FLAGS is never set hence the test in obs-studio/libobs/CMakeLists.txt:316 fails to add this files to public headers.

  • This does not happen on windows cause OBS_CMAKE_VERSION is set to 2.0.0 so the legacy build is used in OBS

  • Does not happen either for linux cause libobs deps is not built taken from package manager which install all the simde headers

Steps to Reproduce

  1. fork the https://github.com/obsproject/obs-plugintemplate
  2. update the buildspec.json to use obs 30.0.0-rc1:
diff --git a/buildspec.json b/buildspec.json
index 8a10e3f..91366dd 100644
--- a/buildspec.json
+++ b/buildspec.json
@@ -1,30 +1,30 @@
 {
     "dependencies": {
         "obs-studio": {
-            "version": "29.1.2",
+            "version": "30.0.0-rc1",
             "baseUrl": "https://github.com/obsproject/obs-studio/archive/refs/tags",
             "label": "OBS sources",
             "hashes": {
-                "macos": "215f1fa5772c5dd9f3d6e35b0cb573912b00320149666a77864f9d305525504b",
-                "windows-x64": "46d451f3f42b9d2c59339ec268165849c7b7904cdf1cc2a8d44c015815a9e37d"
+                "macos": "77d1d0bef0e156e5e5b19646dc9372ea99a046e39de985496e291e9f23e60764",
+                "windows-x64": "da07d21831571fa78e1d09a2d39ca88a7dd80dff77c4feedb1afa83c586b621b"
             }
         },
         "prebuilt": {
-            "version": "2023-04-12",
+            "version": "2023-10-09",
             "baseUrl": "https://github.com/obsproject/obs-deps/releases/download",
             "label": "Pre-Built obs-deps",
             "hashes": {
-                "macos": "9535c6e1ad96f7d49960251e85a245774088d48da1d602bb82f734b10219125a",
-                "windows-x64": "c13a14a1acc4224b21304d97b63da4121de1ed6981297e50496fbc474abc0503"
+                "macos": "4b7651e5a19b4ffa2371725e9d7865b5bc4eae46fd7ca0d4b9fabdf7491332b0",
+                "windows-x64": "7585ba9cc470c1f668af6d51efe6da211b16822b884382817750d9e8b502a81c"
             }
         },
         "qt6": {
-            "version": "2023-04-12",
+            "version": "2023-10-09",
             "baseUrl": "https://github.com/obsproject/obs-deps/releases/download",
             "label": "Pre-Built Qt6",
             "hashes": {
-                "macos": "eb7614544ab4f3d2c6052c797635602280ca5b028a6b987523d8484222ce45d1",
-                "windows-x64": "4d39364b8a8dee5aa24fcebd8440d5c22bb4551c6b440ffeacce7d61f2ed1add"
+                "macos": "8d2fe5a7ddb0c5d5b2d37e43fde50661eb497e2b219e65f3822233e8a7f33e5a",
+                "windows-x64": "feadb745e622fb81aa1cdcdc1179baef4c4442d15cb8f0212cb7ceda0f1911df"
             },
             "debugSymbols": {
                 "windows-x64": "f34ee5067be19ed370268b15c53684b7b8aaa867dc800b68931df905d679e31f"asdfadfs
  1. push on master to trigger github action -> windows, linux build fine, macos fails.

Anything else we should know?

I had this issue cause I was preparing the update of a plugins that uses libobs "util/util.hpp" which is not available on 29.1.2 (restored by obsproject/obs-studio@55237ab on master and release/30.0.0)

So I changed buildspec.json to use 30.0.0-rc1 and the new sse2.h occurs on macos only.

As the 30.0.0 is still in RC1 it is not too late to fix it.

ObsPluginHelpers.cmake outputs `Depends:` `obs-studio (>= 27.0.0)` and `libqt5*`

Operating System Info

Ubuntu 22.04

Other OS

No response

OBS Studio Version

29.0.2

OBS Studio Version (Other)

No response

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

This plugin template is for OBS >=28 QT6 plugins only...right?
So, its generated Linux .deb files should have a control file that says something like:

...
Depends: obs-studio (>= 28.0.0), libqt6coresomething (>= 6.x.x), libqt6guisomething (>= 6.x.x), libqt6widgetssomething (>= 6.x.x)
...

Current Behavior

The obs-ndi plugin that I work on has a branch based on this obs-plugintemplate.
I unzipped the plugin's .deb file generated by this template's build it says:

...
Depends: obs-studio (>= 27.0.0), libqt5core5a (>= 5.9.0~beta), libqt5gui5 (>= 5.3.0), libqt5widgets5 (>= 5.7.0)
...

It seems to install OK (the jury is still out on that), but I found this very odd/unexpected.

Steps to Reproduce

  1. build a linux x64 plugin
  2. unzip the generated .deb file
  3. unzip the control.tar.gz file
  4. look at the control file

Anything else we should know?

The above hard coded Depends line is taken straight from these lines of code:

set(CPACK_DEBIAN_PACKAGE_DEPENDS
"obs-studio (>= 27.0.0), libqt5core5a (>= 5.9.0~beta), libqt5gui5 (>= 5.3.0), libqt5widgets5 (>= 5.7.0)"
)

      set(CPACK_DEBIAN_PACKAGE_DEPENDS
          "obs-studio (>= 27.0.0), libqt5core5a (>= 5.9.0~beta), libqt5gui5 (>= 5.3.0), libqt5widgets5 (>= 5.7.0)"
      )

Using threading.h breaks windows build

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

28.0.0-beta2

OBS Studio Version (Other)

No response

OBS Studio Log URL

n/a

OBS Studio Crash Log URL

No response

Expected Behavior

Including the obs header <util/threading.h> breaks the build on windows as the header includes "../../deps/w32-pthreads/pthread.h" That file isn't present in the plugin dependencies and so the CI fails for windows. Here's a test project I made based on the template:
https://github.com/univrsal/test123
And here's the CI log:
https://github.com/univrsal/test123/runs/7821655312?check_suite_focus=true

I use that header in tuna to set the name of a separate thread via os_thread_set_name (https://github.com/obsproject/obs-studio/blob/master/libobs/util/threading.h#L95) which used to work fine with the old CI I used, but I'm trying to switch to the actions from this template because I have to redo the CI for the move to Qt6.

Current Behavior

The CI fails.

Steps to Reproduce

  1. Create repository from template
  2. Include util/threading.h
  3. CI fails

Anything else we should know?

No response

Created release does not use plugin name

Operating System Info

Windows 11

Other OS

No response

OBS Studio Version

30.0.0

OBS Studio Version (Other)

No response

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

Have the plugin name in the release title

Current Behavior

image

Creates a draft release titled OBS Studio. While it's fine because it is a draft, having a friendly name in buildspec.json would be great so that we don't have to change the title all the time. I already put 'media-playlist-source' as the name but being able to put 'Media Playlist Source' in release titles automatically would be useful.

Steps to Reproduce

  1. Push a tag to make a release
  2. Check the draft release

Anything else we should know?

No response

RFC: Improve documentation on MacOS Signing

Summary

Improve the documentation to include a step by step howto on setting up MacOS Signing

Motivation

It took me days and multiple sources across the internet to stumble on how to get it working.

Drawbacks

Not a thing

Additional Information

Any additional information that may not be covered above that you feel is relevant. External links, references, examples, etc.

Cannot find libobs

Where do I find libobs? Seems to not be included or linked to via git submodule?

Could NOT find Libobs (missing: LIBOBS_LIB LIBOBS_INCLUDE_DIR)

I've cloned the repo and followed the instructions on my Windows PC but my cmake-gui fails when I hit configure complaining that it can't find LIBOBS:

Could NOT find Libobs (missing: LIBOBS_LIB LIBOBS_INCLUDE_DIR) 
CMake Error at plugins/obs-midi2/external/FindLibObs.cmake:106 (message):
  Could not find the libobs library
Call Stack (most recent call first):
  plugins/obs-midi2/CMakeLists.txt:30 (include)

I've tried following other a couple other forums online to see what may be a fix and few suggested to building OBS first then pointing LIBOBS_LIB to the .lib file in my build/libobs/Release folder the other variable to the /libobs folder... HOWEVER after doing that and hitting configure the new entries in cmake disappear and I'm given the same error all over again...

Missing util/threading.h on mac and enum OBS_TEXT_INFO on ubuntu

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

Other

OBS Studio Version (Other)

29.1.2

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

I tried to update my plugin with the new plugin template changes. But i get these errors that don't make sense for me (cause windows works)
https://github.com/CodeYan01/media-playlist-source/actions/runs/5431829190/jobs/9878449528

Current Behavior

Please check github action run

Steps to Reproduce

  1. Applied the new CMake changes
  2. Push
    ...

Anything else we should know?

No response

Inno Script `MyAppURL "http://www.mywebsite.com"` redirects to phishing site resulting in AV flagging as threat

Operating System Info

Windows 11

Other OS

No response

OBS Studio Version

29.0.2

OBS Studio Version (Other)

No response

OBS Studio Log URL

not relevant

OBS Studio Crash Log URL

No response

Expected Behavior

Installing a obs-plugintemplate based plugin should not result in anti-virus reporting threat

Current Behavior

obs-plugintemplate based plugins installed on Windows have a url shortcut installed that defaults to pointing to http://www.mywebsite.com.
This is an unfortunate choice because that redirects to what looks like a poorly convincing phishing site:
image

I suspect that this URL is a known phishing site and is why some AV software may flag shortcuts pointing to is as being a potential threat.

Steps to Reproduce

(Reported 2nd hand from user)
On Windows:

  1. Install Norton Anti-Virus
  2. Install a plugin based on obs-plugintemplate that does not change the default MyAppURL "http://www.mywebsite.com"

At some point in time during or shortly after the installation Norton will pop up the following:
image

If an AV does not flag this url as a threat, then opening the installed url shortcut...
image
...browses to http://www.mywebsite.com which redirects to a poorly convincing phishing site:
https://a1e24d2a-2434-467c-b2a2-c6dfd5f7e8a4.s3.ap-northeast-2.amazonaws.com/%26%25%5E%24%26%26%40%5E%23%5E!%23!%25%25%25!%24%5E%5E!%25!%40%26%23!%24%25%24%40%26%24%25!%23%40%23%24%40%26%25%23%40%23/index.html?&C=Kirkland&S=145471043&Q=145471043.com&SR=47059&IP=my%20website%20design&RE=50.47.211.46&KEY=98034&Z

Anything else we should know?

Found in DistroAV/DistroAV#455

I suggest that PLUGIN_URL be definable in CMakeList.txt and/or buildspec.json and populated in installer-Windows.iss.in during build time similar to PLUGIN_AUTHOR, etc.

Windows package does not have DLLs

Platform

Windows build (32bit and 64bit) on Azure Pipeline
Operating system and version:
OBS Studio version:

Expected Behavior

packaged ZIP file contains DLL files

Current Behavior

The ZIP file contains only two file as below.
Zip file size: 396710 bytes, number of entries: 3

drwx---     6.3 fat        0 bx stor 20-Jun-27 11:51 obs-plugins/
-rw-a--     6.3 fat   913408 bx defN 20-Jun-27 11:51 obs-plugins/32bit
-rw-a--     6.3 fat   856064 bx defN 20-Jun-27 11:51 obs-plugins/64bit

The files 32bit and 64bit are not directories but looks like PDB files.

Steps to Reproduce

I think buiid_config would be relevant to this issue.

build_config: RelWithDebInfo
  1. I copied files from obs-plugintemplate to my project (named obs-vnc), and modified something.
  2. Build it on azure-pipeline. You can find my build log here. The status is success.
  3. After building a plugin, I use zipinfo to look into the contents. The result is as below.
 zipinfo ../azure/obs-vnc/windows_build/obs-vnc-9330329-Windows.zip 
Archive:  ../azure/obs-vnc/windows_build/obs-vnc-9330329-Windows.zip
Zip file size: 396710 bytes, number of entries: 3
drwx---     6.3 fat        0 bx stor 20-Jun-27 11:51 obs-plugins/
-rw-a--     6.3 fat   913408 bx defN 20-Jun-27 11:51 obs-plugins/32bit
-rw-a--     6.3 fat   856064 bx defN 20-Jun-27 11:51 obs-plugins/64bit
3 files, 1769472 bytes uncompressed, 396260 bytes compressed:  77.6%

Additional information

Maybe OR that are used at command add_custom_command in CMakeLists.txt does not work.
I removed if condition to execute the command all the time, then the ZIP file contains the DLL files.

Sources zip archive contains .ccache folder

Operating System Info

Windows 11

Other OS

No response

OBS Studio Version

30.1.2

OBS Studio Version (Other)

No response

OBS Studio Log URL

n/a

OBS Studio Crash Log URL

No response

Expected Behavior

The folder isn't included in the zip, unless that's intended.

Current Behavior

The .ccache folder is included in the zip archive, which can significantly increase the file size. For tuna it's 116MB vs. 7MB unzipped and 19.5MB vs. 2MB compressed. It doesn't make much of a difference in smaller plugins but tuna statically links against two larger libraries which increases the size of the .ccache folder by a lot.

Steps to Reproduce

  1. Let the CI run
  2. Download the obs-plugintemplate-1.0.0-sources-[commit hash], i.e. this one
  3. Extract it

Anything else we should know?

No response

MacOS Build failing

Operating System Info

Other

Other OS

GitHub Action MacOS environment

OBS Studio Version

Git

OBS Studio Version (Other)

No response

OBS Studio Log URL

https://github.com/ashmanix/blur-filter-obs-plugin/actions/runs/6291576827/job/17080090765

OBS Studio Crash Log URL

https://github.com/ashmanix/blur-filter-obs-plugin/actions/runs/6291576827/job/17080090765

Expected Behavior

The MacOS template build script should run without error producing the packaged MacOS files.

Current Behavior

When running the CI/CD for my plugin I get an error when running the Build Project 🧱 / Build for macOS 🍏 script. The URL where the Package.dmg file is being downloaded downloads a file with a different hash key. I get an error saying that the hash doesn't match. Changing the hash in the buildspec.json file still results in an error.

This is happening with another of my plugins (using an older version of the template) when I rerun an action that worked before. Only the MacOS build are failing (https://github.com/ashmanix/obs-plugin-countdown/actions/runs/6190232337)

Steps to Reproduce

  1. Push to the main branch
  2. Watch GitHub action run to build packages

Anything else we should know?

This has only started to happen this evening from around 5:30pm UK time Sunday 24th September.

Mac CI build fails when upgrading "git"

Operating System Info

macOS 13

Other OS

No response

OBS Studio Version

30.1.0

OBS Studio Version (Other)

No response

OBS Studio Log URL

https://github.com/t-patt/obs-plugintemplate/actions/runs/8299025312/job/22713795427

OBS Studio Crash Log URL

https://github.com/t-patt/obs-plugintemplate/actions/runs/8299025312/job/22713795427

Expected Behavior

Mac CI build is able to install all brew dependencies without error.

Current Behavior

Mac CI build fails when installing/upgrading brew dependencies (git).

Steps to Reproduce

  1. Trigger a CI build with GitHub Actions from the master branch.

Anything else we should know?

A workaround is to add "--no-upgrade" to the brew bundle command in .github/scripts/utils.zsh/check_macos. I'm not sure if this is a good long term solution.

brew-failure.txt

Top

Platform

Operating system and version:
OBS Studio version:

Expected Behavior

Current Behavior

Steps to Reproduce

Additional information

Fails to build on windows

Operating System Info

Windows 11

Other OS

No response

OBS Studio Version

Git

OBS Studio Version (Other)

No response

OBS Studio Log URL

n/a

OBS Studio Crash Log URL

No response

Expected Behavior

Successfully builds plugin template locally

Current Behavior

PS C:\Users\cpyar\Desktop\obs\obs-plugintemplate>  .\.github\scripts\Build-Windows.ps1
     >   Found dependency 7z as C:\Program Files\7-zip\7z.exe
     >   Found dependency cmake as C:\Program Files\CMake\bin\cmake.exe
     >   Found dependency iscc as C:\Program Files (x86)\Inno Setup 6\ISCC.exe
    =>   Setting up Pre-built obs-deps...
     >   Found downloaded Pre-built obs-deps.
     >   Checksum of downloaded Pre-built obs-deps matches.
    =>   Setting up Pre-built Qt6...
     >   Found downloaded Pre-built Qt6.
     >   Checksum of downloaded Pre-built Qt6 matches.
    =>   Checking for Git executable...
     >   Git found.
    =>   Setting up OBS Studio...
HEAD is now at 67f7a8407 CI: Change build file names
    =>   Checked out commit 67f7a84076be2c73d172eb14265c60d6209598db on branch master
Entering 'plugins/enc-amf'
Entering 'plugins/mac-syphon/syphon-framework'
Entering 'plugins/obs-browser'
Entering 'plugins/obs-outputs/ftl-sdk'
Synchronizing submodule url for 'libcurl'
Synchronizing submodule url for 'libjansson'
Entering 'plugins/obs-outputs/ftl-sdk/libcurl'
Entering 'plugins/obs-outputs/ftl-sdk/libjansson'
Entering 'plugins/obs-websocket'
Synchronizing submodule url for 'deps/asio'
Synchronizing submodule url for 'deps/json'
Synchronizing submodule url for 'deps/qr'
Synchronizing submodule url for 'deps/websocketpp'
Entering 'plugins/obs-websocket/deps/asio'
Entering 'plugins/obs-websocket/deps/json'
Entering 'plugins/obs-websocket/deps/qr'
Entering 'plugins/obs-websocket/deps/websocketpp'
Entering 'plugins/win-dshow/libdshowcapture'
    =>   Configuring OBS Studio...
    =>   Configuring OBS...
CMake Error: No generator specified for -G

Generators
* Visual Studio 17 2022        = Generates Visual Studio 2022 project files.
                                 Use -A option to specify architecture.
  Visual Studio 16 2019        = Generates Visual Studio 2019 project files.
                                 Use -A option to specify architecture.
  Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
                                 Optional [arch] can be "Win64" or "ARM".
  Visual Studio 10 2010 [arch] = Deprecated.  Generates Visual Studio 2010
                                 project files.  Optional [arch] can be
                                 "Win64" or "IA64".
  Visual Studio 9 2008 [arch]  = Generates Visual Studio 2008 project files.
                                 Optional [arch] can be "Win64" or "IA64".
  Borland Makefiles            = Generates Borland makefiles.
  NMake Makefiles              = Generates NMake makefiles.
  NMake Makefiles JOM          = Generates JOM makefiles.
  MSYS Makefiles               = Generates MSYS makefiles.
  MinGW Makefiles              = Generates a make file for use with
                                 mingw32-make.
  Green Hills MULTI            = Generates Green Hills MULTI files
                                 (experimental, work-in-progress).
  Unix Makefiles               = Generates standard UNIX makefiles.
  Ninja                        = Generates build.ninja files.
  Ninja Multi-Config           = Generates build-<Config>.ninja files.
  Watcom WMake                 = Generates Watcom WMake makefiles.
  CodeBlocks - MinGW Makefiles = Generates CodeBlocks project files.
  CodeBlocks - NMake Makefiles = Generates CodeBlocks project files.
  CodeBlocks - NMake Makefiles JOM
                               = Generates CodeBlocks project files.
  CodeBlocks - Ninja           = Generates CodeBlocks project files.
  CodeBlocks - Unix Makefiles  = Generates CodeBlocks project files.
  CodeLite - MinGW Makefiles   = Generates CodeLite project files.
  CodeLite - NMake Makefiles   = Generates CodeLite project files.
  CodeLite - Ninja             = Generates CodeLite project files.
  CodeLite - Unix Makefiles    = Generates CodeLite project files.
  Eclipse CDT4 - NMake Makefiles
                               = Generates Eclipse CDT 4.0 project files.
  Eclipse CDT4 - MinGW Makefiles
                               = Generates Eclipse CDT 4.0 project files.
  Eclipse CDT4 - Ninja         = Generates Eclipse CDT 4.0 project files.
  Eclipse CDT4 - Unix Makefiles= Generates Eclipse CDT 4.0 project files.
  Kate - MinGW Makefiles       = Generates Kate project files.
  Kate - NMake Makefiles       = Generates Kate project files.
  Kate - Ninja                 = Generates Kate project files.
  Kate - Unix Makefiles        = Generates Kate project files.
  Sublime Text 2 - MinGW Makefiles
                               = Generates Sublime Text 2 project files.
  Sublime Text 2 - NMake Makefiles
                               = Generates Sublime Text 2 project files.
  Sublime Text 2 - Ninja       = Generates Sublime Text 2 project files.
  Sublime Text 2 - Unix Makefiles
                               = Generates Sublime Text 2 project files.

Exception: C:\Users\cpyar\Desktop\obs\obs-plugintemplate\.github\scripts\Build-Windows.ps1:101
Line |
 101 |  Build
     |  ~~~~~
     | cmake -S . -B plugin_build_x64 -G  -DCMAKE_SYSTEM_VERSION=10.0.20348.0 -DCMAKE_GENERATOR_PLATFORM=x64
     | -DCMAKE_BUILD_TYPE=RelWithDebInfo -DQT_VERSION=6 -DENABLE_PLUGINS=OFF -DENABLE_UI=OFF
     | -DENABLE_SCRIPTING=OFF
     | -DCMAKE_INSTALL_PREFIX:PATH=C:\Users\cpyar\Desktop\obs\obs-build-dependencies\plugin-deps-2022-08-02-qt6-x64 -DCMAKE_PREFIX_PATH:PATH=C:\Users\cpyar\Desktop\obs\obs-build-dependencies\plugin-deps-2022-08-02-qt6-x64 exited with non-zero code 1.

Steps to Reproduce

  1. git clone obs-plugintemplate
  2. cd into template directory
  3. execute .\.github\scripts\Build-Windows.ps1
    ...

Anything else we should know?

I just earlier cloned the obs-studio repo and successfully built obs using the build scripts.
Then I downloaded the template and this is the result. other than that I cleaned up all previous instances of the build environment

error LNK2019 when using `obs_frontend_*` functions

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

Other

OBS Studio Version (Other)

plugin-deps-2022-08-02-qt6-x64

OBS Studio Log URL

OBS Studio Crash Log URL

No response

Expected Behavior

I would expect the template to build fine when using functions from obs-frontend-api.h.

Current Behavior

The build fails with:

MSBuild version 17.4.1+9a89d02ff for .NET Framework
...
plugin-main.obj : error LNK2019: unresolved external symbol obs_frontend_add_event_callback referenced in function obs_module_load [...\obs-plugintemplate\build_x64\obs-plugintemplate.vcxproj]
plugin-main.obj : error LNK2019: unresolved external symbol obs_frontend_remove_event_callback referenced in function obs_module_unload [...\obs-plugintemplate\build_x64\obs-plugintemplate.vcxproj]
...\obs-plugintemplate\build_x64\RelWithDebInfo\obs-plugintemplate.dll : fatal error LNK1120: 2 unresolved externals [...\obs-plugintemplate\build_x64\obs-plugintemplate.vcxproj]

Steps to Reproduce

  1. Clone this repo
  2. Modify plugin-main.c like so, just adding a simple obs frontend event callback:
#include <obs-module.h>
#include <obs-frontend-api.h>

#include "plugin-macros.generated.h"

void callback(enum obs_frontend_event event, void* data)
{
	(void)data;

	switch(event)
	{
		case OBS_FRONTEND_EVENT_STREAMING_STARTED:
			blog(LOG_INFO, "stream started");
			break;

		case OBS_FRONTEND_EVENT_STREAMING_STOPPED:
			blog(LOG_INFO, "stream stopped");
			break;
	}
}

OBS_DECLARE_MODULE()
OBS_MODULE_USE_DEFAULT_LOCALE(PLUGIN_NAME, "en-US")

bool obs_module_load(void)
{
	blog(LOG_INFO, "plugin loaded successfully (version %s)", PLUGIN_VERSION);

	obs_frontend_add_event_callback(callback, 0);
	return true;
}

void obs_module_unload()
{
	obs_frontend_remove_event_callback(callback, 0);

	blog(LOG_INFO, "plugin unloaded");
}
  1. Build the project using .\.github\scripts\Build-Windows.ps1

Anything else we should know?

The following diff fixes the problem. This just moves the obs-frontend-api lookup below some of the other directives. Not sure why it works.

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3b060d6..2ba1e8a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -26,8 +26,6 @@ include(cmake/ObsPluginHelpers.cmake)

 # Uncomment these lines if you want to use the OBS Frontend API in your plugin
 #[[
-find_package(obs-frontend-api REQUIRED)
-target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE OBS::obs-frontend-api)
 #]]

 # Uncomment those lines if you want to use Qt in your plugin
@@ -45,6 +43,9 @@ configure_file(src/plugin-macros.h.in ${CMAKE_SOURCE_DIR}/src/plugin-macros.gene

 target_sources(${CMAKE_PROJECT_NAME} PRIVATE src/plugin-macros.generated.h)

+find_package(obs-frontend-api REQUIRED)
+target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE OBS::obs-frontend-api)
+
 # /!\ TAKE NOTE: No need to edit things past this point /!\

 # --- Platform-independent build settings ---

RFC: Update MAC CI to check for secrets

Summary

Check for the existence of the required secrets for macOS signing. If they do not exist. skip those CI actions.

Motivation

The currently included CI pipeline breaks unless you have the ability and license to setup macOS signing and notarization.

A plugin template that includes a CI pipeline, should have that pipeline succeed when run without having to set up anything externally.

Drawbacks

Not sure I can think of one

Additional Information

Any additional information that may not be covered above that you feel is relevant. External links, references, examples, etc.

macOS linker-signed issue

Operating System Info

macOS 10.15

Other OS

No response

OBS Studio Version

Other

OBS Studio Version (Other)

I have not modified buildspec.json, out of the box it seems to target 27.2.3

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

I expected:

.github/scripts/build-macos.zsh

to build the .plugin file.

Current Behavior

Currently, the build fails with:

FAILED: obs-plugintemplate.plugin/Contents/MacOS/obs-plugintemplate 
: && /Library/Developer/CommandLineTools/usr/bin/c++ -O2 -g -DNDEBUG -arch x86_64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX11.1.sdk -mmacosx-version-min=10.15 -bundle -Wl,-headerpad_max_install_names  -o obs-plugintemplate.plugin/Contents/MacOS/obs-plugintemplate CMakeFiles/obs-plugintemplate.dir/obs-plugintemplate_autogen/mocs_compilation.cpp.o CMakeFiles/obs-plugintemplate.dir/src/plugin-main.c.o  -Wl,-rpath,/Users/browncanstudios/OBSDev/obs-build-dependencies/obs-plugin-deps/lib -Wl,-rpath,/Users/browncanstudios/OBSDev/obs-build-dependencies/obs-plugin-deps/Frameworks  /Users/browncanstudios/OBSDev/obs-build-dependencies/obs-plugin-deps/lib/libobs-frontend-api.27.dylib  /Users/browncanstudios/OBSDev/obs-build-dependencies/obs-plugin-deps/Frameworks/libobs.framework/Versions/A/libobs  /Users/browncanstudios/OBSDev/obs-build-dependencies/obs-plugin-deps/lib/QtWidgets.framework/QtWidgets  /Users/browncanstudios/OBSDev/obs-build-dependencies/obs-plugin-deps/lib/QtGui.framework/QtGui  /Users/browncanstudios/OBSDev/obs-build-dependencies/obs-plugin-deps/lib/QtCore.framework/QtCore && cd /Users/browncanstudios/OBSDev/obs-plugintemplate/build_macos-x86_64 && /bin/sh -c "codesign --force --sign \"-\" --options linker-signed \"/Users/browncanstudios/OBSDev/obs-plugintemplate/build_macos-x86_64/obs-plugintemplate.plugin\""
invalid argument "linker-signed"
ninja: build stopped: subcommand failed.
    ✖︎ script execution error

    Callstack:
    .github/scripts/build-macos.zsh:181
     .github/scripts/build-macos.zsh:188

Steps to Reproduce

  1. git clone [email protected]:obsproject/obs-plugintemplate.git
  2. cd obs-plugintemplate
  3. .github/scripts/build-macos.zsh
    ...

Anything else we should know?

I have gotten builds to work by commenting out the following lines in cmake/ObsPluginHelpers.cmake:

#    if(OBS_CODESIGN_LINKER)
#      set(CMAKE_XCODE_ATTRIBUTE_OTHER_CODE_SIGN_FLAGS "-o linker-signed")
#    endif()

and

#    add_custom_command(
#      TARGET ${target}
#      POST_BUILD
#      COMMAND
#        /bin/sh -c
#        "codesign --force --sign \"-\" $<$<BOOL:${OBS_CODESIGN_LINKER}>:--options linker-signed >\"$<TARGET_BUNDLE_DIR:${target}>\""
#      COMMENT "Codesigning ${target}"
#      VERBATIM)

After doing this, I can successfully run .github/scripts/build-macos.zsh and then .github/scripts/package-macos.zsh. After this point, I can install the plugin via obs-plugintemplate-1.0.0-macos-x86_64.pkg, but my OBS does not load it, but this is likely a completely separate issue, and I'm not sure if it's relevant since getting the build to work by commenting out those lines doesn't quite feel right in the first place.

P.S. I have an interesting plugin working when I build it into obs itself, but I can't figure out how to deal with distribution, so I'm excited to use this plugin template, and I apologize if this issue isn't appropriate or is just highlighting my own ignorance :\

QWebSocket doesn't work

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

29.1.3

OBS Studio Version (Other)

No response

OBS Studio Log URL

http://pastebin.fr/129483

OBS Studio Crash Log URL

No response

Expected Behavior

i successfully added QWebSocket dependency and it's dll, when i run the code inside a Qt application it connects to the socket with no problem, but when i add it to the plugin, when i call websocket.open(url) nothing happens.

Current Behavior

the socket never connects

Steps to Reproduce

...
in the obs_module_load create a simple websocket object then call the open method with a url

Anything else we should know?

No response

Failed to build

Operating System Info

macOS 12.0

Other OS

No response

OBS Studio Version

27.1.3

OBS Studio Version (Other)

No response

OBS Studio Log URL

https://obsproject.com/logs/eCGaQxWUEPnt64Qk

OBS Studio Crash Log URL

No response

Expected Behavior

Success Build

Current Behavior

Failed build

Steps to Reproduce

  1. git clone https://github.com/obsproject/obs-plugintemplate.git
  2. cd obs-plugintemplate
  3. ./CI/build-macos.sh

Anything else we should know?

I use bash.

Here is log:

  • Check macOS version...
  • Check Architecture...
  • Fetching version tags...
    [obs-plugin] Installing Homebrew dependencies
    Running brew update --preinstall...
    ==> Auto-updated Homebrew!
    Updated 2 taps (homebrew/core and homebrew/cask).
    ==> New Formulae
    kopia
    ==> Updated Formulae
    Updated 13 formulae.
    ==> Updated Casks
    Updated 14 casks.

Using cmake
Using ninja
Homebrew Bundle complete! 2 Brewfile dependencies now installed.
[obs-plugin] Set up precompiled macOS OBS dependencies v2021-08-17

  • Download...
    ############################################################################################################################### 100,0%############################################################################################################################### 100,0%
  • macos-deps-2021-08-17-universal.tar.xz downloaded successfully and passed hash check
  • Unpack...
    [obs-plugin] Set up precompiled dependency Qt v2021-08-17
  • Download...
    ############################################################################################################################### 100,0%############################################################################################################################### 100,0%
  • macos-deps-qt-2021-08-17-universal.tar.xz downloaded successfully and passed hash check
  • Unpack...
    Cloning into '/Users/rxandrey/Tests/obs-studio'...
    remote: Enumerating objects: 77875, done.
    remote: Counting objects: 100% (1/1), done.
    remote: Total 77875 (delta 0), reused 0 (delta 0), pack-reused 77874
    Receiving objects: 100% (77875/77875), 51.33 MiB | 5.20 MiB/s, done.
    Resolving deltas: 100% (52534/52534), done.
    Updating files: 100% (4509/4509), done.
    Submodule 'plugins/enc-amf' (https://github.com/obsproject/obs-amd-encoder.git) registered for path 'plugins/enc-amf'
    Submodule 'plugins/mac-syphon/syphon-framework' (https://github.com/palana/Syphon-Framework.git) registered for path 'plugins/mac-syphon/syphon-framework'
    Submodule 'plugins/obs-browser' (https://github.com/obsproject/obs-browser.git) registered for path 'plugins/obs-browser'
    Submodule 'plugins/obs-outputs/ftl-sdk' (https://github.com/Mixer/ftl-sdk.git) registered for path 'plugins/obs-outputs/ftl-sdk'
    Submodule 'plugins/obs-vst' (https://github.com/obsproject/obs-vst.git) registered for path 'plugins/obs-vst'
    Submodule 'plugins/win-dshow/libdshowcapture' (https://github.com/obsproject/libdshowcapture.git) registered for path 'plugins/win-dshow/libdshowcapture'
    Cloning into '/Users/rxandrey/Tests/obs-studio/plugins/enc-amf'...
    remote: Enumerating objects: 8222, done.
    remote: Counting objects: 100% (105/105), done.
    remote: Compressing objects: 100% (74/74), done.
    remote: Total 8222 (delta 34), reused 65 (delta 23), pack-reused 8117
    Receiving objects: 100% (8222/8222), 14.68 MiB | 1.36 MiB/s, done.
    Resolving deltas: 100% (5720/5720), done.
    Cloning into '/Users/rxandrey/Tests/obs-studio/plugins/mac-syphon/syphon-framework'...
    remote: Enumerating objects: 453, done.
    remote: Total 453 (delta 0), reused 0 (delta 0), pack-reused 453
    Receiving objects: 100% (453/453), 393.37 KiB | 1.96 MiB/s, done.
    Resolving deltas: 100% (306/306), done.
    Cloning into '/Users/rxandrey/Tests/obs-studio/plugins/obs-browser'...
    remote: Enumerating objects: 2876, done.
    remote: Counting objects: 100% (528/528), done.
    remote: Compressing objects: 100% (275/275), done.
    remote: Total 2876 (delta 294), reused 360 (delta 247), pack-reused 2348
    Receiving objects: 100% (2876/2876), 887.32 KiB | 3.40 MiB/s, done.
    Resolving deltas: 100% (1899/1899), done.
    Cloning into '/Users/rxandrey/Tests/obs-studio/plugins/obs-outputs/ftl-sdk'...
    remote: Enumerating objects: 2720, done.
    remote: Total 2720 (delta 0), reused 0 (delta 0), pack-reused 2720
    Receiving objects: 100% (2720/2720), 895.99 KiB | 2.73 MiB/s, done.
    Resolving deltas: 100% (1926/1926), done.
    Cloning into '/Users/rxandrey/Tests/obs-studio/plugins/obs-vst'...
    remote: Enumerating objects: 833, done.
    remote: Counting objects: 100% (161/161), done.
    remote: Compressing objects: 100% (128/128), done.
    remote: Total 833 (delta 88), reused 69 (delta 29), pack-reused 672
    Receiving objects: 100% (833/833), 648.66 KiB | 3.07 MiB/s, done.
    Resolving deltas: 100% (474/474), done.
    Cloning into '/Users/rxandrey/Tests/obs-studio/plugins/win-dshow/libdshowcapture'...
    remote: Enumerating objects: 908, done.
    remote: Counting objects: 100% (124/124), done.
    remote: Compressing objects: 100% (81/81), done.
    remote: Total 908 (delta 82), reused 67 (delta 43), pack-reused 784
    Receiving objects: 100% (908/908), 294.22 KiB | 1.99 MiB/s, done.
    Resolving deltas: 100% (629/629), done.
    Submodule path 'plugins/enc-amf': checked out 'f057617ea2617b25603189a7ab72513b62c8c140'
    Submodule path 'plugins/mac-syphon/syphon-framework': checked out '01b144811f6f7080b70b2d7cc729da071f86f9d7'
    Submodule path 'plugins/obs-browser': checked out 'b0d687937af876b52b69c46e276b4ab601b07f0e'
    Submodule path 'plugins/obs-outputs/ftl-sdk': checked out 'd0c8469f66806b5ea738d607f7d2b000af8b1129'
    Submodule 'libcurl' (https://github.com/curl/curl) registered for path 'plugins/obs-outputs/ftl-sdk/libcurl'
    Submodule 'libjansson' (https://github.com/akheron/jansson) registered for path 'plugins/obs-outputs/ftl-sdk/libjansson'
    Cloning into '/Users/rxandrey/Tests/obs-studio/plugins/obs-outputs/ftl-sdk/libcurl'...
    remote: Enumerating objects: 174175, done.
    remote: Counting objects: 100% (10/10), done.
    remote: Compressing objects: 100% (9/9), done.
    remote: Total 174175 (delta 2), reused 7 (delta 1), pack-reused 174165
    Receiving objects: 100% (174175/174175), 81.06 MiB | 2.92 MiB/s, done.
    Resolving deltas: 100% (137543/137543), done.
    Cloning into '/Users/rxandrey/Tests/obs-studio/plugins/obs-outputs/ftl-sdk/libjansson'...
    remote: Enumerating objects: 6536, done.
    remote: Counting objects: 100% (42/42), done.
    remote: Compressing objects: 100% (34/34), done.
    remote: Total 6536 (delta 11), reused 18 (delta 8), pack-reused 6494
    Receiving objects: 100% (6536/6536), 1.76 MiB | 1.85 MiB/s, done.
    Resolving deltas: 100% (3912/3912), done.
    Submodule path 'plugins/obs-outputs/ftl-sdk/libcurl': checked out '44b9b4d4f56d6f6de92c89636994c03984e9cd01'
    Submodule path 'plugins/obs-outputs/ftl-sdk/libjansson': checked out 'bc5741fb1ac730ead24e9bd08977fc6c248e04b0'
    Submodule path 'plugins/obs-vst': checked out '8ad3f64e702ac4f1799b209a511620eb1d096a01'
    Submodule path 'plugins/win-dshow/libdshowcapture': checked out '8e7a75f2bf50dce4c9ebccf362023ecc567cece1'
    Updating files: 100% (2537/2537), done.
    M plugins/enc-amf
    M plugins/obs-browser
    M plugins/obs-vst
    M plugins/win-dshow/libdshowcapture
    Switched to a new branch 'obs-plugin-build'
    [obs-plugin] Build libobs and obs-frontend-api
  • Configuring OBS build system
  • CCache available
    -- The C compiler identification is AppleClang 13.0.0.13000029
    -- The CXX compiler identification is AppleClang 13.0.0.13000029
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- OBS_VERSION: 26.1.2-modified
    -- Found OpenGL: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/OpenGL.framework
    -- Found FFmpeg: /Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libavcodec.dylib (found version "58.54.100") found components: avcodec avdevice avutil avformat
    -- Found Libcurl: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/usr/lib/libcurl.tbd
    CMake Deprecation Warning at deps/obs-scripting/CMakeLists.txt:1 (cmake_minimum_required):
    Compatibility with CMake < 2.8.12 will be removed from a future version of
    CMake.

Update the VERSION argument value or use a ... suffix to tell
CMake that the project does not need compatibility with older versions.

-- Scripting plugin disabled
CMake Deprecation Warning at deps/libcaption/CMakeLists.txt:1 (cmake_minimum_required):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.

Update the VERSION argument value or use a ... suffix to tell
CMake that the project does not need compatibility with older versions.

-- Using system Jansson library
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - found
-- Found Threads: TRUE
-- Found FFmpeg: /Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libavformat.dylib (found version "58.29.100") found components: avformat avutil swscale swresample avcodec
-- Using libavcodec for image loading in libobs
-- Found ZLIB: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/usr/lib/../lib/libz.tbd
-- Could NOT find LibVLC (missing: VLC_INCLUDE_DIR)
-- VLC video plugin disabled
-- Found PkgConfig: /usr/local/bin/pkg-config (found version "0.29.2")
-- Checking for module 'jack'
-- Found jack, version 1.9.19
-- Found jack: /usr/local/lib/libjack.dylib
-- Using the bundled VST header.
-- Found Libx264: /Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libx264.dylib
-- Libfdk not found - obs-libfdk plugin disabled
-- Found FFmpeg: /Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libavcodec.dylib (found version "58.54.100") found components: avcodec avfilter avdevice avutil swscale avformat swresample
-- Found FFmpeg: /Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libavcodec.dylib (found version "58.54.100") found components: avcodec avutil avformat
-- Found MbedTLS: /Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libmbedtls.dylib;/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libmbedcrypto.dylib;/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libmbedx509.dylib
-- Found ftl-sdk: ftl outputs enabled
-- Found Libspeexdsp: /Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libspeexdsp.dylib
-- Found AppKit: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.1.sdk/System/Library/Frameworks/AppKit.framework
-- Configuring done
-- Generating done
CMake Warning:
Manually-specified variables were not used by the project:

ENABLE_PLUGINS
OBS_CODESIGN_LINKER

-- Build files have been written to: /Users/rxandrey/Tests/obs-studio/plugin_build

  • Building libobs and obs-frontend-api
    [30/90] Building C object libobs/CMakeFiles/libobs.dir/graphics/graphics.c.o
    /Users/rxandrey/Tests/obs-studio/libobs/graphics/graphics.c:2775:22: warning: incompatible integer to pointer conversion passing 'uint32_t' (aka 'unsigned int') to parameter of type 'uint32_t *' (aka 'unsigned int *'); take the address with & [-Wint-conversion]
    graphics->device, handle);
    ^~~~~~
    &
    1 warning generated.
    /Users/rxandrey/Tests/obs-studio/libobs/graphics/graphics.c:2775:22: warning: incompatible integer to pointer conversion passing 'uint32_t' (aka 'unsigned int') to parameter of type 'uint32_t *' (aka 'unsigned int *'); take the address with & [-Wint-conversion]
    graphics->device, handle);
    ^~~~~~
    &
    1 warning generated.
    [88/90] Linking C shared library libobs/libobs.0.dylib
    ld: warning: dylib (/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libavcodec.dylib) was built for newer macOS version (17.0) than being linked (10.13)
    ld: warning: dylib (/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libavutil.dylib) was built for newer macOS version (17.0) than being linked (10.13)
    ld: warning: dylib (/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libswscale.dylib) was built for newer macOS version (17.0) than being linked (10.13)
    ld: warning: dylib (/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libavformat.dylib) was built for newer macOS version (17.0) than being linked (10.13)
    ld: warning: dylib (/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libswresample.dylib) was built for newer macOS version (17.0) than being linked (10.13)
    ld: warning: dylib (/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libavcodec.dylib) was built for newer macOS version (20.0) than being linked (11.0)
    ld: warning: dylib (/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libavformat.dylib) was built for newer macOS version (20.0) than being linked (11.0)
    ld: warning: dylib (/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libavutil.dylib) was built for newer macOS version (20.0) than being linked (11.0)
    ld: warning: dylib (/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libswscale.dylib) was built for newer macOS version (20.0) than being linked (11.0)
    ld: warning: dylib (/Users/rxandrey/Tests/obs-build-dependencies/obs-deps/lib/../lib/libswresample.dylib) was built for newer macOS version (20.0) than being linked (11.0)
    [90/90] Linking CXX shared library UI/obs-frontend-api/libobs-frontend-api.dylib
    [obs-plugin] Build plugin obs-plugin
  • Configuring OBS plugin build system
  • CCache available
    -- The C compiler identification is AppleClang 13.0.0.13000029
    -- The CXX compiler identification is AppleClang 13.0.0.13000029
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    CMake Error at CMakeLists.txt:28 (find_package):
    By not providing "Findobs-frontend-api.cmake" in CMAKE_MODULE_PATH this
    project has asked CMake to find a package configuration file provided by
    "obs-frontend-api", but CMake did not find one.

Could not find a package configuration file provided by "obs-frontend-api"
with any of the following names:

obs-frontend-apiConfig.cmake
obs-frontend-api-config.cmake

Add the installation prefix of "obs-frontend-api" to CMAKE_PREFIX_PATH or
set "obs-frontend-api_DIR" to a directory containing one of the above
files. If "obs-frontend-api" provides a separate development package or
SDK, be sure it has been installed.

-- Configuring incomplete, errors occurred!
See also "/Users/rxandrey/Tests/obs-plugintemplate/build/CMakeFiles/CMakeOutput.log".
See also "/Users/rxandrey/Tests/obs-plugintemplate/build/CMakeFiles/CMakeError.log".

  • ERROR during build step: builds_obs_plugin

RFC: Change CI to use GitHub Actions

Summary

Currently, the plugin template uses Azure Pipelines. I propose the default CI pipeline use GitHub Actions

Motivation

  • Since most of the workflow is on GitHub anyway, It makes more sense to use the Github Actions pipeline.
  • No need to sign up for yet another account in order to do CI

Drawbacks

Personally, I can't think of any

Additional Information

The base obs-studio project seems to be using GitHub actions now, as do many of the other plugins I have looked at.
ex.
https://github.com/cpyarger/obs-midi
https://github.com/Palakis/obs-websocket

Removing "v" prefix from the tag is intentional?

The releasing script under .github was changed to accept only the tag without "v" prefix (e.g. 1.0.0) though the previous script accept the tag with "v" prefix (e.g. v1.0.0).
Changing the tag specification is very confusing and I want to ask whether this change is expected and why this change is necessary.

Operating System Info

macOS 13

Other OS

No response

OBS Studio Version

29.1.3

OBS Studio Version (Other)

No response

OBS Studio Log URL

OBS Studio Crash Log URL

No response

Expected Behavior

Current Behavior

Steps to Reproduce

Anything else we should know?

No response

Build failed in MacOS/Linux CI

Operating System Info

Windows 10

Other OS

MacOS, Ubuntu

OBS Studio Version

Other

OBS Studio Version (Other)

29.1.2

OBS Studio Log URL

not available

OBS Studio Crash Log URL

No response

Expected Behavior

It works before #76 merged.

Current Behavior

  1. cannot find <util/config-file.h> in macos
  2. connot find obs_view_add, obs_view_remove in linux

Steps to Reproduce

here's sample repo: miaulightouch/obs-test-plugin@df14ecd...HEAD

Anything else we should know?

No response

how to use branch version of obs-studio

Operating System Info

macOS 12

Other OS

No response

OBS Studio Version

27.2.4

OBS Studio Version (Other)

No response

OBS Studio Log URL

NA

OBS Studio Crash Log URL

No response

Expected Behavior

NA

Current Behavior

NA

Steps to Reproduce

changed buildspec.json to
"obs-studio": {
"version": "27.2.4",
"repository": "https://github.com/obsproject/obs-studio.git",
"branch": "release/27.2",
"hash": "2ac9f83cb662692d34874ee1fd17ad7675597215"
},

and the build throws error : fatal: 'release/27.2' is not a commit and a branch 'test' cannot be created from it
btw where can i find the hash of obs-studio?

Thanks

Anything else we should know?

No response

RFC: Modify CMakeLists.txt to allow for building in or out of tree

Summary

I know with the current CI pipeline, the plugins get built out of tree, though personally, I prefer to build in tree as it makes building testing and debugging quite a bit easier.

Motivation

This would allow people to choose to build in or out of tree.

Drawbacks

Slightly more complex cmake for plugins.

Additional Information

Any additional information that may not be covered above that you feel is relevant. External links, references, examples, etc.

CI fails to find builds and packages

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

28.0.3

OBS Studio Version (Other)

No response

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

The CI scripts should create installers and packages and generate a release when a tag is pushed.

Current Behavior

No downloadable binaries are available. The generated release looks like a template only.

Steps to Reproduce

  1. Make a commit and push either as pull request or commit on the repo
  2. Check the workflow summary.
    image
    https://github.com/CodeYan01/source-defaults/actions/runs/3391597432
  3. Push a tag on master and see the resulting release.
    image
    https://github.com/CodeYan01/source-defaults/releases
    ...

Anything else we should know?

No response

macos plugin build failing to find util/dstr.h

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

29.1.3

OBS Studio Version (Other)

No response

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

macos builds should be able to include util/dstr.h without issue

Current Behavior

macos fails build, stating it can't find util/dstr.h

Steps to Reproduce

  1. Create from template
  2. Add #include <util/dstr.h> to plugin-main.c
  3. Push changes

Anything else we should know?

Links to builds failing on my current plugin
https://github.com/EZ64cool/obs-hadowplay/actions/runs/6884310748/job/18726554756

This came up whilst I've been trying to merge the latest template.

Broken NDI Runtime Download Link

Operating System Info

Windows 10

Other OS

No response

OBS Studio Version

29.0.2

OBS Studio Version (Other)

No response

OBS Studio Log URL

https://obsproject.com/logs/pcybGNE6qgFscshM

OBS Studio Crash Log URL

No response

Expected Behavior

Link expected to work.

Current Behavior

Wasn't able to install obs-ndi with the Windows installer due to this issue, so install did not fully complete. OBS opened with this warning:
image

But the link goes to a broken page - In fact, the domain itself doesn't seem to work. This NewTek forum post seems to have reported the issue 2 weeks ago.

image

I tried using the obs-ndi windows zip file contents to install the plugin, but I still get the missing runtime error. I don't know if this is normally installed as part of the Installer EXE and is just missing because install never fully finished? I've looked for an alternate download location for NDIRedistV5 but found nothing; Is there another place to attain it?

Steps to Reproduce

  1. Install obs-ndi plugin on a fresh obs install, on a fresh Windows 10 installation (as is my current situation, though loading previously backed up scene collection).

Anything else we should know?

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.