aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorge Manuel B. S. Vicetto (jmbsvicetto) <jmbsvicetto@gentoo.org>2010-10-04 01:54:55 +0000
committerJorge Manuel B. S. Vicetto (jmbsvicetto) <jmbsvicetto@gentoo.org>2010-10-04 01:54:55 +0000
commit064e8d1a2b53844151c597ba730597359e26222e (patch)
treef0fa0ec6093c22d38e5c3823c7d398c5c2f7a7dc /dev-python
parent[kde-base/pykde4-4.5.2] Added the fix for the mapped type build failure. (diff)
downloadkde-064e8d1a2b53844151c597ba730597359e26222e.tar.gz
kde-064e8d1a2b53844151c597ba730597359e26222e.tar.bz2
kde-064e8d1a2b53844151c597ba730597359e26222e.zip
Bumped PyQt4-4.7.7 to add a patch from kde ml to fix pykde4 building.
Diffstat (limited to 'dev-python')
-rw-r--r--dev-python/PyQt4/Manifest7
-rw-r--r--dev-python/PyQt4/PyQt4-4.7.7-r1.ebuild169
-rw-r--r--dev-python/PyQt4/files/PyQt4-4.6.1-configure-multilib.patch13
-rw-r--r--dev-python/PyQt4/files/PyQt4-4.7.2-configure.py.patch27
-rw-r--r--dev-python/PyQt4/files/PyQt4-4.7.3-qreal_float_support.patch254
-rw-r--r--dev-python/PyQt4/files/PyQt4-4.7.7-fix-scpk-and-flag-issue.diff40
-rw-r--r--dev-python/PyQt4/metadata.xml20
7 files changed, 530 insertions, 0 deletions
diff --git a/dev-python/PyQt4/Manifest b/dev-python/PyQt4/Manifest
new file mode 100644
index 0000000000..8c17989712
--- /dev/null
+++ b/dev-python/PyQt4/Manifest
@@ -0,0 +1,7 @@
+AUX PyQt4-4.6.1-configure-multilib.patch 883 RMD160 4ce96cdf4d53773c245544737c894c2494e9de29 SHA1 d0c9b214172b47537873e3fc1bd5fb34e815220c SHA256 6b33666a0b773122330d33a1b88ddd3b18d2d3b2c265e3fd4edc253f1bdfab1a
+AUX PyQt4-4.7.2-configure.py.patch 933 RMD160 1c9525855d47bcdbf0c88618294be44274ce653b SHA1 4b27ab9173692a9d74598dc7c7fc88c3531e09b5 SHA256 1a87c58ccb14441f77c7c764b6e6c40d1bdd64c5b35581f3deda54019a3461be
+AUX PyQt4-4.7.3-qreal_float_support.patch 6460 RMD160 f022dc75ccde5b923c689f82d169d02e8b066a19 SHA1 2e000133b482f5bb36a5795e375bfa3f60dd5c55 SHA256 8183d7a12c094d02eb4f1ac2b983690c39ee54182a0d28adba52348f705e9c16
+AUX PyQt4-4.7.7-fix-scpk-and-flag-issue.diff 1490 RMD160 0bfb92059ebf3518980ce5af432747ee01bf8540 SHA1 8e70a0a45757274ce92444054bd387abcb453022 SHA256 2f0b26dd0f725240378bd350303a97717f1a7c7bf37753ac5cc1d0717c013085
+DIST PyQt-x11-gpl-4.7.7.tar.gz 7831682 RMD160 1d4b6f6dce48df968cfc4d85d49178abbea10b1b SHA1 8d710ec274f855a5f47fcf7d5d17c16ad11af3f8 SHA256 7b10b330a55c8e20d9a65ee315e662407f4133c7ce287180bfef03ac76b698d1
+EBUILD PyQt4-4.7.7-r1.ebuild 4617 RMD160 670d68d121396c8e7a2e89fbe45ff23174837f5b SHA1 689bf167ec36c717d1e95b7dc8fbe10caf553b94 SHA256 c423fa0fec802f58ac9ca0e83be4ad0d97a8decfff9247373b7a5868249ac8b8
+MISC metadata.xml 846 RMD160 9ebdd502e44dac1e93f95e60936ad7871be6ed1c SHA1 2731e0ad5e11b9f0e4089cd9d9e2b342b6103c09 SHA256 6a481f4cc08dcb57f2b7bb0cc3d6944aa281fd3bc7a3aa586aa50372323b838c
diff --git a/dev-python/PyQt4/PyQt4-4.7.7-r1.ebuild b/dev-python/PyQt4/PyQt4-4.7.7-r1.ebuild
new file mode 100644
index 0000000000..bbd14978aa
--- /dev/null
+++ b/dev-python/PyQt4/PyQt4-4.7.7-r1.ebuild
@@ -0,0 +1,169 @@
+# Copyright 1999-2010 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/dev-python/PyQt4/PyQt4-4.7.7.ebuild,v 1.1 2010/09/21 12:14:58 hwoarang Exp $
+
+EAPI="3"
+PYTHON_DEPEND="*"
+PYTHON_EXPORT_PHASE_FUNCTIONS="1"
+SUPPORT_PYTHON_ABIS="1"
+
+inherit qt4-r2 python toolchain-funcs
+
+MY_P="PyQt-x11-gpl-${PV/_pre/-snapshot-}"
+QTVER="4.6.2" # minimal Qt version this is supposed to work with
+
+DESCRIPTION="A set of Python bindings for the Qt toolkit"
+HOMEPAGE="http://www.riverbankcomputing.co.uk/software/pyqt/intro/ http://pypi.python.org/pypi/PyQt"
+SRC_URI="http://www.riverbankcomputing.com/static/Downloads/${PN}/${MY_P}.tar.gz"
+
+SLOT="0"
+LICENSE="|| ( GPL-2 GPL-3 )"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux"
+IUSE="X assistant +dbus debug doc examples kde multimedia opengl phonon sql svg webkit xmlpatterns"
+
+DEPEND=">=dev-python/sip-4.11
+ >=x11-libs/qt-core-${QTVER}:4
+ >=x11-libs/qt-script-${QTVER}:4
+ >=x11-libs/qt-test-${QTVER}:4
+ X? ( >=x11-libs/qt-gui-${QTVER}:4[dbus?] )
+ assistant? ( >=x11-libs/qt-assistant-${QTVER}:4 )
+ dbus? (
+ >=dev-python/dbus-python-0.80
+ >=x11-libs/qt-dbus-${QTVER}:4
+ )
+ multimedia? ( >=x11-libs/qt-multimedia-${QTVER}:4 )
+ opengl? ( >=x11-libs/qt-opengl-${QTVER}:4 )
+ phonon? (
+ !kde? ( || ( >=x11-libs/qt-phonon-${QTVER}:4 media-sound/phonon ) )
+ kde? ( media-sound/phonon )
+ )
+ sql? ( >=x11-libs/qt-sql-${QTVER}:4 )
+ svg? ( >=x11-libs/qt-svg-${QTVER}:4 )
+ webkit? ( >=x11-libs/qt-webkit-${QTVER}:4 )
+ xmlpatterns? ( >=x11-libs/qt-xmlpatterns-${QTVER}:4 )"
+RDEPEND="${DEPEND}"
+
+S=${WORKDIR}/${MY_P}
+
+PATCHES=(
+ "${FILESDIR}/${PN}-4.6.1-configure-multilib.patch"
+ "${FILESDIR}/${PN}-4.7.2-configure.py.patch"
+ "${FILESDIR}/${P}-fix-scpk-and-flag-issue.diff"
+)
+
+src_prepare() {
+ if ! use dbus; then
+ sed -i -e 's,^\([[:blank:]]\+\)check_dbus(),\1pass,' \
+ "${S}"/configure.py || die
+ fi
+
+ # Patch to support qreal for arm architecture
+ # wrt bug #322349
+ use arm && epatch "${FILESDIR}/${PN}-4.7.3-qreal_float_support.patch"
+
+ qt4-r2_src_prepare
+
+ # Use proper include dir
+ sed -e "s|/usr/include|${EPREFIX}/usr/include|g" \
+ -i configure.py
+
+ python_copy_sources
+
+ preparation() {
+ if [[ "$(python_get_version --major)" == "3" ]]; then
+ rm -fr pyuic/uic/port_v2
+ else
+ rm -fr pyuic/uic/port_v3
+ fi
+ }
+ python_execute_function -s preparation
+}
+
+pyqt4_use_enable() {
+ use $1 && echo "--enable=${2:-$1}"
+}
+
+src_configure() {
+ configuration() {
+ local myconf="$(PYTHON) configure.py
+ --confirm-license
+ --bindir="${EPREFIX}"/usr/bin
+ --destdir="${EPREFIX}"$(python_get_sitedir)
+ --sipdir="${EPREFIX}"/usr/share/sip
+ --qsci-api
+ $(use debug && echo '--debug')
+ --enable=QtCore
+ --enable=QtNetwork
+ --enable=QtScript
+ --enable=QtTest
+ --enable=QtXml
+ $(pyqt4_use_enable X QtGui)
+ $(pyqt4_use_enable X QtDesigner)
+ $(pyqt4_use_enable X QtScriptTools)
+ $(pyqt4_use_enable assistant QtAssistant)
+ $(pyqt4_use_enable assistant QtHelp)
+ $(pyqt4_use_enable multimedia QtMultimedia)
+ $(pyqt4_use_enable opengl QtOpenGL)
+ $(pyqt4_use_enable phonon)
+ $(pyqt4_use_enable sql QtSql)
+ $(pyqt4_use_enable svg QtSvg)
+ $(pyqt4_use_enable webkit QtWebKit)
+ $(pyqt4_use_enable xmlpatterns QtXmlPatterns)
+ CC=$(tc-getCC) CXX=$(tc-getCXX)
+ LINK=$(tc-getCXX) LINK_SHLIB=$(tc-getCXX)
+ CFLAGS='${CFLAGS}' CXXFLAGS='${CXXFLAGS}' LFLAGS='${LDFLAGS}'"
+ echo ${myconf}
+ eval ${myconf} || return 1
+
+ for mod in QtCore $(use X && echo 'QtDesigner QtGui'); do
+ # Run eqmake4 inside the qpy subdirs to prevent
+ # stripping and many other QA issues
+ pushd qpy/${mod} > /dev/null || die
+ eqmake4 $(ls w_qpy*.pro)
+ popd > /dev/null || die
+
+ # Fix insecure runpaths
+ sed -i -e "/^LFLAGS/s:-Wl,-rpath,${BUILDDIR}/qpy/${mod}::" \
+ ${mod}/Makefile || die "failed to fix rpath issues"
+ done
+
+ # Fix pre-stripping of libpythonplugin.so
+ if use X; then
+ cd "${BUILDDIR}"/designer
+ eqmake4 python.pro
+ fi
+ }
+ python_execute_function -s configuration
+}
+
+src_compile() {
+ python_src_compile
+}
+
+src_install() {
+ installation() {
+ # INSTALL_ROOT is needed for the QtDesigner module,
+ # the other Makefiles use DESTDIR.
+ emake DESTDIR="${D}" INSTALL_ROOT="${D}" install
+ }
+ python_execute_function -s installation
+
+ dodoc doc/pyqt4ref.txt NEWS THANKS || die
+
+ if use doc; then
+ dohtml -r doc/* || die
+ fi
+
+ if use examples; then
+ insinto /usr/share/doc/${PF}
+ doins -r examples || die
+ fi
+}
+
+pkg_postinst() {
+ python_mod_optimize PyQt4
+}
+
+pkg_postrm() {
+ python_mod_cleanup PyQt4
+}
diff --git a/dev-python/PyQt4/files/PyQt4-4.6.1-configure-multilib.patch b/dev-python/PyQt4/files/PyQt4-4.6.1-configure-multilib.patch
new file mode 100644
index 0000000000..c187dcd4d1
--- /dev/null
+++ b/dev-python/PyQt4/files/PyQt4-4.6.1-configure-multilib.patch
@@ -0,0 +1,13 @@
+--- PyQt-x11-gpl-4.6.1~orig/configure.py 2009-11-04 22:28:05.000000000 +0100
++++ PyQt-x11-gpl-4.6.1/configure.py 2009-11-04 23:10:01.000000000 +0100
+@@ -854,8 +854,8 @@
+ # version.
+ link = "-framework Python"
+ elif ("--enable-shared" in ducfg.get("CONFIG_ARGS", "") and
+- glob.glob("%s/lib/libpython%d.%d*" % (ducfg["exec_prefix"], py_major, py_minor))):
+- lib_dir_flag = quote("-L%s/lib" % ducfg["exec_prefix"])
++ glob.glob("%s/libpython%d.%d*" % (ducfg["LIBDIR"], py_major, py_minor))):
++ lib_dir_flag = quote("-L%s" % ducfg["LIBDIR"])
+ link = "%s -lpython%d.%d" % (lib_dir_flag, py_major, py_minor)
+ else:
+ sipconfig.inform("Qt Designer plugin disabled because Python library is static")
diff --git a/dev-python/PyQt4/files/PyQt4-4.7.2-configure.py.patch b/dev-python/PyQt4/files/PyQt4-4.7.2-configure.py.patch
new file mode 100644
index 0000000000..4f3b251de0
--- /dev/null
+++ b/dev-python/PyQt4/files/PyQt4-4.7.2-configure.py.patch
@@ -0,0 +1,27 @@
+--- PyQt-x11-gpl-4.7.2/configure.py.orig 2010-03-18 00:59:51.000000000 +0100
++++ PyQt-x11-gpl-4.7.2/configure.py 2010-03-18 01:08:46.000000000 +0100
+@@ -478,7 +478,7 @@
+ generate_code("QtXmlPatterns")
+
+ if "phonon" in pyqt_modules:
+- generate_code("phonon")
++ generate_code("phonon", extra_include_dirs=["/usr/include/phonon"])
+
+ if "QtAssistant" in pyqt_modules:
+ generate_code("QtAssistant")
+@@ -797,6 +797,7 @@
+ install_dir=pydbusmoddir,
+ qt=["QtCore"],
+ debug=opts.debug,
++ strip=0,
+ universal=sipcfg.universal,
+ arch=sipcfg.arch
+ )
+@@ -1611,6 +1612,7 @@
+ warnings=1,
+ static=opts.static,
+ debug=opts.debug,
++ strip=0,
+ universal=sipcfg.universal,
+ arch=sipcfg.arch,
+ prot_is_public=opts.prot_is_public
diff --git a/dev-python/PyQt4/files/PyQt4-4.7.3-qreal_float_support.patch b/dev-python/PyQt4/files/PyQt4-4.7.3-qreal_float_support.patch
new file mode 100644
index 0000000000..958fe56cb0
--- /dev/null
+++ b/dev-python/PyQt4/files/PyQt4-4.7.3-qreal_float_support.patch
@@ -0,0 +1,254 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## 03_qreal_float_support.dpatch by Michael Casadevall <sonicmctails@gmail.com>
+##
+## DP: Corrects a configure test, and adds explicate double handling
+## to qlist.sip on architectures where qreal != double
+
+@DPATCH@
+Index: python-qt4-4.7.2/configure.py
+===================================================================
+--- python-qt4-4.7.2.orig/configure.py 2010-03-17 19:29:19.000000000 +0100
++++ python-qt4-4.7.2/configure.py 2010-03-25 23:53:55.468631945 +0100
+@@ -1915,8 +1915,9 @@
+ out << "PyQt_NoOpenGLES\\n";
+ #endif
+
+- if (sizeof (qreal) != sizeof (double))
++#if defined(QT_NO_FPU) || defined(QT_ARCH_ARM) || defined(QT_ARCH_WINDOWSCE)
+ out << "PyQt_qreal_double\\n";
++#endif
+
+ return 0;
+ }
+Index: python-qt4-4.7.2/sip/QtCore/qlist.sip
+===================================================================
+--- python-qt4-4.7.2.orig/sip/QtCore/qlist.sip 2010-03-17 19:29:26.000000000 +0100
++++ python-qt4-4.7.2/sip/QtCore/qlist.sip 2010-03-25 23:53:55.468631945 +0100
+@@ -749,3 +749,227 @@
+ return sipGetState(sipTransferObj);
+ %End
+ };
++
++// If we're on an architecture where qreal != double, then we need to also
++// explicately handle doubles. On architectures where qreal == double, they
++// will automaticially be cast upwards
++
++%If (!PyQt_qreal_double)
++
++%If (Qt_4_3_0 -)
++// QList<QPair<double, double> > is implemented as a Python list of 2-element tuples.
++%MappedType QList<QPair<double, double> >
++{
++%TypeHeaderCode
++#include <qlist.h>
++#include <qpair.h>
++%End
++
++%ConvertFromTypeCode
++ // Create the list.
++ PyObject *l;
++
++ if ((l = PyList_New(sipCpp->size())) == NULL)
++ return NULL;
++
++ // Set the list elements.
++ for (int i = 0; i < sipCpp->size(); ++i)
++ {
++ const QPair<double, double> &p = sipCpp->at(i);
++ PyObject *pobj;
++
++ if ((pobj = Py_BuildValue((char *)"dd", p.first, p.second)) == NULL)
++ {
++ Py_DECREF(l);
++
++ return NULL;
++ }
++
++ PyList_SET_ITEM(l, i, pobj);
++ }
++
++ return l;
++%End
++
++%ConvertToTypeCode
++ SIP_SSIZE_T len;
++
++ // Check the type if that is all that is required.
++ if (sipIsErr == NULL)
++ {
++ if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0)
++ return 0;
++
++ for (SIP_SSIZE_T i = 0; i < len; ++i)
++ {
++ PyObject *tup = PySequence_ITEM(sipPy, i);
++
++ if (!PySequence_Check(tup) || PySequence_Size(tup) != 2)
++ return 0;
++ }
++
++ return 1;
++ }
++
++ QList<QPair<double, double> > *ql = new QList<QPair<double, double> >;
++ len = PySequence_Size(sipPy);
++
++ for (SIP_SSIZE_T i = 0; i < len; ++i)
++ {
++ PyObject *tup = PySequence_ITEM(sipPy, i);
++
++ double first = PyFloat_AsDouble(PySequence_ITEM(tup, 0));
++ double second = PyFloat_AsDouble(PySequence_ITEM(tup, 1));
++
++ ql->append(QPair<double, double>(first, second));
++ }
++
++ *sipCppPtr = ql;
++
++ return sipGetState(sipTransferObj);
++%End
++};
++%End
++%If (Qt_4_3_0 -)
++// QList<QPair<double, TYPE> > is implemented as a Python list of 2-element tuples.
++template<double, TYPE>
++%MappedType QList<QPair<double, TYPE> >
++{
++%TypeHeaderCode
++#include <qlist.h>
++#include <qpair.h>
++%End
++
++%ConvertFromTypeCode
++ // Create the list.
++ PyObject *l;
++
++ if ((l = PyList_New(sipCpp->size())) == NULL)
++ return NULL;
++
++ // Set the list elements.
++ for (int i = 0; i < sipCpp->size(); ++i)
++ {
++ const QPair<double, TYPE> &p = sipCpp->at(i);
++ TYPE *t = new TYPE(p.second);
++ PyObject *pobj;
++
++ if ((pobj = sipBuildResult(NULL, "(dB)", p.first, t, sipClass_TYPE, sipTransferObj)) == NULL)
++ {
++ Py_DECREF(l);
++ delete t;
++
++ return NULL;
++ }
++
++ PyList_SET_ITEM(l, i, pobj);
++ }
++
++ return l;
++%End
++
++%ConvertToTypeCode
++ SIP_SSIZE_T len;
++
++ // Check the type if that is all that is required.
++ if (sipIsErr == NULL)
++ {
++ if (!PySequence_Check(sipPy) || (len = PySequence_Size(sipPy)) < 0)
++ return 0;
++
++ for (SIP_SSIZE_T i = 0; i < len; ++i)
++ {
++ PyObject *tup = PySequence_ITEM(sipPy, i);
++
++ if (!PySequence_Check(tup) || PySequence_Size(tup) != 2)
++ return 0;
++
++ if (!sipCanConvertToInstance(PySequence_ITEM(tup, 1), sipClass_TYPE, SIP_NOT_NONE))
++ return 0;
++ }
++
++ return 1;
++ }
++
++ QList<QPair<double, TYPE> > *ql = new QList<QPair<double, TYPE> >;
++ len = PySequence_Size(sipPy);
++
++ for (SIP_SSIZE_T i = 0; i < len; ++i)
++ {
++ PyObject *tup = PySequence_ITEM(sipPy, i);
++ double d;
++ int state;
++
++ d = PyFloat_AsDouble(PySequence_ITEM(tup, 0));
++ TYPE *t = reinterpret_cast<TYPE *>(sipConvertToInstance(PySequence_ITEM(tup, 1), sipClass_TYPE, sipTransferObj, SIP_NOT_NONE, &state, sipIsErr));
++
++ if (*sipIsErr)
++ {
++ sipReleaseInstance(t, sipClass_TYPE, state);
++
++ delete ql;
++ return 0;
++ }
++
++ ql->append(QPair<double, TYPE>(d, *t));
++
++ sipReleaseInstance(t, sipClass_TYPE, state);
++ }
++
++ *sipCppPtr = ql;
++
++ return sipGetState(sipTransferObj);
++%End
++};
++%End
++
++// QList<double> is implemented as a Python list of doubles.
++%MappedType QList<double>
++{
++%TypeHeaderCode
++#include <qlist.h>
++%End
++
++%ConvertFromTypeCode
++ // Create the list.
++ PyObject *l;
++
++ if ((l = PyList_New(sipCpp->size())) == NULL)
++ return NULL;
++
++ // Set the list elements.
++ for (int i = 0; i < sipCpp->size(); ++i)
++ {
++ PyObject *pobj;
++
++ if ((pobj = PyFloat_FromDouble(sipCpp->value(i))) == NULL)
++ {
++ Py_DECREF(l);
++
++ return NULL;
++ }
++
++ PyList_SET_ITEM(l, i, pobj);
++ }
++
++ return l;
++%End
++
++%ConvertToTypeCode
++ // Check the type if that is all that is required.
++ if (sipIsErr == NULL)
++ return (PySequence_Check(sipPy) && PySequence_Size(sipPy) >= 0);
++
++ QList<double> *ql = new QList<double>;
++ SIP_SSIZE_T len = PySequence_Size(sipPy);
++
++ for (SIP_SSIZE_T i = 0; i < len; ++i)
++ ql->append(PyFloat_AsDouble(PySequence_ITEM(sipPy, i)));
++
++ *sipCppPtr = ql;
++
++ return sipGetState(sipTransferObj);
++%End
++};
++
++%End
diff --git a/dev-python/PyQt4/files/PyQt4-4.7.7-fix-scpk-and-flag-issue.diff b/dev-python/PyQt4/files/PyQt4-4.7.7-fix-scpk-and-flag-issue.diff
new file mode 100644
index 0000000000..38083e76e5
--- /dev/null
+++ b/dev-python/PyQt4/files/PyQt4-4.7.7-fix-scpk-and-flag-issue.diff
@@ -0,0 +1,40 @@
+Index: PyQt-x11-gpl-4.7.7/pyuic/uic/Loader/loader.py
+===================================================================
+--- PyQt-x11-gpl-4.7.7.orig/pyuic/uic/Loader/loader.py
++++ PyQt-x11-gpl-4.7.7/pyuic/uic/Loader/loader.py
+@@ -1,3 +1,5 @@
++import os.path
++
+ from PyQt4 import QtGui, QtCore
+ from PyQt4.uic.uiparser import UIParser
+ from PyQt4.uic.Loader.qobjectcreator import LoaderCreatorPolicy
+@@ -19,6 +21,7 @@ class DynamicUILoader(UIParser):
+ def loadUi(self, filename, toplevelInst=None):
+ self.toplevelInst = toplevelInst
+
+- # By using QFileInfo.path() rather than os.path.dirname() we allow
+- # QString file names.
+- return self.parse(filename, QtCore.QFileInfo(filename).path())
++ # Allow the filename to be a QString.
++ filename = str(filename)
++
++ return self.parse(filename, os.path.dirname(filename))
+Index: PyQt-x11-gpl-4.7.7/sip/QtCore/qglobal.sip
+===================================================================
+--- PyQt-x11-gpl-4.7.7.orig/sip/QtCore/qglobal.sip
++++ PyQt-x11-gpl-4.7.7/sip/QtCore/qglobal.sip
+@@ -312,12 +312,12 @@ public:
+ // Qt.Alignment class.
+ QFlags operator|(int f);
+ %MethodCode
+- sipRes = new QFlags(*a0 | (ENUM(a1)));
++ sipRes = new QFlags(*a0 | a1);
+ %End
+
+ QFlags operator^(int f);
+ %MethodCode
+- sipRes = new QFlags(*a0 ^ (ENUM(a1)));
++ sipRes = new QFlags(*a0 ^ a1);
+ %End
+
+ // These are necessary to prevent Python comparing object IDs.
diff --git a/dev-python/PyQt4/metadata.xml b/dev-python/PyQt4/metadata.xml
new file mode 100644
index 0000000000..f70b8e22bf
--- /dev/null
+++ b/dev-python/PyQt4/metadata.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>python</herd>
+ <herd>qt</herd>
+ <use>
+ <flag name='X'>Build the QtGui and QtDesigner modules</flag>
+ <flag name='assistant'>Build the QtHelp and QtAssistant modules</flag>
+ <flag name='kde'>
+ Select <pkg>media-sound/phonon</pkg> as phonon variant needed for kde
+ </flag>
+ <flag name='multimedia'>Build the QtMultimedia module</flag>
+ <flag name='opengl'>Build the QtOpenGL module</flag>
+ <flag name='phonon'>Build the phonon module</flag>
+ <flag name='sql'>Build the QtSql module</flag>
+ <flag name='svg'>Build the QtSvg module</flag>
+ <flag name='webkit'>Build the QtWebKit module</flag>
+ <flag name='xmlpatterns'>Build the QtXmlPatterns module</flag>
+ </use>
+</pkgmetadata>