Hello community, here is the log from the commit of package libqt4 for openSUSE:Factory checked in at 2017-03-09 01:28:05 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libqt4 (Old) and /work/SRC/openSUSE:Factory/.libqt4.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libqt4" Thu Mar 9 01:28:05 2017 rev:219 rq:456158 version:4.8.7 Changes: -------- --- /work/SRC/openSUSE:Factory/libqt4/libqt4-devel-doc.changes 2016-08-03 11:40:54.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libqt4.new/libqt4-devel-doc.changes 2017-03-09 01:28:06.407071361 +0100 @@ -1,0 +2,6 @@ +Fri Feb 10 21:02:26 UTC 2017 - [email protected] + +- Add fix-moc-parsing-with-glibc-2.25.patch to fix moc parsing + system headers from glibc 2.25 correctly. + +------------------------------------------------------------------- libqt4-sql-plugins.changes: same change libqt4.changes: same change New: ---- fix-moc-parsing-with-glibc-2.25.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libqt4-devel-doc.spec ++++++ --- /var/tmp/diff_new_pack.V9ffBX/_old 2017-03-09 01:28:16.237678983 +0100 +++ /var/tmp/diff_new_pack.V9ffBX/_new 2017-03-09 01:28:16.241678416 +0100 @@ -1,7 +1,7 @@ # # spec file for package libqt4-devel-doc # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -120,6 +120,8 @@ Patch167: disable-rc4-ciphers-bnc865241.diff # PATCH-FIX-OPENSUSE fix-gcc6-detection.diff -- Fix GCC6 detection Patch168: fix-gcc6-detection.diff +# PATCH-FIX-UPSTREAM fix-moc-parsing-with-glibc-2.25.patch -- Fixes moc parsing correctly glibc 2.25 system headers +Patch169: fix-moc-parsing-with-glibc-2.25.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %define common_options --opensource -fast -no-separate-debug-info -shared -xkb -openssl-linked -xrender -xcursor -dbus-linked -xfixes -xrandr -xinerama -sm -no-nas-sound -no-rpath -system-libjpeg -system-libpng -accessibility -cups -stl -nis -system-zlib -prefix /usr -L %{_libdir} -libdir %{_libdir} -docdir %_docdir/%{base_name} -examplesdir %{_libdir}/qt4/examples -demosdir %{_libdir}/qt4/demos -plugindir %plugindir -translationdir %{_datadir}/qt4/translations -iconv -sysconfdir /etc/settings -datadir %{_datadir}/qt4/ -no-pch -reduce-relocations -exceptions -system-libtiff -glib -optimized-qmake -no-webkit -no-xmlpatterns -system-sqlite -qt3support -no-sql-mysql -importdir %plugindir/imports -xsync -xinput -gtkstyle @@ -206,6 +208,7 @@ %patch166 -p1 %patch167 -p1 %patch168 -p1 +%patch169 -p1 # be sure not to use them rm -rf src/3rdparty/{libjpeg,freetype,libpng,zlib,libtiff,fonts} libqt4-sql-plugins.spec: same change libqt4.spec: same change ++++++ fix-moc-parsing-with-glibc-2.25.patch ++++++ Fixes moc parsing of (#__VA_ARGS__) expressions glibc 2.25 introduced code like the following in /usr/include/sys/sysmacros.h: #define __SYSMACROS_DM(symbol) __SYSMACROS_DM1 \ (In the GNU C Library, symbol is defined\n\ by <sys/sysmacros.h>. For historical compatibility, it is\n\ currently defined by <sys/types.h> as well, but we plan to\n\ remove this soon. To use #symbol, include <sys/sysmacros.h>\n\ directly. If you did not intend to use a system-defined macro\n\ #symbol, you should undefine it after including <sys/types.h>.) (where __SYSMACROS_DM1 is defined as: #define __SYSMACROS_DM1(...) __glibc_macro_warning (#__VA_ARGS__) ) when parsing that with moc, it gives the following parse error: /usr/include/glib-2.0/gobject/gtype.h:52: Parse error at "defined" This patch fixes this, so it ignores arguments passed to (#__VA_ARGS__) since they're supposed to be strings anyway. Index: qt-everywhere-opensource-src-4.8.7/src/tools/moc/preprocessor.cpp =================================================================== --- qt-everywhere-opensource-src-4.8.7.orig/src/tools/moc/preprocessor.cpp +++ qt-everywhere-opensource-src-4.8.7/src/tools/moc/preprocessor.cpp @@ -535,6 +535,21 @@ void Preprocessor::substituteUntilNewlin MacroName macro = symbol(); if (macros.contains(macro) && !safeset.contains(macro)) { substituteMacro(macro, substituted, safeset); + if (substituted.count()>4) + { + int i=substituted.count()-4; + if (substituted.at(i).lexem()=="(" + && substituted.at(i+1).lexem()=="#" + && substituted.at(i+2).lexem()=="__VA_ARGS__" + && substituted.at(i+3).lexem()==")") + { + // Let's ignore the following expression, since it'll considered a string, and so, it's better not to parse it. + if (test(PP_LPAREN)) { + while (!test(PP_RPAREN)) next(); + } + + } + } continue; } } else if (token == PP_DEFINED) {
