Bug 2164993 - FTBFS: "error: declaration of 'typedef class pp::Lock pp::ThreadSafeThreadTraits::Lock' chan ges meaning of 'Lock' [-fpermissive]"
Summary: FTBFS: "error: declaration of 'typedef class pp::Lock pp::ThreadSafeThreadTra...
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: qt5-qtwebengine
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Jan Grulich
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2023-01-27 09:42 UTC by Ankur Sinha (FranciscoD)
Modified: 2023-01-31 08:59 UTC (History)
15 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2023-01-31 08:59:44 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)
build log (373.59 KB, text/plain)
2023-01-27 09:42 UTC, Ankur Sinha (FranciscoD)
no flags Details

Description Ankur Sinha (FranciscoD) 2023-01-27 09:42:57 UTC
Created attachment 1940726 [details]
build log

Description of problem:
I ran into this while trying to update the freeworld counterpart in RPM Fusion, and then also ran into it here during a mockbuild.

Version-Release number of selected component (if applicable):
Commit: 42a4051
qt5-qtwebengine-5.15.12-2.fc38.src.rpm

How reproducible:
Always

Steps to Reproduce:
1. check out src.fp.o repo
2. run `fedpkg mockbuild` in rawhide/main branch
3.

Actual results:
Build fails

Expected results:
Build passes

Additional info:
The complete build log is attached. Here's the relevant snippet:


```
[972/24104] /usr/bin/python2 ../../3rdparty/chromium/tools/json_schema_compiler/compiler.py --root=../../3rdparty/chromium/ --destdir=gen --namespace=extensions::api::\%\(namespace\)s --bundle-name=QtWebEngine --generator=cpp-bundle-registration --impl-dir=qtwebengine/browser/extensions/api --include-rules= ../../3rdparty/chromium/qtwebengine/common/extensions/api/resources_private.idl ../../3rdparty/chromium/qtwebengine/common/extensions/api/webrtc_desktop_capture_private.idl
[973/24104] /usr/bin/g++ -MMD -MF obj/ppapi/cpp/objects/objects_jumbo_12.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -DTOOLKIT_QT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -I. -Igen -I../../3rdparty/chromium -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -pthread -m64 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -fno-delete-null-pointer-checks -Wno-comments -Wno-packed-not-aligned -Wno-dangling-else -Wno-missing-field-initializers -Wno-unused-parameter -O2 -fno-ident -fdata-sections -ffunction-sections -fno-omit-frame-pointer -g1 -fvisibility=hidden -std=gnu++14 -Wno-narrowing -Wno-class-memaccess -Wno-attributes -Wno-class-memaccess -Wno-subobject-linkage -Wno-invalid-offsetof -Wno-return-type -Wno-deprecated-copy -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -c gen/ppapi/cpp/objects_jumbo_12.cc -o obj/ppapi/cpp/objects/objects_jumbo_12.o
FAILED: obj/ppapi/cpp/objects/objects_jumbo_12.o 
/usr/bin/g++ -MMD -MF obj/ppapi/cpp/objects/objects_jumbo_12.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -DTOOLKIT_QT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -I. -Igen -I../../3rdparty/chromium -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -pthread -m64 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -fno-delete-null-pointer-checks -Wno-comments -Wno-packed-not-aligned -Wno-dangling-else -Wno-missing-field-initializers -Wno-unused-parameter -O2 -fno-ident -fdata-sections -ffunction-sections -fno-omit-frame-pointer -g1 -fvisibility=hidden -std=gnu++14 -Wno-narrowing -Wno-class-memaccess -Wno-attributes -Wno-class-memaccess -Wno-subobject-linkage -Wno-invalid-offsetof -Wno-return-type -Wno-deprecated-copy -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -c gen/ppapi/cpp/objects_jumbo_12.cc -o obj/ppapi/cpp/objects/objects_jumbo_12.o
In file included from ../../3rdparty/chromium/ppapi/cpp/array_output.h:17,
                 from ../../3rdparty/chromium/ppapi/cpp/output_traits.h:11,
                 from ../../3rdparty/chromium/ppapi/cpp/private/pass_file_handle.h:11,
                 from ./../../3rdparty/chromium/ppapi/cpp/private/pass_file_handle.cc:5,
                 from gen/ppapi/cpp/objects_jumbo_12.cc:5:
../../3rdparty/chromium/ppapi/cpp/var.h:96:16: warning: 'virtual pp::Var& pp::Var::operator=(const pp::Var&)' was hidden [-Woverloaded-virtual=]
   96 |   virtual Var& operator=(const Var& other);
      |                ^~~~~~~~
In file included from ./../../3rdparty/chromium/ppapi/cpp/private/var_private.cc:5,
                 from gen/ppapi/cpp/objects_jumbo_12.cc:11:
../../3rdparty/chromium/ppapi/cpp/private/var_private.h:23:7: note:   by 'pp::VarPrivate& pp::VarPrivate::operator=(const pp::VarPrivate&)'
   23 | class VarPrivate : public Var {
      |       ^~~~~~~~~~
In file included from ../../3rdparty/chromium/ppapi/utility/completion_callback_factory.h:11,
                 from ../../3rdparty/chromium/ppapi/utility/graphics/paint_manager.h:14,
                 from ./../../3rdparty/chromium/ppapi/utility/graphics/paint_manager.cc:5,
                 from gen/ppapi/cpp/objects_jumbo_12.cc:17:
../../3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h:70:20: error: declaration of 'typedef class pp::Lock pp::ThreadSafeThreadTraits::Lock' changes meaning of 'Lock' [-fpermissive]
   70 |   typedef pp::Lock Lock;
      |                    ^~~~
../../3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h:66:5: note: used here to mean 'class pp::Lock'
   66 |     Lock lock_;
      |     ^~~~
In file included from ../../3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h:12:
../../3rdparty/chromium/ppapi/utility/threading/lock.h:20:7: note: declared here
   20 | class Lock {
      |       ^~~~
[974/24104] /usr/bin/python2 ../../3rdparty/chromium/tools/json_schema_compiler/compiler.py --root=../../3rdparty/chromium/ --destdir=gen --namespace=extensions::api::\%\(namespace\)s --bundle-name= --generator=cpp-bundle-registration --impl-dir=extensions/browser/api --include-rules= ../../3rdparty/chromium/extensions/common/api/alarms.idl ../../3rdparty/chromium/extensions/common/api/app_current_window_internal.idl ../../3rdparty/chromium/extensions/common/api/app_runtime.idl ../../3rdparty/chromium/extensions/common/api/app_view_guest_internal.json ../../3rdparty/chromium/extensions/common/api/app_window.idl ../../3rdparty/chromium/extensions/common/api/audio.idl ../../3rdparty/chromium/extensions/common/api/automation.idl ../../3rdparty/chromium/extensions/common/api/automation_internal.idl ../../3rdparty/chromium/extensions/common/api/cec_private.idl ../../3rdparty/chromium/extensions/common/api/clipboard.idl ../../3rdparty/chromium/extensions/common/api/declarative_net_request.idl ../../3rdparty/chromium/extensions/common/api/display_source.idl ../../3rdparty/chromium/extensions/common/api/dns.idl ../../3rdparty/chromium/extensions/common/api/events.json ../../3rdparty/chromium/extensions/common/api/extension_options_internal.idl ../../3rdparty/chromium/extensions/common/api/extension_types.json ../../3rdparty/chromium/extensions/common/api/file_system.idl ../../3rdparty/chromium/extensions/common/api/guest_view_internal.json ../../3rdparty/chromium/extensions/common/api/management.json ../../3rdparty/chromium/extensions/common/api/hid.idl ../../3rdparty/chromium/extensions/common/api/idle.json ../../3rdparty/chromium/extensions/common/api/metrics_private.json ../../3rdparty/chromium/extensions/common/api/mime_handler_private.idl ../../3rdparty/chromium/extensions/common/api/mime_handler_view_guest_internal.json ../../3rdparty/chromium/extensions/common/api/mojo_private.idl ../../3rdparty/chromium/extensions/common/api/networking_private.idl ../../3rdparty/chromium/extensions/common/api/power.idl ../../3rdparty/chromium/extensions/common/api/printer_provider.idl ../../3rdparty/chromium/extensions/common/api/printer_provider_internal.idl ../../3rdparty/chromium/extensions/common/api/runtime.json ../../3rdparty/chromium/extensions/common/api/serial.idl ../../3rdparty/chromium/extensions/common/api/socket.idl ../../3rdparty/chromium/extensions/common/api/sockets_tcp.idl ../../3rdparty/chromium/extensions/common/api/sockets_tcp_server.idl ../../3rdparty/chromium/extensions/common/api/sockets_udp.idl ../../3rdparty/chromium/extensions/common/api/storage.json ../../3rdparty/chromium/extensions/common/api/system_cpu.idl ../../3rdparty/chromium/extensions/common/api/system_display.idl ../../3rdparty/chromium/extensions/common/api/system_memory.idl ../../3rdparty/chromium/extensions/common/api/system_network.idl ../../3rdparty/chromium/extensions/common/api/system_power_source.idl ../../3rdparty/chromium/extensions/common/api/system_storage.idl ../../3rdparty/chromium/extensions/common/api/test.json ../../3rdparty/chromium/extensions/common/api/usb.idl ../../3rdparty/chromium/extensions/common/api/virtual_keyboard.idl ../../3rdparty/chromium/extensions/common/api/virtual_keyboard_private.json ../../3rdparty/chromium/extensions/common/api/web_request.json ../../3rdparty/chromium/extensions/common/api/web_view_internal.json ../../3rdparty/chromium/extensions/common/api/web_request_internal.json
[975/24104] /usr/bin/python2 ../../3rdparty/chromium/net/tools/dafsa/make_dafsa.py --reverse ../../3rdparty/chromium/net/base/registry_controlled_domains/effective_tld_names.gperf gen/net/base/registry_controlled_domains/effective_tld_names-reversed-inc.cc
[976/24104] /usr/bin/python2 ../../3rdparty/chromium/tools/json_schema_compiler/compiler.py --root=../../3rdparty/chromium/ --destdir=gen --namespace=extensions::api::\%\(namespace\)s --bundle-name= --generator=cpp-bundle-schema --include-rules= ../../3rdparty/chromium/extensions/common/api/alarms.idl ../../3rdparty/chromium/extensions/common/api/app_current_window_internal.idl ../../3rdparty/chromium/extensions/common/api/app_runtime.idl ../../3rdparty/chromium/extensions/common/api/app_view_guest_internal.json ../../3rdparty/chromium/extensions/common/api/app_window.idl ../../3rdparty/chromium/extensions/common/api/audio.idl ../../3rdparty/chromium/extensions/common/api/automation.idl ../../3rdparty/chromium/extensions/common/api/automation_internal.idl ../../3rdparty/chromium/extensions/common/api/cec_private.idl ../../3rdparty/chromium/extensions/common/api/clipboard.idl ../../3rdparty/chromium/extensions/common/api/declarative_net_request.idl ../../3rdparty/chromium/extensions/common/api/display_source.idl ../../3rdparty/chromium/extensions/common/api/dns.idl ../../3rdparty/chromium/extensions/common/api/events.json ../../3rdparty/chromium/extensions/common/api/extension_options_internal.idl ../../3rdparty/chromium/extensions/common/api/extension_types.json ../../3rdparty/chromium/extensions/common/api/file_system.idl ../../3rdparty/chromium/extensions/common/api/guest_view_internal.json ../../3rdparty/chromium/extensions/common/api/management.json ../../3rdparty/chromium/extensions/common/api/hid.idl ../../3rdparty/chromium/extensions/common/api/idle.json ../../3rdparty/chromium/extensions/common/api/metrics_private.json ../../3rdparty/chromium/extensions/common/api/mime_handler_private.idl ../../3rdparty/chromium/extensions/common/api/mime_handler_view_guest_internal.json ../../3rdparty/chromium/extensions/common/api/mojo_private.idl ../../3rdparty/chromium/extensions/common/api/networking_private.idl ../../3rdparty/chromium/extensions/common/api/power.idl ../../3rdparty/chromium/extensions/common/api/printer_provider.idl ../../3rdparty/chromium/extensions/common/api/printer_provider_internal.idl ../../3rdparty/chromium/extensions/common/api/runtime.json ../../3rdparty/chromium/extensions/common/api/serial.idl ../../3rdparty/chromium/extensions/common/api/socket.idl ../../3rdparty/chromium/extensions/common/api/sockets_tcp.idl ../../3rdparty/chromium/extensions/common/api/sockets_tcp_server.idl ../../3rdparty/chromium/extensions/common/api/sockets_udp.idl ../../3rdparty/chromium/extensions/common/api/storage.json ../../3rdparty/chromium/extensions/common/api/system_cpu.idl ../../3rdparty/chromium/extensions/common/api/system_display.idl ../../3rdparty/chromium/extensions/common/api/system_memory.idl ../../3rdparty/chromium/extensions/common/api/system_network.idl ../../3rdparty/chromium/extensions/common/api/system_power_source.idl ../../3rdparty/chromium/extensions/common/api/system_storage.idl ../../3rdparty/chromium/extensions/common/api/test.json ../../3rdparty/chromium/extensions/common/api/usb.idl ../../3rdparty/chromium/extensions/common/api/virtual_keyboard.idl ../../3rdparty/chromium/extensions/common/api/virtual_keyboard_private.json ../../3rdparty/chromium/extensions/common/api/web_request.json ../../3rdparty/chromium/extensions/common/api/web_view_internal.json ../../3rdparty/chromium/extensions/common/api/web_request_internal.json ../../3rdparty/chromium/extensions/common/api/declarative_web_request.json ../../3rdparty/chromium/extensions/common/api/web_view_request.json
[977/24104] /usr/bin/g++ -MMD -MF obj/ppapi/cpp/objects/objects_jumbo_10.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -DTOOLKIT_QT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -I. -Igen -I../../3rdparty/chromium -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -pthread -m64 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -fno-delete-null-pointer-checks -Wno-comments -Wno-packed-not-aligned -Wno-dangling-else -Wno-missing-field-initializers -Wno-unused-parameter -O2 -fno-ident -fdata-sections -ffunction-sections -fno-omit-frame-pointer -g1 -fvisibility=hidden -std=gnu++14 -Wno-narrowing -Wno-class-memaccess -Wno-attributes -Wno-class-memaccess -Wno-subobject-linkage -Wno-invalid-offsetof -Wno-return-type -Wno-deprecated-copy -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -c gen/ppapi/cpp/objects_jumbo_10.cc -o obj/ppapi/cpp/objects/objects_jumbo_10.o
[978/24104] /usr/bin/g++ -MMD -MF obj/skia/skia_opts_hsw/SkOpts_hsw.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -DTOOLKIT_QT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DSK_CODEC_DECODES_PNG -DSK_CODEC_DECODES_WEBP -DSK_ENCODE_PNG -DSK_ENCODE_WEBP -DSK_USER_CONFIG_HEADER=\"../../skia/config/SkUserConfig.h\" -DSK_GL -DSK_CODEC_DECODES_JPEG -DSK_ENCODE_JPEG -DSK_USE_LIBGIFCODEC -DSK_VULKAN_HEADER=\"../../skia/config/SkVulkanConfig.h\" -DSK_VULKAN=1 -DSK_SUPPORT_GPU=1 -DSK_GPU_WORKAROUNDS_HEADER=\"gpu/config/gpu_driver_bug_workaround_autogen.h\" -DSKIA_IMPLEMENTATION=1 -DSK_GAMMA_EXPONENT=1.2 -DSK_GAMMA_CONTRAST=0.2 -DSK_DEFAULT_FONT_CACHE_LIMIT=20971520 -Igen -I../../3rdparty/chromium -I../../3rdparty/chromium/third_party/skia -I../../3rdparty/chromium/third_party/libgifcodec -I../../3rdparty/chromium/third_party/vulkan/include -I../../3rdparty/chromium/third_party/vulkan_headers/include -mavx2 -mbmi -mbmi2 -mf16c -mfma -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -pthread -m64 -fno-omit-frame-pointer -g1 -fvisibility=hidden -O2 -fno-ident -fdata-sections -ffunction-sections -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -fno-delete-null-pointer-checks -Wno-comments -Wno-packed-not-aligned -Wno-dangling-else -Wno-missing-field-initializers -Wno-unused-parameter -std=c++17 -std=gnu++14 -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -std=c++17 -Wno-narrowing -Wno-class-memaccess -Wno-attributes -Wno-class-memaccess -Wno-subobject-linkage -Wno-invalid-offsetof -Wno-return-type -Wno-deprecated-copy -c ../../3rdparty/chromium/third_party/skia/src/opts/SkOpts_hsw.cpp -o obj/skia/skia_opts_hsw/SkOpts_hsw.o
In file included from ../../3rdparty/chromium/third_party/skia/src/opts/SkBitmapProcState_opts.h:11,
                 from ../../3rdparty/chromium/third_party/skia/src/opts/SkOpts_hsw.cpp:12:
../../3rdparty/chromium/third_party/skia/include/private/SkVx.h: In instantiation of 'skvx::VExt<N, T> skvx::to_vext(const Vec<N, T>&) [with int N = 32; T = short unsigned int; VExt<N, T> = __vector(32) short unsigned int]':
../../3rdparty/chromium/third_party/skia/include/private/SkVx.h:180:35:   required from 'skvx::Vec<N, T> skvx::operator-(const Vec<N, T>&, const Vec<N, T>&) [with int N = 32; T = short unsigned int]'
../../3rdparty/chromium/third_party/skia/src/opts/SkBitmapProcState_opts.h:117:57:   required from here
../../3rdparty/chromium/third_party/skia/include/private/SkVx.h:173:20: warning: AVX512F vector return without AVX512F enabled changes the ABI [-Wpsabi]
  173 |     SINT VExt<N,T> to_vext(const Vec<N,T>& v) { return bit_pun<VExt<N,T>>(v); }
      |                    ^~~~~~~
[979/24104] /usr/bin/g++ -MMD -MF obj/skia/skcms/skcms.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_NSS_CERTS=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -DTOOLKIT_QT -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -I../../3rdparty/chromium/third_party/skia/include/third_party/skcms -Igen -I../../3rdparty/chromium -w -std=c11 -fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pipe -pthread -m64 -Wall -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -Wno-unused-local-typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -fno-delete-null-pointer-checks -Wno-comments -Wno-packed-not-aligned -Wno-dangling-else -Wno-missing-field-initializers -Wno-unused-parameter -O2 -fno-ident -fdata-sections -ffunction-sections -fno-omit-frame-pointer -g1 -fvisibility=hidden -std=gnu++14 -Wno-narrowing -Wno-class-memaccess -Wno-attributes -Wno-class-memaccess -Wno-subobject-linkage -Wno-invalid-offsetof -Wno-return-type -Wno-deprecated-copy -fno-exceptions -fno-rtti -fvisibility-inlines-hidden -c ../../3rdparty/chromium/third_party/skia/third_party/skcms/skcms.cc -o obj/skia/skcms/skcms.o
[980/24104] /usr/bin/python2 ../../3rdparty/chromium/net/tools/dafsa/make_dafsa.py --reverse ../../3rdparty/chromium/net/base/registry_controlled_domains/effective_tld_names_unittest4.gperf gen/net/base/registry_controlled_domains/effective_tld_names_unittest4-reversed-inc.cc
ninja: build stopped: subcommand failed.
make[3]: Leaving directory '/builddir/build/BUILD/qtwebengine-everywhere-src-5.15.12/src/core'
make[3]: *** [Makefile.gn_run:392: run_ninja] Error 1
make[2]: Leaving directory '/builddir/build/BUILD/qtwebengine-everywhere-src-5.15.12/src/core'
make[2]: *** [Makefile:82: sub-gn_run-pro-make_first] Error 2
make[1]: Leaving directory '/builddir/build/BUILD/qtwebengine-everywhere-src-5.15.12/src'
make[1]: *** [Makefile:80: sub-core-make_first] Error 2
make: *** [Makefile:49: sub-src-make_first] Error 2
RPM build errors:
```

Comment 1 Ankur Sinha (FranciscoD) 2023-01-27 09:57:36 UTC
Looks like something GCC 13 related. Another bug report, but for an older version of qtwebengine/chromium:

https://bugs.gentoo.org/889724

Comment 2 Jan Grulich 2023-01-27 11:14:50 UTC
Yes, it's GCC 13 related, same issue was with qt6-qtwebengine and I have a fix for that, but it currently fails on something else. I'm still working on it.

Comment 3 Ankur Sinha (FranciscoD) 2023-01-27 11:53:34 UTC
Thanks Jan, please let me know if I can help in any way.

Comment 4 Kevin Kofler 2023-01-27 11:59:26 UTC
IMHO, this is a bug in GCC (g++): I do not see how redefining Lock from pp::Lock to pp::Lock "changes meaning of 'Lock'".

Comment 5 Jan Grulich 2023-01-30 08:41:52 UTC
I have a workaround for this issue, but it fails later with something else.


Workaround for this is:
>diff --git a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
>index ac0b31a75..5d1c421d0 100644
>--- a/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
>+++ b/src/3rdparty/chromium/ppapi/utility/completion_callback_factory_thread_traits.h
>@@ -38,6 +38,10 @@ namespace pp {
> /// As a further optimization, we can add support for this later.
> class ThreadSafeThreadTraits {
>  public:
>+
>+  typedef pp::Lock Lock;
>+  typedef pp::AutoLock AutoLock;
>+
>   class RefCount {
>    public:
>     /// Default constructor. In debug mode, this checks that the object is being
>@@ -67,8 +71,6 @@ class ThreadSafeThreadTraits {
>     int32_t ref_;
>   };
> 
>-  typedef pp::Lock Lock;
>-  typedef pp::AutoLock AutoLock;
> };
> 
> /// The non-thread-safe version of thread traits. Using this class as the

It now fails with:
>In file included from gen/ui/gfx/x/present.cc:1:
>gen/ui/gfx/x/present.h:223:16: error: declaration of ‘x11::Future<void> x11::Present::Pixmap(const PixmapRequest&)’ changes meaning of ‘Pixmap’ [-fpermissive]
>  223 |   Future<void> Pixmap(
>      |                ^~~~~~
>gen/ui/gfx/x/present.h:205:5: note: used here to mean ‘enum class x11::Pixmap’
>  205 |     Pixmap pixmap{};
>      |     ^~~~~~
>In file included from gen/ui/gfx/x/render.h:16,
>                 from gen/ui/gfx/x/randr.h:16,
>                 from gen/ui/gfx/x/present.h:16:
>gen/ui/gfx/x/xproto.h:525:12: note: declared here
>  525 | enum class Pixmap : uint32_t {
>      |            ^~~~~~

Which is a generated code that compiled before, but doesn't compile now and I suspect it's a similar issue to the one mentioned in this bug, therefore reassigning to GCC.

Comment 6 Jonathan Wakely 2023-01-30 09:57:42 UTC
(In reply to Kevin Kofler from comment #4)
> IMHO, this is a bug in GCC (g++): I do not see how redefining Lock from
> pp::Lock to pp::Lock "changes meaning of 'Lock'".

Because the standard says so.

The first failure can be reduced to:

namespace pp
{
  struct Lock { };

  struct Traits
  {
    Lock lock;   // (A)

    typedef pp::Lock Lock; // (B)
  };
}

Name lookup at (A) finds ::Lock, but after the class is complete name lookup would find Traits::Lock. Even though those are the same type, it's a different lookup result, which violates:

"The result of the search is the declaration set of S(N, T ). If it is an invalid set, the program is ill-formed. If it differs from the result of a search in T for N in a complete-class context (11.4) of T , the program is ill-formed, no diagnostic required."

The solution is to either move (B) before (A) or change (A) to use a qualified name, pp::Lock lock;


The second case (comment 5) can be reduced to:

namespace x11
{
  enum class Pixmap : unsigned {};

  struct PixmapRequest;

  template<class T> struct Future { };

  struct Present
  {
    Pixmap pixmap{}; // (A)

    Future<void> Pixmap(const PixmapRequest&); // (B)
  };
}

This is basically the same, the result of name lookup for "Pixmap" at (A) differs from the result of name lookup when the class is complete. And here name lookup in the complete class context doesn't find a typedef for the same type as the original lookup, it's a completely different "Pixmap". This is definitely a bug. I don't think this code used to compile, because GCC 7 gives the same error for this code (I didn't bother checking anything older than GCC 7).

I think GCC is correct.

Comment 7 Jakub Jelinek 2023-01-30 10:17:56 UTC
Note, the two snippets Jonathan posted above are diagnosed as errors by GCC for years (the first one which is C++98 even in GCC 4.1 from 2006, haven't tried older.
So, if this builds with GCC 12, it must be different code used for GCC 12 and 13.

Comment 8 Jakub Jelinek 2023-01-30 10:20:02 UTC
Note, clang++ doesn't diagnose that and as it is "no diagnostic required", that isn't non-compliant, just not very helpful for users.

Comment 9 Jan Grulich 2023-01-30 10:41:23 UTC
(In reply to Jakub Jelinek from comment #7)
> Note, the two snippets Jonathan posted above are diagnosed as errors by GCC
> for years (the first one which is C++98 even in GCC 4.1 from 2006, haven't
> tried older.
> So, if this builds with GCC 12, it must be different code used for GCC 12
> and 13.

I just tried to build qt5-qtwebengine with GCC 12 (F37) and GCC 13 (Rawhide) and in both cases the code it produces is same:

struct PixmapRequest {
  Window window{};
  Pixmap pixmap{};
  uint32_t serial{};
  XFixes::Region valid{};
  XFixes::Region update{};
  int16_t x_off{};
  int16_t y_off{};
  RandR::Crtc target_crtc{};
  Sync::Fence wait_fence{};
  Sync::Fence idle_fence{};
  uint32_t options{};
  uint64_t target_msc{};
  uint64_t divisor{};
  uint64_t remainder{};
  std::vector<Notify> notifies{};
};

using PixmapResponse = Response<void>;

Future<void> Pixmap(
    const PixmapRequest& request);

Where Pixmap is defined in xproto.h as:

enum class Pixmap : uint32_t {
  None = 0,
};

In F37 it doesn't fail and it also built fine in Rawhide ~2 weeks ago → https://koji.fedoraproject.org/koji/buildinfo?buildID=2111448

Comment 10 Jonathan Wakely 2023-01-30 20:45:56 UTC
(In reply to Jonathan Wakely from comment #6)
> The second case (comment 5) can be reduced to:

Correctly reduced:

using uint32_t = unsigned;

namespace x11 {

enum class Pixmap : uint32_t {
  None = 0,
};

template <class Reply>
class Future;

class Present {
  enum class CompleteKind : int {
    Pixmap = 0,
    NotifyMSC = 1,
  };

  struct PixmapRequest {
    Pixmap pixmap{};
  };

  Future<void> Pixmap(
        const PixmapRequest& request);
};
}


This does indeed compile with gcc 12 and fail with gcc13, due to https://gcc.gnu.org/r13-76

The commit msg for that change makes it clear that this is intentional, and GCC is correct:

c++: also note name used in enclosing class

While looking at PR96645 I noticed that while we were diagnosing names
changing meaning in the full class context, we weren't doing this for
lookups in nested class bodies.

This is a Qt bug not a GCC bug.

Comment 11 Jan Grulich 2023-01-31 08:59:44 UTC
Alright, this seems to fix it:

diff --git a/src/3rdparty/chromium/third_party/xcbproto/src/src/present.xml b/src/3rdparty/chromium/third_party/xcbproto/src/src/present.xml
index fb06e73..f20c11e 100644
--- a/src/3rdparty/chromium/third_party/xcbproto/src/src/present.xml
+++ b/src/3rdparty/chromium/third_party/xcbproto/src/src/present.xml
@@ -89,7 +89,7 @@ OF THIS SOFTWARE.
     </reply>
   </request>
 
-  <request name="Pixmap" opcode="1">
+  <request name="PresentPixmap" opcode="1">
     <required_start_align align="8" />
     <field type="WINDOW" name="window" />
     <field type="PIXMAP" name="pixmap" />

It's actually a fix from qt6-qtwebengine as I started comparing what's different there makes it to build against GCC 13.


Note You need to log in before you can comment on or make changes to this bug.