diff mbox series

[bug#45707] gnu: Add obs-v4l2sink.

Message ID 87k0setadp.fsf@delta.lan
State Accepted
Headers show
Series [bug#45707] gnu: Add obs-v4l2sink. | expand

Checks

Context Check Description
cbaines/submitting builds success
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Alexey Abramov Jan. 15, 2021, 4:47 p.m. UTC
Hi,

Thanks Ludo. With this patch, obs will check OBS_PLUGINS_PATH environment variable for a *default* location of modules. 

Plugins might also have some data. I am not sure if it is safe to use relative path thought. Would it be better to use OBS_PLUGINS_DATA_PATH var?

Comments

Ludovic Courtès Jan. 16, 2021, 9:47 p.m. UTC | #1
Hi,

Alexey Abramov <levenson@mmer.org> skribis:

> Thanks Ludo. With this patch, obs will check OBS_PLUGINS_PATH environment variable for a *default* location of modules. 

OK.

> Plugins might also have some data. I am not sure if it is safe to use relative path thought. Would it be better to use OBS_PLUGINS_DATA_PATH var?

I don’t know, how does this patch change the situation wrt. finding a
plugin’s data?

> From 9ade5607aab510cc88561efb7c0b08567b5e19fe Mon Sep 17 00:00:00 2001
> From: Alexey Abramov <levenson@mmer.org>
> Date: Fri, 15 Jan 2021 17:26:37 +0100
> Subject: [PATCH] gnu: obs: Use an environment variable for plugins location.
>
> * gnu/local.mk (dist_patch_DATA): Add it.
> * gnu/packages/video.scm (obs): Use it.
> * gnu/packages/patches/obs-override-default-modules-location.patch: Patch it.

Some minor issues:

> +++ b/gnu/packages/patches/obs-override-default-modules-location.patch

‘guix lint’ might complain about the file name length.  :-)
Perhaps remove ‘override-default-’ from the file name.

> @@ -0,0 +1,32 @@
> +From 96e3c05043eb6b682b105e9080b45efeee33dcd0 Mon Sep 17 00:00:00 2001
> +From: Alexey Abramov <levenson@mmer.org>
> +Date: Fri, 15 Jan 2021 17:07:17 +0100
> +Subject: [PATCH] Use an environment variable for a default modules location
> +
> +---
> + libobs/obs-nix.c | 10 ++++++++--

If it comes from another distro, please indicate it clearly at the top
of the file.

> ++	char *obs_plugins_path = getenv("OBS_PLUGINS_PATH");
> ++	if (obs_plugins_path) {
> ++		struct dstr obs_plugins_data_path;
> ++		dstr_init_copy(&obs_plugins_data_path, obs_plugins_path);
> ++		dstr_cat(&obs_plugins_data_path, "/../../share/obs/obs-plugins/%module%");

Shouldn’t it be lib/obs-plugins, as your ‘search-path-specification’
indicates?

> +    (native-search-paths
> +     (list (search-path-specification
> +            (variable "OBS_PLUGINS_PATH")
> +            (separator #f)                         ;single entry
> +            (files '("lib/obs-plugins")))))

How about renaming the variable to ‘OBS_PLUGINS_DIRECTORY’ given that
it designates a single directory rather than a search path?

Could you send an updated patch?

Thanks!

Ludo’.
diff mbox series

Patch

From 9ade5607aab510cc88561efb7c0b08567b5e19fe Mon Sep 17 00:00:00 2001
From: Alexey Abramov <levenson@mmer.org>
Date: Fri, 15 Jan 2021 17:26:37 +0100
Subject: [PATCH] gnu: obs: Use an environment variable for plugins location.

* gnu/local.mk (dist_patch_DATA): Add it.
* gnu/packages/video.scm (obs): Use it.
* gnu/packages/patches/obs-override-default-modules-location.patch: Patch it.
---
 gnu/local.mk                                  |  1 +
 ...bs-override-default-modules-location.patch | 32 +++++++++++++++++++
 gnu/packages/video.scm                        |  9 +++++-
 3 files changed, 41 insertions(+), 1 deletion(-)
 create mode 100644 gnu/packages/patches/obs-override-default-modules-location.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index eb28104add..cd4085890b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1404,6 +1404,7 @@  dist_patch_DATA =						\
   %D%/packages/patches/nvi-dbpagesize-binpower.patch		\
   %D%/packages/patches/nvi-db4.patch				\
   %D%/packages/patches/nyacc-binary-literals.patch		\
+  %D%/packages/patches/obs-override-default-modules-location.patch	\
   %D%/packages/patches/ocaml-bitstring-fix-configure.patch \
   %D%/packages/patches/ocaml-cairo2-caml_ba_array-fix.patch     \
   %D%/packages/patches/ocaml-CVE-2015-8869.patch		\
diff --git a/gnu/packages/patches/obs-override-default-modules-location.patch b/gnu/packages/patches/obs-override-default-modules-location.patch
new file mode 100644
index 0000000000..88adb4a8c1
--- /dev/null
+++ b/gnu/packages/patches/obs-override-default-modules-location.patch
@@ -0,0 +1,32 @@ 
+From 96e3c05043eb6b682b105e9080b45efeee33dcd0 Mon Sep 17 00:00:00 2001
+From: Alexey Abramov <levenson@mmer.org>
+Date: Fri, 15 Jan 2021 17:07:17 +0100
+Subject: [PATCH] Use an environment variable for a default modules location
+
+---
+ libobs/obs-nix.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/libobs/obs-nix.c b/libobs/obs-nix.c
+index 382fa0546..d58a0b48a 100644
+--- a/libobs/obs-nix.c
++++ b/libobs/obs-nix.c
+@@ -66,8 +66,14 @@ static const int module_patterns_size =
+ 
+ void add_default_module_paths(void)
+ {
+-	for (int i = 0; i < module_patterns_size; i++)
+-		obs_add_module_path(module_bin[i], module_data[i]);
++	char *obs_plugins_path = getenv("OBS_PLUGINS_PATH");
++	if (obs_plugins_path) {
++		struct dstr obs_plugins_data_path;
++		dstr_init_copy(&obs_plugins_data_path, obs_plugins_path);
++		dstr_cat(&obs_plugins_data_path, "/../../share/obs/obs-plugins/%module%");
++		obs_add_module_path(obs_plugins_path, obs_plugins_data_path.array);
++		dstr_free(&obs_plugins_data_path);
++	}
+ }
+ 
+ /*
+-- 
+2.29.2
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index b314e4903b..15bb2e4d40 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -3087,7 +3087,9 @@  be used for realtime video capture via Linux-specific APIs.")
               (file-name (git-file-name name version))
               (sha256
                (base32
-                "1k1asqiqw757v59ayx0w029ril947hs0lcp8n91knzjl891fr4nc"))))
+                "1k1asqiqw757v59ayx0w029ril947hs0lcp8n91knzjl891fr4nc"))
+              (patches
+               (search-patches "obs-override-default-modules-location.patch"))))
     (build-system cmake-build-system)
     (arguments
      `(#:configure-flags
@@ -3102,6 +3104,11 @@  be used for realtime video capture via Linux-specific APIs.")
                (wrap-program (string-append out "/bin/obs")
                  `("QT_PLUGIN_PATH" ":" prefix (,plugin-path))))
              #t)))))
+    (native-search-paths
+     (list (search-path-specification
+            (variable "OBS_PLUGINS_PATH")
+            (separator #f)                         ;single entry
+            (files '("lib/obs-plugins")))))
     (native-inputs
      `(("cmocka" ,cmocka)
        ("pkg-config" ,pkg-config)))
-- 
2.29.2