[arch-commits] Commit in pyqt/trunk (PKGBUILD fix-pyuic4.patch)

Andrea Scarpino andrea at archlinux.org
Tue Jul 17 18:10:36 UTC 2012


    Date: Tuesday, July 17, 2012 @ 14:10:36
  Author: andrea
Revision: 163678

Fix regression (FS#30728)

Added:
  pyqt/trunk/fix-pyuic4.patch
Modified:
  pyqt/trunk/PKGBUILD

------------------+
 PKGBUILD         |   14 +++++---
 fix-pyuic4.patch |   91 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 101 insertions(+), 4 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2012-07-17 18:01:27 UTC (rev 163677)
+++ PKGBUILD	2012-07-17 18:10:36 UTC (rev 163678)
@@ -6,17 +6,23 @@
 pkgbase=pyqt
 pkgname=('pyqt-common' 'pyqt' 'python2-pyqt')
 pkgver=4.9.4
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 url="http://riverbankcomputing.co.uk/software/pyqt/intro"
 license=('GPL')
 makedepends=('qt' 'python-sip' 'python-dbus' 'python2-sip' 'phonon'
              'python-opengl' 'qt-assistant-compat' 'qtwebkit' 'python2-dbus')
-             source=("http://riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-${pkgver}.tar.gz")
-md5sums=('a0b6a820633366365af5124ddbd059c7')
+source=("http://riverbankcomputing.co.uk/static/Downloads/PyQt4/PyQt-x11-gpl-${pkgver}.tar.gz"
+        'fix-pyuic4.patch')
+md5sums=('a0b6a820633366365af5124ddbd059c7'
+         '097651aea0bafded5abdfd6d62afd2ad')
 
 build() {
-  cd "${srcdir}"
+  # FS#30728
+  cd "${srcdir}"/PyQt-x11-gpl-${pkgver}
+  patch -p1 -i "${srcdir}"/fix-pyuic4.patch
+  cd ..
+  
   cp -r PyQt-x11-gpl-${pkgver} Py2Qt-x11-gpl-${pkgver}
 
   cd "${srcdir}/PyQt-x11-gpl-${pkgver}"

Added: fix-pyuic4.patch
===================================================================
--- fix-pyuic4.patch	                        (rev 0)
+++ fix-pyuic4.patch	2012-07-17 18:10:36 UTC (rev 163678)
@@ -0,0 +1,91 @@
+# HG changeset patch
+# User Phil Thompson <phil at riverbankcomputing.com>
+# Date 2012-07-13 13:39:28 +0100
+# Node ID 29b668ada14c1428a3bbfe8f0324c6626bd5ac9a
+# Parent  fd0f3da9d79ca9858d10a20c15fb85456cb832d7
+Fixed a regression in pyuic's handling of custom widgets.
+
+diff --git a/pyuic/uic/Compiler/qobjectcreator.py b/pyuic/uic/Compiler/qobjectcreator.py
+--- a/pyuic/uic/Compiler/qobjectcreator.py
++++ b/pyuic/uic/Compiler/qobjectcreator.py
+@@ -1,6 +1,6 @@
+ #############################################################################
+ ##
+-## Copyright (C) 2011 Riverbank Computing Limited.
++## Copyright (C) 2012 Riverbank Computing Limited.
+ ## Copyright (C) 2006 Thorsten Marek.
+ ## All right reserved.
+ ##
+@@ -100,7 +100,6 @@
+         assert widgetClass not in self._widgets 
+         self._widgets[widgetClass] = (baseClass, module)
+ 
+-
+     def _resolveBaseclass(self, baseClass):
+         try:
+             for x in range(0, 10):
+@@ -114,19 +113,17 @@
+         except KeyError:
+             raise ValueError("unknown baseclass %s" % baseClass)
+         
+-
+     def search(self, cls):
+         try:
+-            self._usedWidgets.add(cls)
+             baseClass = self._resolveBaseclass(self._widgets[cls][0])
+             DEBUG("resolved baseclass of %s: %s" % (cls, baseClass))
+-            
+-            return type(cls, (baseClass,),
+-                        {"module" : ""})
+-        
+         except KeyError:
+             return None
+ 
++        self._usedWidgets.add(cls)
++
++        return type(cls, (baseClass, ), {"module" : ""})
++
+     def _writeImportCode(self):
+         imports = {}
+         for widget in self._usedWidgets:
+diff --git a/pyuic/uic/objcreator.py b/pyuic/uic/objcreator.py
+--- a/pyuic/uic/objcreator.py
++++ b/pyuic/uic/objcreator.py
+@@ -102,19 +102,26 @@
+         self._modules.append(self._customWidgets)
+ 
+     def createQObject(self, classname, *args, **kwargs):
+-        # Handle scoped names, typically static factory methods.
+-        parts = classname.split('.')
+-        factory = self.findQObjectType(parts[0])
++        # Handle regular and custom widgets.
++        factory = self.findQObjectType(classname)
+ 
+-        if factory is not None:
+-            for part in parts[1:]:
+-                factory = getattr(factory, part, None)
+-                if factory is None:
+-                    break
+-            else:
+-                return self._cpolicy.instantiate(factory, *args, **kwargs)
++        if factory is None:
++            # Handle scoped names, typically static factory methods.
++            parts = classname.split('.')
+ 
+-        raise NoSuchWidgetError(classname)
++            if len(parts) > 1:
++                factory = self.findQObjectType(parts[0])
++
++                if factory is not None:
++                    for part in parts[1:]:
++                        factory = getattr(factory, part, None)
++                        if factory is None:
++                            break
++
++            if factory is None:
++                raise NoSuchWidgetError(classname)
++
++        return self._cpolicy.instantiate(factory, *args, **kwargs)
+ 
+     def invoke(self, rname, method, args=()):
+         return self._cpolicy.invoke(rname, method, args)




More information about the arch-commits mailing list