summaryrefslogtreecommitdiffstats
path: root/meta-multimedia
diff options
context:
space:
mode:
authoralperak <alperyasinak1@gmail.com>2024-01-15 14:49:20 +0300
committerKhem Raj <raj.khem@gmail.com>2024-01-19 09:51:04 -0800
commitf39118139514a2331b3262e5bc230a2179de9c51 (patch)
tree915fc66f344e7da19aa27ead4f11339d3d320242 /meta-multimedia
parent9f5b336614130b1f6f993fd21243ac4f5e957a60 (diff)
downloadmeta-openembedded-f39118139514a2331b3262e5bc230a2179de9c51.tar.gz
gerbera: upgrade 1.12.1 -> 2.0.0
* 0001-Fix-build-against-fmt-10.patch dropped because fixed in the new version * Expat dropped from DEPENDS because has been replaced with pugixml at version 1.5.0 * Required dependencies updated and added to DEPENDS * Optional packages added and those enable by default have been enabled. Changelog: NEW Features Staged importing that allows updating the virtual layout instead of deleting and recreating it each time (import-mode="grb") Config options as command line arguments (--set-option OPT=VAL with --print-options) Allow configuration of follow-symlinks per autoscan directory Configuration of containers in virtual layout: title can be changed, some nodes can be disabled New mode of loading Javascript plugins with cleanup of global variables Generation of example configuration via command line option --create-example-config Case insensitive sorting for databases New config options for URL handling and host redirection Use .nomedia to hide directory, incl. config option Support for UPnP commands GetFeatureList and GetSortExtensionCapabilities Build for Ubuntu 23.04 and 23.10 FIXES Autoscan: Keep track of renamed directories Docker: add JPEG and update description Runtime issues in request handling Configurable handling of HOME directory Transcoding: parsing issue of requests Stability for sqlite database access Browsing on Samsung devices Code Improvements Update Javascript libraries Update versions of googletest (1.14), pupnp (1.14.18), libexiv2 (v0.28.1), libebml (1.4.5), fmt (10.2.0), pugixml (1.14), spdlog (1.12.0) and taglib (1.13.1) Compatibility with gcc14 Signed-off-by: alperak <alperyasinak1@gmail.com> Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'meta-multimedia')
-rw-r--r--meta-multimedia/recipes-multimedia/gerbera/gerbera/0001-Fix-build-against-fmt-10.patch168
-rw-r--r--meta-multimedia/recipes-multimedia/gerbera/gerbera_1.12.1.bb31
-rw-r--r--meta-multimedia/recipes-multimedia/gerbera/gerbera_2.0.0.bb30
3 files changed, 30 insertions, 199 deletions
diff --git a/meta-multimedia/recipes-multimedia/gerbera/gerbera/0001-Fix-build-against-fmt-10.patch b/meta-multimedia/recipes-multimedia/gerbera/gerbera/0001-Fix-build-against-fmt-10.patch
deleted file mode 100644
index 2da98cfcf..000000000
--- a/meta-multimedia/recipes-multimedia/gerbera/gerbera/0001-Fix-build-against-fmt-10.patch
+++ /dev/null
@@ -1,168 +0,0 @@
1From 2c08724e8a7e3a0ee8cdd91246a714a17f2ba5c1 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 17 May 2023 17:31:56 -0700
4Subject: [PATCH] Fix build against fmt 10+
5
6Fixes
7git/src/config/setup/config_setup_vector.cc:191:9: required from here
8| /home/hains/openpli-dm920-python3/build/tmp/work/cortexa15hf-neon-vfpv4-oe-linux-gnueabi/gerbera/1.11.0-r0/
9recipe-sysroot/usr/include/fmt/core.h:1691:7: error: static assertion failed: Cannot format an argument. To make type T formattable provide a formatter<T> specialization: https://fmt.dev/latest/api.html#udt
10| 1691 | formattable,
11| | ^~~~~~~~~~~
12
13Source: https://github.com/Hains/openpli-dm920-python3/commit/688ae121bd3928925a8656bd4aaf3857d8e8a8ed
14
15Upstream-Status: Pending
16Signed-off-by: Khem Raj <raj.khem@gmail.com>
17---
18 src/config/setup/config_setup_array.cc | 6 +++---
19 src/config/setup/config_setup_autoscan.cc | 2 +-
20 src/config/setup/config_setup_client.cc | 2 +-
21 src/config/setup/config_setup_dictionary.cc | 6 +++---
22 src/config/setup/config_setup_dynamic.cc | 2 +-
23 src/config/setup/config_setup_transcoding.cc | 2 +-
24 src/config/setup/config_setup_tweak.cc | 2 +-
25 src/config/setup/config_setup_vector.cc | 4 ++--
26 8 files changed, 13 insertions(+), 13 deletions(-)
27
28diff --git a/src/config/setup/config_setup_array.cc b/src/config/setup/config_setup_array.cc
29index 8f3cf1db..efc9b501 100644
30--- a/src/config/setup/config_setup_array.cc
31+++ b/src/config/setup/config_setup_array.cc
32@@ -136,11 +136,11 @@ std::vector<std::string> ConfigArraySetup::getXmlContent(const pugi::xml_node& o
33 std::vector<std::string> result;
34 if (initArray) {
35 if (!initArray(optValue, result, ConfigDefinition::mapConfigOption(nodeOption))) {
36- throw_std_runtime_error("Invalid {} array value '{}'", xpath, optValue);
37+ throw_std_runtime_error("Invalid {} array value '{}'", xpath, optValue.value());
38 }
39 } else {
40 if (!createOptionFromNode(optValue, result)) {
41- throw_std_runtime_error("Invalid {} array value '{}'", xpath, optValue);
42+ throw_std_runtime_error("Invalid {} array value '{}'", xpath, optValue.value());
43 }
44 }
45 if (result.empty()) {
46@@ -149,7 +149,7 @@ std::vector<std::string> ConfigArraySetup::getXmlContent(const pugi::xml_node& o
47 result = defaultEntries;
48 }
49 if (notEmpty && result.empty()) {
50- throw_std_runtime_error("Invalid array {} empty '{}'", xpath, optValue);
51+ throw_std_runtime_error("Invalid array {} empty '{}'", xpath, optValue.value());
52 }
53 return result;
54 }
55diff --git a/src/config/setup/config_setup_autoscan.cc b/src/config/setup/config_setup_autoscan.cc
56index e882ca3e..d773419b 100644
57--- a/src/config/setup/config_setup_autoscan.cc
58+++ b/src/config/setup/config_setup_autoscan.cc
59@@ -203,7 +203,7 @@ std::shared_ptr<ConfigOption> ConfigAutoscanSetup::newOption(const pugi::xml_nod
60 {
61 auto result = std::vector<AutoscanDirectory>();
62 if (!createOptionFromNode(optValue, result)) {
63- throw_std_runtime_error("Init {} autoscan failed '{}'", xpath, optValue);
64+ throw_std_runtime_error("Init {} autoscan failed '{}'", xpath, optValue.value());
65 }
66 optionValue = std::make_shared<AutoscanListOption>(result);
67 return optionValue;
68diff --git a/src/config/setup/config_setup_client.cc b/src/config/setup/config_setup_client.cc
69index 30bb98cb..56be9c53 100644
70--- a/src/config/setup/config_setup_client.cc
71+++ b/src/config/setup/config_setup_client.cc
72@@ -163,7 +163,7 @@ std::shared_ptr<ConfigOption> ConfigClientSetup::newOption(const pugi::xml_node&
73 auto result = std::make_shared<ClientConfigList>();
74
75 if (!createOptionFromNode(isEnabled ? optValue : pugi::xml_node(nullptr), result)) {
76- throw_std_runtime_error("Init {} client config failed '{}'", xpath, optValue);
77+ throw_std_runtime_error("Init {} client config failed '{}'", xpath, optValue.value());
78 }
79 optionValue = std::make_shared<ClientConfigListOption>(result);
80 return optionValue;
81diff --git a/src/config/setup/config_setup_dictionary.cc b/src/config/setup/config_setup_dictionary.cc
82index eb91c694..ea2aaa05 100644
83--- a/src/config/setup/config_setup_dictionary.cc
84+++ b/src/config/setup/config_setup_dictionary.cc
85@@ -162,11 +162,11 @@ std::map<std::string, std::string> ConfigDictionarySetup::getXmlContent(const pu
86 std::map<std::string, std::string> result;
87 if (initDict) {
88 if (!initDict(optValue, result)) {
89- throw_std_runtime_error("Init {} dictionary failed '{}'", xpath, optValue);
90+ throw_std_runtime_error("Init {} dictionary failed '{}'", xpath, optValue.value());
91 }
92 } else {
93 if (!createOptionFromNode(optValue, result) && required) {
94- throw_std_runtime_error("Init {} dictionary failed '{}'", xpath, optValue);
95+ throw_std_runtime_error("Init {} dictionary failed '{}'", xpath, optValue.value());
96 }
97 }
98 if (result.empty()) {
99@@ -175,7 +175,7 @@ std::map<std::string, std::string> ConfigDictionarySetup::getXmlContent(const pu
100 result = defaultEntries;
101 }
102 if (notEmpty && result.empty()) {
103- throw_std_runtime_error("Invalid dictionary {} empty '{}'", xpath, optValue);
104+ throw_std_runtime_error("Invalid dictionary {} empty '{}'", xpath, optValue.value());
105 }
106 return result;
107 }
108diff --git a/src/config/setup/config_setup_dynamic.cc b/src/config/setup/config_setup_dynamic.cc
109index 6a43b820..93030b85 100644
110--- a/src/config/setup/config_setup_dynamic.cc
111+++ b/src/config/setup/config_setup_dynamic.cc
112@@ -179,7 +179,7 @@ std::shared_ptr<ConfigOption> ConfigDynamicContentSetup::newOption(const pugi::x
113 auto result = std::make_shared<DynamicContentList>();
114
115 if (!createOptionFromNode(optValue, result)) {
116- throw_std_runtime_error("Init {} DynamicContentList failed '{}'", xpath, optValue);
117+ throw_std_runtime_error("Init {} DynamicContentList failed '{}'", xpath, optValue.value());
118 }
119 optionValue = std::make_shared<DynamicContentListOption>(result);
120 return optionValue;
121diff --git a/src/config/setup/config_setup_transcoding.cc b/src/config/setup/config_setup_transcoding.cc
122index 4827f109..c353ce1f 100644
123--- a/src/config/setup/config_setup_transcoding.cc
124+++ b/src/config/setup/config_setup_transcoding.cc
125@@ -492,7 +492,7 @@ std::shared_ptr<ConfigOption> ConfigTranscodingSetup::newOption(const pugi::xml_
126 auto result = std::make_shared<TranscodingProfileList>();
127
128 if (!createOptionFromNode(isEnabled ? optValue : pugi::xml_node(nullptr), result)) {
129- throw_std_runtime_error("Init {} transcoding failed '{}'", xpath, optValue);
130+ throw_std_runtime_error("Init {} transcoding failed '{}'", xpath, optValue.value());
131 }
132 optionValue = std::make_shared<TranscodingProfileListOption>(result);
133 return optionValue;
134diff --git a/src/config/setup/config_setup_tweak.cc b/src/config/setup/config_setup_tweak.cc
135index d7692c09..72c2beb2 100644
136--- a/src/config/setup/config_setup_tweak.cc
137+++ b/src/config/setup/config_setup_tweak.cc
138@@ -242,7 +242,7 @@ std::shared_ptr<ConfigOption> ConfigDirectorySetup::newOption(const pugi::xml_no
139 auto result = std::make_shared<DirectoryConfigList>();
140
141 if (!createOptionFromNode(optValue, result)) {
142- throw_std_runtime_error("Init {} DirectoryConfigList failed '{}'", xpath, optValue);
143+ throw_std_runtime_error("Init {} DirectoryConfigList failed '{}'", xpath, optValue.value());
144 }
145 optionValue = std::make_shared<DirectoryTweakOption>(result);
146 return optionValue;
147diff --git a/src/config/setup/config_setup_vector.cc b/src/config/setup/config_setup_vector.cc
148index c8ff853d..91f99ca4 100644
149--- a/src/config/setup/config_setup_vector.cc
150+++ b/src/config/setup/config_setup_vector.cc
151@@ -180,7 +180,7 @@ std::vector<std::vector<std::pair<std::string, std::string>>> ConfigVectorSetup:
152 {
153 std::vector<std::vector<std::pair<std::string, std::string>>> result;
154 if (!createOptionFromNode(optValue, result) && required) {
155- throw_std_runtime_error("Init {} vector failed '{}'", xpath, optValue);
156+ throw_std_runtime_error("Init {} vector failed '{}'", xpath, optValue.value());
157 }
158 if (result.empty()) {
159 log_debug("{} assigning {} default values", xpath, defaultEntries.size());
160@@ -188,7 +188,7 @@ std::vector<std::vector<std::pair<std::string, std::string>>> ConfigVectorSetup:
161 result = defaultEntries;
162 }
163 if (notEmpty && result.empty()) {
164- throw_std_runtime_error("Invalid vector {} empty '{}'", xpath, optValue);
165+ throw_std_runtime_error("Invalid vector {} empty '{}'", xpath, optValue.value());
166 }
167 return result;
168 }
diff --git a/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.12.1.bb b/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.12.1.bb
deleted file mode 100644
index 89cc51e0e..000000000
--- a/meta-multimedia/recipes-multimedia/gerbera/gerbera_1.12.1.bb
+++ /dev/null
@@ -1,31 +0,0 @@
1Description = "Gerbera - An UPnP media server"
2
3LICENSE = "GPL-2.0-only"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=25cdec9afe3f1f26212ead6bd2f7fac8"
5
6SRC_URI = "git://github.com/gerbera/gerbera.git;protocol=https;branch=master \
7 file://0001-Fix-build-against-fmt-10.patch \
8 "
9
10SRCREV = "559e1d1a92f5977ce8cff7393aa85330dbf2d1d6"
11
12S = "${WORKDIR}/git"
13
14DEPENDS = "expat fmt spdlog pugixml libebml libmatroska zlib curl libupnp e2fsprogs sqlite3 libnsl2"
15
16SYSTEMD_SERVICE:${PN} = "gerbera.service"
17
18inherit cmake pkgconfig systemd
19
20PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}"
21PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=TRUE,-DWITH_SYSTEMD=FALSE,systemd"
22PACKAGECONFIG[taglib] = "-DWITH_TAGLIB=TRUE,-DWITH_TAGLIB=FALSE,taglib"
23EXTRA_OECMAKE = "-DWITH_JS=FALSE -DWITH_MAGIC=FALSE -DWITH_EXIF=FALSE -DLIBUUID_INCLUDE_DIRS=${STAGING_INCDIR} -DLIBUUID_LIBRARIES=-luuid"
24
25do_install:append() {
26 install -d ${D}/root/.config/
27}
28
29FILES:${PN} += "/root/.config/"
30
31SECURITY_CFLAGS:riscv64 = "${SECURITY_NOPIE_CFLAGS}"
diff --git a/meta-multimedia/recipes-multimedia/gerbera/gerbera_2.0.0.bb b/meta-multimedia/recipes-multimedia/gerbera/gerbera_2.0.0.bb
new file mode 100644
index 000000000..fea14fd84
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/gerbera/gerbera_2.0.0.bb
@@ -0,0 +1,30 @@
1Description = "Gerbera is a UPnP media server which allows you to stream your digital media through your home network and consume it on a variety of UPnP compatible devices."
2
3LICENSE = "GPL-2.0-only"
4LIC_FILES_CHKSUM = "file://LICENSE.md;md5=25cdec9afe3f1f26212ead6bd2f7fac8"
5
6SRC_URI = "git://github.com/gerbera/gerbera.git;protocol=https;branch=master"
7SRCREV = "2f26e656b16fb86132f27d1f8d47c6055041430d"
8
9S = "${WORKDIR}/git"
10
11DEPENDS = "pugixml sqlite3 zlib fmt spdlog util-linux-libuuid libupnp libnsl2"
12
13SYSTEMD_SERVICE:${PN} = "gerbera.service"
14
15inherit cmake pkgconfig systemd
16
17PACKAGECONFIG ??= "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} curl taglib inotify exif matroska magic js"
18PACKAGECONFIG[systemd] = "-DWITH_SYSTEMD=TRUE,-DWITH_SYSTEMD=FALSE,systemd"
19PACKAGECONFIG[taglib] = "-DWITH_TAGLIB=TRUE,-DWITH_TAGLIB=FALSE,taglib"
20PACKAGECONFIG[curl] = "-DWITH_CURL=TRUE,-DWITH_CURL=FALSE,curl"
21PACKAGECONFIG[inotify] = "-DWITH_INOTIFY=TRUE,-DWITH_INOTIFY=FALSE,inotify-tools"
22PACKAGECONFIG[avcodec] = "-DWITH_AVCODEC=TRUE,-DWITH_AVCODEC=FALSE,ffmpeg"
23PACKAGECONFIG[wavpack] = "-DWITH_WAVPACK=TRUE,-DWITH_WAVPACK=FALSE,wavpack"
24PACKAGECONFIG[exif] = "-DWITH_EXIF=TRUE,-DWITH_EXIF=FALSE,libexif"
25PACKAGECONFIG[exiv2] = "-DWITH_EXIV2=TRUE,-DWITH_EXIV2=FALSE,exiv2"
26PACKAGECONFIG[matroska] = "-DWITH_MATROSKA=TRUE,-DWITH_MATROSKA=FALSE,libebml libmatroska"
27PACKAGECONFIG[magic] = "-DWITH_MAGIC=TRUE,-DWITH_MAGIC=FALSE,file"
28PACKAGECONFIG[js] = "-DWITH_JS=TRUE,-DWITH_JS=FALSE,duktape"
29
30SECURITY_CFLAGS:riscv64 = "${SECURITY_NOPIE_CFLAGS}"