forked from pool/wireplumber
Accepting request 1172110 from home:alarrosa:branches:multimedia:libs
- Add patch from upstream to fix a json log issue: * 0001-lua-json-fix-error-ouput.patch - Add patch from upstream to add a method to merge json containers: * 0002-lua-json-add-method-to-merge-json-containers.patch - Add patch from upstream to fix merging a particular case of configuration options: * 0003-json-utils-fix-overriding-of-non-container-values-when.patch - Fix wireplumber not starting successfully when audio support is not enabled since the main profile now requires it. The best option would be to use a video-only profile but it's too late to change the way wireplumber is started in SLE/Leap, so the solution just makes audio/bluetooth optional for now (bsc#1223916) * split-config-file.py OBS-URL: https://build.opensuse.org/request/show/1172110 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/wireplumber?expand=0&rev=78
This commit is contained in:
parent
c38e110e74
commit
c5b5db5d58
34
0001-lua-json-fix-error-ouput.patch
Normal file
34
0001-lua-json-fix-error-ouput.patch
Normal file
@ -0,0 +1,34 @@
|
||||
From 709eecb21f30a157b9a4aa8ab45a4c1ec608d628 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Ursella <stefan.ursella@wolfvision.net>
|
||||
Date: Fri, 26 Apr 2024 07:27:31 +0200
|
||||
Subject: [PATCH] lua: json: fix error ouput
|
||||
|
||||
---
|
||||
modules/module-lua-scripting/api/json.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/modules/module-lua-scripting/api/json.c b/modules/module-lua-scripting/api/json.c
|
||||
index 242f0e410..5afa5c914 100644
|
||||
--- a/modules/module-lua-scripting/api/json.c
|
||||
+++ b/modules/module-lua-scripting/api/json.c
|
||||
@@ -281,7 +281,7 @@ spa_json_array_new (lua_State *L)
|
||||
break;
|
||||
}
|
||||
default:
|
||||
- luaL_error (L, "Json does not support lua type ",
|
||||
+ luaL_error (L, "Json does not support lua type %s",
|
||||
lua_typename(L, lua_type(L, -1)));
|
||||
break;
|
||||
}
|
||||
@@ -327,7 +327,7 @@ spa_json_object_new (lua_State *L)
|
||||
break;
|
||||
}
|
||||
default:
|
||||
- luaL_error (L, "Json does not support lua type ",
|
||||
+ luaL_error (L, "Json does not support lua type %s",
|
||||
lua_typename(L, lua_type(L, -1)));
|
||||
break;
|
||||
}
|
||||
--
|
||||
GitLab
|
||||
|
77
0002-lua-json-add-method-to-merge-json-containers.patch
Normal file
77
0002-lua-json-add-method-to-merge-json-containers.patch
Normal file
@ -0,0 +1,77 @@
|
||||
From fd7a1af7ffec4be04348b4807a4a8f95777e2515 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Ursella <stefan.ursella@wolfvision.net>
|
||||
Date: Fri, 26 Apr 2024 07:26:52 +0200
|
||||
Subject: [PATCH] lua: json: add method to merge json containers
|
||||
|
||||
---
|
||||
modules/module-lua-scripting/api/json.c | 15 +++++++++++++++
|
||||
tests/wplua/scripts/json.lua | 23 +++++++++++++++++++++++
|
||||
2 files changed, 38 insertions(+)
|
||||
|
||||
diff --git a/modules/module-lua-scripting/api/json.c b/modules/module-lua-scripting/api/json.c
|
||||
index 39f6b10f0..242f0e410 100644
|
||||
--- a/modules/module-lua-scripting/api/json.c
|
||||
+++ b/modules/module-lua-scripting/api/json.c
|
||||
@@ -167,6 +167,20 @@ push_luajson (lua_State *L, WpSpaJson *json, gint n_recursions)
|
||||
}
|
||||
}
|
||||
|
||||
+static int
|
||||
+spa_json_merge (lua_State *L)
|
||||
+{
|
||||
+ WpSpaJson *a = wplua_checkboxed (L, 1, WP_TYPE_SPA_JSON);
|
||||
+ WpSpaJson *b = wplua_checkboxed (L, 2, WP_TYPE_SPA_JSON);
|
||||
+
|
||||
+ WpSpaJson *merge = wp_json_utils_merge_containers(a, b);
|
||||
+ if(!merge)
|
||||
+ luaL_error (L, "only Json container merge supported");
|
||||
+
|
||||
+ wplua_pushboxed (L, WP_TYPE_SPA_JSON, merge);
|
||||
+ return 1;
|
||||
+}
|
||||
+
|
||||
static int
|
||||
spa_json_parse (lua_State *L)
|
||||
{
|
||||
@@ -340,6 +354,7 @@ static const luaL_Reg spa_json_methods[] = {
|
||||
{ "is_array", spa_json_is_array },
|
||||
{ "is_object", spa_json_is_object },
|
||||
{ "parse", spa_json_parse },
|
||||
+ { "merge", spa_json_merge },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
diff --git a/tests/wplua/scripts/json.lua b/tests/wplua/scripts/json.lua
|
||||
index 52a8a3823..03e14ba6d 100644
|
||||
--- a/tests/wplua/scripts/json.lua
|
||||
+++ b/tests/wplua/scripts/json.lua
|
||||
@@ -240,3 +240,26 @@ assert (type (val.args) == "table")
|
||||
assert (type (val.args.test) == "table")
|
||||
assert (val.args.test[1] == 0)
|
||||
assert (val.args.test[2] == 1)
|
||||
+
|
||||
+json = Json.Array { "foo" }
|
||||
+json2 = Json.Array { "bar" }
|
||||
+json = json:merge(json2)
|
||||
+assert (json:is_array())
|
||||
+val = json:parse ()
|
||||
+assert (val[1] == "foo")
|
||||
+assert (val[2] == "bar")
|
||||
+
|
||||
+table = {}
|
||||
+table["1"] = 1
|
||||
+table["2"] = 2
|
||||
+json = Json.Object (table)
|
||||
+table = {}
|
||||
+table["3"] = 3
|
||||
+table["4"] = 4
|
||||
+json2 = Json.Object (table)
|
||||
+json = json:merge(json2)
|
||||
+val = json:parse ()
|
||||
+assert (val["1"] == 1)
|
||||
+assert (val["2"] == 2)
|
||||
+assert (val["3"] == 3)
|
||||
+assert (val["4"] == 4)
|
||||
--
|
||||
GitLab
|
||||
|
@ -0,0 +1,58 @@
|
||||
From e6a70db254585b2cd9f3265fdafc884a48c3682d Mon Sep 17 00:00:00 2001
|
||||
From: George Kiagiadakis <george.kiagiadakis@collabora.com>
|
||||
Date: Fri, 3 May 2024 15:54:37 +0300
|
||||
Subject: [PATCH] json-utils: fix overriding of non-container values when
|
||||
merging
|
||||
|
||||
Non-container values should always be overriden
|
||||
|
||||
Fixes: #653
|
||||
---
|
||||
lib/wp/json-utils.c | 4 ++--
|
||||
tests/wplua/scripts/json.lua | 7 +++++++
|
||||
2 files changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/wp/json-utils.c b/lib/wp/json-utils.c
|
||||
index 53d1b2b1b..936ad449e 100644
|
||||
--- a/lib/wp/json-utils.c
|
||||
+++ b/lib/wp/json-utils.c
|
||||
@@ -211,12 +211,12 @@ merge_json_objects (WpSpaJson *a, WpSpaJson *b)
|
||||
g_return_val_if_fail (wp_iterator_next (it, &item), NULL);
|
||||
val = g_value_dup_boxed (&item);
|
||||
|
||||
- if (!override &&
|
||||
+ if (!override && wp_spa_json_is_container (val) &&
|
||||
(wp_spa_json_object_get (a, key_str, "J", &j, NULL) ||
|
||||
wp_spa_json_object_get (a, override_key_str, "J", &j, NULL))) {
|
||||
g_autoptr (WpSpaJson) merged = wp_json_utils_merge_containers (j, val);
|
||||
if (!merged) {
|
||||
- wp_warning ("skipping merge of %s as JSON values are not compatible",
|
||||
+ wp_warning ("skipping merge of %s as JSON values are not compatible containers",
|
||||
key_str);
|
||||
continue;
|
||||
}
|
||||
diff --git a/tests/wplua/scripts/json.lua b/tests/wplua/scripts/json.lua
|
||||
index 03e14ba6d..5489bab23 100644
|
||||
--- a/tests/wplua/scripts/json.lua
|
||||
+++ b/tests/wplua/scripts/json.lua
|
||||
@@ -241,6 +241,7 @@ assert (type (val.args.test) == "table")
|
||||
assert (val.args.test[1] == 0)
|
||||
assert (val.args.test[2] == 1)
|
||||
|
||||
+-- merge
|
||||
json = Json.Array { "foo" }
|
||||
json2 = Json.Array { "bar" }
|
||||
json = json:merge(json2)
|
||||
@@ -263,3 +264,9 @@ assert (val["1"] == 1)
|
||||
assert (val["2"] == 2)
|
||||
assert (val["3"] == 3)
|
||||
assert (val["4"] == 4)
|
||||
+
|
||||
+json = Json.Object { ["a"] = "foo" }
|
||||
+json2 = Json.Object { ["a"] = "bar" }
|
||||
+json = json:merge(json2)
|
||||
+val = json:parse ()
|
||||
+assert (val["a"] == "bar")
|
||||
--
|
||||
GitLab
|
||||
|
@ -25,6 +25,9 @@ for line in lines:
|
||||
if is_in_device_monitor:
|
||||
device_monitors_content += line
|
||||
else:
|
||||
# Fixes wireplumber running the main profile when not having audio support (bsc#1223916)
|
||||
if line in [' hardware.audio = required\n', ' hardware.bluetooth = required\n']:
|
||||
line = line.replace('required', 'optional')
|
||||
main_config_content += line
|
||||
|
||||
config_sha256 = sha256_from_data(device_monitors_content.encode('utf-8'))
|
||||
|
@ -1,3 +1,21 @@
|
||||
-------------------------------------------------------------------
|
||||
Mon May 6 07:41:23 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
|
||||
|
||||
- Add patch from upstream to fix a json log issue:
|
||||
* 0001-lua-json-fix-error-ouput.patch
|
||||
- Add patch from upstream to add a method to merge json containers:
|
||||
* 0002-lua-json-add-method-to-merge-json-containers.patch
|
||||
- Add patch from upstream to fix merging a particular case
|
||||
of configuration options:
|
||||
* 0003-json-utils-fix-overriding-of-non-container-values-when.patch
|
||||
- Fix wireplumber not starting successfully when audio support is
|
||||
not enabled since the main profile now requires it. The best
|
||||
option would be to use a video-only profile but it's too late
|
||||
to change the way wireplumber is started in SLE/Leap, so the
|
||||
solution just makes audio/bluetooth optional for now
|
||||
(bsc#1223916)
|
||||
* split-config-file.py
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Tue Apr 23 06:48:06 UTC 2024 - Antonio Larrosa <alarrosa@suse.com>
|
||||
|
||||
|
@ -30,6 +30,9 @@ Group: Development/Libraries/C and C++
|
||||
URL: https://gitlab.freedesktop.org/pipewire/wireplumber
|
||||
Source0: wireplumber-%{version}.tar.xz
|
||||
Source1: split-config-file.py
|
||||
Patch0: 0001-lua-json-fix-error-ouput.patch
|
||||
Patch1: 0002-lua-json-add-method-to-merge-json-containers.patch
|
||||
Patch2: 0003-json-utils-fix-overriding-of-non-container-values-when.patch
|
||||
# docs
|
||||
BuildRequires: doxygen
|
||||
BuildRequires: graphviz
|
||||
|
Loading…
Reference in New Issue
Block a user