Bug 279180

Summary: www/qt6-webengine: fails to build with SNDIO=on (sndio_output.cc:14:27: error: redefinition of 'kSampleFormat')
Product: Ports & Packages Reporter: Benjamin Takacs <nimaje+fbz>
Component: Individual Port(s)Assignee: freebsd-kde (group) <kde>
Status: Open ---    
Severity: Affects Only Me CC: jhale, robbak
Priority: --- Flags: jhale: maintainer-feedback+
Version: Latest   
Hardware: Any   
OS: Any   
Attachments:
Description Flags
Proposed fix for qt6-webengine + SNDIO none

Description Benjamin Takacs 2024-05-20 14:53:17 UTC
when trying to build qt6-webengine with sndio as audio backend it fails with

[ 53% 15533/29113] CXX obj/media/audio/audio/audio_jumbo_7.o
FAILED: obj/media/audio/audio/audio_jumbo_7.o 
/usr/local/libexec/ccache/c++ -MMD -MF obj/media/audio/audio/audio_jumbo_7.o.d -DUSE_AURA=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -DTOOLKIT_QT -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURC
E -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D_GNU_SOURCE -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DIS_MEDIA_IMPL -DUSE_SNDIO -DSK_ENABLE_SKSL -DSK_UNTIL_CRBUG_1187654_IS_FIXED -DSK_USER_CONFIG_HEADER=\"../../skia
/config/SkUserConfig.h\" -DSK_WIN_FONTMGR_NO_SIMULATIONS -DSK_DISABLE_LEGACY_SKSURFACE_METHODS -DSK_DISABLE_LEGACY_GRAPHITE_IMAGE_FACTORIES -DSK_DISABLE_LEGACY_GRAPHITE_IMAGE_METHODS -DSK_DISABLE_LEGACY_SKSURFACE_FACTORIES -D
SK_DISABLE_LEGACY_SKSURFACE_FLUSH -DSK_DISABLE_LEGACY_SKSURFACE_AS_IMAGE -DSK_DISABLE_LEGACY_SKSURFACE_DISPLAYLIST -DSK_DISABLE_LEGACY_IMAGE_SUBSET_METHODS -DSK_DISABLE_LEGACY_IMAGE_COLORSPACE_METHODS -DSK_DISABLE_LEGACY_IMAG
E_RELEASE_PROCS -DSK_DISABLE_LEGACY_GL_BACKEND_SURFACE -DSK_DISABLE_LEGACY_INIT_DECODERS -DSK_CODEC_DECODES_JPEG -DSK_ENCODE_JPEG -DSK_ENCODE_PNG -DSK_ENCODE_WEBP -DSK_GANESH -DSK_GPU_WORKAROUNDS_HEADER=\"gpu/config/gpu_drive
r_bug_workaround_autogen.h\" -DSK_GL -DSK_VULKAN=1 -DSK_GRAPHITE -DVK_USE_PLATFORM_XCB_KHR -DUSE_GLX -DUSE_EGL -DLIBYUV_DISABLE_NEON -DUSE_SYSTEM_LIBEVENT=1 -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -
DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -DFLAC__NO_DLL -I. -Igen -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium -I../../../.
./../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/perfetto/include -Igen/third_party/perfetto/build_config -Igen/third_party/perfetto -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromi
um/third_party/skia -Igen/third_party/skia -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/wuffs/src/release/c -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_
party/vulkan/include -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/vulkan-deps/vulkan-headers/src/include -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/net/third
_party/quiche/overrides -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/net/third_party/quiche/src/quiche/common/platform/default -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/net/third_party/quiche/src -Igen/third_party/dawn/include -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/dawn/include -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/khronos -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/gpu -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/libyuv/include -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/abseil-cpp -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/boringssl/src/include -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/protobuf/src -Igen/protoc_out -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/icu/source/common -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/icu/source/i18n -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/ipcz/include -I../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/third_party/ced/src -Wall -Wextra -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wimplicit-fallthrough -Wthread-safety -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Wloop-analysis -Wno-unneeded-internal-declaration -Wno-deprecated-declarations -Wenum-compare-conditional -Wno-ignored-pragma-optimize -Wshadow -fno-delete-null-pointer-checks -fno-ident -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -Wno-unknown-argument -Wno-unknown-attributes -Wno-unknown-warning-option -Wno-ignored-attributes -Wno-predefined-identifier-outside-function -Wno-self-assign -Wno-unknown-pragmas -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pthread -fcolor-diagnostics -fmerge-all-constants -m64 -msse3 -no-canonical-prefixes -O2 -fdata-sections -ffunction-sections -fno-unique-section-names -fno-omit-frame-pointer -g0 -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -Wexit-time-destructors -Wno-redundant-parens -Wno-redundant-parens -DPROTOBUF_ALLOW_DEPRECATED=1 -I/usr/local/include/opus -Wno-parentheses-equality -Wno-tautological-compare -Wno-thread-safety-attributes -Wno-undefined-bool-conversion -Wno-tautological-undefined-compare -std=c++20 -Wno-trigraphs -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -isystem /usr/local/include -O2 -pipe -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -isystem /usr/local/include  -c gen/media/audio/audio_jumbo_7.cc -o obj/media/audio/audio/audio_jumbo_7.o
In file included from gen/media/audio/audio_jumbo_7.cc:14:
./../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/media/audio/sndio/sndio_output.cc:14:27: error: redefinition of 'kSampleFormat'
static const SampleFormat kSampleFormat = kSampleFormatS16;
                          ^
./../../../../../qtwebengine-everywhere-src-6.7.0/src/3rdparty/chromium/media/audio/sndio/sndio_input.cc:13:27: note: previous definition is here
static const SampleFormat kSampleFormat = kSampleFormatS16;
                          ^
1 error generated.


Which seems to be an artefact of a jumbo build, as sndio_output.cc and sndio_input.cc define kSampleFormat as static which should work fine if they were seperate compilation units and later linked together, instead of being #included into audio_jumbo_7.cc and be one compilation unit as a result.

I can provide the full build log, if need be
Comment 1 Jason E. Hale freebsd_committer freebsd_triage 2024-05-23 01:02:34 UTC
Created attachment 250886 [details]
Proposed fix for qt6-webengine + SNDIO

Sorry for the breakage. I'm currently prepping Qt 6.7.1 and will have this fixed as part of that release. Should just be another day or two.

It *should* be enough to just give the variables unique names to fix the jumbo build and this follows what the default alsa backend does. I haven't tested this yet, but if you can't wait for Qt 6.7.1, please try the attached patch. Use ninja 1.11.1 to build, also. We have been seeing some new problems with ninja 1.12.x and qt*-webengine. Ninja was just reverted to 1.11.1 today.
Comment 2 Jason E. Hale freebsd_committer freebsd_triage 2024-05-23 03:27:37 UTC
Small update: I have a successful build with SNDIO enabled in qt6-webengine with my proposed patch in my local qt6-6.7.1 update branch, but the patch should also apply cleanly to 6.7.0 in main.
Comment 3 commit-hook freebsd_committer freebsd_triage 2024-05-25 01:56:17 UTC
A commit in branch main references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=359c8eed1862a08dbe0a9a67a62bb209c9471da9

commit 359c8eed1862a08dbe0a9a67a62bb209c9471da9
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2024-05-24 08:48:58 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2024-05-25 01:55:22 +0000

    Qt6: Update to 6.7.1

    As a patch release, Qt 6.7.1 does not introduce any new features but
    contains more than 400 bug fixes, security updates, and other
    improvements to the top of the Qt 6.7.0 release. See more information
    about the most important changes and bug fixes from Qt 6.7.1 release
    note.

    Enable building of databases/qt6-base_sqldriver@mysql with MariaDB. [1]

    Fix build of www/qt6-webengine with the SNDIO option enabled. [2]

    Announcement: https://www.qt.io/blog/qt-6.7.1-released
    Release note: https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.7.1/release-note.md

    PR:             277922 [1], 279180 [2]
    Reported by:    vvd [1], Benjamin Takacs <nimaje+fbz@bureaucracy.de> [2]
    MFH:            2024Q2
    Security:       f5fa174d-19de-11ef-83d8-4ccc6adda413

 Mk/Uses/qt.mk                                      |    2 +-
 accessibility/qt6-speech/distinfo                  |    6 +-
 comms/qt6-connectivity/distinfo                    |    6 +-
 comms/qt6-sensors/distinfo                         |    6 +-
 comms/qt6-serialbus/distinfo                       |    6 +-
 comms/qt6-serialport/distinfo                      |    6 +-
 databases/qt6-base_sqldriver/Makefile              |    4 -
 databases/qt6-base_sqldriver/distinfo              |    6 +-
 devel/qt6-5compat/distinfo                         |    6 +-
 devel/qt6-base/Makefile                            |    3 -
 devel/qt6-base/distinfo                            |    8 +-
 .../files/patch-cmake_FindMySQL.cmake (new)        |   13 +
 .../files/patch-src_corelib_tools_qspan.h (gone)   |   15 -
 devel/qt6-base/pkg-plist                           |    6 +-
 devel/qt6-languageserver/distinfo                  |    6 +-
 devel/qt6-location/distinfo                        |    6 +-
 devel/qt6-positioning/distinfo                     |    6 +-
 devel/qt6-remoteobjects/distinfo                   |    6 +-
 devel/qt6-scxml/distinfo                           |    6 +-
 devel/qt6-tools/distinfo                           |    6 +-
 devel/qt6-translations/distinfo                    |    6 +-
 devel/qt6-translations/pkg-plist                   |   14 +
 graphics/qt6-3d/distinfo                           |    6 +-
 graphics/qt6-imageformats/Makefile                 |    1 -
 graphics/qt6-imageformats/distinfo                 |    6 +-
 graphics/qt6-lottie/distinfo                       |    6 +-
 graphics/qt6-quickeffectmaker/distinfo             |    6 +-
 graphics/qt6-svg/distinfo                          |    6 +-
 graphics/qt6-wayland/distinfo                      |    6 +-
 misc/qt6-doc/distinfo                              |    6 +-
 misc/qt6-doc/pkg-plist                             |   14 +
 misc/qt6-examples/distinfo                         |    6 +-
 misc/qt6-examples/pkg-plist                        |   82 +-
 multimedia/qt6-multimedia/Makefile                 |   37 +-
 multimedia/qt6-multimedia/distinfo                 |    8 +-
 .../files/patch-src_multimedia_configure.cmake     |   11 +-
 multimedia/qt6-multimedia/pkg-help (new)           |    2 +
 multimedia/qt6-multimedia/pkg-plist                |   49 +
 net/qt6-coap/distinfo                              |    6 +-
 net/qt6-networkauth/distinfo                       |    6 +-
 science/qt6-quick3dphysics/distinfo                |    6 +-
 www/qt6-httpserver/distinfo                        |    6 +-
 www/qt6-webchannel/distinfo                        |    6 +-
 www/qt6-webengine/distinfo                         |    6 +-
 .../files/patch-security-rollup (gone)             | 6091 --------------------
 ...arty_chromium_media_audio_sndio_sndio__input.cc |   10 +-
 ...rty_chromium_media_audio_sndio_sndio__output.cc |   12 +-
 ...ty_webrtc_pc_legacy__stats__collector.cc (gone) |  114 -
 www/qt6-websockets/distinfo                        |    6 +-
 www/qt6-webview/distinfo                           |    6 +-
 x11-toolkits/qt6-charts/distinfo                   |    6 +-
 x11-toolkits/qt6-datavis3d/distinfo                |    6 +-
 x11-toolkits/qt6-declarative/distinfo              |    6 +-
 x11-toolkits/qt6-declarative/pkg-plist             |    8 +-
 x11-toolkits/qt6-graphs/distinfo                   |    6 +-
 x11-toolkits/qt6-graphs/pkg-plist                  |   38 +-
 x11-toolkits/qt6-quick3d/distinfo                  |    6 +-
 x11-toolkits/qt6-quicktimeline/distinfo            |    6 +-
 x11-toolkits/qt6-shadertools/distinfo              |    6 +-
 x11-toolkits/qt6-virtualkeyboard/distinfo          |    6 +-
 60 files changed, 335 insertions(+), 6435 deletions(-)
Comment 4 commit-hook freebsd_committer freebsd_triage 2024-05-25 02:02:26 UTC
A commit in branch 2024Q2 references this bug:

URL: https://cgit.FreeBSD.org/ports/commit/?id=60f70de1dc864e0b1d9dae3c9a93e0b12c64fc50

commit 60f70de1dc864e0b1d9dae3c9a93e0b12c64fc50
Author:     Jason E. Hale <jhale@FreeBSD.org>
AuthorDate: 2024-05-24 08:48:58 +0000
Commit:     Jason E. Hale <jhale@FreeBSD.org>
CommitDate: 2024-05-25 02:00:43 +0000

    Qt6: Update to 6.7.1

    As a patch release, Qt 6.7.1 does not introduce any new features but
    contains more than 400 bug fixes, security updates, and other
    improvements to the top of the Qt 6.7.0 release. See more information
    about the most important changes and bug fixes from Qt 6.7.1 release
    note.

    Enable building of databases/qt6-base_sqldriver@mysql with MariaDB. [1]

    Fix build of www/qt6-webengine with the SNDIO option enabled. [2]

    Announcement: https://www.qt.io/blog/qt-6.7.1-released
    Release note: https://code.qt.io/cgit/qt/qtreleasenotes.git/about/qt/6.7.1/release-note.md

    PR:             277922 [1], 279180 [2]
    Reported by:    vvd [1], Benjamin Takacs <nimaje+fbz@bureaucracy.de> [2]
    MFH:            2024Q2
    Security:       f5fa174d-19de-11ef-83d8-4ccc6adda413

    (cherry picked from commit 359c8eed1862a08dbe0a9a67a62bb209c9471da9)

 Mk/Uses/qt.mk                                      |    2 +-
 accessibility/qt6-speech/distinfo                  |    6 +-
 comms/qt6-connectivity/distinfo                    |    6 +-
 comms/qt6-sensors/distinfo                         |    6 +-
 comms/qt6-serialbus/distinfo                       |    6 +-
 comms/qt6-serialport/distinfo                      |    6 +-
 databases/qt6-base_sqldriver/Makefile              |    4 -
 databases/qt6-base_sqldriver/distinfo              |    6 +-
 devel/qt6-5compat/distinfo                         |    6 +-
 devel/qt6-base/Makefile                            |    3 -
 devel/qt6-base/distinfo                            |    8 +-
 .../files/patch-cmake_FindMySQL.cmake (new)        |   13 +
 .../files/patch-src_corelib_tools_qspan.h (gone)   |   15 -
 devel/qt6-base/pkg-plist                           |    6 +-
 devel/qt6-languageserver/distinfo                  |    6 +-
 devel/qt6-location/distinfo                        |    6 +-
 devel/qt6-positioning/distinfo                     |    6 +-
 devel/qt6-remoteobjects/distinfo                   |    6 +-
 devel/qt6-scxml/distinfo                           |    6 +-
 devel/qt6-tools/distinfo                           |    6 +-
 devel/qt6-translations/distinfo                    |    6 +-
 devel/qt6-translations/pkg-plist                   |   14 +
 graphics/qt6-3d/distinfo                           |    6 +-
 graphics/qt6-imageformats/distinfo                 |    6 +-
 graphics/qt6-lottie/distinfo                       |    6 +-
 graphics/qt6-quickeffectmaker/distinfo             |    6 +-
 graphics/qt6-svg/distinfo                          |    6 +-
 graphics/qt6-wayland/distinfo                      |    6 +-
 misc/qt6-doc/distinfo                              |    6 +-
 misc/qt6-doc/pkg-plist                             |   14 +
 misc/qt6-examples/distinfo                         |    6 +-
 misc/qt6-examples/pkg-plist                        |   82 +-
 multimedia/qt6-multimedia/Makefile                 |   37 +-
 multimedia/qt6-multimedia/distinfo                 |    8 +-
 .../files/patch-src_multimedia_configure.cmake     |   11 +-
 multimedia/qt6-multimedia/pkg-help (new)           |    2 +
 multimedia/qt6-multimedia/pkg-plist                |   49 +
 net/qt6-coap/distinfo                              |    6 +-
 net/qt6-networkauth/distinfo                       |    6 +-
 science/qt6-quick3dphysics/distinfo                |    6 +-
 www/qt6-httpserver/distinfo                        |    6 +-
 www/qt6-webchannel/distinfo                        |    6 +-
 www/qt6-webengine/distinfo                         |    6 +-
 .../files/patch-security-rollup (gone)             | 6091 --------------------
 ...arty_chromium_media_audio_sndio_sndio__input.cc |   10 +-
 ...rty_chromium_media_audio_sndio_sndio__output.cc |   12 +-
 ...ty_webrtc_pc_legacy__stats__collector.cc (gone) |  114 -
 www/qt6-websockets/distinfo                        |    6 +-
 www/qt6-webview/distinfo                           |    6 +-
 x11-toolkits/qt6-charts/distinfo                   |    6 +-
 x11-toolkits/qt6-datavis3d/distinfo                |    6 +-
 x11-toolkits/qt6-declarative/distinfo              |    6 +-
 x11-toolkits/qt6-declarative/pkg-plist             |    8 +-
 x11-toolkits/qt6-graphs/distinfo                   |    6 +-
 x11-toolkits/qt6-graphs/pkg-plist                  |   38 +-
 x11-toolkits/qt6-quick3d/distinfo                  |    6 +-
 x11-toolkits/qt6-quicktimeline/distinfo            |    6 +-
 x11-toolkits/qt6-shadertools/distinfo              |    6 +-
 x11-toolkits/qt6-virtualkeyboard/distinfo          |    6 +-
 59 files changed, 335 insertions(+), 6434 deletions(-)