<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/2e3b7ab03059da76a9c56337608f256441053119">https://github.com/macports/macports-ports/commit/2e3b7ab03059da76a9c56337608f256441053119</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 2e3b7ab0305 lms: new port in audio
</span>2e3b7ab0305 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 2e3b7ab03059da76a9c56337608f256441053119
</span>Author: Sergey Fedorov <barracuda@macos-powerpc.org>
AuthorDate: Sat Sep 14 16:04:38 2024 +0800

<span style='display:block; white-space:pre;color:#404040;'>    lms: new port in audio
</span>---
 audio/lms/Portfile                                 |  82 +++++++++++++++
 ...akeLists-do-not-use-Linux-ldflag-on-macOS.patch |  22 ++++
 audio/lms/files/0002-Fix-lms.conf-path.patch       | 113 +++++++++++++++++++++
 .../777c36005bdcdc09e1813a84f3f2c0acc0b47fac.patch |  87 ++++++++++++++++
 4 files changed, 304 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/lms/Portfile b/audio/lms/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..65200bdbc49
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/lms/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,82 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           boost 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           cmake 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           github 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           legacysupport 1.1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# O_CLOEXEC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+legacysupport.newest_darwin_requires_legacy 10
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+legacysupport.redirect_bins lms lms-metadata lms-recommendation
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+boost.version       1.81
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup        epoupon lms 3.56.0 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+categories          audio multimedia www
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             GPL-3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {@barracuda156 gmail.com:vital.had} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Lightweight Music Server
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    LMS is a self-hosted music streaming software: \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    access your music collection from anywhere using a web interface.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage            https://lms-demo.poupon.dev
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  b34a7a3178852785bfa62205882fb29624906371 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  0270838187528de88e61d0da5d4a68614a6b66140752090f930071f01935557f \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    440559
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.tarball_from archive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    path:bin/pkg-config:pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append  port:ffmpeg \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libarchive \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:libconfig-hr \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:stb \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:taglib \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    port:wt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/epoupon/lms/issues/514
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   777c36005bdcdc09e1813a84f3f2c0acc0b47fac.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/epoupon/lms/pull/524
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   0001-CMakeLists-do-not-use-Linux-ldflag-on-macOS.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/epoupon/lms/issues/525
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles-append   0002-Fix-lms.conf-path.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-patch {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "s|@PREFIX@|${prefix}|g" \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${worksrcpath}/src/lms/main.cpp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${worksrcpath}/src/tools/cover/LmsCover.cpp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${worksrcpath}/src/tools/db-generator/LmsDbGenerator.cpp \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    ${worksrcpath}/src/tools/recommendation/LmsRecommendation.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DBUILD_BENCHMARKS=OFF \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    -DENABLE_TESTS=OFF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/epoupon/lms/issues/526
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.blacklist-append \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    macports-clang-18
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compiler.cxx_standard   2020
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall -d ${destroot}${prefix}/etc/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    xinstall -d ${destroot}${prefix}/var/${name}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    reinplace "s|@PREFIX@|${prefix}|g" ${destroot}${prefix}/share/lms/lms.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-activate {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {![file exists ${prefix}/etc/lms.conf]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        copy ${prefix}/share/lms/lms.conf ${prefix}/etc/lms.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+notes "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+You may want to edit config settings in ${prefix}/etc/lms.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/lms/files/0001-CMakeLists-do-not-use-Linux-ldflag-on-macOS.patch b/audio/lms/files/0001-CMakeLists-do-not-use-Linux-ldflag-on-macOS.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..96eb5415f5d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/lms/files/0001-CMakeLists-do-not-use-Linux-ldflag-on-macOS.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,22 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From c4653f6237a87c22ff04b8e45d9568ebc6125ad3 Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 14 Sep 2024 11:30:24 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] CMakeLists: do not use Linux ldflag on macOS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ CMakeLists.txt | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 1 insertion(+), 1 deletion(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git CMakeLists.txt CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 0d0b311f..6cb75ea9 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ CMakeLists.txt
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -6,7 +6,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake/modules/)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(CMAKE_CXX_STANDARD 20)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if (UNIX)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if (UNIX AND NOT APPLE)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ endif ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/lms/files/0002-Fix-lms.conf-path.patch b/audio/lms/files/0002-Fix-lms.conf-path.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..c4c506ab0d5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/lms/files/0002-Fix-lms.conf-path.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,113 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From ecf3b2ac7ff058d5a33a498b194fa65af427f2bf Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 14 Sep 2024 14:02:57 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Fix lms.conf path
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/lms/main.cpp                               | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/tools/cover/LmsCover.cpp                   | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/tools/db-generator/LmsDbGenerator.cpp      | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/tools/recommendation/LmsRecommendation.cpp | 2 +-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 4 files changed, 4 insertions(+), 4 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/lms/main.cpp src/lms/main.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 63cb1309..7e231261 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/lms/main.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/lms/main.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -211,7 +211,7 @@ namespace lms
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int main(int argc, char* argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        std::filesystem::path configFilePath{ "/etc/lms.conf" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        std::filesystem::path configFilePath{ "/opt/local/etc/lms.conf" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         int res{ EXIT_FAILURE };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         assert(argc > 0);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/tools/cover/LmsCover.cpp src/tools/cover/LmsCover.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index ce5f5320..fb44d219 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/tools/cover/LmsCover.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/tools/cover/LmsCover.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -66,7 +66,7 @@ int main(int argc, char* argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         core::Service<core::logging::ILogger> logger{ std::make_unique<core::logging::StreamLogger>(std::cout) };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         po::options_description desc{ "Allowed options" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        desc.add_options()("help,h", "print usage message")("conf,c", po::value<std::string>()->default_value("/etc/lms.conf"), "LMS config file")("default-cover,d", po::value<std::string>(), "Default cover path")("tracks,t", "dump covers for tracks")("size,s", po::value<unsigned>()->default_value(512), "Requested cover size")("quality,q", po::value<unsigned>()->default_value(75), "JPEG quality (1-100)");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        desc.add_options()("help,h", "print usage message")("conf,c", po::value<std::string>()->default_value("/opt/local/etc/lms.conf"), "LMS config file")("default-cover,d", po::value<std::string>(), "Default cover path")("tracks,t", "dump covers for tracks")("size,s", po::value<unsigned>()->default_value(512), "Requested cover size")("quality,q", po::value<unsigned>()->default_value(75), "JPEG quality (1-100)");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         po::variables_map vm;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         po::store(po::parse_command_line(argc, argv, desc), vm);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/tools/db-generator/LmsDbGenerator.cpp src/tools/db-generator/LmsDbGenerator.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index e41882ed..fe1a06a9 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/tools/db-generator/LmsDbGenerator.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/tools/db-generator/LmsDbGenerator.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -177,7 +177,7 @@ int main(int argc, char* argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         const GeneratorParameters defaultParams;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         program_options::options_description options{ "Options" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        options.add_options()("conf,c", program_options::value<std::string>()->default_value("/etc/lms.conf"), "lms config file")("media-library-count", program_options::value<unsigned>()->default_value(defaultParams.mediaLibraryCount), "Number of media libraries to use")("release-count-per-batch", program_options::value<unsigned>()->default_value(defaultParams.releaseCountPerBatch), "Number of releases to generate before committing transaction")("release-count", program_options::value< [...]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        options.add_options()("conf,c", program_options::value<std::string>()->default_value("/opt/local/etc/lms.conf"), "lms config file")("media-library-count", program_options::value<unsigned>()->default_value(defaultParams.mediaLibraryCount), "Number of media libraries to use")("release-count-per-batch", program_options::value<unsigned>()->default_value(defaultParams.releaseCountPerBatch), "Number of releases to generate before committing transaction")("release-count", program_optio [...]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         program_options::variables_map vm;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         program_options::store(program_options::parse_command_line(argc, argv, options), vm);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git src/tools/recommendation/LmsRecommendation.cpp src/tools/recommendation/LmsRecommendation.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 578de0ba..4a1a4a73 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/tools/recommendation/LmsRecommendation.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/tools/recommendation/LmsRecommendation.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -132,7 +132,7 @@ int main(int argc, char* argv[])
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         core::Service<core::logging::ILogger> logger{ std::make_unique<core::logging::StreamLogger>(std::cout) };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         po::options_description desc{ "Allowed options" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        desc.add_options()("help,h", "print usage message")("conf,c", po::value<std::string>()->default_value("/etc/lms.conf"), "LMS config file")("artists,a", "Display recommendation for artists")("releases,r", "Display recommendation for releases")("tracks,t", "Display recommendation for tracks")("max,m", po::value<unsigned>()->default_value(3), "Max similarity result count");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        desc.add_options()("help,h", "print usage message")("conf,c", po::value<std::string>()->default_value("/opt/local/etc/lms.conf"), "LMS config file")("artists,a", "Display recommendation for artists")("releases,r", "Display recommendation for releases")("tracks,t", "Display recommendation for tracks")("max,m", po::value<unsigned>()->default_value(3), "Max similarity result count");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         po::variables_map vm;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         po::store(po::parse_command_line(argc, argv, desc), vm);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 4de02058a1a6db8600c476c2759925b76a52434d Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: Sergey Fedorov <barracuda@macos-powerpc.org>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Sat, 14 Sep 2024 15:24:22 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Fix lms.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ conf/lms.conf | 16 ++++++++--------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 8 insertions(+), 8 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git conf/lms.conf conf/lms.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index 4fcca840..14aa01ce 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- conf/lms.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ conf/lms.conf
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -2,10 +2,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Path to the working directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Must have write privileges in order to create and modify this directory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-working-dir = "/var/lms/";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++working-dir = "/opt/local/var/lms/";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # ffmpeg location
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-ffmpeg-file = "/usr/bin/ffmpeg";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ffmpeg-file = "/opt/local/bin/ffmpeg";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Log files, empty means stdout
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ log-file = "";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -22,14 +22,14 @@ behind-reverse-proxy = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # If enabled, these files have to exist and have correct permissions
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ tls-enable = false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-tls-cert = "/var/lms/cert.pem";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-tls-key = "/var/lms/privkey.pem";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-tls-dh = "/var/lms/dh2048.pem";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++tls-cert = "/opt/local/var/lms/cert.pem";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++tls-key = "/opt/local/var/lms/privkey.pem";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++tls-dh = "/opt/local/var/lms/dh2048.pem";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Path to the resources used by the web interface.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-wt-resources = "/usr/share/Wt/resources";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-docroot = "/usr/share/lms/docroot/;/resources,/css,/images,/js,/favicon.ico";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-approot = "/usr/share/lms/approot";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++wt-resources = "/opt/local/share/Wt/resources";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++docroot = "/opt/local/share/lms/docroot/;/resources,/css,/images,/js,/favicon.ico";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++approot = "/opt/local/share/lms/approot";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ # Location for deployment (See README if you want to deploy on a non root path)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ deploy-path = "/";
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/audio/lms/files/777c36005bdcdc09e1813a84f3f2c0acc0b47fac.patch b/audio/lms/files/777c36005bdcdc09e1813a84f3f2c0acc0b47fac.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..f379fe5e7c8
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/audio/lms/files/777c36005bdcdc09e1813a84f3f2c0acc0b47fac.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,87 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From 777c36005bdcdc09e1813a84f3f2c0acc0b47fac Mon Sep 17 00:00:00 2001
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+From: emeric <emeric.poupon@laposte.net>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Date: Fri, 13 Sep 2024 23:27:53 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+Subject: [PATCH] Do not use pipe2 to make code more portable, ref #514
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+---
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ src/libs/core/impl/ChildProcess.cpp | 39 +++++++++++++++++++----------
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 1 file changed, 26 insertions(+), 13 deletions(-)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff --git a/src/libs/core/impl/ChildProcess.cpp b/src/libs/core/impl/ChildProcess.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+index d2956a3d..599bd16b 100644
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/libs/core/impl/ChildProcess.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/libs/core/impl/ChildProcess.cpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -66,36 +66,49 @@ namespace lms::core
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         static std::mutex mutex;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         std::unique_lock<std::mutex> lock{ mutex };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        int pipe[2];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        int pipefd[2];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        int res{ pipe2(pipe, O_NONBLOCK | O_CLOEXEC) };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if (res < 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            throw SystemException{ errno, "pipe2 failed!" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        // Use 'pipe' instead of 'pipe2', more portable
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (pipe(pipefd) < 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            throw SystemException{ errno, "pipe failed!" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        // Manually set the O_NONBLOCK and O_CLOEXEC flags for both ends of the pipe
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (fcntl(pipefd[0], F_SETFL, O_NONBLOCK) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            throw SystemException{ errno, "fcntl failed to set O_NONBLOCK!" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (fcntl(pipefd[1], F_SETFL, O_NONBLOCK) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            throw SystemException{ errno, "fcntl failed to set O_NONBLOCK!" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (fcntl(pipefd[0], F_SETFD, FD_CLOEXEC) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            throw SystemException{ errno, "fcntl failed to set FD_CLOEXEC!" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (fcntl(pipefd[1], F_SETFD, FD_CLOEXEC) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            throw SystemException{ errno, "fcntl failed to set FD_CLOEXEC!" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #if defined(__linux__) && defined(F_SETPIPE_SZ)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Just a hint here to prevent the writer from writing too many bytes ahead of the reader
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             constexpr std::size_t pipeSize{ 65536 * 4 };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if (fcntl(pipe[0], F_SETPIPE_SZ, pipeSize) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if (fcntl(pipefd[0], F_SETPIPE_SZ, pipeSize) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 throw SystemException{ errno, "fcntl failed!" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if (fcntl(pipe[1], F_SETPIPE_SZ, pipeSize) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if (fcntl(pipefd[1], F_SETPIPE_SZ, pipeSize) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 throw SystemException{ errno, "fcntl failed!" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        res = fork();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        int res{ fork() };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (res == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             throw SystemException{ errno, "fork failed!" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (res == 0) // CHILD
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            close(pipe[0]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            close(pipefd[0]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             close(STDIN_FILENO);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             close(STDERR_FILENO);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // Replace stdout with pipe write
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            if (dup2(pipe[1], STDOUT_FILENO) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if (dup2(pipefd[1], STDOUT_FILENO) == -1)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 exit(-1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             std::vector<const char*> execArgs;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -108,10 +121,10 @@ namespace lms::core
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         else // PARENT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            close(pipe[1]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            close(pipefd[1]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 boost::system::error_code assignError;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                _childStdout.assign(pipe[0], assignError);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                _childStdout.assign(pipefd[0], assignError);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                 if (assignError)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                     throw SystemException{ assignError, "fork failed!" };
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             }
</span></pre><pre style='margin:0'>

</pre>