On Sun Nov 12, 2023 at 10:28:42AM +0000, Klemens Nanni wrote:
> On Sun, Nov 12, 2023 at 11:16:19AM +0100, Rafael Sadowski wrote:
> > The following patches is necessary to build tdesktop with Qt 6.6.
> > Otherwise we end with the following issue like FreeBSD:
> 
> This is not specific to tdesktop, but it seems to be the first (only?)
> port using new C++, moc, CMake and Qt >= 6.6 (your WIP update).
> 

Yes I think so. I built all the other Qt6 consumers.

> > 
> > usr/include/c++/v1/concept:318:1: error: Parse error at "::"
> > 
> > Patch form FreeBSD:
> > https://cgit.freebsd.org/ports/commit/?id=5244b8425c414f0bca521df362eb62bb334640b3
> 
> Thanks for tracking this down, but I don't understand (yet) what's going on.

Without diving deep, which I understand, moc has issues when it comes to C++20.

> 
> > 
> > OK?
> > 
> > diff --git a/devel/cmake/Makefile b/devel/cmake/Makefile
> > index d87c0496312..87118d8541b 100644
> > --- a/devel/cmake/Makefile
> > +++ b/devel/cmake/Makefile
> > @@ -6,6 +6,7 @@ VER =               3.27.7
> >  EPOCH =            0
> >  DISTNAME = cmake-${VER}
> >  CATEGORIES =       devel
> > +REVISION = 0
> >  
> >  HOMEPAGE = https://www.cmake.org/
> >  
> > diff --git a/devel/cmake/patches/patch-Source_cmQtAutoGenInitializer_cxx 
> > b/devel/cmake/patches/patch-Source_cmQtAutoGenInitializer_cxx
> > new file mode 100644
> > index 00000000000..e4bcfa8e752
> > --- /dev/null
> > +++ b/devel/cmake/patches/patch-Source_cmQtAutoGenInitializer_cxx
> > @@ -0,0 +1,26 @@
> > +CMake >= 3.27 exports the CXX std to moc. This is a workaround for
> > +a moc parsing bug that happens parsing headers from libc++ < 14 when
> > +the CXX std > 17.
> > +
> > +usr/include/c++/v1/concept:318:1: error: Parse error at "::"
> > +
> > +Moc should theoretically be able to parse this. [1] Not exactly sure
> > +why it's failing. Upstream bug report [2]
> > +
> > +[1] 
> > https://code.qt.io/cgit/qt/qtbase.git/tree/src/tools/moc/moc.cpp?h=6.6.0#n631
> > +[2] https://bugreports.qt.io/browse/QTBUG-117765
> > +
> > +Index: Source/cmQtAutoGenInitializer.cxx
> > +--- Source/cmQtAutoGenInitializer.cxx.orig
> > ++++ Source/cmQtAutoGenInitializer.cxx
> > +@@ -1797,6 +1797,10 @@ bool cmQtAutoGenInitializer::SetupWriteAutogenInfo()
> > +       if (this->Moc.PredefsCmd.size() >= 3) {
> > +         this->Moc.PredefsCmd.insert(this->Moc.PredefsCmd.begin() + 1,
> > +                                     CompileOptionValue);
> > ++#if (defined(__FreeBSD__) && __FreeBSD_version < 1302000) || 
> > defined(__OpenBSD__)
> > ++        this->Moc.PredefsCmd.insert(this->Moc.PredefsCmd.begin() + 1,
> > ++                                    "-D_LIBCPP_HAS_NO_CONCEPTS");
> > ++#endif
> 
> Does just CPPFLAGS += -D_LIBCPP_HAS_NO_CONCEPTS in net/tdesktop work?
> 
> Could there be fallout from disabling concepts in moc builds?
> 
> > +       }
> > +     }
> > +     info.SetArray("MOC_PREDEFS_CMD", this->Moc.PredefsCmd);
> > 
> 

Reply via email to