From: Alexey Abramov <levenson@mmer.org>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: Evan <evan.straw99@gmail.com>, 45707@debbugs.gnu.org
Subject: [bug#45707] [PATCH] gnu: Add obs-v4l2sink.
Date: Wed, 20 Jan 2021 09:28:00 +0100 [thread overview]
Message-ID: <87zh14vwq7.fsf@delta.lan> (raw)
In-Reply-To: <87a6t8y2ob.fsf@gnu.org> ("Ludovic Courtès"'s message of "Sat, 16 Jan 2021 22:47:32 +0100")
[-- Attachment #1: Type: text/plain, Size: 5649 bytes --]
Ludovic Courtès <ludo@gnu.org> writes:
> 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?
They have locals in their data directory at least. And probably something else, yes.
>
>> 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.
>
Done. Passed.
>> @@ -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?
That is a data directory. With the new patch it will be taken from
OBS_PLUGINS_DATA_DIRECTORY. %module% part is required for data.
>
>> + (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?
Done.
>
> Could you send an updated patch?
Attached. I also tested the obs patch with this [1] and this [2] and
haven't seen any erros. obs loads plugins successfully.
--8<---------------cut here---------------start------------->8---
info: ---------------------------------
info: Loaded Modules:
info: v4l2sink.so <------ this
info: text-freetype2.so
info: spectralizer.so <------ this
info: rtmp-services.so
info: obs-x264.so
info: obs-transitions.so
info: obs-outputs.so
info: obs-filters.so
info: obs-ffmpeg.so
info: linux-v4l2.so
info: linux-pulseaudio.so
info: linux-jack.so
info: linux-decklink.so
info: linux-capture.so
info: linux-alsa.so
info: libwlrobs.so <------ this
info: image-source.so
info: frontend-tools.so
info: decklink-ouput-ui.so
info: decklink-captions.so
info: ---------------------------------
~ master* ⇡
λ find /gnu/store/3s84wmh9pqcryfzx0rrri8sqff7fqlqn-obs-wlrobs-1.0/
/gnu/store/3s84wmh9pqcryfzx0rrri8sqff7fqlqn-obs-wlrobs-1.0/
/gnu/store/3s84wmh9pqcryfzx0rrri8sqff7fqlqn-obs-wlrobs-1.0/lib
/gnu/store/3s84wmh9pqcryfzx0rrri8sqff7fqlqn-obs-wlrobs-1.0/lib/obs-plugins
/gnu/store/3s84wmh9pqcryfzx0rrri8sqff7fqlqn-obs-wlrobs-1.0/lib/obs-plugins/libwlrobs.so
~ master* ⇡
λ find /gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/share
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/share/doc
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/share/doc/obs-spectralizer-1.3.3
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/share/doc/obs-spectralizer-1.3.3/COPYING.txt
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/share/obs
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/share/obs/obs-plugins
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/share/obs/obs-plugins/spectralizer
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/share/obs/obs-plugins/spectralizer/locale
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/share/obs/obs-plugins/spectralizer/locale/ko-KR.ini
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/share/obs/obs-plugins/spectralizer/locale/ru-RU.ini
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/share/obs/obs-plugins/spectralizer/locale/en-US.ini
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/lib
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/lib/obs-plugins
/gnu/store/rmz58nv5qcwr1pm38nx7aicyfq4jbp4a-obs-spectralizer-1.3.3/lib/obs-plugins/spectralizer.so
--8<---------------cut here---------------end--------------->8---
Footnotes:
[1] https://issues.guix.gnu.org/45960
[2] https://issues.guix.gnu.org/45961
--
Alexey
[-- Attachment #2: 0001-gnu-obs-Use-an-environment-variable-for-plugins-loca.patch --]
[-- Type: text/x-patch, Size: 4450 bytes --]
From f67bf04b57f45f0ca11cb6b902d22f7c4d44e005 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-modules-location.patch: Patch it.
---
gnu/local.mk | 1 +
.../patches/obs-modules-location.patch | 33 +++++++++++++++++++
gnu/packages/video.scm | 14 +++++++-
3 files changed, 47 insertions(+), 1 deletion(-)
create mode 100644 gnu/packages/patches/obs-modules-location.patch
diff --git a/gnu/local.mk b/gnu/local.mk
index 6f66021c78..aaf19302be 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1405,6 +1405,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-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-modules-location.patch b/gnu/packages/patches/obs-modules-location.patch
new file mode 100644
index 0000000000..18b286d006
--- /dev/null
+++ b/gnu/packages/patches/obs-modules-location.patch
@@ -0,0 +1,33 @@
+From d250434e6c8eb4f8c8cb47ef3cc6e6de8fa8f828 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 environment variable for a default module location
+
+diff --git a/libobs/obs-nix.c b/libobs/obs-nix.c
+index 382fa0546..481ea0f14 100644
+*** a/libobs/obs-nix.c
+--- b/libobs/obs-nix.c
+@@ -66,8 +66,19 @@
+
+ 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 *bin_directory = getenv("OBS_PLUGINS_DIRECTORY");
++ char *data_directory = getenv("OBS_PLUGINS_DATA_DIRECTORY");
++ if (bin_directory && data_directory) {
++ struct dstr dstr_data_directory;
++ dstr_init_copy(&dstr_data_directory, data_directory);
++ dstr_cat(&dstr_data_directory, "/%module%");
++ obs_add_module_path(bin_directory, dstr_data_directory.array);
++ dstr_free(&dstr_data_directory);
++
++ } else {
++ for (int i = 0; i < module_patterns_size; i++)
++ obs_add_module_path(module_bin[i], module_data[i]);
++ }
+ }
+
+ /*
+--
+2.29.2
\ No newline at end of file
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 97cb7d6837..49823e9a88 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -47,6 +47,7 @@
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
;;; Copyright © 2020 Ivan Kozlov <kanichos@yandex.ru>
;;; Copyright © 2020 Antoine Côté <antoine.cote@posteo.net>
+;;; Copyright © 2021 Alexey Abramov <levenson@mmer.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -3088,7 +3089,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-modules-location.patch"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
@@ -3103,6 +3106,15 @@ 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_DIRECTORY")
+ (separator #f) ;single entry
+ (files '("lib/obs-plugins")))
+ (search-path-specification
+ (variable "OBS_PLUGINS_DATA_DIRECTORY")
+ (separator #f) ;single entry
+ (files '("share/obs/obs-plugins")))))
(native-inputs
`(("cmocka" ,cmocka)
("pkg-config" ,pkg-config)))
--
2.29.2
next prev parent reply other threads:[~2021-01-20 8:29 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-06 23:36 [bug#45707] [PATCH] gnu: Add obs-v4l2sink Evan Straw
2021-01-06 23:42 ` Nicolò Balzarotti
2021-01-06 23:45 ` Evan Straw
2021-01-06 23:47 ` [bug#45707] [PATCH v2] " Evan Straw
2021-01-07 0:11 ` Nicolò Balzarotti
2021-01-07 4:37 ` Evan
2021-01-07 8:19 ` Alexey Abramov
2021-01-13 14:35 ` [bug#45707] [PATCH] " Ludovic Courtès
2021-01-15 16:47 ` Alexey Abramov
2021-01-16 21:47 ` Ludovic Courtès
2021-01-20 8:28 ` Alexey Abramov [this message]
2021-02-02 9:31 ` bug#45707: " Ludovic Courtès
2021-01-15 17:10 ` [bug#45707] [PATCH v2] " pelzflorian (Florian Pelz)
2021-01-15 19:25 ` Evan Straw
2021-02-02 20:00 ` [bug#45707] (no subject) Andrew Tropin
2021-02-03 14:40 ` [bug#45707] [PATCH] gnu: obs: Update obs to fb347c Andrew Tropin
2021-02-03 21:11 ` [bug#46113] " Ludovic Courtès
2021-02-04 10:45 ` guix-patches--- via
2021-02-04 12:49 ` bug#46113: " Andrew Tropin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87zh14vwq7.fsf@delta.lan \
--to=levenson@mmer.org \
--cc=45707@debbugs.gnu.org \
--cc=evan.straw99@gmail.com \
--cc=ludo@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).