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) {


Reply via email to