Revision: 111812 https://trac.macports.org/changeset/111812 Author: michaelld@macports.org Date: 2013-10-02 09:54:15 -0700 (Wed, 02 Oct 2013) Log Message: ----------- py*-pyqt4: * add 'devel' version for latest changes; * add configure post_args variables to handle compiler and flags correctly; * add patch and tweak configure args to honor selected arch(s); * use dbus-python for Python < 3; * addresses ticket #40527. Modified Paths: -------------- trunk/dports/python/py-pyqt4/Portfile trunk/dports/python/py-pyqt4/files/patch-configure.py.diff Added Paths: ----------- trunk/dports/python/py-pyqt4/files/patch-configure.py-devel.diff Modified: trunk/dports/python/py-pyqt4/Portfile =================================================================== --- trunk/dports/python/py-pyqt4/Portfile 2013-10-02 16:42:22 UTC (rev 111811) +++ trunk/dports/python/py-pyqt4/Portfile 2013-10-02 16:54:15 UTC (rev 111812) @@ -6,8 +6,6 @@ PortGroup python 1.0 name py-pyqt4 -version 4.10.3 -revision 1 python.versions 24 25 26 27 31 32 33 python.default_version 27 categories-append devel @@ -22,61 +20,60 @@ and contains 300 classes and over 5,750 functions and methods. homepage http://www.riverbankcomputing.co.uk/software/pyqt/intro -if {$subport != $name} { +foreach py_ver ${python.versions} { + subport py${py_ver}-pyqt4-devel { + conflicts py${py_ver}-pyqt4 + } + subport py${py_ver}-pyqt4 { + conflicts py${py_ver}-pyqt4-devel + } +} - master_sites sourceforge:pyqt - distname PyQt-mac-gpl-${version} - dist_subdir python +if {$subport ne $name} { - checksums sha1 ba5465f92fb43c9f0a5b948fa25df5045f160bf0 \ - rmd160 5c05cf922264ee7a9a942e47e55d0342987b28d2 + set patch 4.10 - depends_lib-append port:py${python.version}-sip \ - port:qt4-mac + if {[string last devel ${subport}] != -1} { - 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 \ - --no-qsci-api + # devel port; use different download info - # Don't build designer plugin for 2.4; not built as a framework - if {${python.version} != 24 } { - configure.args-append -e QtDesigner - } + version ${patch}.4 + set snapshot 507d15ce70b8 - variant phonon description {Add phonon support} { - configure.args-append -e phonon - depends_lib-append port:phonon - } + master_sites http://www.riverbankcomputing.co.uk/static/Downloads/PyQt4 + distname PyQt-mac-gpl-${version}-snapshot-${snapshot} - if {${python.version} == 26 || ${python.version} == 27} { - variant scintilla description {Add QScintilla API file } { - configure.args-delete --no-qsci-api - configure.args-append --qsci-api - depends_lib-append port:qscintilla - } + checksums rmd160 60d69b6faa6c4266ee6caf09874d64a61e6539a8 \ + sha256 39c4c24f0e1da19a674f7750b4d15ca276871cc42fc8e64e3c7c6b966c286339 + + patchfiles-append patch-configure.py-devel.diff + + } else { + + version ${patch}.3 + revision 2 + + master_sites sourceforge:pyqt + distname PyQt-mac-gpl-${version} + + checksums rmd160 5c05cf922264ee7a9a942e47e55d0342987b28d2 \ + sha256 d985ad0b19939eb60f2689329f8272ad986acfe2f001f8ab67931c961239030b + + patchfiles-append patch-configure.py.diff + } - # The patch 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. + dist_subdir python - patchfiles patch-configure.py.diff + depends_lib-append port:py${python.version}-sip \ + port:qt4-mac + # 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 @@ -98,25 +95,81 @@ 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.post_args LFLAGS="-F${frameworks_dir} -L${prefix}/lib" + 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 \ + --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}" + + # support for dbus-python in < 3.0 + + if {${python.version} < 30} { + depends_lib-append port:dbus-python${python.version} + configure.args-append --dbus=${python.include}/dbus-1.0 + } + # subport for Python 2.4 or 2.5 installs into non-Framework locations if {${python.version} <= 25} { configure.cmd-append " -d ${python.pkgd} -b ${prefix}/bin" } - variant universal { - configure.universal_args - configure.post_args LFLAGS="-F${frameworks_dir} -L${prefix}/lib \ - ${configure.universal_ldflags}" - configure.post_args-append CFLAGS="${configure.universal_cflags}" - configure.post_args-append CXXFLAGS="${configure.universal_cxxflags}" + # Don't build designer plugin for 2.4; not built as a framework + if {${python.version} != 24 } { + configure.args-append -e QtDesigner } + variant phonon description {Add phonon support} { + configure.args-append -e phonon + depends_lib-append port:phonon + } + + if {${python.version} == 26 || ${python.version} == 27} { + variant scintilla description {Add QScintilla API file } { + configure.args-delete --no-qsci-api + configure.args-append --qsci-api + depends_lib-append port:qscintilla + } + } + post-configure { if {[variant_isset universal]} { set conflags "" @@ -213,6 +266,18 @@ } -livecheck.type regex -livecheck.url http://www.riverbankcomputing.co.uk/software/pyqt/download -livecheck.regex >PyQt-mac-gpl-(\[0-9.\]*).tar.gz< +if {[string last devel ${subport}] != -1} { + + livecheck.type regex + livecheck.url http://www.riverbankcomputing.co.uk/software/pyqt/download + livecheck.version ${version}-snapshot-${snapshot} + livecheck.regex >PyQt-mac-gpl-(\[0-9.\]*-snapshot-\[0-9a-e\]*).tar.gz< + +} else { + + livecheck.type regex + livecheck.url http://www.riverbankcomputing.co.uk/software/pyqt/download + livecheck.regex >PyQt-mac-gpl-(\[0-9.\]*).tar.gz< + +} + Added: trunk/dports/python/py-pyqt4/files/patch-configure.py-devel.diff =================================================================== --- trunk/dports/python/py-pyqt4/files/patch-configure.py-devel.diff (rev 0) +++ trunk/dports/python/py-pyqt4/files/patch-configure.py-devel.diff 2013-10-02 16:54:15 UTC (rev 111812) @@ -0,0 +1,175 @@ +--- configure.py.orig 2013-10-02 10:20:42.000000000 -0400 ++++ configure.py 2013-10-02 10:21:52.000000000 -0400 +@@ -44,6 +44,7 @@ + qt_dir = None + qt_incdir = None + qt_libdir = None ++qt_frameworkdir = None + qt_bindir = None + qt_datadir = None + qt_archdatadir = None +@@ -210,7 +211,7 @@ + + if sys.platform == 'darwin': + g = optparse.OptionGroup(p, title="MacOS X Configuration") +- g.add_option("--use-arch", action="store", metavar="ARCH", ++ g.add_option("--use-arch", action="append", metavar="ARCH", + dest="use_arch", choices=["i386", "x86_64", "ppc"], + help="the architecture to use when running pyuic4 " + "[default: system default]") +@@ -975,18 +976,7 @@ + dynamic_pylib = "--enable-shared" in config_args + + if dynamic_pylib: +- if glob.glob("%s/lib/libpython%d.%d*" % (ducfg["exec_prefix"], py_major, py_minor)): +- lib_dir_flag = quote("-L%s/lib" % ducfg["exec_prefix"]) +- elif 'MULTIARCH' in ducfg and glob.glob('%s/lib/%s/libpython%d.%d*' % (ducfg['exec_prefix'], ducfg['MULTIARCH'], py_major, py_minor)): +- lib_dir_flag = quote('-L%s/lib/%s' % (ducfg['exec_prefix'], ducfg['MULTIARCH'])) +- elif glob.glob("%s/libpython%d.%d*" % (ducfg["LIBDIR"], py_major, py_minor)): +- lib_dir_flag = quote("-L%s" % ducfg["LIBDIR"]) +- else: +- sipconfig.inform("Qt Designer plugin disabled because Python library couldn't be found") +- lib_dir_flag = '' +- opts.designer_plugin = False +- +- link = "%s -lpython%d.%d%s" % (lib_dir_flag, py_major, py_minor, abi) ++ link = "%s @@MACPORTS_PYTHON_FRAMEWORK@@" % sipcfg.build_macros().get('LFLAGS', '') + else: + sipconfig.inform("Qt Designer plugin disabled because Python library is static") + opts.designer_plugin = False +@@ -1085,7 +1075,10 @@ + + sipconfig.inform("SIP %s is being used." % sipcfg.sip_version_str) + sipconfig.inform("The Qt header files are in %s." % qt_incdir) +- sipconfig.inform("The %s Qt libraries are in %s." % (lib_type, qt_libdir)) ++ if sys.platform == "darwin" and qt_framework: ++ sipconfig.inform("The %s Qt frameworks are in %s." % (lib_type, qt_frameworkdir)) ++ else: ++ sipconfig.inform("The %s Qt libraries are in %s." % (lib_type, qt_libdir)) + sipconfig.inform("The Qt binaries are in %s." % qt_bindir) + sipconfig.inform("The Qt mkspecs directory is in %s." % qt_archdatadir) + sipconfig.inform("These PyQt modules will be built: %s." % ", ".join(pyqt_modules)) +@@ -1150,7 +1143,8 @@ + "qt_data_dir": qt_datadir, + "qt_archdata_dir": qt_archdatadir, + "qt_inc_dir": qt_incdir, +- "qt_lib_dir": qt_libdir ++ "qt_lib_dir": qt_libdir, ++ "qt_framework_dir": qt_frameworkdir + } + + sipconfig.create_config_module(module, template, content, macros) +@@ -1806,7 +1800,7 @@ + lfile = license.LicenseFile + except AttributeError: + lfile = None +- except ImportError: ++ except: + ltype = None + + if ltype is None: +@@ -1923,12 +1917,14 @@ + names = list(sipcfg.build_macros().keys()) + names.append("INCDIR_QT") + names.append("LIBDIR_QT") ++ names.append("FRAMEWORKDIR_QT") + names.append("MOC") + + properties = { + "QT_INSTALL_BINS": qt_bindir, + "QT_INSTALL_HEADERS": qt_incdir, +- "QT_INSTALL_LIBS": qt_libdir ++ "QT_INSTALL_LIBS": qt_libdir, ++ "QT_INSTALL_FRAMEWORKS": qt_frameworkdir + } + + macros = sipconfig.parse_build_macros(fname, names, overrides, properties) +@@ -1974,7 +1970,7 @@ + + # Work out how Qt was built on MacOS. + if sys.platform == "darwin": +- if os.access(os.path.join(qt_libdir, "QtCore.framework"), os.F_OK): ++ if os.access(os.path.join(qt_frameworkdir, "QtCore.framework"), os.F_OK): + global qt_framework + qt_framework = 1 + +@@ -1991,6 +1987,7 @@ + sipcfg.qt_threaded = 1 + sipcfg.qt_dir = qt_dir + sipcfg.qt_lib_dir = qt_libdir ++ sipcfg.qt_framework_dir = qt_frameworkdir + + return ConfigurePyQt4(generator) + +@@ -2006,7 +2003,7 @@ + + + def get_qt_configuration(): +- """Set the qt_dir, qt_incdir, qt_libdir, qt_bindir, qt_datadir, ++ """Set the qt_dir, qt_incdir, qt_libdir, qt_frameworkdir, qt_bindir, qt_datadir, + qt_archdatadir, qt_pluginsdir and qt_xfeatures globals for the Qt + installation. + """ +@@ -2080,6 +2077,7 @@ + out << QLibraryInfo::location(QLibraryInfo::PrefixPath) << '\\n'; + out << QLibraryInfo::location(QLibraryInfo::HeadersPath) << '\\n'; + out << QLibraryInfo::location(QLibraryInfo::LibrariesPath) << '\\n'; ++ out << QLibraryInfo::location(QLibraryInfo::FrameworksPath) << '\\n'; + out << QLibraryInfo::location(QLibraryInfo::BinariesPath) << '\\n'; + out << QLibraryInfo::location(QLibraryInfo::DataPath) << '\\n'; + #if QT_VERSION >= 0x050000 +@@ -2208,22 +2206,23 @@ + lines = f.read().strip().split("\n") + f.close() + +- global qt_dir, qt_incdir, qt_libdir, qt_bindir, qt_datadir, qt_archdatadir ++ global qt_dir, qt_incdir, qt_libdir, qt_frameworkdir, qt_bindir, qt_datadir, qt_archdatadir + global qt_pluginsdir + global qt_version, qt_edition, qt_licensee, qt_shared, qt_xfeatures + + qt_dir = lines[0] + qt_incdir = lines[1] + qt_libdir = lines[2] +- qt_bindir = lines[3] +- qt_datadir = lines[4] +- qt_archdatadir = lines[5] +- qt_pluginsdir = lines[6] +- qt_version = lines[7] +- qt_edition = lines[8] +- qt_licensee = lines[9] +- qt_shared = lines[10] +- qt_xfeatures = lines[11:] ++ qt_frameworkdir = lines[3] ++ qt_bindir = lines[4] ++ qt_datadir = lines[5] ++ qt_archdatadir = lines[6] ++ qt_pluginsdir = lines[7] ++ qt_version = lines[8] ++ qt_edition = lines[9] ++ qt_licensee = lines[10] ++ qt_shared = lines[11] ++ qt_xfeatures = lines[12:] + + if opts.assume_shared: + qt_shared = "shared" +@@ -2284,6 +2283,11 @@ + p = create_optparser() + opts, args = p.parse_args() + ++ # fix arch on darwin ++ if sys.platform == 'darwin' and opts.use_arch is not None: ++ # convert opts.use_arch from a list to a string ++ opts.use_arch = sipcfg.arch = ' '.join(iter(opts.use_arch)) ++ + # Provide defaults for platform-specific options. + if sys.platform == 'win32': + opts.qmake = find_default_qmake() +@@ -2401,7 +2405,6 @@ + raise + except: + sys.stderr.write( +-"""An internal error occured. Please report all the output from the program, +-including the following traceback, to support@riverbankcomputing.com. ++"""An internal error occured. Please follow the instructions provided by MacPorts < http://www.macports.org > to report this issue. Please do not report this issue to Riverbank Computing until MacPorts developers have determined that it is appropriate to do so. + """) + raise Modified: trunk/dports/python/py-pyqt4/files/patch-configure.py.diff =================================================================== --- trunk/dports/python/py-pyqt4/files/patch-configure.py.diff 2013-10-02 16:42:22 UTC (rev 111811) +++ trunk/dports/python/py-pyqt4/files/patch-configure.py.diff 2013-10-02 16:54:15 UTC (rev 111812) @@ -1,5 +1,5 @@ ---- configure.py.orig 2013-08-21 02:02:48.000000000 -0400 -+++ configure.py 2013-08-21 20:03:43.000000000 -0400 +--- configure.py.orig 2013-10-02 10:33:49.000000000 -0400 ++++ configure.py 2013-10-02 10:34:47.000000000 -0400 @@ -44,6 +44,7 @@ qt_dir = None qt_incdir = None @@ -8,6 +8,15 @@ qt_bindir = None qt_datadir = None qt_archdatadir = None +@@ -210,7 +211,7 @@ + + if sys.platform == 'darwin': + g = optparse.OptionGroup(p, title="MacOS X Configuration") +- g.add_option("--use-arch", action="store", metavar="ARCH", ++ g.add_option("--use-arch", action="append", metavar="ARCH", + dest="use_arch", choices=["i386", "x86_64", "ppc"], + help="the architecture to use when running pyuic4 " + "[default: system default]") @@ -975,16 +976,7 @@ dynamic_pylib = "--enable-shared" in config_args @@ -141,3 +150,24 @@ if opts.assume_shared: qt_shared = "shared" +@@ -2282,6 +2283,11 @@ + p = create_optparser() + opts, args = p.parse_args() + ++ # fix arch on darwin ++ if sys.platform == 'darwin' and opts.use_arch is not None: ++ # convert opts.use_arch from a list to a string ++ opts.use_arch = sipcfg.arch = ' '.join(iter(opts.use_arch)) ++ + # Provide defaults for platform-specific options. + if sys.platform == 'win32': + opts.qmake = find_default_qmake() +@@ -2399,7 +2405,6 @@ + raise + except: + sys.stderr.write( +-"""An internal error occured. Please report all the output from the program, +-including the following traceback, to support@riverbankcomputing.com. ++"""An internal error occured. Please follow the instructions provided by MacPorts < http://www.macports.org > to report this issue. Please do not report this issue to Riverbank Computing until MacPorts developers have determined that it is appropriate to do so. + """) + raise
participants (1)
-
michaelld@macports.org