commit:     34c40880d91fb64e933819d028872048ba353ba8
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Thu Dec 26 07:07:34 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Dec 26 07:08:57 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=34c40880

media-sound/snapcast: add 0.29.0

* Include post-tag patches for Boost 1.87 compat
* Add USE=jack

Closes: https://bugs.gentoo.org/946236
Closes: https://bugs.gentoo.org/946459
Signed-off-by: Sam James <sam <AT> gentoo.org>

 media-sound/snapcast/Manifest                      |  1 +
 ...snapcast-0.29.0-boost-1.87.0-make_address.patch | 96 ++++++++++++++++++++++
 .../files/snapcast-0.29.0-boost-1.87.0.patch       | 51 ++++++++++++
 .../files/snapcast-0.29.0-resampler-include.patch  | 25 ++++++
 media-sound/snapcast/snapcast-0.29.0.ebuild        | 77 +++++++++++++++++
 5 files changed, 250 insertions(+)

diff --git a/media-sound/snapcast/Manifest b/media-sound/snapcast/Manifest
index d45a494a4445..743fc6bffc9f 100644
--- a/media-sound/snapcast/Manifest
+++ b/media-sound/snapcast/Manifest
@@ -1 +1,2 @@
 DIST snapcast-0.27.0.tar.gz 1566337 BLAKE2B 
77183cd2496beaf6808f8c1ff030cdb1e483c86ebafd57d0c75daa2dfe31030f0dd9704db40e2c0780b85c2b346e121ccd16c1cb75dea1f80e9834d3ae100fb8
 SHA512 
fd86f5b0d38bf308eb9cc1f3024676471176355a8cc91ee8c8d2dfe1aa0cde99fc7636133071b50304fe66ea42dee996e0088e013be7fa703f21c5bc2a35cfdd
+DIST snapcast-0.29.0.tar.gz 1202943 BLAKE2B 
0fb3c4b54dfd5fb16f7a17134a03288390c6d1b06c2c93bd7b495f0ff2f650d6caffab8b369703f38ca5764038470c3066794955259d419ea7ac4eff41e177d5
 SHA512 
4c88c20514e81f0ec861716a81047cb441669c0c23821acd959938cf00d85c37eec28a689a3c192f78fcb21accdbd6ef4520ef3f9995ff48ff07cb33e00b6904

diff --git 
a/media-sound/snapcast/files/snapcast-0.29.0-boost-1.87.0-make_address.patch 
b/media-sound/snapcast/files/snapcast-0.29.0-boost-1.87.0-make_address.patch
new file mode 100644
index 000000000000..03190a4e20e3
--- /dev/null
+++ b/media-sound/snapcast/files/snapcast-0.29.0-boost-1.87.0-make_address.patch
@@ -0,0 +1,96 @@
+https://github.com/badaix/snapcast/commit/b2fd2bf9ef835104a813c40c190d71e3644125d7
+
+From b2fd2bf9ef835104a813c40c190d71e3644125d7 Mon Sep 17 00:00:00 2001
+From: Rudi Heitbaum <[email protected]>
+Date: Thu, 19 Dec 2024 02:23:11 +1100
+Subject: [PATCH] use make_address from boost as from_string is deprecated
+ (#1308)
+
+Since boost 1.87.0 boost::asio::ip::address::from_string is no longer available
+
+ref: 
https://github.com/boostorg/asio/commit/c0d1cfce7767599c4cf00df36f8017a1073339ae
+
+fixes:
+    ../server/control_server.cpp: In member function 'void 
ControlServer::start()':
+    ../server/control_server.cpp:164:111: error: 'from_string' is not a member 
of 'boost::asio::ip::address'
+      164 |                                                                    
   tcp::endpoint(boost::asio::ip::address::from_string(address), 
tcp_settings_.port)));
+          |                                                                    
                                           ^~~~~~~~~~~
+    ../server/control_server.cpp:180:112: error: 'from_string' is not a member 
of 'boost::asio::ip::address'
+      180 |                                                                    
    tcp::endpoint(boost::asio::ip::address::from_string(address), 
http_settings_.port)));
+          |                                                                    
                                            ^~~~~~~~~~~
+    ../server/streamreader/tcp_stream.cpp: In constructor 
'streamreader::TcpStream::TcpStream(streamreader::PcmStream::Listener*, 
boost::asio::io_context&, const ServerSettings&, const 
streamreader::StreamUri&)':
+    ../server/streamreader/tcp_stream.cpp:67:97: error: 'from_string' is not a 
member of 'boost::asio::ip::address'
+       67 |         acceptor_ = make_unique<tcp::acceptor>(strand_, 
tcp::endpoint(boost::asio::ip::address::from_string(host_), port_));
+          |                                                                    
                             ^~~~~~~~~~~
+    ../server/streamreader/tcp_stream.cpp: In member function 'virtual void 
streamreader::TcpStream::connect()':
+    ../server/streamreader/tcp_stream.cpp:96:75: error: 'from_string' is not a 
member of 'boost::asio::ip::address'
+       96 |         boost::asio::ip::tcp::endpoint 
endpoint(boost::asio::ip::address::from_string(host_), port_);
+          |                                                                    
       ^~~~~~~~~~~
+    ../server/stream_server.cpp: In member function 'void 
StreamServer::start()':
+    ../server/stream_server.cpp:234:103: error: 'from_string' is not a member 
of 'boost::asio::ip::address'
+      234 |                                                               
tcp::endpoint(boost::asio::ip::address::from_string(address), 
settings_.stream.port)));
+          |
+---
+ server/control_server.cpp          | 4 ++--
+ server/stream_server.cpp           | 2 +-
+ server/streamreader/tcp_stream.cpp | 4 ++--
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/server/control_server.cpp b/server/control_server.cpp
+index 03b2db76..7945855b 100644
+--- a/server/control_server.cpp
++++ b/server/control_server.cpp
+@@ -161,7 +161,7 @@ void ControlServer::start()
+             {
+                 LOG(INFO, LOG_TAG) << "Creating TCP acceptor for address: " 
<< address << ", port: " << tcp_settings_.port << "\n";
+                 
acceptor_tcp_.emplace_back(make_unique<tcp::acceptor>(boost::asio::make_strand(io_context_.get_executor()),
+-                                                                      
tcp::endpoint(boost::asio::ip::address::from_string(address), 
tcp_settings_.port)));
++                                                                      
tcp::endpoint(boost::asio::ip::make_address(address), tcp_settings_.port)));
+             }
+             catch (const boost::system::system_error& e)
+             {
+@@ -177,7 +177,7 @@ void ControlServer::start()
+             {
+                 LOG(INFO, LOG_TAG) << "Creating HTTP acceptor for address: " 
<< address << ", port: " << http_settings_.port << "\n";
+                 
acceptor_http_.emplace_back(make_unique<tcp::acceptor>(boost::asio::make_strand(io_context_.get_executor()),
+-                                                                       
tcp::endpoint(boost::asio::ip::address::from_string(address), 
http_settings_.port)));
++                                                                       
tcp::endpoint(boost::asio::ip::make_address(address), http_settings_.port)));
+             }
+             catch (const boost::system::system_error& e)
+             {
+diff --git a/server/stream_server.cpp b/server/stream_server.cpp
+index 718e744f..ad2fec2c 100644
+--- a/server/stream_server.cpp
++++ b/server/stream_server.cpp
+@@ -231,7 +231,7 @@ void StreamServer::start()
+         {
+             LOG(INFO, LOG_TAG) << "Creating stream acceptor for address: " << 
address << ", port: " << settings_.stream.port << "\n";
+             
acceptor_.emplace_back(make_unique<tcp::acceptor>(boost::asio::make_strand(io_context_.get_executor()),
+-                                                              
tcp::endpoint(boost::asio::ip::address::from_string(address), 
settings_.stream.port)));
++                                                              
tcp::endpoint(boost::asio::ip::make_address(address), settings_.stream.port)));
+         }
+         catch (const boost::system::system_error& e)
+         {
+diff --git a/server/streamreader/tcp_stream.cpp 
b/server/streamreader/tcp_stream.cpp
+index 1ec68d6b..ed3fd75e 100644
+--- a/server/streamreader/tcp_stream.cpp
++++ b/server/streamreader/tcp_stream.cpp
+@@ -64,7 +64,7 @@ TcpStream::TcpStream(PcmStream::Listener* pcmListener, 
boost::asio::io_context&
+ 
+     LOG(INFO, LOG_TAG) << "TcpStream host: " << host_ << ", port: " << port_ 
<< ", is server: " << is_server_ << "\n";
+     if (is_server_)
+-        acceptor_ = make_unique<tcp::acceptor>(strand_, 
tcp::endpoint(boost::asio::ip::address::from_string(host_), port_));
++        acceptor_ = make_unique<tcp::acceptor>(strand_, 
tcp::endpoint(boost::asio::ip::make_address(host_), port_));
+ }
+ 
+ 
+@@ -93,7 +93,7 @@ void TcpStream::connect()
+     else
+     {
+         stream_ = make_unique<tcp::socket>(strand_);
+-        boost::asio::ip::tcp::endpoint 
endpoint(boost::asio::ip::address::from_string(host_), port_);
++        boost::asio::ip::tcp::endpoint 
endpoint(boost::asio::ip::make_address(host_), port_);
+         stream_->async_connect(endpoint,
+                                [this](const boost::system::error_code& ec)
+                                {
+

diff --git a/media-sound/snapcast/files/snapcast-0.29.0-boost-1.87.0.patch 
b/media-sound/snapcast/files/snapcast-0.29.0-boost-1.87.0.patch
new file mode 100644
index 000000000000..d1be4b4072db
--- /dev/null
+++ b/media-sound/snapcast/files/snapcast-0.29.0-boost-1.87.0.patch
@@ -0,0 +1,51 @@
+https://github.com/badaix/snapcast/commit/6190041e863968d76b6d16140bba90be6dff848f
+
+From 6190041e863968d76b6d16140bba90be6dff848f Mon Sep 17 00:00:00 2001
+From: badaix <[email protected]>
+Date: Thu, 19 Dec 2024 21:36:08 +0100
+Subject: [PATCH] Fix compilation with boost v1.87.0
+
+---
+ client/client_connection.cpp | 5 ++---
+ server/stream_session_ws.cpp | 2 +-
+ 2 files changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/client/client_connection.cpp b/client/client_connection.cpp
+index 53825864..6f34a018 100644
+--- a/client/client_connection.cpp
++++ b/client/client_connection.cpp
+@@ -124,10 +124,9 @@ std::string ClientConnection::getMacAddress()
+ 
+ void ClientConnection::connect(const ResultHandler& handler)
+ {
+-    tcp::resolver::query query(server_.host, cpt::to_string(server_.port), 
boost::asio::ip::resolver_query_base::numeric_service);
+     boost::system::error_code ec;
+     LOG(INFO, LOG_TAG) << "Resolving host IP for: " << server_.host << "\n";
+-    auto iterator = resolver_.resolve(query, ec);
++    auto iterator = resolver_.resolve(server_.host, 
cpt::to_string(server_.port), 
boost::asio::ip::resolver_query_base::numeric_service, ec);
+     if (ec)
+     {
+         LOG(ERROR, LOG_TAG) << "Failed to resolve host '" << server_.host << 
"', error: " << ec.message() << "\n";
+@@ -141,7 +140,7 @@ void ClientConnection::connect(const ResultHandler& 
handler)
+     for (const auto& iter : iterator)
+     {
+         LOG(INFO, LOG_TAG) << "Connecting to " << iter.endpoint() << "\n";
+-        socket_.connect(*iterator, ec);
++        socket_.connect(iter, ec);
+         if (!ec || (ec == boost::system::errc::interrupted))
+         {
+             // We were successful or interrupted, e.g. by sig int
+diff --git a/server/stream_session_ws.cpp b/server/stream_session_ws.cpp
+index 5f666618..117603f6 100644
+--- a/server/stream_session_ws.cpp
++++ b/server/stream_session_ws.cpp
+@@ -114,7 +114,7 @@ void StreamSessionWebsocket::on_read_ws(beast::error_code 
ec, std::size_t bytes_
+         return;
+     }
+ 
+-    auto* data = boost::asio::buffer_cast<char*>(buffer_.data());
++    auto* data = static_cast<char*>(buffer_.data().data());
+     baseMessage_.deserialize(data);
+     LOG(DEBUG, LOG_TAG) << "getNextMessage: " << baseMessage_.type << ", 
size: " << baseMessage_.size << ", id: " << baseMessage_.id
+                         << ", refers: " << baseMessage_.refersTo << "\n";
+

diff --git a/media-sound/snapcast/files/snapcast-0.29.0-resampler-include.patch 
b/media-sound/snapcast/files/snapcast-0.29.0-resampler-include.patch
new file mode 100644
index 000000000000..296a5d61db86
--- /dev/null
+++ b/media-sound/snapcast/files/snapcast-0.29.0-resampler-include.patch
@@ -0,0 +1,25 @@
+https://github.com/badaix/snapcast/commit/f6ce4f3fbb3c797f5d92578d7bc8df547ad4cd64
+
+From f6ce4f3fbb3c797f5d92578d7bc8df547ad4cd64 Mon Sep 17 00:00:00 2001
+From: Johannes Pohl <[email protected]>
+Date: Wed, 11 Dec 2024 15:50:11 +0100
+Subject: [PATCH] Add missing include in resampler.cpp
+
+This fixes issue #1295
+---
+ common/resampler.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/common/resampler.cpp b/common/resampler.cpp
+index 1d5d698a..9548c957 100644
+--- a/common/resampler.cpp
++++ b/common/resampler.cpp
+@@ -21,6 +21,7 @@
+ 
+ // local headers
+ #include "common/aixlog.hpp"
++#include "common/snap_exception.hpp"
+ 
+ // standard headers
+ #include <cmath>
+

diff --git a/media-sound/snapcast/snapcast-0.29.0.ebuild 
b/media-sound/snapcast/snapcast-0.29.0.ebuild
new file mode 100644
index 000000000000..cb0c73fe0d29
--- /dev/null
+++ b/media-sound/snapcast/snapcast-0.29.0.ebuild
@@ -0,0 +1,77 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="Synchronous multi-room audio player"
+HOMEPAGE="https://github.com/badaix/snapcast";
+SRC_URI="https://github.com/badaix/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3+"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~riscv ~x86"
+IUSE="+client +expat +flac jack +opus +server tremor +vorbis +zeroconf"
+REQUIRED_USE="|| ( server client )"
+
+RDEPEND="
+       dev-libs/boost:=
+       media-libs/alsa-lib
+       client? ( acct-user/snapclient )
+       expat? ( dev-libs/expat )
+       flac? ( media-libs/flac:= )
+       jack? ( virtual/jack )
+       opus? ( media-libs/opus )
+       server? (
+               acct-group/snapserver
+               acct-user/snapserver
+       )
+       tremor? ( media-libs/tremor )
+       vorbis? ( media-libs/libvorbis )
+       zeroconf? ( net-dns/avahi[dbus] )
+"
+DEPEND="
+       ${RDEPEND}
+       >=dev-cpp/aixlog-1.2.1
+       >=dev-cpp/asio-1.12.1
+       >=dev-cpp/popl-1.2.0
+"
+
+PATCHES=(
+       "${FILESDIR}"/${P}-resampler-include.patch
+       "${FILESDIR}"/${P}-boost-1.87.0-make_address.patch
+       "${FILESDIR}"/${P}-boost-1.87.0.patch
+)
+
+src_configure() {
+       local mycmakeargs=(
+               -DBUILD_CLIENT=$(usex client)
+               -DBUILD_WITH_EXPAT=$(usex expat)
+               -DBUILD_WITH_FLAC=$(usex flac)
+               -DBUILD_WITH_JACK=$(usex jack)
+               -DBUILD_WITH_OPUS=$(usex opus)
+               -DBUILD_SERVER=$(usex server)
+               -DBUILD_STATIC_LIBS=no
+               -DBUILD_TESTS=no
+               -DBUILD_WITH_TREMOR=$(usex tremor)
+               -DBUILD_WITH_VORBIS=$(usex vorbis)
+               -DBUILD_WITH_AVAHI=$(usex zeroconf)
+               -DCMAKE_INSTALL_SYSCONFDIR="${EPREFIX}/etc"
+       )
+
+       cmake_src_configure
+}
+
+src_install() {
+       cmake_src_install
+
+       for bin in server client ; do
+               if use ${bin} ; then
+                       doman "${bin}/snap${bin}.1"
+
+                       newconfd "${FILESDIR}/snap${bin}.confd" "snap${bin}"
+                       newinitd "${FILESDIR}/snap${bin}.initd" "snap${bin}"
+               fi
+       done
+}

Reply via email to