# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4 PortSystem 1.0 PortGroup python 1.0 name py-pyqt4 categories-append devel platforms macosx maintainers {michaelld @michaelld} openmaintainer license GPL-3 description PyQt4 is a set of Python bindings for the Qt4 toolkit long_description \ PyQt4 is a set of Python bindings for the Qt4 toolkit. The \ bindings are implemented as a set of Python modules: qt, \ qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml, \ and contains 300 classes and over 5,750 functions and methods. homepage https://www.riverbankcomputing.com/software/pyqt/intro version 4.12.1 set branch [join [lrange [split ${version} .] 0 1] .] set patch [lindex [split ${version} .] 2] # pre-declare provided subports python.versions 27 35 36 37 38 39 310 python.default_version 27 foreach py_ver ${python.versions} { subport py${py_ver}-pyqt4 {} } if {${name} ne ${subport}} { PortGroup qt4 1.0 master_sites sourceforge:pyqt if {${patch} == 0} { distname PyQt4_gpl_mac-${branch} } else { distname PyQt4_gpl_mac-${version} } # bump the epoch to revert the version back to 4.12.1 epoch 1 # bump the revision back to 2, where it was # before the updates to 4.12.[23]. revision 3 checksums rmd160 07125dd79a1d76dd83680a4f940f267f792486aa \ sha256 3224ab2c4d392891eb0abbc2bf076fef2ead3a5bb36ceae2383df4dda00ccce5 \ size 11324734 patchfiles-append patch-configure.py.diff \ patch-add_ppc64.diff dist_subdir python depends_lib-append port:py${python.version}-sip4 \ port:dbus-python${python.version} # patch-configure.py* file alters configure.py so that the # qtdesigner plugin can link. It ensures that both LFLAGS are # included and that the relevant version framework is linked. It # also adds a "framework" directory concept to make the split in # qt4-mac as of 4.8.0, and uses it where appropriate. # fix location of MacPorts'-installed Qt .apps, step 1 patchfiles-append patch-fix-qt_apps_dir.diff # because CPATH is set, pkgconfig does not include # ${prefix}/include even when requested the configure.py script, # however, adds /phonon to the include directory configure.env-append \ PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 post-patch { reinplace "s|@@MACPORTS_PYTHON_FRAMEWORK@@|${python.prefix}/Python|" ${worksrcpath}/configure.py # fix location of MacPorts'-installed Qt .apps, step 2 reinplace "s|@QT_APPS_DIR@|${qt_apps_dir}|" \ ${worksrcpath}/examples/demos/qtdemo/menumanager.py \ examples/designer/plugins/plugins.py } use_configure yes pre-configure { # allow ccache, if specified by the user if {[tbool configure.ccache]} { configure.env-append CCACHE=ccache } foreach arch [get_canonical_archs] { configure.args-append --use-arch=$arch } } configure.cmd "${python.bin} configure.py -q ${qt_qmake_cmd} --verbose --confirm-license" configure.pre_args configure.universal_args-delete --disable-dependency-tracking configure.args-append -e QtGui \ -e QtHelp \ -e QtMultimedia \ -e QtNetwork \ -e QtDeclarative \ -e QtOpenGL \ -e QtScript \ -e QtScriptTools \ -e QtSql \ -e QtSvg \ -e QtTest \ -e QtWebKit \ -e QtXml \ -e QtXmlPatterns \ -e QAxContainer \ -e QtDesigner \ --dbus=${python.include}/dbus-1.0 \ --no-qsci-api \ --sipdir=${python.prefix}/share/sip/PyQt4 # SIP's configure tools ignore environment variables, so have to # get important info in in other ways if/as possible; SIP will, by # default, use what was found by QMake when qt4-mac was installed. set cflags "${configure.cflags}" set cxxflags "${configure.cxxflags}" if {[tbool configure.pipe]} { set cflags "${cflags} -pipe" set cxxflags "${cxxflags} -pipe" } configure.post_args \ CC=${configure.cc} \ CXX=${configure.cxx} \ LFLAGS="-F${frameworks_dir} ${configure.ldflags}" \ CFLAGS="${cflags}" \ CXXFLAGS="${cxxflags}" variant phonon description {Add phonon support} { configure.args-append -e phonon depends_lib-append port:phonon } variant scintilla description {Add QScintilla API file } { configure.args-delete --no-qsci-api configure.args-append --qsci-api \ --qsci-api-destdir=${qt_data_dir}/qsci depends_lib-append port:qscintilla-qt4 post-destroot { # move the Qsci API file to a Python specific name move ${destroot}${qt_data_dir}/qsci/api/python/PyQt4.api \ ${destroot}${qt_data_dir}/qsci/api/python/PyQt4-Python${python.branch}.api } } post-configure { if {[variant_exists universal] && [variant_isset universal]} { set conflags "" foreach arch ${configure.universal_archs} { if {${arch} eq "i386"} {append conflags "x86 "} else { if {${arch} eq "ppc64"} {append conflags "ppc_64 "} else { append conflags ${arch} " " } } } set profiles [exec find ${worksrcpath} -name "*.pro"] foreach profile ${profiles} { reinplace -E "s|^(CONFIG\[ \\t].*)|\\1 ${conflags}|" ${profile} } # This file exists if Qt was installed non-universal. # Easiest just to check if it was created. if {[file exists ${worksrcpath}/designer/python.pro ]} { system -W ${worksrcpath}/designer "${qt_qmake_cmd} \ -spec ${qt_mkspecs_dir}/macx-g++ \ -o Makefile python.pro" } } } # allow ccache, if specified by the user pre-build { if {[tbool configure.ccache]} { build.post_args "CCACHE=ccache" } } build.cmd make build.target all use_parallel_build yes destroot.cmd ${build.cmd} destroot.destdir DESTDIR=${destroot} test.run yes test.cmd cd qt && ${python.bin} -c 'import PyQt4' post-destroot { # Clean out empty dirs first set docdir ${destroot}${prefix}/share/doc file delete ${docdir}/${subport}/examples file delete ${docdir}/${subport}/ file copy ${worksrcpath}/doc ${docdir}/${subport} file copy ${worksrcpath}/examples \ ${docdir}/${subport} xinstall -m 644 -W ${worksrcpath} \ ChangeLog LICENSE NEWS README THANKS \ ${docdir}/${subport} # Rename designer plugin to include Python version; easiest # just to check if it was created, instead of patching. if {[file exists ${destroot}${qt_plugins_dir}/designer/libpyqt4.dylib]} { # rename Qt4 specific files # (a) designer plugin set old_name libpyqt4.dylib set new_name libpy${python.version}qt4.dylib move ${destroot}${qt_plugins_dir}/designer/${old_name} \ ${destroot}${qt_plugins_dir}/designer/${new_name} system "install_name_tool -id ${new_name} \ ${destroot}${qt_plugins_dir}/designer/${new_name}" } # delete python3 code from python2 installs and vice versa, # if each exists if {${python.version} >= 30} { if {[file exists ${destroot}${python.pkgd}/PyQt4/uic/port_v2]} { delete ${destroot}${python.pkgd}/PyQt4/uic/port_v2 } } else { if {[file exists ${destroot}${python.pkgd}/PyQt4/uic/port_v3]} { delete ${destroot}${python.pkgd}/PyQt4/uic/port_v3 } } } variant debug description "Build debug libraries" { configure.cmd-append --debug } } if {[string last devel ${subport}] != -1} { livecheck.type none } else { if {${patch} == 0} { livecheck.version ${branch} } livecheck.type regex livecheck.url https://www.riverbankcomputing.com/software/pyqt/download livecheck.regex >PyQt4_gpl_mac-(\[0-9.\]*).tar.gz< }