FireBurn/Overlay

www-client/chromium-80.0.3970.5 fails to compile

Closed this issue · 7 comments

[9789/20285] x86_64-pc-linux-gnu-g++ -MMD -MF obj/net/net/quic_framer.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_NSS_CERTS=1 -DUSE_X11=1 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LAR
GEFILE64_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_40 -DGLIB_VERSION_MIN_REQUIRED=
GLIB_VERSION_2_40 -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DHAVE_PTHREAD -DNET_IMPLEMENTATION -DENABLE_BUILT_IN_DNS -DUSE_GIO -DUSE_SYSTEM_ZLIB=1 -DUSING_SYSTEM_ICU
=1 -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_STATIC -DUCHAR_TYPE=uint16_t -DU_IMPORT=U_EXPORT -I../.. -Igen -Igen/shim_headers/zlib_shim -Igen/shim_headers/icui18n_shim -Igen/shim_headers/icuuc_shi
m -I../../third_party/protobuf/src -Igen/protoc_out -I../../third_party/protobuf/src -I../../third_party/boringssl/src/include -I../../third_party/ced/src -I../../third_party/brotli/include 
-fno-strict-aliasing --param=ssp-buffer-size=4 -fstack-protector -funwind-tables -fPIC -pipe -pthread -Wno-builtin-macro-redefined -D__DATE__= -D__TIME__= -D__TIMESTAMP__= -Wno-unused-local-
typedefs -Wno-maybe-uninitialized -Wno-deprecated-declarations -Wno-comments -Wno-packed-not-aligned -Wno-missing-field-initializers -Wno-unused-parameter -fno-omit-frame-pointer -fvisibilit
y=hidden -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/lib64/libffi/include -I/usr/include/nss -I/usr/include/nspr -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr
/lib64/libffi/include -I/usr/include/libmount -I/usr/include/blkid -std=gnu++14 -Wno-narrowing -Wno-class-memaccess -Wno-class-memaccess -fno-exceptions -fno-rtti -fvisibility-inlines-hidden
 -O2 -march=znver1 -pipe -Wl,-O1 -Wl,--as-needed -c ../../net/third_party/quiche/src/quic/core/quic_framer.cc -o obj/net/net/quic_framer.o
In file included from /usr/include/unistd.h:226,
                 from ../../build/build_config.h:45,
                 from ../../base/compiler_specific.h:8,
                 from ../../base/logging.h:20,  
                 from ../../net/quic/platform/impl/quic_logging_impl.h:8,
                 from ../../net/third_party/quiche/src/quic/platform/api/quic_logging.h:8,
                 from ../../net/third_party/quiche/src/quic/core/quic_packet_number.h:13,
                 from ../../net/third_party/quiche/src/quic/core/quic_types.h:16,
                 from ../../net/third_party/quiche/src/quic/core/quic_versions.h:22,
                 from ../../net/third_party/quiche/src/quic/core/crypto/quic_crypter.h:8,
                 from ../../net/third_party/quiche/src/quic/core/crypto/quic_decrypter.h:13,
                 from ../../net/third_party/quiche/src/quic/core/quic_framer.h:13,
                 from ../../net/third_party/quiche/src/quic/core/quic_framer.cc:5:
../../net/third_party/quiche/src/quic/core/frames/quic_frame.h:110:24: warning: offsetof within non-standard-layout type 'quic::QuicStreamFrame' is conditionally-supported [-Winvalid-offseto
f]
  110 | static_assert(offsetof(QuicStreamFrame, type) == offsetof(QuicFrame, type),
      |                        ^
../../net/third_party/quiche/src/quic/core/frames/quic_frame.h:110:59: warning: offsetof within non-standard-layout type 'quic::QuicFrame' is conditionally-supported [-Winvalid-offsetof]
  110 | static_assert(offsetof(QuicStreamFrame, type) == offsetof(QuicFrame, type),
      |                                                           ^
../../net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h: In instantiation of 'quic::QuicInlinedFrame<DerivedT>::QuicInlinedFrame(quic::QuicFrameType) [with DerivedT = quic::Qu
icPaddingFrame]':
../../net/third_party/quiche/src/quic/core/frames/quic_padding_frame.h:20:77:   required from here
../../net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h:20:28: warning: offsetof within non-standard-layout type 'quic::QuicPaddingFrame' is conditionally-supported [-Winvalid
-offsetof]
   20 |     static_assert(offsetof(DerivedT, type) == 0,
      |                            ^
ninja: build stopped: subcommand failed. 

 * ERROR: www-client/chromium-80.0.3970.5::FireBurn failed (compile phase):
 *   ninja -v -j7 -l0 -C out/Release v8_context_snapshot_generator failed
 * 
 * Call stack:
 *     ebuild.sh, line  125:  Called src_compile
 *   environment, line 5465:  Called eninja '-C' 'out/Release' 'v8_context_snapshot_generator'
 *   environment, line 2964:  Called die
 * The specific snippet of code:
 *       "$@" || die "${nonfatal_args[@]}" "${*} failed"

This seems to be the root cause;

In file included from ../../net/third_party/quiche/src/quic/core/quic_crypto_stream.cc:5:
../../net/third_party/quiche/src/quic/core/quic_crypto_stream.h:158:30: note: 'quic::QuicCryptoStream::CryptoSubstream::CryptoSubstream(quic::QuicCryptoStream::CryptoSubstream&&)' is implicitly deleted because the default definition would be ill-formed:
  158 |   struct QUIC_EXPORT_PRIVATE CryptoSubstream {
      |                              ^~~~~~~~~~~~~~~
../../net/third_party/quiche/src/quic/core/quic_crypto_stream.h:158:30: error: use of deleted function 'quic::QuicStreamSendBuffer::QuicStreamSendBuffer(quic::QuicStreamSendBuffer&&)'
In file included from ../../net/third_party/quiche/src/quic/core/quic_stream.h:27,
                 from ../../net/third_party/quiche/src/quic/core/quic_crypto_stream.h:15,
                 from ../../net/third_party/quiche/src/quic/core/quic_crypto_stream.cc:5:
../../net/third_party/quiche/src/quic/core/quic_stream_send_buffer.h:65:3: note: declared here
   65 |   QuicStreamSendBuffer(QuicStreamSendBuffer&& other) = delete;
      |   ^~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/unistd.h:226,
                 from ../../build/build_config.h:45,
                 from ../../base/compiler_specific.h:8,
                 from ../../base/logging.h:20,
                 from ../../net/quic/platform/impl/quic_logging_impl.h:8,
                 from ../../net/third_party/quiche/src/quic/platform/api/quic_logging.h:8,
                 from ../../net/third_party/quiche/src/quic/core/quic_interval_set.h:63,
                 from ../../net/third_party/quiche/src/quic/core/frames/quic_ack_frame.h:11,
                 from ../../net/third_party/quiche/src/quic/core/frames/quic_frame.h:11,
                 from ../../net/third_party/quiche/src/quic/core/quic_packets.h:17,
                 from ../../net/third_party/quiche/src/quic/core/crypto/crypto_handshake_message.h:14,
                 from ../../net/third_party/quiche/src/quic/core/crypto/crypto_framer.h:15,
                 from ../../net/third_party/quiche/src/quic/core/quic_crypto_stream.h:11,
                 from ../../net/third_party/quiche/src/quic/core/quic_crypto_stream.cc:5:
../../net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h: In instantiation of 'quic::QuicInlinedFrame<DerivedT>::QuicInlinedFrame(quic::QuicFrameType) [with DerivedT = quic::QuicPaddingFrame]':
../../net/third_party/quiche/src/quic/core/frames/quic_padding_frame.h:20:77:   required from here
../../net/third_party/quiche/src/quic/core/frames/quic_inlined_frame.h:20:28: warning: offsetof within non-standard-layout type 'quic::QuicPaddingFrame' is conditionally-supported [-Winvalid-offsetof]

I have already attempted to bump to a new chromium version, but for this the patches need more love and the compilation broke at another point.

I have also checked Chromium 80.0.3987.3 up to 81.0.3988.0. This required the following changes in order te start compilation. Sadly the errors in quic_crypto_stream.cc remain.

--- chromium-80.0.3970.5.ebuild 2019-12-07 19:18:06.088018221 +0100
+++ chromium-80.0.3987.3.ebuild 2019-12-08 11:31:33.619926645 +0100
@@ -252,6 +252,7 @@
                third_party/catapult/third_party/html5lib-python
                third_party/catapult/third_party/polymer
                third_party/catapult/third_party/six
+               third_party/catapult/third_party/flot
                third_party/catapult/tracing/third_party/d3
                third_party/catapult/tracing/third_party/gl-matrix
                third_party/catapult/tracing/third_party/jpeg-js
@@ -276,8 +277,8 @@
                third_party/dom_distiller_js
                third_party/emoji-segmenter
                third_party/flatbuffers
-               third_party/flot
                third_party/freetype
+               third_party/libgifcodec
                third_party/glslang
                third_party/google_input_tools
                third_party/google_input_tools/third_party/closure_library
@@ -345,7 +346,6 @@
                third_party/skia
                third_party/skia/include/third_party/skcms
                third_party/skia/include/third_party/vulkan
-               third_party/skia/third_party/gif
                third_party/skia/third_party/skcms
                third_party/skia/third_party/vulkan
                third_party/smhasher
--- enable-vaapi.patch.old      2019-12-08 00:20:26.836765752 +0100
+++ enable-vaapi.patch.new      2019-12-07 21:47:06.216999698 +0100
@@ -62,34 +62,6 @@
       SINGLE_DISABLE_VALUE_TYPE(switches::kDisableAcceleratedMjpegDecode)},
  #endif  // OS_CHROMEOS
      {"system-keyboard-lock", flag_descriptions::kSystemKeyboardLockName,
-Index: dev/chrome/browser/flag_descriptions.cc
-===================================================================
---- dev.orig/chrome/browser/flag_descriptions.cc
-+++ dev/chrome/browser/flag_descriptions.cc
-@@ -2789,9 +2789,7 @@ const char kMacSystemMediaPermissionsInf
- 
- #endif
- 
--// Chrome OS -------------------------------------------------------------------
--
--#if defined(OS_CHROMEOS)
-+#if defined(OS_LINUX) && !defined(OS_ANDROID)
- 
- const char kAcceleratedMjpegDecodeName[] =
-     "Hardware-accelerated mjpeg decode for captured frame";
-@@ -2799,6 +2797,12 @@ const char kAcceleratedMjpegDecodeDescri
-     "Enable hardware-accelerated mjpeg decode for captured frame where "
-     "available.";
- 
-+#endif
-+
-+// Chrome OS -------------------------------------------------------------------
-+
-+#if defined(OS_CHROMEOS)
-+
- const char kAppServiceAshName[] = "App Service Ash";
- const char kAppServiceAshDescription[] =
-     "Use the App Service to provide data to the Ash UI, such as the shelf and "
 Index: dev/chrome/browser/flag_descriptions.h
 ===================================================================
 --- dev.orig/chrome/browser/flag_descriptions.h

I've been working on a build for chromium-80.0.3983.2 when it was released

I got so far with the build but it failed with the attached errors
build.zip

I've not had time to look into it further

If you build the one in my overlay with clang it should build just fine

@FireBurn I think I am already a step further than that. I ended up with a linking error. I took the patches from the offical gentoo repository. Needed to modify your patches a bit. But I don't know if it does not like due a missing definition (which I fixed, but ebuild ... compile did not overcame it).

[622/622] x86_64-pc-linux-gnu-g++ -Wl,--version-script=../../build/linux/chrome.map -fPIC -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,-z,defs -Wl,--as-needed -rdynamic -pie -Wl,--disable-new-dtags -Wl,-O1 -Wl,--as-needed -o "./chrome" -Wl,--start-group @"./chrome.rsp"  -Wl,--end-group  -latomic -ldl -lpthread -lrt -lX11 -lX11-xcb -lxcb -lXcomposite -lXcursor -lXdamage -lXext -lXfixes -lXi -lXrender -lXtst -lgmodule-2.0 -lglib-2.0 -lgobject-2.0 -lgthread-2.0 -licui18n -licuuc -licudata -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lva -lfontconfig -ldbus-1 -lXss -lresolv -lgio-2.0 -lz -lpng16 -lwebpdemux -lwebpmux -lwebp -lfreetype -ljpeg -lexpat -lharfbuzz-subset -lharfbuzz -ldrm -lXrandr -lm -lopus -lavcodec -lavformat -lavutil -lopenh264 -lre2 -lpci -lasound -lsnappy -latk-1.0 -latk-bridge-2.0 -lpangocairo-1.0 -lpango-1.0 -lcairo -lxml2 -lminizip -latspi -lFLAC -lgtk-3 -lgdk-3 -lcairo-gobject -lgdk_pixbuf-2.0 -lxslt
FAILED: chrome
x86_64-pc-linux-gnu-g++ -Wl,--version-script=../../build/linux/chrome.map -fPIC -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,-z,defs -Wl,--as-needed -rdynamic -pie -Wl,--disable-new-dtags -Wl,-O1 -Wl,--as-needed -o "./chrome" -Wl,--start-group @"./chrome.rsp"  -Wl,--end-group  -latomic -ldl -lpthread -lrt -lX11 -lX11-xcb -lxcb -lXcomposite -lXcursor -lXdamage -lXext -lXfixes -lXi -lXrender -lXtst -lgmodule-2.0 -lglib-2.0 -lgobject-2.0 -lgthread-2.0 -licui18n -licuuc -licudata -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lva -lfontconfig -ldbus-1 -lXss -lresolv -lgio-2.0 -lz -lpng16 -lwebpdemux -lwebpmux -lwebp -lfreetype -ljpeg -lexpat -lharfbuzz-subset -lharfbuzz -ldrm -lXrandr -lm -lopus -lavcodec -lavformat -lavutil -lopenh264 -lre2 -lpci -lasound -lsnappy -latk-1.0 -latk-bridge-2.0 -lpangocairo-1.0 -lpango-1.0 -lcairo -lxml2 -lminizip -latspi -lFLAC -lgtk-3 -lgdk-3 -lcairo-gobject -lgdk_pixbuf-2.0 -lxslt
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: obj/chrome/browser/browser/about_flags.o:(.data.rel.ro+0x2d20): undefined reference to `flag_descriptions::kAcceleratedMjpegDecodeName'
/usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/../../../../x86_64-pc-linux-gnu/bin/ld: obj/chrome/browser/browser/about_flags.o:(.data.rel.ro+0x2d28): undefined reference to `flag_descriptions::kAcceleratedMjpegDecodeDescription'
collect2: error: ld returned 1 exit status

If you build the one in my overlay with clang it should build just fine

Thanks for this pro tip! Typing this from a GPU enabled browser on Vega :-)

I've been working on getting Chromium 80.0.3987.7 working but its failing too

https://bugs.chromium.org/p/chromium/issues/detail?id=1034318

Chromium.zip

That's what I'm currently using

That's 81.0.4000.3 in my Overlay, tested with Clang-10