# -*- 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 # $Id$ PortSystem 1.0 PortGroup qt4 1.0 PortGroup python 1.0 name py-pyqt4 categories-append devel platforms macosx maintainers 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 http://www.riverbankcomputing.co.uk/software/pyqt/intro version 4.11.4 revision 4 set branch [join [lrange [split ${version} .] 0 1] .] set patch [lindex [split ${version} .] 2] # pre-declare provided subports python.versions 27 34 35 python.default_version 27 foreach py_ver ${python.versions} { subport py${py_ver}-pyqt4-devel {} subport py${py_ver}-pyqt4 {} } if {${name} ne ${subport}} { if {[string last devel ${subport}] != -1} { # devel port # replaced by py*-pyqt4 (non -devel), hopefully permanently replaced_by py${python.version}-pyqt4 pre-fetch { ui_error "This port has been temporarily replaced by 'py${python.version}-pyqt4'." return -code error } distfiles } else { # release port master_sites sourceforge:pyqt if {${patch} == 0} { distname PyQt-mac-gpl-${branch} } else { distname PyQt-mac-gpl-${version} } checksums rmd160 55ab22e65a2681b7af3680db9462967578a907f0 \ sha256 f178ba12a814191df8e9f87fb95c11084a0addc827604f1a18a82944225ed918 patchfiles-append patch-configure.py.diff } dist_subdir python depends_lib-append port:py${python.version}-sip \ port:qt4-mac \ 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 post-patch { reinplace "s|@@MACPORTS_PYTHON_FRAMEWORK@@|${frameworks_dir}/Python.framework/Versions/${python.branch}/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 # SIP's configure tools ignore environment variables, so have to # get important once 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 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_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 { livecheck.type regex livecheck.url http://www.riverbankcomputing.co.uk/software/pyqt/download livecheck.regex >PyQt-mac-gpl-(\[0-9.\]*).tar.gz< }