Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 760489 - media-sound/supercollider-3.11.2[server] w/ dev-libs/boost-1.74.0: sc_osc_handler.hpp:248:67: error: no matching function for call to 'boost::asio::basic_stream_socket<boost::asio::ip::tcp>::basic_stream_socket(const executor&)'
Summary: media-sound/supercollider-3.11.2[server] w/ dev-libs/boost-1.74.0: sc_osc_han...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Hector Martin
URL:
Whiteboard:
Keywords:
Depends on: 755719
Blocks: boost-1.74
  Show dependency tree
 
Reported: 2020-12-17 15:44 UTC by MT
Modified: 2021-02-01 22:45 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
ebuild for git sources (supercollider-9999.ebuild,3.03 KB, text/plain)
2021-01-06 19:59 UTC, hangglider
Details

Note You need to log in before you can comment on or make changes to this bug.
Description MT 2020-12-17 15:44:54 UTC
Package ~media-sound/supercollider-3.11.0 fails compilation with the following error due to incompatible API/ABI signatures with the new Boost::ASIO library from v1.74.0:

FAILED: server/supernova/CMakeFiles/supernova.dir/server/main.cpp.o 
/usr/bin/x86_64-pc-linux-gnu-g++ -DBOOST_CHRONO_HEADER_ONLY -DBOOST_NO_AUTO_PTR -DDLOPEN -DJACK_BACKEND -DLIB_SUFFIX=\"64\" -DNOVA_SIMD -DSC_DATA_DIR=\"/usr/share/SuperCollider\" -DSC_FFT_FFTW -DSC_JACK_USE_METADATA_API -DSC_PLUGIN_DIR=\"/usr/lib64/SuperCollider/plugins\" -DSC_PLUGIN_EXT=\".so\" -DSUPERNOVA -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/external_libraries/jackey -Icommon -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/external_libraries -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/external_libraries/nova-simd -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/external_libraries/nova-tt -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/include/plugin_interface -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/include/common -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/common -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/include/server -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/scsynth -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/external_libraries/boost_endian -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/external_libraries/boost_sync/include -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/. -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/external_libraries/oscpack_1_1_0 -I/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/external_libraries/TLSF-2.4.6/src  -march=native -O2 -pipe -DNDEBUG -msse -mfpmath=sse -msse2 -ftemplate-depth-4096   -fschedule-insns2 -fomit-frame-pointer -Wreturn-type -fno-math-errno -fno-signaling-nans -fsigned-zeros -fno-associative-math -pthread -fvisibility=hidden -std=gnu++11 -MD -MT server/supernova/CMakeFiles/supernova.dir/server/main.cpp.o -MF server/supernova/CMakeFiles/supernova.dir/server/main.cpp.o.d -o server/supernova/CMakeFiles/supernova.dir/server/main.cpp.o -c /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/main.cpp
In file included from /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/g++-v9/bits/move.h:55,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/g++-v9/bits/nested_exception.h:40,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/g++-v9/exception:144,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/g++-v9/ios:39,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/g++-v9/ostream:38,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/g++-v9/iostream:39,
                 from /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/main.cpp:21:
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/g++-v9/type_traits: In instantiation of 'struct std::is_base_of<boost::asio::execution::detail::any_executor_base, boost::asio::executor>':
/usr/include/boost/asio/execution/any_executor.hpp:1350:16:   required by substitution of 'template<class Executor> boost::asio::execution::any_executor<boost::asio::execution::context_as_t<boost::asio::execution_context&>, boost::asio::execution::detail::blocking::never_t<0>, boost::asio::execution::prefer_only<boost::asio::execution::detail::blocking::possibly_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::outstanding_work::tracked_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::outstanding_work::untracked_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::relationship::fork_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::relationship::continuation_t<0> > >::any_executor(Executor, typename std::enable_if<typename std::conditional<((! std::is_same<Executor, boost::asio::execution::any_executor<boost::asio::execution::context_as_t<boost::asio::execution_context&>, boost::asio::execution::detail::blocking::never_t<0>, boost::asio::execution::prefer_only<boost::asio::execution::detail::blocking::possibly_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::outstanding_work::tracked_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::outstanding_work::untracked_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::relationship::fork_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::relationship::continuation_t<0> > > >::value) && (! std::is_base_of<boost::asio::execution::detail::any_executor_base, Executor>::value)), boost::asio::execution::detail::is_valid_target_executor<Executor, void(boost::asio::execution::context_as_t<boost::asio::execution_context&>, boost::asio::execution::detail::blocking::never_t<0>, boost::asio::execution::prefer_only<boost::asio::execution::detail::blocking::possibly_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::outstanding_work::tracked_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::outstanding_work::untracked_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::relationship::fork_t<0> >, boost::asio::execution::prefer_only<boost::asio::execution::detail::relationship::continuation_t<0> >)>, std::integral_constant<bool, false> >::type::value, void>::type*) [with Executor = boost::asio::executor]'
/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/../sc/sc_osc_handler.hpp:248:67:   required from here
/usr/lib/gcc/x86_64-pc-linux-gnu/9.3.0/include/g++-v9/type_traits:1301:12: error: invalid use of incomplete type 'class boost::asio::executor'
 1301 |     struct is_base_of
      |            ^~~~~~~~~~
In file included from /usr/include/boost/asio/detail/completion_handler.hpp:21,
                 from /usr/include/boost/asio/impl/io_context.hpp:18,
                 from /usr/include/boost/asio/io_context.hpp:1519,
                 from /usr/include/boost/asio/detail/io_object_impl.hpp:23,
                 from /usr/include/boost/asio/basic_socket.hpp:22,
                 from /usr/include/boost/asio/basic_socket_acceptor.hpp:20,
                 from /usr/include/boost/asio/ip/tcp.hpp:19,
                 from /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/../sc/sc_osc_handler.hpp:36,
                 from /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/server.hpp:26,
                 from /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/main.cpp:28:
/usr/include/boost/asio/detail/handler_work.hpp:35:7: note: forward declaration of 'class boost::asio::executor'
   35 | class executor;
      |       ^~~~~~~~
In file included from /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/server.hpp:26,
                 from /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/main.cpp:28:
/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/../sc/sc_osc_handler.hpp: In constructor 'nova::detail::sc_osc_handler::tcp_connection::tcp_connection(const executor&)':
/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/../sc/sc_osc_handler.hpp:248:67: error: no matching function for call to 'boost::asio::basic_stream_socket<boost::asio::ip::tcp>::basic_stream_socket(const executor&)'
  248 |         tcp_connection(const executor& executor): socket_(executor) {}
      |                                                                   ^
In file included from /usr/include/boost/asio/basic_socket_streambuf.hpp:25,
                 from /usr/include/boost/asio/basic_socket_iostream.hpp:24,
                 from /usr/include/boost/asio/ip/tcp.hpp:20,
                 from /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/../sc/sc_osc_handler.hpp:36,
                 from /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/server.hpp:26,
                 from /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/main.cpp:28:
/usr/include/boost/asio/basic_stream_socket.hpp:292:3: note: candidate: 'template<class Protocol1, class Executor1> boost::asio::basic_stream_socket<Protocol, Executor>::basic_stream_socket(boost::asio::basic_stream_socket<Protocol1, Executor1>&&, typename std::enable_if<(std::is_convertible<Protocol1, Protocol>::value && std::is_convertible<_Ep, _Dp>::value)>::type*)'
  292 |   basic_stream_socket(basic_stream_socket<Protocol1, Executor1>&& other,
      |   ^~~~~~~~~~~~~~~~~~~
/usr/include/boost/asio/basic_stream_socket.hpp:292:3: note:   template argument deduction/substitution failed:
In file included from /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/server.hpp:26,
                 from /var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/main.cpp:28:
/var/tmp-ondisk/portage/media-sound/supercollider-3.11.0-r1/work/SuperCollider-3.11.0-Source/server/supernova/server/../sc/sc_osc_handler.hpp:248:67: note:   types 'boost::asio::basic_stream_socket<Protocol1, Executor1>' and 'const executor' {aka 'const boost::asio::executor'} have incompatible cv-qualifiers
  248 |         tcp_connection(const executor& executor): socket_(executor) {}
      |                                                         

Reproducible: Always




Supercollider and Boost are compiled with the following USE flags:

dev-libs/boost-1.74.0-r1::gentoo was built with the following:
USE="bzip2 context icu nls python threads zlib -debug -doc -lzma -mpi (-numpy) -static-libs -tools -zstd" PYTHON_TARGETS="python3_7 -python3_6 -python3_8 -python3_9"
media-sound/supercollider-3.11.0-r1::gentoo was built with the following:
USE="X fftw gpl3 jack qt5 server sndfile -debug -emacs -gedit -static-libs -vim -webengine -zeroconf" CPU_FLAGS_X86="sse sse2"

I can reproduce the error on several Gentoo installations, regardless of variations of ARCH, C**FLAGS, LDFLAGS. Downgrading to dev-libs/boost::1.72.0 fixed the compilation, but also creates blocks and circular dependencies with packages explicitly requiring dev-libs/boost::1.74.0 and forcing its upgrade (i.e.: ~app-office/libreoffice-bin-6.4.7.2_p1), which in turn triggers the recompilation of supercollider.

This scenario doesn't allow me to upgrade my installations, and I'm stuck with a compiled version of supercollider that crash at runtime because of deprecated APIs.
Comment 1 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2020-12-17 15:46:56 UTC
I'll look at the bump PR now.
Comment 2 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2020-12-17 16:15:34 UTC
(In reply to Sam James from comment #1)
> I'll look at the bump PR now.

Please retry with 3.11.2.
Comment 3 MT 2020-12-17 20:36:33 UTC
(In reply to Sam James from comment #2)
> Please retry with 3.11.2.

Thank you for the update. Though, the compilation bug is still there.
Looking at the git log of the v3.11.2 release, only the API/ABI issues with Boost::Sync library have been resolved.

According to upstream, they are rewriting the entire software in c++17/c++20 to avoid most of the Boost libs; until then, they suggest to statically link the bundle copy of boost instead of using the one provided by the system: https://github.com/supercollider/supercollider/issues/5255#issuecomment-739111019
Comment 4 hangglider 2021-01-06 19:59:11 UTC
Created attachment 681565 [details]
ebuild for git sources

No currently available version compiles, so the attached ebuild can be used.
Comment 5 Larry the Git Cow gentoo-dev 2021-01-23 17:55:08 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=e3da491ab853bdd310286411feadd4de961a3821

commit e3da491ab853bdd310286411feadd4de961a3821
Author:     Andreas Sturmlechner <asturm@gentoo.org>
AuthorDate: 2021-01-23 17:53:24 +0000
Commit:     Andreas Sturmlechner <asturm@gentoo.org>
CommitDate: 2021-01-23 17:53:24 +0000

    media-sound/supercollider: Supposedly fix build with boost-1.74
    
    Bug: https://bugs.gentoo.org/760489
    Package-Manager: Portage-3.0.14, Repoman-3.0.2
    Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>

 .../files/supercollider-3.11.2-boost-1.74.patch    | 39 ++++++++++++++++++++++
 .../supercollider/supercollider-3.11.2.ebuild      |  9 +++--
 2 files changed, 43 insertions(+), 5 deletions(-)
Comment 6 MT 2021-01-25 17:26:42 UTC
Thank you for the fix. The compilation is successful, and I tested the few features that I use and they work.
Comment 7 Andreas Sturmlechner gentoo-dev 2021-02-01 22:45:53 UTC
Thanks for checking back!