On Sat Dec 23, 2023 at 03:54:11AM +0100, Rafael Sadowski wrote: > On Sat Dec 23, 2023 at 12:27:05AM +0100, Theo Buehler wrote: > > emulators/citra was broken with the update to boost 1.84. net/nheko > > broke with the llvm 16 update (in fact it broke with llvm 15 when kn > > updated mtxclient and nheko in February). Most recently, libquotient > > broke on aarch64. The symptom is always the same cryptic message: > > > > /usr/include/c++/v1/__bsd_locale_fallbacks.h:110:5: error: non-const lvalue > > reference to type '__builtin_va_list' cannot bind to a value of unrelated > > type 'va_list' (aka 'std::__va_list') > > va_start(__va, __format); > > ^~~~~~~~~~~~~~~~~~~~~~~~ > > /usr/include/stdarg.h:34:47: note: expanded from macro 'va_start' > > #define va_start(ap, last) __builtin_va_start((ap), last) > > > > http://build-failures.rhaalovely.net/aarch64/2023-12-20/x11/libquotient.log > > > > In all three ports, a line such as > > > > -Xclang -include-pch -Xclang > > /usr/ports/pobj/nheko-0.11.3/build-amd64/CMakeFiles/nheko.dir/cmake_pch.hxx.pch > > > > appears. And indeed, the diff below (which is a workaround at best) > > makes all three ports build. > > > > There are a few questions that should probably be answered: > > > > - why did citra break with the boost update? > > - is this a cmake bug or a clang bug? > > I don't think it's a cmake bug. IMO It's an pre compiled header issue. > > > > > But maybe it gives someone a clue what the right fix might be. > > > > Index: emulators/citra/Makefile > > =================================================================== > > RCS file: /cvs/ports/emulators/citra/Makefile,v > > diff -u -p -r1.29 Makefile > > --- emulators/citra/Makefile 19 Dec 2023 06:18:03 -0000 1.29 > > +++ emulators/citra/Makefile 22 Dec 2023 23:15:14 -0000 > > @@ -1,6 +1,3 @@ > > -# broken with boost 1.84 > > -BROKEN= cannot initialize '__va_list_tag *' with 'va_list' > > - > > # ships a dynarmic copy, and dynarmic only supports x86-64 and AArch64 > > ONLY_FOR_ARCHS = amd64 arm64 > > > > @@ -56,7 +53,8 @@ CONFIGURE_ARGS = -DENABLE_CUBEB=OFF \ > > -DUSE_SYSTEM_SDL2=ON \ > > -DENABLE_FFMPEG_AUDIO_DECODER=ON \ > > -DENABLE_FFMPEG_VIDEO_DUMPER=ON \ > > - -DCITRA_USE_PRECOMPILED_HEADERS=OFF > > This was not complete . There is a second option: > DYNARMIC_USE_PRECOMPILED_HEADERS. > > I think CMAKE_DISABLE_PRECOMPILE_HEADERS is the big hummer to disabled > all pre complied header even if there are hand-made options. > > https://cmake.org/cmake/help/latest/variable/CMAKE_DISABLE_PRECOMPILE_HEADERS.html > > The following diff compiles without issues: > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/emulators/citra/Makefile,v > diff -u -p -u -p -r1.29 Makefile > --- Makefile 19 Dec 2023 06:18:03 -0000 1.29 > +++ Makefile 23 Dec 2023 02:42:23 -0000 > @@ -1,6 +1,3 @@ > -# broken with boost 1.84 > -BROKEN= cannot initialize '__va_list_tag *' with 'va_list' > - > # ships a dynarmic copy, and dynarmic only supports x86-64 and AArch64 > ONLY_FOR_ARCHS = amd64 arm64 > > @@ -56,7 +53,9 @@ CONFIGURE_ARGS = -DENABLE_CUBEB=OFF \ > -DUSE_SYSTEM_SDL2=ON \ > -DENABLE_FFMPEG_AUDIO_DECODER=ON \ > -DENABLE_FFMPEG_VIDEO_DUMPER=ON \ > - -DCITRA_USE_PRECOMPILED_HEADERS=OFF > + -DCITRA_USE_PRECOMPILED_HEADERS=OFF \ > + -DDYNARMIC_USE_PRECOMPILED_HEADERS=OFF > + > MODCMAKE_LDFLAGS = -L${LOCALBASE}/lib > > WRKDIST = ${WRKDIR}/${DISTNAME} > > + -DCITRA_USE_PRECOMPILED_HEADERS=OFF \ > > + -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON > > MODCMAKE_LDFLAGS = -L${LOCALBASE}/lib > > > > WRKDIST = ${WRKDIR}/${DISTNAME} > > Index: net/nheko/Makefile > > =================================================================== > > RCS file: /cvs/ports/net/nheko/Makefile,v > > diff -u -p -r1.10 Makefile > > --- net/nheko/Makefile 3 Dec 2023 20:57:40 -0000 1.10 > > +++ net/nheko/Makefile 22 Dec 2023 22:51:02 -0000 > > @@ -1,9 +1,3 @@ > > -# broken with LLVM 16 > > -.include <bsd.port.arch.mk> > > -.if ${PROPERTIES:Mclang} > > -BROKEN= cannot initialize '__va_list_tag *' with 'va_list' > > -.endif > > - > > COMMENT = desktop client for Matrix using Qt and C++20 > > > > GH_ACCOUNT = Nheko-Reborn > > @@ -54,5 +48,6 @@ LIB_DEPENDS = databases/lmdb \ > > > > # -DCMAKE_DISABLE_FIND_PACKAGE_GIT=ON (or _Git or _git) do not work > > CONFIGURE_ARGS += -DGIT=OFF > > +CONFIGURE_ARGS += -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON > > > > .include <bsd.port.mk> > > Index: x11/libquotient/Makefile > > =================================================================== > > RCS file: /cvs/ports/x11/libquotient/Makefile,v > > diff -u -p -r1.6 Makefile > > --- x11/libquotient/Makefile 11 Oct 2023 18:40:14 -0000 1.6 > > +++ x11/libquotient/Makefile 22 Dec 2023 23:02:46 -0000 > > @@ -27,7 +27,8 @@ LIB_DEPENDS = devel/olm \ > > CONFIGURE_ARGS = -DBUILD_SHARED_LIBS=ON \ > > -DCMAKE_DISABLE_FIND_PACKAGE_Git=ON \ > > -DQuotient_ENABLE_E2EE=ON \ > > - -DQuotient_INSTALL_TESTS=OFF > > + -DQuotient_INSTALL_TESTS=OFF \ > > + -DCMAKE_DISABLE_PRECOMPILE_HEADERS=ON
Maybe GCC is happy. Again, I think it's a PCH issue ;) libQuotient-0.8.1.2/CMakeLists.txt: 310 # Don't use PCH w/GCC (https://bugzilla.redhat.com/show_bug.cgi?id=1721553#c34) 311 if (NOT CMAKE_CXX_COMPILER_ID STREQUAL GNU) 312 target_precompile_headers(${QUOTIENT_LIB_NAME} PRIVATE Quotient/converters.h) 313 endif () > > > > # XXX C++20 vs. libstd++ in quotest.cpp > > CONFIGURE_ARGS += -DBUILD_TESTING=OFF > > Which brings me to a more common questions. Does PCH make sense in the > ports? I don't think so! Does it make sense to enable the big (cmake) > hummer by default? > It is good to know that you should search for PCH in cmake files if the error message becomes really strange.
