From 0569b8570eb3acd5388438ca392b4b820dfd7f70 Mon Sep 17 00:00:00 2001 From: Davide Pesavento Date: Sun, 10 Jul 2016 17:05:02 +0200 Subject: [PATCH] dev-python/PyQt4: introduce USE=compat to install deprecated pyqtconfig A few PyQt4 revdeps still require the deprecated pyqtconfig module at build time. USE=compat re-enables the installation of pyqtconfig, so that those packages continue to build against newer versions of PyQt4. Gentoo-Bug: 526524 Gentoo-Bug: 527572 Gentoo-Bug: 536948 Package-Manager: portage-2.3.0 --- dev-python/PyQt4/PyQt4-4.11.4-r1.ebuild | 192 ++++++++++++++++++ ...ild => PyQt4-4.12_pre1606101416-r1.ebuild} | 54 ++++- dev-python/PyQt4/metadata.xml | 1 + 3 files changed, 239 insertions(+), 8 deletions(-) create mode 100644 dev-python/PyQt4/PyQt4-4.11.4-r1.ebuild rename dev-python/PyQt4/{PyQt4-4.12_pre1606101416.ebuild => PyQt4-4.12_pre1606101416-r1.ebuild} (79%) diff --git a/dev-python/PyQt4/PyQt4-4.11.4-r1.ebuild b/dev-python/PyQt4/PyQt4-4.11.4-r1.ebuild new file mode 100644 index 0000000000000..da8bfd59df93c --- /dev/null +++ b/dev-python/PyQt4/PyQt4-4.11.4-r1.ebuild @@ -0,0 +1,192 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI=5 +PYTHON_COMPAT=( python2_7 python3_{3,4,5} ) + +inherit eutils multibuild python-r1 qmake-utils toolchain-funcs + +DESCRIPTION="Python bindings for the Qt framework" +HOMEPAGE="http://www.riverbankcomputing.com/software/pyqt/intro + https://pypi.python.org/pypi/PyQt4" + +MY_P=PyQt-x11-gpl-${PV/_pre/.dev} +if [[ ${PV} == *_pre* ]]; then + SRC_URI="https://dev.gentoo.org/~pesa/distfiles/${MY_P}.tar.xz" +else + SRC_URI="mirror://sourceforge/pyqt/${MY_P}.tar.gz" +fi + +LICENSE="GPL-3" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux" + +IUSE="X compat dbus debug declarative designer doc examples help kde multimedia + opengl phonon script scripttools sql svg testlib webkit xmlpatterns" +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE} + sql? ( X ) + testlib? ( X ) +" + +# Minimal supported version of Qt. +QT_PV="4.8.5:4" + +RDEPEND=" + ${PYTHON_DEPS} + >=dev-python/sip-4.16.6:=[${PYTHON_USEDEP}] + >=dev-qt/qtcore-${QT_PV} + X? ( >=dev-qt/qtgui-${QT_PV} ) + dbus? ( + dev-python/dbus-python[${PYTHON_USEDEP}] + >=dev-qt/qtdbus-${QT_PV} + ) + declarative? ( >=dev-qt/qtdeclarative-${QT_PV} ) + designer? ( >=dev-qt/designer-${QT_PV} ) + help? ( >=dev-qt/qthelp-${QT_PV} ) + multimedia? ( >=dev-qt/qtmultimedia-${QT_PV} ) + opengl? ( >=dev-qt/qtopengl-${QT_PV} ) + phonon? ( + kde? ( >=media-libs/phonon-4.7[qt4] ) + !kde? ( || ( >=dev-qt/qtphonon-${QT_PV} >=media-libs/phonon-4.7[qt4] ) ) + ) + script? ( >=dev-qt/qtscript-${QT_PV} ) + scripttools? ( >=dev-qt/qtgui-${QT_PV} ) + sql? ( >=dev-qt/qtsql-${QT_PV} ) + svg? ( >=dev-qt/qtsvg-${QT_PV} ) + testlib? ( >=dev-qt/qttest-${QT_PV} ) + webkit? ( >=dev-qt/qtwebkit-${QT_PV} ) + xmlpatterns? ( >=dev-qt/qtxmlpatterns-${QT_PV} ) +" +DEPEND="${RDEPEND} + dbus? ( virtual/pkgconfig ) +" + +S=${WORKDIR}/${MY_P} + +src_prepare() { + # Support qreal on arm architecture (bug 322349). + use arm && epatch "${FILESDIR}/${PN}-4.7.3-qreal_float_support.patch" + + # Allow building against KDE's phonon (bug 525354). + epatch "${FILESDIR}/${PN}-4.11.2-phonon.patch" +} + +pyqt_run() { + echo "$@" + "${PYTHON}" "$@" +} + +pyqt_use_enable() { + use "$1" || return + + echo --enable=${2:-Qt$(tr 'a-z' 'A-Z' <<< ${1:0:1})${1:1}} +} + +src_configure() { + configuration() { + local myconf=( + $(usex debug '--debug --trace' '') + --verbose + --confirm-license + --qmake="$(qt4_get_bindir)"/qmake + --bindir="${EPREFIX}/usr/bin" + --destdir="$(python_get_sitedir)" + --qsci-api + --enable=QtCore + --enable=QtNetwork + --enable=QtXml + $(pyqt_use_enable X QtGui) + $(pyqt_use_enable dbus QtDBus) + $(pyqt_use_enable declarative) + $(pyqt_use_enable designer) + $(usex designer '' --no-designer-plugin) + $(pyqt_use_enable help) + $(pyqt_use_enable multimedia) + $(pyqt_use_enable opengl QtOpenGL) + $(pyqt_use_enable phonon phonon) + $(pyqt_use_enable script) + $(pyqt_use_enable scripttools QtScriptTools) + $(pyqt_use_enable sql) + $(pyqt_use_enable svg) + $(pyqt_use_enable testlib QtTest) + $(pyqt_use_enable webkit QtWebKit) + $(pyqt_use_enable xmlpatterns QtXmlPatterns) + ) + + if use compat; then + local compat_build_dir=${BUILD_DIR%/}-compat + cp -Rp "${S}" "${compat_build_dir}" || die + pushd "${compat_build_dir}" >/dev/null || die + + local mycompatconf=( + "${myconf[@]}" + AR="$(tc-getAR) cqs" + CC="$(tc-getCC)" + CFLAGS="${CFLAGS}" + CFLAGS_RELEASE= + CXX="$(tc-getCXX)" + CXXFLAGS="${CXXFLAGS}" + CXXFLAGS_RELEASE= + LINK="$(tc-getCXX)" + LINK_SHLIB="$(tc-getCXX)" + LFLAGS="${LDFLAGS}" + LFLAGS_RELEASE= + RANLIB= + STRIP= + ) + pyqt_run configure.py "${mycompatconf[@]}" || die + + popd >/dev/null || die + fi + + myconf+=( + $(usex dbus '' --no-python-dbus) + ) + pyqt_run "${S}"/configure-ng.py "${myconf[@]}" || die + + eqmake4 -recursive ${PN}.pro + } + python_foreach_impl run_in_build_dir configuration +} + +src_compile() { + python_foreach_impl run_in_build_dir default +} + +src_install() { + installation() { + local tmp_root=${D%/}/tmp + emake INSTALL_ROOT="${tmp_root}" install + + local uic_dir=${tmp_root}$(python_get_sitedir)/${PN}/uic + if python_is_python3; then + rm -r "${uic_dir}"/port_v2 || die + else + rm -r "${uic_dir}"/port_v3 || die + fi + + python_doexe "${tmp_root}${EPREFIX}"/usr/bin/pyuic4 + rm "${tmp_root}${EPREFIX}"/usr/bin/pyuic4 || die + + multibuild_merge_root "${tmp_root}" "${D}" + + if use compat; then + local compat_build_dir=${BUILD_DIR%/}-compat + python_moduleinto ${PN} + python_domodule "${compat_build_dir}"/pyqtconfig.py + fi + + python_optimize + } + python_foreach_impl run_in_build_dir installation + + dodoc ChangeLog NEWS THANKS + use doc && dodoc -r doc/html + + if use examples; then + insinto /usr/share/doc/${PF} + doins -r examples + fi +} diff --git a/dev-python/PyQt4/PyQt4-4.12_pre1606101416.ebuild b/dev-python/PyQt4/PyQt4-4.12_pre1606101416-r1.ebuild similarity index 79% rename from dev-python/PyQt4/PyQt4-4.12_pre1606101416.ebuild rename to dev-python/PyQt4/PyQt4-4.12_pre1606101416-r1.ebuild index 929d3d100337b..aa0be0134c6aa 100644 --- a/dev-python/PyQt4/PyQt4-4.12_pre1606101416.ebuild +++ b/dev-python/PyQt4/PyQt4-4.12_pre1606101416-r1.ebuild @@ -5,7 +5,7 @@ EAPI=6 PYTHON_COMPAT=( python2_7 python3_{3,4,5} ) -inherit multibuild python-r1 qmake-utils +inherit multibuild python-r1 qmake-utils toolchain-funcs DESCRIPTION="Python bindings for the Qt framework" HOMEPAGE="http://www.riverbankcomputing.com/software/pyqt/intro @@ -22,7 +22,7 @@ LICENSE="GPL-3" SLOT="0" KEYWORDS="~alpha ~amd64 ~arm ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux" -IUSE="X dbus debug declarative designer doc examples help kde multimedia +IUSE="X compat dbus debug declarative designer doc examples help kde multimedia opengl phonon script scripttools sql svg testlib webkit xmlpatterns" REQUIRED_USE=" ${PYTHON_REQUIRED_USE} @@ -78,6 +78,11 @@ src_prepare() { default } +pyqt_run() { + echo "$@" + "${PYTHON}" "$@" +} + pyqt_use_enable() { use "$1" || return @@ -87,22 +92,18 @@ pyqt_use_enable() { src_configure() { configuration() { local myconf=( - "${PYTHON}" - "${S}"/configure-ng.py $(usex debug '--debug --trace' '') --verbose --confirm-license --qmake="$(qt4_get_bindir)"/qmake --bindir="${EPREFIX}/usr/bin" --destdir="$(python_get_sitedir)" - --sip-incdir="$(python_get_includedir)" --qsci-api --enable=QtCore --enable=QtNetwork --enable=QtXml $(pyqt_use_enable X QtGui) $(pyqt_use_enable dbus QtDBus) - $(usex dbus '' --no-python-dbus) $(pyqt_use_enable declarative) $(pyqt_use_enable designer) $(usex designer '' --no-designer-plugin) @@ -118,8 +119,38 @@ src_configure() { $(pyqt_use_enable webkit QtWebKit) $(pyqt_use_enable xmlpatterns QtXmlPatterns) ) - echo "${myconf[@]}" - "${myconf[@]}" || die + + if use compat; then + local compat_build_dir=${BUILD_DIR%/}-compat + cp -Rp "${S}" "${compat_build_dir}" || die + pushd "${compat_build_dir}" >/dev/null || die + + local mycompatconf=( + "${myconf[@]}" + AR="$(tc-getAR) cqs" + CC="$(tc-getCC)" + CFLAGS="${CFLAGS}" + CFLAGS_RELEASE= + CXX="$(tc-getCXX)" + CXXFLAGS="${CXXFLAGS}" + CXXFLAGS_RELEASE= + LINK="$(tc-getCXX)" + LINK_SHLIB="$(tc-getCXX)" + LFLAGS="${LDFLAGS}" + LFLAGS_RELEASE= + RANLIB= + STRIP= + ) + pyqt_run configure.py "${mycompatconf[@]}" || die + + popd >/dev/null || die + fi + + myconf+=( + --sip-incdir="$(python_get_includedir)" + $(usex dbus '' --no-python-dbus) + ) + pyqt_run "${S}"/configure-ng.py "${myconf[@]}" || die eqmake4 -recursive ${PN}.pro } @@ -146,6 +177,13 @@ src_install() { rm "${tmp_root}${EPREFIX}"/usr/bin/pyuic4 || die multibuild_merge_root "${tmp_root}" "${D}" + + if use compat; then + local compat_build_dir=${BUILD_DIR%/}-compat + python_moduleinto ${PN} + python_domodule "${compat_build_dir}"/pyqtconfig.py + fi + python_optimize } python_foreach_impl run_in_build_dir installation diff --git a/dev-python/PyQt4/metadata.xml b/dev-python/PyQt4/metadata.xml index 1c9b581c55e8c..9fe84c585da5c 100644 --- a/dev-python/PyQt4/metadata.xml +++ b/dev-python/PyQt4/metadata.xml @@ -7,6 +7,7 @@ Build bindings for the QtGui module + Install the deprecated pyqtconfig module for backward compatibility Build bindings for the QtDBus module Build bindings for the QtDeclarative module Build bindings for the QtDesigner module and enable the designer plugin