[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#959439: FTBFS with Boost 1.71 (supercollider)



Tags 959439 +patch
thanks

I was able to apply the upstream fixes to the Debian supercollider packaging, in order to do so I had to make some formatting adjustments to the code(it seems upstream reformatted their codebase since the version that is in Debian) I did builds in Debian sid and Raspbian bullseye-staging and have uploaded the changes to raspbian (note: the raspbian package also contains some other unrelated changes).

A debdiff is attatched, no intent to NMU in Debian.

diff -Nru supercollider-3.10.0+repack/debian/changelog supercollider-3.10.0+repack/debian/changelog
--- supercollider-3.10.0+repack/debian/changelog	2019-02-03 21:31:06.000000000 +0000
+++ supercollider-3.10.0+repack/debian/changelog	2020-06-08 07:17:12.000000000 +0000
@@ -1,3 +1,10 @@
+supercollider (1:3.10.0+repack-1.1) unstable; urgency=medium
+
+  * Patch proposed to BTS, no immediate intent to NMU.
+  * Apply upstream patches for new boost ( Closes: 959439 ).
+
+ -- Peter Michael Green <plugwash@debian.org>  Mon, 08 Jun 2020 07:17:12 +0000
+
 supercollider (1:3.10.0+repack-1) unstable; urgency=medium
 
   * fixed a little error in d/rules: create a missing directory
diff -Nru supercollider-3.10.0+repack/debian/patches/boost1.71-00-formatting supercollider-3.10.0+repack/debian/patches/boost1.71-00-formatting
--- supercollider-3.10.0+repack/debian/patches/boost1.71-00-formatting	1970-01-01 00:00:00.000000000 +0000
+++ supercollider-3.10.0+repack/debian/patches/boost1.71-00-formatting	2020-06-08 07:17:12.000000000 +0000
@@ -0,0 +1,93 @@
+Description: Adjust code formatting to allow upstream boost1.71 patches to be applied.
+Author: Peter Michael Green <plugwash@raspbian.org>
+
+---
+The information above should follow the Patch Tagging Guidelines, please
+checkout http://dep.debian.net/deps/dep3/ to learn about the format. Here
+are templates for supplementary fields that you might want to add:
+
+Origin: <vendor|upstream|other>, <url of original patch>
+Bug: <url in upstream bugtracker>
+Bug-Debian: https://bugs.debian.org/<bugnumber>
+Bug-Ubuntu: https://launchpad.net/bugs/<bugnumber>
+Forwarded: <no|not-needed|url proving that it has been forwarded>
+Reviewed-By: <name and email of someone who approved the patch>
+Last-Update: 2020-06-08
+
+Index: supercollider-3.10.0+repack/CMakeLists.txt
+===================================================================
+--- supercollider-3.10.0+repack.orig/CMakeLists.txt
++++ supercollider-3.10.0+repack/CMakeLists.txt
+@@ -253,8 +253,8 @@ if (NOT WIN32)
+ endif()
+ 
+ if(SYSTEM_BOOST)
+-  set(Boost_USE_MULTITHREADED      ON)
+-  find_package( Boost 1.50.0 COMPONENTS  thread system filesystem program_options regex test_exec_monitor )
++    set(Boost_USE_MULTITHREADED ON)
++    find_package( Boost 1.50.0 COMPONENTS  thread system filesystem program_options regex test_exec_monitor )
+ endif()
+ 
+ if (Boost_FOUND)
+Index: supercollider-3.10.0+repack/server/supernova/sc/sc_osc_handler.cpp
+===================================================================
+--- supercollider-3.10.0+repack.orig/server/supernova/sc/sc_osc_handler.cpp
++++ supercollider-3.10.0+repack/server/supernova/sc/sc_osc_handler.cpp
+@@ -932,9 +932,7 @@ void sc_osc_handler::tcp_connection::han
+ 
+ 
+ 
+-
+-void sc_osc_handler::start_tcp_accept(void)
+-{
++void sc_osc_handler::start_tcp_accept(void) {
+     tcp_connection::pointer new_connection = tcp_connection::create(tcp_acceptor_.get_io_service());
+ 
+     tcp_acceptor_.async_accept(new_connection->socket(),
+Index: supercollider-3.10.0+repack/server/supernova/sc/sc_osc_handler.hpp
+===================================================================
+--- supercollider-3.10.0+repack.orig/server/supernova/sc/sc_osc_handler.hpp
++++ supercollider-3.10.0+repack/server/supernova/sc/sc_osc_handler.hpp
+@@ -278,10 +278,7 @@ public:
+     public:
+         typedef std::shared_ptr<tcp_connection> pointer;
+ 
+-        static pointer create(boost::asio::io_service& io_service)
+-        {
+-            return pointer(new tcp_connection(io_service));
+-        }
++        static pointer create(boost::asio::io_service& io_service) { return pointer(new tcp_connection(io_service)); }
+ 
+         tcp::socket& socket()
+         {
+@@ -296,9 +293,7 @@ public:
+         }
+ 
+     private:
+-        tcp_connection(boost::asio::io_service& io_service)
+-            : socket_(io_service)
+-        {}
++        tcp_connection(boost::asio::io_service& io_service): socket_(io_service) {}
+ 
+         void send(const char *data, size_t length) override final;
+ 
+Index: supercollider-3.10.0+repack/server/supernova/sc/sc_synthdef.hpp
+===================================================================
+--- supercollider-3.10.0+repack.orig/server/supernova/sc/sc_synthdef.hpp
++++ supercollider-3.10.0+repack/server/supernova/sc/sc_synthdef.hpp
+@@ -35,10 +35,12 @@ namespace nova {
+ 
+ class sc_synthdef
+ {
+-    typedef std::vector<float, boost::alignment::aligned_allocator<float, 64> > float_vector;
+-    typedef std::vector<char, boost::alignment::aligned_allocator<char, 64> > char_vector;
++    typedef std::vector<float, boost::alignment::aligned_allocator<float, 64>> float_vector;
++    typedef std::vector<char, boost::alignment::aligned_allocator<char, 64>> char_vector;
+ #if BOOST_VERSION > 107000
+-    typedef std::map<symbol, int32_t, std::less<symbol>, boost::alignment::aligned_allocator<std::pair<symbol, int32_t>, 64>> parameter_index_map_t;
++    typedef std::map<symbol, int32_t, std::less<symbol>,
++                     boost::alignment::aligned_allocator<std::pair<symbol, int32_t>, 64>>
++        parameter_index_map_t;
+ #else
+     typedef std::map<symbol, int32_t, std::less<symbol>> parameter_index_map_t;
+ #endif
diff -Nru supercollider-3.10.0+repack/debian/patches/boost1.71-01-ee2c63c89e6e3f5a14e09a9c7edaaf6774190ce6 supercollider-3.10.0+repack/debian/patches/boost1.71-01-ee2c63c89e6e3f5a14e09a9c7edaaf6774190ce6
--- supercollider-3.10.0+repack/debian/patches/boost1.71-01-ee2c63c89e6e3f5a14e09a9c7edaaf6774190ce6	1970-01-01 00:00:00.000000000 +0000
+++ supercollider-3.10.0+repack/debian/patches/boost1.71-01-ee2c63c89e6e3f5a14e09a9c7edaaf6774190ce6	2020-06-08 07:17:12.000000000 +0000
@@ -0,0 +1,33 @@
+patch defuzzed by Peter Michael Green for Raspbian/Debian packaging.
+
+commit ee2c63c89e6e3f5a14e09a9c7edaaf6774190ce6
+Author: Brian Heim <brianlheim@gmail.com>
+Date:   Thu Sep 19 20:54:52 2019 -0500
+
+    Update for boost 1.70
+
+Index: supercollider-3.10.0+repack/server/supernova/sc/sc_osc_handler.cpp
+===================================================================
+--- supercollider-3.10.0+repack.orig/server/supernova/sc/sc_osc_handler.cpp
++++ supercollider-3.10.0+repack/server/supernova/sc/sc_osc_handler.cpp
+@@ -933,7 +933,7 @@ void sc_osc_handler::tcp_connection::han
+ 
+ 
+ void sc_osc_handler::start_tcp_accept(void) {
+-    tcp_connection::pointer new_connection = tcp_connection::create(tcp_acceptor_.get_io_service());
++    tcp_connection::pointer new_connection = tcp_connection::create(tcp_acceptor_.get_executor().context());
+ 
+     tcp_acceptor_.async_accept(new_connection->socket(),
+                                boost::bind(&sc_osc_handler::handle_tcp_accept, this, new_connection,
+Index: supercollider-3.10.0+repack/server/supernova/utilities/utils.hpp
+===================================================================
+--- supercollider-3.10.0+repack.orig/server/supernova/utilities/utils.hpp
++++ supercollider-3.10.0+repack/server/supernova/utilities/utils.hpp
+@@ -23,6 +23,7 @@
+ 
+ #include <type_traits>
+ 
++#include <boost/checked_delete.hpp>
+ #include <boost/intrusive_ptr.hpp>
+ #include <boost/noncopyable.hpp>
+ #include <boost/detail/atomic_count.hpp>
diff -Nru supercollider-3.10.0+repack/debian/patches/boost1.71-02-265a8a6750bb6ea9ad8c19d19916d8ba860c844d supercollider-3.10.0+repack/debian/patches/boost1.71-02-265a8a6750bb6ea9ad8c19d19916d8ba860c844d
--- supercollider-3.10.0+repack/debian/patches/boost1.71-02-265a8a6750bb6ea9ad8c19d19916d8ba860c844d	1970-01-01 00:00:00.000000000 +0000
+++ supercollider-3.10.0+repack/debian/patches/boost1.71-02-265a8a6750bb6ea9ad8c19d19916d8ba860c844d	2020-06-08 07:17:12.000000000 +0000
@@ -0,0 +1,26 @@
+patch defuzzed by Peter Michael Green for Raspbian/Debian packaging.
+
+commit 265a8a6750bb6ea9ad8c19d19916d8ba860c844d
+Author: Brian Heim <brianlheim@gmail.com>
+Date:   Sun Oct 6 18:24:55 2019 -0500
+
+    supernova: fix compile error with 1.71
+
+Index: supercollider-3.10.0+repack/server/supernova/sc/sc_synthdef.hpp
+===================================================================
+--- supercollider-3.10.0+repack.orig/server/supernova/sc/sc_synthdef.hpp
++++ supercollider-3.10.0+repack/server/supernova/sc/sc_synthdef.hpp
+@@ -37,13 +37,7 @@ class sc_synthdef
+ {
+     typedef std::vector<float, boost::alignment::aligned_allocator<float, 64>> float_vector;
+     typedef std::vector<char, boost::alignment::aligned_allocator<char, 64>> char_vector;
+-#if BOOST_VERSION > 107000
+-    typedef std::map<symbol, int32_t, std::less<symbol>,
+-                     boost::alignment::aligned_allocator<std::pair<symbol, int32_t>, 64>>
+-        parameter_index_map_t;
+-#else
+     typedef std::map<symbol, int32_t, std::less<symbol>> parameter_index_map_t;
+-#endif
+ 
+ public:
+     struct input_spec
diff -Nru supercollider-3.10.0+repack/debian/patches/boost1.71-03-f4e5cc69aaa09f26f3dcd19f0e9db85b525b4b70 supercollider-3.10.0+repack/debian/patches/boost1.71-03-f4e5cc69aaa09f26f3dcd19f0e9db85b525b4b70
--- supercollider-3.10.0+repack/debian/patches/boost1.71-03-f4e5cc69aaa09f26f3dcd19f0e9db85b525b4b70	1970-01-01 00:00:00.000000000 +0000
+++ supercollider-3.10.0+repack/debian/patches/boost1.71-03-f4e5cc69aaa09f26f3dcd19f0e9db85b525b4b70	2020-06-08 07:17:12.000000000 +0000
@@ -0,0 +1,59 @@
+patch defuzzed by Peter Michael Green for Raspbian/Debian packaging.
+
+commit f4e5cc69aaa09f26f3dcd19f0e9db85b525b4b70
+Author: Brian Heim <brianlheim@gmail.com>
+Date:   Sun Oct 6 18:39:38 2019 -0500
+
+    supernova: fix compile errors with boost 1.71
+    
+    class hierarchy changed. this change is at least backward compatible with 1.70
+    
+    tested with boost 1.66, 1.71
+
+Index: supercollider-3.10.0+repack/server/supernova/sc/sc_osc_handler.cpp
+===================================================================
+--- supercollider-3.10.0+repack.orig/server/supernova/sc/sc_osc_handler.cpp
++++ supercollider-3.10.0+repack/server/supernova/sc/sc_osc_handler.cpp
+@@ -933,7 +933,7 @@ void sc_osc_handler::tcp_connection::han
+ 
+ 
+ void sc_osc_handler::start_tcp_accept(void) {
+-    tcp_connection::pointer new_connection = tcp_connection::create(tcp_acceptor_.get_executor().context());
++    tcp_connection::pointer new_connection = tcp_connection::create(tcp_acceptor_.get_executor());
+ 
+     tcp_acceptor_.async_accept(new_connection->socket(),
+                                boost::bind(&sc_osc_handler::handle_tcp_accept, this, new_connection,
+Index: supercollider-3.10.0+repack/server/supernova/sc/sc_osc_handler.hpp
+===================================================================
+--- supercollider-3.10.0+repack.orig/server/supernova/sc/sc_osc_handler.hpp
++++ supercollider-3.10.0+repack/server/supernova/sc/sc_osc_handler.hpp
+@@ -276,9 +276,14 @@ public:
+         public nova_endpoint
+     {
+     public:
+-        typedef std::shared_ptr<tcp_connection> pointer;
++        using pointer = std::shared_ptr<tcp_connection>;
++#if BOOST_VERSION >= 107000
++        using executor = boost::asio::executor;
++#else
++        using executor = boost::asio::io_context::executor_type;
++#endif
+ 
+-        static pointer create(boost::asio::io_service& io_service) { return pointer(new tcp_connection(io_service)); }
++        static pointer create(const executor& executor) { return pointer(new tcp_connection(executor)); }
+ 
+         tcp::socket& socket()
+         {
+@@ -293,7 +298,11 @@ public:
+         }
+ 
+     private:
+-        tcp_connection(boost::asio::io_service& io_service): socket_(io_service) {}
++#if BOOST_VERSION >= 107000
++        tcp_connection(const executor& executor): socket_(executor) {}
++#else
++        tcp_connection(const executor& executor): socket_(executor.context()) {}
++#endif
+ 
+         void send(const char *data, size_t length) override final;
+ 
diff -Nru supercollider-3.10.0+repack/debian/patches/boost1.71-04-1ede37b287dbe3010f98d0be9d1b38108e1dd530 supercollider-3.10.0+repack/debian/patches/boost1.71-04-1ede37b287dbe3010f98d0be9d1b38108e1dd530
--- supercollider-3.10.0+repack/debian/patches/boost1.71-04-1ede37b287dbe3010f98d0be9d1b38108e1dd530	1970-01-01 00:00:00.000000000 +0000
+++ supercollider-3.10.0+repack/debian/patches/boost1.71-04-1ede37b287dbe3010f98d0be9d1b38108e1dd530	2020-06-08 07:17:12.000000000 +0000
@@ -0,0 +1,22 @@
+Patch defuzzed by Peter Michael Green for Debian/Raspbian supercollider packaging.
+
+commit 1ede37b287dbe3010f98d0be9d1b38108e1dd530
+Author: Brian Heim <brianlheim@gmail.com>
+Date:   Sun Oct 6 19:24:57 2019 -0500
+
+    CMake: don't use boost cmake config file
+
+Index: supercollider-3.10.0+repack/CMakeLists.txt
+===================================================================
+--- supercollider-3.10.0+repack.orig/CMakeLists.txt
++++ supercollider-3.10.0+repack/CMakeLists.txt
+@@ -253,6 +253,9 @@ if (NOT WIN32)
+ endif()
+ 
+ if(SYSTEM_BOOST)
++    # https://github.com/supercollider/supercollider/issues/4576#issuecomment-531499017
++    # Boost >= 1.71 ships with its own Boost config file, we ignore it for now.
++    set(Boost_NO_BOOST_CMAKE ON)
+     set(Boost_USE_MULTITHREADED ON)
+     find_package( Boost 1.50.0 COMPONENTS  thread system filesystem program_options regex test_exec_monitor )
+ endif()
diff -Nru supercollider-3.10.0+repack/debian/patches/series supercollider-3.10.0+repack/debian/patches/series
--- supercollider-3.10.0+repack/debian/patches/series	2018-12-26 11:50:55.000000000 +0000
+++ supercollider-3.10.0+repack/debian/patches/series	2020-06-08 07:17:12.000000000 +0000
@@ -1,3 +1,8 @@
 Remove-autodetection-of-raspberry-cpus.patch
 disable-ccache.patch
 fix-numeric-type.patch
+boost1.71-00-formatting
+boost1.71-01-ee2c63c89e6e3f5a14e09a9c7edaaf6774190ce6
+boost1.71-02-265a8a6750bb6ea9ad8c19d19916d8ba860c844d
+boost1.71-03-f4e5cc69aaa09f26f3dcd19f0e9db85b525b4b70
+boost1.71-04-1ede37b287dbe3010f98d0be9d1b38108e1dd530

Reply to: