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: