| # Copyright 1999-2015 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| # $Id$ |
| |
| EAPI=5 |
| PYTHON_COMPAT=( python{2_7,3_3,3_4} ) |
| |
| inherit eutils multibuild python-r1 qmake-utils toolchain-funcs |
| |
| DESCRIPTION="Python bindings for the Qt toolkit" |
| HOMEPAGE="http://www.riverbankcomputing.com/software/pyqt/intro |
| https://pypi.python.org/pypi/PyQt4" |
| |
| if [[ ${PV} == *_pre* ]]; then |
| MY_P="PyQt-x11-gpl-snapshot-${PV%_pre*}-${REVISION}" |
| SRC_URI="https://dev.gentoo.org/~hwoarang/distfiles/${MY_P}.tar.gz" |
| else |
| MY_P="PyQt-x11-gpl-${PV}" |
| SRC_URI="mirror://sourceforge/pyqt/${MY_P}.tar.gz" |
| fi |
| |
| LICENSE="|| ( GPL-2 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 opengl phonon script scripttools sql svg webkit xmlpatterns" |
| REQUIRED_USE=" |
| ${PYTHON_REQUIRED_USE} |
| declarative? ( X ) |
| designer? ( X ) |
| help? ( X ) |
| multimedia? ( X ) |
| opengl? ( X ) |
| phonon? ( X ) |
| scripttools? ( X script ) |
| sql? ( X ) |
| svg? ( X ) |
| webkit? ( X ) |
| " |
| |
| # Minimal supported version of Qt. |
| QT_PV="4.8.5:4" |
| |
| RDEPEND=" |
| ${PYTHON_DEPS} |
| >=dev-python/sip-4.16:=[${PYTHON_USEDEP}] |
| >=dev-qt/qtcore-${QT_PV} |
| X? ( |
| >=dev-qt/qtgui-${QT_PV} |
| >=dev-qt/qttest-${QT_PV} |
| ) |
| dbus? ( |
| >=dev-python/dbus-python-0.80[${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[qt4] ) |
| !kde? ( || ( >=dev-qt/qtphonon-${QT_PV} media-libs/phonon[qt4] ) ) |
| ) |
| script? ( >=dev-qt/qtscript-${QT_PV} ) |
| sql? ( >=dev-qt/qtsql-${QT_PV} ) |
| svg? ( >=dev-qt/qtsvg-${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 433944 and others). |
| sed -i \ |
| -e "s:VideoWidget()\":&, extra_include_dirs=[\"${EPREFIX}/usr/include/qt4/QtGui\"]:" \ |
| -e "s:^\s\+generate_code(\"phonon\":&, extra_include_dirs=[\"${EPREFIX}/usr/include/phonon\"]:" \ |
| configure.py || die |
| |
| if ! use dbus; then |
| sed -i -e 's/^\(\s\+\)check_dbus()/\1pass/' configure.py || die |
| fi |
| |
| python_copy_sources |
| |
| preparation() { |
| if [[ ${EPYTHON} == python3.* ]]; then |
| rm -fr pyuic/uic/port_v2 |
| else |
| rm -fr pyuic/uic/port_v3 |
| fi |
| } |
| python_foreach_impl run_in_build_dir preparation |
| } |
| |
| pyqt4_use_enable() { |
| use $1 && echo --enable=${2:-Qt$(tr 'a-z' 'A-Z' <<< ${1:0:1})${1:1}} |
| } |
| |
| src_configure() { |
| configuration() { |
| local myconf=( |
| "${PYTHON}" configure.py |
| --confirm-license |
| --bindir="${EPREFIX}/usr/bin" |
| --destdir="$(python_get_sitedir)" |
| --sipdir="${EPREFIX}/usr/share/sip" |
| --assume-shared |
| --no-timestamp |
| --qsci-api |
| $(use debug && echo --debug) |
| --enable=QtCore |
| --enable=QtNetwork |
| --enable=QtXml |
| $(pyqt4_use_enable X QtGui) |
| $(pyqt4_use_enable X QtTest) |
| $(pyqt4_use_enable dbus QtDBus) |
| $(pyqt4_use_enable declarative) |
| $(pyqt4_use_enable designer) $(use designer || echo --no-designer-plugin) |
| $(pyqt4_use_enable help) |
| $(pyqt4_use_enable multimedia) |
| $(pyqt4_use_enable opengl QtOpenGL) |
| $(pyqt4_use_enable phonon phonon) |
| $(pyqt4_use_enable script) |
| $(pyqt4_use_enable scripttools QtScriptTools) |
| $(pyqt4_use_enable sql) |
| $(pyqt4_use_enable svg) |
| $(pyqt4_use_enable webkit QtWebKit) |
| $(pyqt4_use_enable xmlpatterns QtXmlPatterns) |
| 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= |
| ) |
| echo "${myconf[@]}" |
| "${myconf[@]}" || die |
| |
| local mod |
| for mod in QtCore \ |
| $(use X && echo QtGui) \ |
| $(use dbus && echo QtDBus) \ |
| $(use declarative && echo QtDeclarative) \ |
| $(use designer && echo QtDesigner) \ |
| $(use opengl && echo QtOpenGL); do |
| # Run eqmake4 inside the qpy subdirectories to respect |
| # CC, CXX, CFLAGS, CXXFLAGS, LDFLAGS and avoid stripping. |
| pushd qpy/${mod} > /dev/null || return |
| eqmake4 $(ls w_qpy*.pro) |
| popd > /dev/null || return |
| |
| # Fix insecure runpaths. |
| sed -i -e "/^LFLAGS\s*=/ s:-Wl,-rpath,${BUILD_DIR}/qpy/${mod}::" \ |
| ${mod}/Makefile || die "failed to fix rpath for ${mod}" |
| done |
| |
| # Avoid stripping of libpythonplugin.so. |
| if use designer; then |
| pushd designer > /dev/null || return |
| eqmake4 python.pro |
| popd > /dev/null || return |
| fi |
| } |
| 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 |
| |
| # INSTALL_ROOT is used by designer/Makefile, other Makefiles use DESTDIR. |
| emake DESTDIR="${tmp_root}" INSTALL_ROOT="${tmp_root}" install |
| |
| python_doexe "${tmp_root}${EPREFIX}"/usr/bin/pyuic4 |
| rm "${tmp_root}${EPREFIX}"/usr/bin/pyuic4 || die |
| |
| multibuild_merge_root "${tmp_root}" "${D}" |
| python_optimize |
| } |
| python_foreach_impl run_in_build_dir installation |
| |
| dodoc NEWS THANKS |
| |
| if use doc; then |
| dodoc -r doc/html |
| fi |
| |
| if use examples; then |
| insinto /usr/share/doc/${PF} |
| doins -r examples |
| fi |
| } |