Files
2026-04-20 23:17:15 +04:00

268 lines
8.9 KiB
Tcl

# -*- 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 37 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 4
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} \
port:dbus
# 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
python.test_framework
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<
}