source: trunk/dports/python/py-pyqt4/Portfile

Last change on this file was 140993, checked in by michaelld@…, 14 months ago

py-pyqt4: add support for Python 3.5.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 8.8 KB
Line 
1# -*- 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
2# $Id: Portfile 140993 2015-10-07 16:58:42Z ryandesign@macports.org $
3
4PortSystem      1.0
5PortGroup       qt4 1.0
6PortGroup       python 1.0
7
8name            py-pyqt4
9
10categories-append     devel
11platforms       macosx
12maintainers     michaelld openmaintainer
13license         GPL-3
14description     PyQt4 is a set of Python bindings for the Qt4 toolkit
15long_description \
16    PyQt4 is a set of Python bindings for the Qt4 toolkit. The \
17    bindings are implemented as a set of Python modules: qt, \
18    qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml, \
19    and contains 300 classes and over 5,750 functions and methods.
20homepage        http://www.riverbankcomputing.co.uk/software/pyqt/intro
21
22version         4.11.4
23revision        4
24
25set branch      [join [lrange [split ${version} .] 0 1] .]
26set patch       [lindex [split ${version} .] 2]
27
28# pre-declare provided subports
29
30python.versions 27 34 35
31python.default_version 27
32
33foreach py_ver ${python.versions} {
34    subport py${py_ver}-pyqt4-devel {}
35    subport py${py_ver}-pyqt4 {}
36}
37
38if {${name} ne ${subport}} {
39
40    if {[string last devel ${subport}] != -1} {
41
42        # devel port
43
44        # replaced by py*-pyqt4 (non -devel), hopefully permanently
45
46        replaced_by py${python.version}-pyqt4
47
48        pre-fetch {
49            ui_error "This port has been temporarily replaced by 'py${python.version}-pyqt4'."
50            return -code error
51        }
52
53        distfiles
54
55    } else {
56
57        # release port
58
59        master_sites    sourceforge:pyqt
60
61        if {${patch} == 0} {
62            distname    PyQt-mac-gpl-${branch}
63        } else {
64            distname    PyQt-mac-gpl-${version}
65        }
66
67        checksums       rmd160 55ab22e65a2681b7af3680db9462967578a907f0 \
68                        sha256 f178ba12a814191df8e9f87fb95c11084a0addc827604f1a18a82944225ed918
69
70        patchfiles-append patch-configure.py.diff
71
72    }
73
74    dist_subdir        python
75
76    depends_lib-append port:py${python.version}-sip \
77                       port:qt4-mac \
78                       port:dbus-python${python.version}
79
80    # patch-configure.py* file alters configure.py so that the
81    # qtdesigner plugin can link.  It ensures that both LFLAGS are
82    # included and that the relevant version framework is linked.  It
83    # also adds a "framework" directory concept to make the split in
84    # qt4-mac as of 4.8.0, and uses it where appropriate.
85
86    # fix location of MacPorts'-installed Qt .apps, step 1
87
88    patchfiles-append patch-fix-qt_apps_dir.diff
89
90    post-patch {
91        reinplace "s|@@MACPORTS_PYTHON_FRAMEWORK@@|${frameworks_dir}/Python.framework/Versions/${python.branch}/Python|" ${worksrcpath}/configure.py
92
93        # fix location of MacPorts'-installed Qt .apps, step 2
94
95        reinplace "s|@QT_APPS_DIR@|${qt_apps_dir}|" \
96            ${worksrcpath}/examples/demos/qtdemo/menumanager.py \
97            examples/designer/plugins/plugins.py
98    }
99
100    use_configure yes
101
102    pre-configure {
103        # allow ccache, if specified by the user
104        if {[tbool configure.ccache]} {
105            configure.env-append "CCACHE=ccache"
106        }
107
108        foreach arch [get_canonical_archs] {
109            configure.args-append --use-arch=$arch
110        }
111    }
112
113    configure.cmd       "${python.bin} configure.py -q ${qt_qmake_cmd} --verbose --confirm-license"
114    configure.pre_args
115    configure.universal_args-delete --disable-dependency-tracking
116
117    configure.args-append   -e QtGui \
118                            -e QtHelp \
119                            -e QtMultimedia \
120                            -e QtNetwork \
121                            -e QtDeclarative \
122                            -e QtOpenGL \
123                            -e QtScript \
124                            -e QtScriptTools \
125                            -e QtSql \
126                            -e QtSvg \
127                            -e QtTest \
128                            -e QtWebKit \
129                            -e QtXml \
130                            -e QtXmlPatterns \
131                            -e QAxContainer \
132                            -e QtDesigner \
133                            --dbus=${python.include}/dbus-1.0 \
134                            --no-qsci-api
135
136    # SIP's configure tools ignore environment variables, so have to
137    # get important once in in other ways if/as possible; SIP will, by
138    # default, use what was found by QMake when qt4-mac was installed.
139
140    set cflags   "${configure.cflags}"
141    set cxxflags "${configure.cxxflags}"
142    if {[tbool configure.pipe]} {
143        set cflags   "${cflags} -pipe"
144        set cxxflags "${cxxflags} -pipe"
145    }
146
147    configure.post_args \
148        CC=${configure.cc} \
149        CXX=${configure.cxx} \
150        LFLAGS="-F${frameworks_dir} ${configure.ldflags}" \
151        CFLAGS="${cflags}" \
152        CXXFLAGS="${cxxflags}"
153
154    variant phonon description {Add phonon support} {
155        configure.args-append   -e phonon
156        depends_lib-append      port:phonon
157    }
158
159    variant scintilla description {Add QScintilla API file } {
160        configure.args-delete   --no-qsci-api
161        configure.args-append   --qsci-api \
162                                --qsci-api-destdir=${qt_data_dir}/qsci
163        depends_lib-append      port:qscintilla
164
165        post-destroot {
166            # move the Qsci API file to a Python specific name
167            move ${destroot}${qt_data_dir}/qsci/api/python/PyQt4.api \
168                ${destroot}${qt_data_dir}/qsci/api/python/PyQt4-Python${python.branch}.api
169        }
170    }
171
172    post-configure {
173        if {[variant_isset universal]} {
174            set conflags ""
175            foreach arch ${configure.universal_archs} {
176                if {${arch} eq "i386"} {append conflags "x86 "} else {
177                    if {${arch} eq "ppc64"} {append conflags "ppc_64 "} else {
178                        append conflags ${arch} " "
179                    }
180                }
181            }
182
183            set profiles [exec find ${worksrcpath} -name "*.pro"]
184            foreach profile ${profiles} {
185                reinplace -E "s|^(CONFIG\[ \\t].*)|\\1 ${conflags}|" ${profile}
186            }
187
188            # This file exists if Qt was installed non-universal.
189            # Easiest just to check if it was created.
190            if {[file exists ${worksrcpath}/designer/python.pro ]} {
191                system -W ${worksrcpath}/designer "${qt_qmake_cmd} \
192                    -spec ${qt_mkspecs_dir}/macx-g++ \
193                    -o Makefile python.pro"
194            }
195        }
196    }
197
198    # allow ccache, if specified by the user
199    pre-build {
200        if {[tbool configure.ccache]} {
201            build.post_args "CCACHE=ccache"
202        }
203    }
204
205    build.cmd           make
206    build.target        all
207    use_parallel_build  yes
208
209    destroot.cmd        ${build.cmd}
210    destroot.destdir    DESTDIR=${destroot}
211
212    test.run            yes
213    test.cmd            cd qt && ${python.bin} -c 'import PyQt4'
214
215    post-destroot {
216        # Clean out empty dirs first
217        set docdir ${destroot}${prefix}/share/doc
218        file delete ${docdir}/${subport}/examples
219        file delete ${docdir}/${subport}/
220        file copy ${worksrcpath}/doc ${docdir}/${subport}
221        file copy ${worksrcpath}/examples \
222            ${docdir}/${subport}
223        xinstall -m 644 -W ${worksrcpath} \
224            ChangeLog LICENSE NEWS README THANKS \
225            ${docdir}/${subport}
226
227        # Rename designer plugin to include Python version; easiest
228        # just to check if it was created, instead of patching.
229        if {[file exists ${destroot}${qt_plugins_dir}/designer/libpyqt4.dylib]} {
230            # rename Qt4 specific files
231            # (a) designer plugin
232            set old_name libpyqt4.dylib
233            set new_name libpy${python.version}qt4.dylib
234
235            move ${destroot}${qt_plugins_dir}/designer/${old_name} \
236                ${destroot}${qt_plugins_dir}/designer/${new_name}
237            system "install_name_tool -id ${new_name} \
238                ${destroot}${qt_plugins_dir}/designer/${new_name}"
239        }
240
241        # delete python3 code from python2 installs and vice versa,
242        # if each exists
243        if {${python.version} >= 30} {
244            if {[file exists ${destroot}${python.pkgd}/PyQt4/uic/port_v2]} {
245                delete ${destroot}${python.pkgd}/PyQt4/uic/port_v2
246            }
247        } else {
248            if {[file exists ${destroot}${python.pkgd}/PyQt4/uic/port_v3]} {
249                delete ${destroot}${python.pkgd}/PyQt4/uic/port_v3
250            }
251        }
252    }
253
254    variant debug description "Build debug libraries" {
255        configure.cmd-append --debug
256    }
257
258}
259
260if {[string last devel ${subport}] != -1} {
261
262    livecheck.type   none
263
264} else {
265
266    livecheck.type   regex
267    livecheck.url    http://www.riverbankcomputing.co.uk/software/pyqt/download
268    livecheck.regex  >PyQt-mac-gpl-(\[0-9.\]*).tar.gz<
269
270}
Note: See TracBrowser for help on using the repository browser.