[Bug 274740] www/qt5-webengine: fix build with libc++ 17

From: <bugzilla-noreply_at_freebsd.org>
Date: Thu, 26 Oct 2023 16:30:09 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=274740

            Bug ID: 274740
           Summary: www/qt5-webengine: fix build with libc++ 17
           Product: Ports & Packages
           Version: Latest
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Some People
          Priority: ---
         Component: Individual Port(s)
          Assignee: kde@FreeBSD.org
          Reporter: dim@FreeBSD.org
          Assignee: kde@FreeBSD.org
             Flags: maintainer-feedback?(kde@FreeBSD.org)

Building www/qt5-webengine with libc++ 17 results in the following
compile errors:

  In file included from
../../../../kde-qtwebengine-5.15.15p0/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/trace_sorter.cc:17:
  In file included from /usr/include/c++/v1/algorithm:1803:
  In file included from /usr/include/c++/v1/__algorithm/nth_element.h:15:
  /usr/include/c++/v1/__algorithm/sort.h:577:14: error: no viable overloaded
'='
    577 |     *__begin = _Ops::__iter_move(__pivot_pos);
        |     ~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /usr/include/c++/v1/__algorithm/sort.h:802:20: note: in instantiation of
function template specialization
'std::__bitset_partition<std::_ClassicAlgPolicy,
perfetto::base::CircularQueue<perfetto::trace_processor::TimestampedTracePiece>::Iterator,
std::__less<void, void> &>' requested here
    802 |             ? std::__bitset_partition<_AlgPolicy,
_RandomAccessIterator, _Compare>(__first, __last, __comp)
        |                    ^
  /usr/include/c++/v1/__algorithm/sort.h:878:8: note: in instantiation of
function template specialization 'std::__introsort<std::_ClassicAlgPolicy,
std::__less<void, void> &,
perfetto::base::CircularQueue<perfetto::trace_processor::TimestampedTracePiece>::Iterator,
false>' requested here
    878 |   std::__introsort<_AlgPolicy,
        |        ^
  /usr/include/c++/v1/__algorithm/sort.h:946:10: note: in instantiation of
function template specialization 'std::__sort_dispatch<std::_ClassicAlgPolicy,
perfetto::base::CircularQueue<perfetto::trace_processor::TimestampedTracePiece>::Iterator,
std::__less<void, void>>' requested here
    946 |     std::__sort_dispatch<_AlgPolicy>(std::__unwrap_iter(__first),
std::__unwrap_iter(__last), __comp);
        |          ^
  /usr/include/c++/v1/__algorithm/sort.h:954:8: note: in instantiation of
function template specialization 'std::__sort_impl<std::_ClassicAlgPolicy,
perfetto::base::CircularQueue<perfetto::trace_processor::TimestampedTracePiece>::Iterator,
std::__less<void, void>>' requested here
    954 |   std::__sort_impl<_ClassicAlgPolicy>(std::move(__first),
std::move(__last), __comp);
        |        ^
  /usr/include/c++/v1/__algorithm/sort.h:960:8: note: in instantiation of
function template specialization
'std::sort<perfetto::base::CircularQueue<perfetto::trace_processor::TimestampedTracePiece>::Iterator,
std::__less<void, void>>' requested here
    960 |   std::sort(__first, __last, __less<>());
        |        ^
 
../../../../kde-qtwebengine-5.15.15p0/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/trace_sorter.cc:51:8:
note: in instantiation of function template specialization
'std::sort<perfetto::base::CircularQueue<perfetto::trace_processor::TimestampedTracePiece>::Iterator>'
requested here
     51 |   std::sort(sort_begin, events_.end());
        |        ^
 
../../../../kde-qtwebengine-5.15.15p0/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/timestamped_trace_piece.h:191:26:
note: candidate function not viable: 'this' argument has type 'const
perfetto::trace_processor::TimestampedTracePiece', but method is not marked
const
    191 |   TimestampedTracePiece& operator=(TimestampedTracePiece&& ttp) {
        |                          ^
 
../../../../kde-qtwebengine-5.15.15p0/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/timestamped_trace_piece.h:202:26:
note: candidate function not viable: 'this' argument has type 'const
perfetto::trace_processor::TimestampedTracePiece', but method is not marked
const
    202 |   TimestampedTracePiece& operator=(const TimestampedTracePiece&) =
delete;
        |                          ^

This is because perfetto's CircularQueue template is only half
const-correct. Upstream fixed this in:

https://github.com/google/perfetto/commit/b82a213bcf71dd8e68b53941375936c7905c0ff2

so apply that fix to qt5-webengine's older copy of perfetto.

-- 
You are receiving this mail because:
You are the assignee for the bug.