Skip to content

Fails to build on Gentoo: no template named 'function' in namespace 'std' #13611

Description

@LinuxUserGD

Operating System Info

Other

Other OS

Gentoo Linux (amd64 musl libc, LLVM/libc++ profile)

OBS Studio Version

Git

OBS Studio Version (Other)

27ac23e

OBS Studio Log URL

N/A

OBS Studio Crash Log URL

No response

Expected Behavior

OBS Studio compiles fine adding the functional header (see https://en.cppreference.com/cpp/utility/functional/function)

--- a/frontend/utility/BasicOutputHandler.hpp
+++ b/frontend/utility/BasicOutputHandler.hpp
@@ -7,6 +7,7 @@
 #include <util/dstr.hpp>
 
 #include <future>
+#include <functional>
 
 #define RTMP_PROTOCOL "rtmp"
 #define SRT_PROTOCOL "srt"

Current Behavior

[369/445] /usr/lib/llvm/23/bin/clang++ -DDL_D3D11=\"\" -DDL_METAL=\"\" -DDL_OPENGL=\"libobs-opengl.so.30\" -DENABLE_HEVC -DOBS_INSTALL_PREFIX=\"/usr\" -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_ENABLE_STRICT_MODE_UP_TO=0xFF0000 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_WIDGETS_LIB -DQT_XML_LIB -DSAFE_MODULES="\"frontend-tools|image-source|linux-alsa|linux-capture|linux-pipewire|obs-ffmpeg|obs-filters|obs-outputs|obs-transitions|obs-vst|obs-x264|rtmp-services\"" -DSIMDE_ENABLE_OPENMP -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999_build/frontend -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999_build/config -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/libobs -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/api -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/deps/json11 -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/bpm -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/deps/libcaption -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/slider-ignorewheel -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/idian/include -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/properties-view -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/wrappers -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/plain-text-edit -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/vertical-scroll-area -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/icon-label -isystem /var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999_build/frontend/obs-studio_autogen/include -isystem /usr/include/qt6/QtCore -isystem /usr/include/qt6 -isystem /usr/lib/qt6/mkspecs/linux-clang -isystem /usr/include/qt6/QtWidgets -isystem /usr/include/qt6/QtGui -isystem /usr/include/qt6/QtSvg -isystem /usr/include/qt6/QtXml -isystem /usr/include/qt6/QtNetwork -isystem /usr/include/qt6/QtDBus -isystem /usr/include/pci  -Werror=odr -Werror=conditional-type-mismatch -Werror=pointer-type-mismatch -Werror=selector-type-mismatch -Werror=strict-aliasing -march=native -O3 -g0 -D_FORTIFY_SOURCE=3 -DNDEBUG -stdlib=libc++ -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden -fopenmp-simd -fno-strict-aliasing -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wunreachable-code -Wquoted-include-in-framework-header -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wunused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wno-unknown-pragmas -Wfour-char-constants -Wconstant-conversion -Wno-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wnon-literal-null-conversion -Wsign-compare -Wshorten-64-to-32 -Wpointer-sign -Wnewline-eof -Wno-implicit-fallthrough -Wdeprecated-declarations -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wno-strict-prototypes -Wno-semicolon-before-method-body -Wformat-security -Wvla -Wno-error=shorten-64-to-32 -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-shadow -Winvalid-offsetof -Wmove -Werror=block-capture-autoreleasing -Wrange-loop-analysis -Wno-unqualified-std-cast-call -fno-direct-access-external-data -MD -MT frontend/CMakeFiles/obs-studio.dir/utility/SimpleOutput.cpp.o -MF frontend/CMakeFiles/obs-studio.dir/utility/SimpleOutput.cpp.o.d -o frontend/CMakeFiles/obs-studio.dir/utility/SimpleOutput.cpp.o -c /var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp
FAILED: [code=1] frontend/CMakeFiles/obs-studio.dir/utility/SimpleOutput.cpp.o
/usr/lib/llvm/23/bin/clang++ -DDL_D3D11=\"\" -DDL_METAL=\"\" -DDL_OPENGL=\"libobs-opengl.so.30\" -DENABLE_HEVC -DOBS_INSTALL_PREFIX=\"/usr\" -DQT_CORE_LIB -DQT_DBUS_LIB -DQT_ENABLE_STRICT_MODE_UP_TO=0xFF0000 -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_DEBUG -DQT_SVG_LIB -DQT_WIDGETS_LIB -DQT_XML_LIB -DSAFE_MODULES="\"frontend-tools|image-source|linux-alsa|linux-capture|linux-pipewire|obs-ffmpeg|obs-filters|obs-outputs|obs-transitions|obs-vst|obs-x264|rtmp-services\"" -DSIMDE_ENABLE_OPENMP -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999_build/frontend -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999_build/config -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/libobs -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/api -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/deps/json11 -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/bpm -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/deps/libcaption -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/slider-ignorewheel -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/idian/include -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/properties-view -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/wrappers -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/plain-text-edit -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/vertical-scroll-area -I/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/shared/qt/icon-label -isystem /var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999_build/frontend/obs-studio_autogen/include -isystem /usr/include/qt6/QtCore -isystem /usr/include/qt6 -isystem /usr/lib/qt6/mkspecs/linux-clang -isystem /usr/include/qt6/QtWidgets -isystem /usr/include/qt6/QtGui -isystem /usr/include/qt6/QtSvg -isystem /usr/include/qt6/QtXml -isystem /usr/include/qt6/QtNetwork -isystem /usr/include/qt6/QtDBus -isystem /usr/include/pci  -Werror=odr -Werror=conditional-type-mismatch -Werror=pointer-type-mismatch -Werror=selector-type-mismatch -Werror=strict-aliasing -march=native -O3 -g0 -D_FORTIFY_SOURCE=3 -DNDEBUG -stdlib=libc++ -std=c++17 -fvisibility=hidden -fvisibility-inlines-hidden -fopenmp-simd -fno-strict-aliasing -Wno-trigraphs -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wunreachable-code -Wquoted-include-in-framework-header -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wunused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wno-unknown-pragmas -Wfour-char-constants -Wconstant-conversion -Wno-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wnon-literal-null-conversion -Wsign-compare -Wshorten-64-to-32 -Wpointer-sign -Wnewline-eof -Wno-implicit-fallthrough -Wdeprecated-declarations -Wno-sign-conversion -Winfinite-recursion -Wcomma -Wno-strict-prototypes -Wno-semicolon-before-method-body -Wformat-security -Wvla -Wno-error=shorten-64-to-32 -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-shadow -Winvalid-offsetof -Wmove -Werror=block-capture-autoreleasing -Wrange-loop-analysis -Wno-unqualified-std-cast-call -fno-direct-access-external-data -MD -MT frontend/CMakeFiles/obs-studio.dir/utility/SimpleOutput.cpp.o -MF frontend/CMakeFiles/obs-studio.dir/utility/SimpleOutput.cpp.o.d -o frontend/CMakeFiles/obs-studio.dir/utility/SimpleOutput.cpp.o -c /var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp
In file included from /var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:1:
In file included from /var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.hpp:3:
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/BasicOutputHandler.hpp:17:43: error: no template named 'function' in namespace 'std'
   17 | using SetupStreamingContinuation_t = std::function<void(bool)>;
      |                                      ~~~~~^
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/BasicOutputHandler.hpp:74:8: error: unknown type name 'SetupStreamingContinuation_t'
   74 |                                                         SetupStreamingContinuation_t continuation) = 0;
      |                                                         ^
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/BasicOutputHandler.hpp:108:18: error: no template named 'function' in namespace 'std'
  108 |                                                       std::function<void(std::optional<bool>)> continuation);
      |                                                       ~~~~~^
In file included from /var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:1:
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.hpp:53:8: error: unknown type name 'SetupStreamingContinuation_t'
   53 |                                                         SetupStreamingContinuation_t continuation) override;
      |                                                         ^
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:84:12: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
   83 |                 whipSimulcastEncoders->Create(encoderId, config_get_int(main->Config(), "AdvOut", "RescaleFilter"),
      |                                        ~~~~~~
   84 |                                               config_get_int(main->Config(), "Stream1", "WHIPSimulcastTotalLayers"),
      |                                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:83:44: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
   83 |                 whipSimulcastEncoders->Create(encoderId, config_get_int(main->Config(), "AdvOut", "RescaleFilter"),
      |                                        ~~~~~~            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:285:21: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
  285 |         int videoBitrate = config_get_uint(main->Config(), "SimpleOutput", "VBitrate");
      |             ~~~~~~~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:398:15: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
  398 |         int tracks = config_get_int(main->Config(), "SimpleOutput", "RecTracks");
      |             ~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:418:11: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
  418 |         int cx = config_get_uint(main->Config(), "Video", "OutputCX");
      |             ~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:419:11: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
  419 |         int cy = config_get_uint(main->Config(), "Video", "OutputCY");
      |             ~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:586:15: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
  586 |         int tracks = config_get_int(main->Config(), "SimpleOutput", "RecTracks");
      |             ~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:610:79: error: unknown type name 'SetupStreamingContinuation_t'
  610 | std::shared_future<void> SimpleOutput::SetupStreaming(obs_service_t *service, SetupStreamingContinuation_t continuation)
      |                                                                               ^
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:708:19: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
  708 |         int retryDelay = config_get_uint(main->Config(), "Output", "RetryDelay");
      |             ~~~~~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:709:19: warning: implicit conversion loses integer precision: 'uint64_t' (aka 'unsigned long') to 'int' [-Wshorten-64-to-32]
  709 |         int maxRetries = config_get_uint(main->Config(), "Output", "MaxRetries");
      |             ~~~~~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:711:17: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
  711 |         int delaySec = config_get_int(main->Config(), "Output", "DelaySec");
      |             ~~~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:775:15: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
  775 |         int tracks = config_get_int(main->Config(), "SimpleOutput", "RecTracks");
      |             ~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:834:15: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
  834 |         int rbTime = config_get_int(main->Config(), "SimpleOutput", "RecRBTime");
      |             ~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:835:15: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
  835 |         int rbSize = config_get_int(main->Config(), "SimpleOutput", "RecRBSize");
      |             ~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/var/tmp/portage/media-video/obs-studio-9999/work/obs-studio-9999/frontend/utility/SimpleOutput.cpp:836:15: warning: implicit conversion loses integer precision: 'int64_t' (aka 'long') to 'int' [-Wshorten-64-to-32]
  836 |         int tracks = config_get_int(main->Config(), "SimpleOutput", "RecTracks");
      |             ~~~~~~   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14 warnings and 5 errors generated.

Steps to Reproduce

  1. add keyword for obs-studio-9999.ebuild
    echo 'media-video/obs-studio **' >> /etc/portage/package.accept_keywords/obs-studio

  2. compile OBS Studio
    emerge =media-video/obs-studio-9999

Anything else we should know?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions