[smokegen] revert upstream commit causing smokekde ftbfs

Rex Dieter rdieter at fedoraproject.org
Sun Jun 10 13:59:17 UTC 2012


commit 4ca0dc9df2fd908c2f9b14d11df0bea64793b3c6
Author: Rex Dieter <rdieter at fedoraproject.org>
Date:   Sun Jun 10 09:02:12 2012 -0500

    revert upstream commit causing smokekde ftbfs

 smokegen-4.8.90-qflags.patch |   87 ++++++++++++++++++++++++++++++++++++++++++
 smokegen.spec                |   12 +++++-
 2 files changed, 97 insertions(+), 2 deletions(-)
---
diff --git a/smokegen-4.8.90-qflags.patch b/smokegen-4.8.90-qflags.patch
new file mode 100644
index 0000000..554e41e
--- /dev/null
+++ b/smokegen-4.8.90-qflags.patch
@@ -0,0 +1,87 @@
+From: Arno Rehn <arno at arnorehn.de>
+Date: Thu, 31 May 2012 18:43:41 +0000
+Subject: handle QFlags references as if they were normal uints.
+X-Git-Url: http://quickgit.kde.org/?p=smokegen.git&amp;a=commitdiff&amp;h=b295439071bca5dd29d9096cb8d372ade2f3c3be
+---
+handle QFlags references as if they were normal uints.
+---
+
+
+--- a/generators/smoke/helpers.cpp
++++ b/generators/smoke/helpers.cpp
+@@ -472,7 +472,7 @@ QChar Util::munge(const Type *type) {
+         // reference to array or hash or unknown
+         return '?';
+     } else if (type->isIntegral() || type->getEnum() || Options::scalarTypes.contains(type->name()) ||
+-                (Options::qtMode && !type->isRef() && type->pointerDepth() == 0 &&
++                (Options::qtMode && type->pointerDepth() == 0 &&
+                 (type->getClass() && type->getClass()->isTemplate() && type->getClass()->name() == "QFlags")))
+     {
+         // plain scalar
+@@ -516,7 +516,7 @@ QString Util::stackItemField(const Type*
+         return stackItemField(&resolved);
+     }
+ 
+-    if (Options::qtMode && !type->isRef() && type->pointerDepth() == 0 &&
++    if (Options::qtMode && type->pointerDepth() == 0 &&
+         type->getClass() && type->getClass()->isTemplate() && type->getClass()->name() == "QFlags")
+     {
+         return "s_uint";
+@@ -555,15 +555,14 @@ QString Util::assignmentString(const Typ
+ 
+     if (type->pointerDepth() > 0 || type->isFunctionPointer()) {
+         return "(void*)" + var;
++    } else if (Options::qtMode && type->getClass() && type->getClass()->isTemplate() && type->getClass()->name() == "QFlags") {
++        return "(uint)" + var;
+     } else if (type->isRef()) {
+         return "(void*)&" + var;
+     } else if (type->isIntegral() && !Options::voidpTypes.contains(type->name())) {
+         return var;
+     } else if (type->getEnum()) {
+         return var;
+-    } else if (Options::qtMode && type->getClass() && type->getClass()->isTemplate() && type->getClass()->name() == "QFlags")
+-    {
+-        return "(uint)" + var;
+     } else {
+         QString ret = "(void*)new " + type->toString();
+         ret += '(' + var + ')';
+
+--- a/generators/smoke/writeSmokeDataFile.cpp
++++ b/generators/smoke/writeSmokeDataFile.cpp
+@@ -118,7 +118,7 @@ QString SmokeDataFile::getTypeFlags(cons
+         flags += "|Smoke::t_voidp";
+     } else if (t->getClass()) {
+         if (t->getClass()->isTemplate()) {
+-            if (Options::qtMode && t->getClass()->name() == "QFlags" && !t->isRef() && t->pointerDepth() == 0) {
++            if (Options::qtMode && t->getClass()->name() == "QFlags" && t->pointerDepth() == 0) {
+                 flags += "|Smoke::t_uint";
+             } else {
+                 flags += "|Smoke::t_voidp";
+@@ -157,14 +157,21 @@ QString SmokeDataFile::getTypeFlags(cons
+         flags += "|Smoke::t_voidp";
+     }
+ 
+-    if (t->isRef())
+-        flags += "|Smoke::tf_ref";
+-    if (t->pointerDepth() > 0)
+-        flags += "|Smoke::tf_ptr";
+-    if (!t->isRef() && t->pointerDepth() == 0)
++    // special case QFlags references
++    if (Options::qtMode && t->pointerDepth() == 0 && t->getClass() && t->getClass()->isTemplate() && t->getClass()->name() == "QFlags") {
+         flags += "|Smoke::tf_stack";
++    } else {
++        if (t->isRef())
++            flags += "|Smoke::tf_ref";
++        if (t->pointerDepth() > 0)
++            flags += "|Smoke::tf_ptr";
++        if (!t->isRef() && t->pointerDepth() == 0)
++            flags += "|Smoke::tf_stack";
++    }
++
+     if (t->isConst())
+         flags += "|Smoke::tf_const";
++
+     flags.replace("0|", "");
+ 
+     return flags;
+
diff --git a/smokegen.spec b/smokegen.spec
index d642d80..018a1b8 100644
--- a/smokegen.spec
+++ b/smokegen.spec
@@ -1,6 +1,6 @@
 Name: smokegen
 Version: 4.8.90
-Release: 1%{?dist}
+Release: 2%{?dist}
 Summary: Smoke Generator
 
 License: LGPLv2 and GPLv2+
@@ -13,7 +13,10 @@ URL: https://projects.kde.org/projects/kde/kdebindings/smoke
 %endif
 Source0: ftp://ftp.kde.org/pub/kde/%{stable}/%{version}/src/%{name}-%{version}.tar.xz
 
-## upstreamable patches
+## upstream patches
+# revert http://quickgit.kde.org/index.php?p=smokegen.git&a=commit&h=b295439071bca5dd29d9096cb8d372ade2f3c3be
+# causes smokekde FTBFS
+Patch100: smokegen-4.8.90-qflags.patch
 
 BuildRequires: cmake
 BuildRequires: pkgconfig(QtCore) pkgconfig(QtXml) 
@@ -37,6 +40,8 @@ Requires: %{name}%{?_isa} = %{version}-%{release}
 %prep
 %setup -q
 
+%patch100 -p1 -R -b .qflags
+
 
 %build
 mkdir -p %{_target_platform}
@@ -71,6 +76,9 @@ make install/fast DESTDIR=%{buildroot} -C %{_target_platform}
 
 
 %changelog
+* Sun Jun 10 2012 Rex Dieter <rdieter at fedoraproject.org> 4.8.90-2
+- revert upstream commit causing smokekde ftbfs
+
 * Sat Jun 09 2012 Rex Dieter <rdieter at fedoraproject.org> - 4.8.90-1
 - 4.8.90
 


More information about the scm-commits mailing list