From 160d2bc69832a740481b419e980806742a525124 Mon Sep 17 00:00:00 2001 From: Rob Cakebread Date: Sat, 13 Nov 2004 04:08:20 +0000 Subject: [PATCH] Version bump, retrofitted with SLOTs, bug# 47810 --- dev-python/wxpython/ChangeLog | 9 +- dev-python/wxpython/Manifest | 14 +- .../wxpython/files/digest-wxpython-2.4.2.4-r1 | 1 + .../wxpython/files/digest-wxpython-2.5.3.1 | 1 + dev-python/wxpython/files/wxpy-config.py | 125 +++++ dev-python/wxpython/files/wxversion.py | 430 ++++++++++++++++++ .../wxpython/wxpython-2.4.2.4-r1.ebuild | 119 +++++ dev-python/wxpython/wxpython-2.5.3.1.ebuild | 108 +++++ 8 files changed, 802 insertions(+), 5 deletions(-) create mode 100644 dev-python/wxpython/files/digest-wxpython-2.4.2.4-r1 create mode 100644 dev-python/wxpython/files/digest-wxpython-2.5.3.1 create mode 100755 dev-python/wxpython/files/wxpy-config.py create mode 100644 dev-python/wxpython/files/wxversion.py create mode 100644 dev-python/wxpython/wxpython-2.4.2.4-r1.ebuild create mode 100644 dev-python/wxpython/wxpython-2.5.3.1.ebuild diff --git a/dev-python/wxpython/ChangeLog b/dev-python/wxpython/ChangeLog index b1c5b6b9d29a..d336c8fbd989 100644 --- a/dev-python/wxpython/ChangeLog +++ b/dev-python/wxpython/ChangeLog @@ -1,6 +1,13 @@ # ChangeLog for dev-python/wxpython # Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/dev-python/wxpython/ChangeLog,v 1.9 2004/09/05 07:43:34 swegener Exp $ +# $Header: /var/cvsroot/gentoo-x86/dev-python/wxpython/ChangeLog,v 1.10 2004/11/13 04:08:20 pythonhead Exp $ + +*wxpython-2.4.2.4-r1 (12 Nov 2004) + + 12 Nov 2004; Rob Cakebread +files/wxpy-config.py, + +files/wxversion.py, +wxpython-2.4.2.4-r1.ebuild, + +wxpython-2.5.3.1.ebuild: + Version bump, retrofitted with SLOTs, bug# 47810 05 Sep 2004; Sven Wegener : Fixed ChangeLog header. diff --git a/dev-python/wxpython/Manifest b/dev-python/wxpython/Manifest index 896587121998..d40ca3343b1c 100644 --- a/dev-python/wxpython/Manifest +++ b/dev-python/wxpython/Manifest @@ -3,12 +3,18 @@ Hash: SHA1 MD5 3b06f1e87549af51d78bb7bfa33728b5 metadata.xml 182 MD5 c3cb3bfb2cf1eb916b0b35ba0cf47c83 wxpython-2.4.2.4.ebuild 2421 -MD5 a71acd3c709ea6b756cfdf216107500e ChangeLog 7890 +MD5 24794c18236f84bd8ee70f836c8197c9 wxpython-2.5.3.1.ebuild 2962 +MD5 fbdbc3dc5f076acb636758694a7e5365 ChangeLog 8134 +MD5 a0777b99b677028abe4942df1db6d5bb wxpython-2.4.2.4-r1.ebuild 3536 +MD5 d1efabd4c6bcd5edd9e61ca070e20ff0 files/digest-wxpython-2.4.2.4-r1 73 +MD5 83d82d05e77457e559cf175012f538e7 files/digest-wxpython-2.5.3.1 74 +MD5 9871fc6fbecdbf191573ec81ac251c31 files/wxversion.py 14397 MD5 d1efabd4c6bcd5edd9e61ca070e20ff0 files/digest-wxpython-2.4.2.4 73 +MD5 960f9cf74312ac4829b96c63739fcfe9 files/wxpy-config.py 3275 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.6 (GNU/Linux) -iD8DBQFBOsOsI1lqEGTUzyQRAqKiAJoCsSa3sYCSztdpTqVu61HAAWK5CQCfSU4M -hy6rRjmmRi++PfeX5AZJ2aI= -=yAmP +iD8DBQFBlYiDz2gxt1z4IGYRAiWtAKChZMo4DKSuJmymBu2oBqr9VjiohgCfQsRe +w9BY3hzHW9SGBlW45xYY+LI= +=Wnof -----END PGP SIGNATURE----- diff --git a/dev-python/wxpython/files/digest-wxpython-2.4.2.4-r1 b/dev-python/wxpython/files/digest-wxpython-2.4.2.4-r1 new file mode 100644 index 000000000000..a2e3b4a3aac2 --- /dev/null +++ b/dev-python/wxpython/files/digest-wxpython-2.4.2.4-r1 @@ -0,0 +1 @@ +MD5 ea4eb68e10a0c2a9be643b35dcb78e41 wxPythonSrc-2.4.2.4.tar.gz 13130195 diff --git a/dev-python/wxpython/files/digest-wxpython-2.5.3.1 b/dev-python/wxpython/files/digest-wxpython-2.5.3.1 new file mode 100644 index 000000000000..c27f171ba09b --- /dev/null +++ b/dev-python/wxpython/files/digest-wxpython-2.5.3.1 @@ -0,0 +1 @@ +MD5 3e3ed31f756a93f2d53725c4e0a18ba9 wxPython-src-2.5.3.1.tar.gz 15906505 diff --git a/dev-python/wxpython/files/wxpy-config.py b/dev-python/wxpython/files/wxpy-config.py new file mode 100755 index 000000000000..5dc424b8e8ac --- /dev/null +++ b/dev-python/wxpython/files/wxpy-config.py @@ -0,0 +1,125 @@ +#!/usr/bin/python + +# Author: Rob Cakebread - pythonhead \@ gentoo.org +# Distributed under the terms of the GNU General Public License v2 + + +""" + This utility lists versions of wxPython you have installed. + It also lets you set the default wxPython version apps will use. + The naming convention used is: + + wx-{WX_GTK_VER}-{ENCODING} + + Examples: + + wx-2.4.2-gtk2-ansi + wx-2.4.2-gtk2-unicode + wx-2.5.3-gtk + + It is strongly suggested you use a 2.4* version as the system default + because most stable wxPython applications are known to work with it. + Applications that only work with 2.5* can use this code to + select 2.5* + + import wxversion + wxversion.select("2.5") + import wx + + See this documentation for more info if you're a wxPython developer: + http://wiki.wxpython.org/index.cgi/MultiVersionInstalls + +""" + +import os +import sys +import optparse + + +PYVER = sys.version[0:3] +SITE_PKGS = "/usr/lib/python%s/site-packages" % PYVER + +ENCODINGS = ["gtk2-ansi", "gtk2-unicode", "gtk-ansi"] +WX_VERSIONS = ["2.4.2", "2.5.3"] + + +def versions_installed(): + """Return list of installed wxPython versions""" + + installed = [] + for v in WX_VERSIONS: + i = 0 + for e in ENCODINGS: + ver = "wx-%s-%s" % (v, ENCODINGS[i]) + if version_exists(ver): + installed.append(ver) + i += 1 + return installed + +def get_default(): + """Return version of system default wxPython""" + wxpath = "%s/wx.pth" % SITE_PKGS + if not os.path.exists(wxpath): + return None + try: + return open(wxpath, "r").read().strip() + except: + return None + + +def print_installed(): + """Print list of wxPython versions installed""" + default = get_default() + all = versions_installed() + print "\nYou have these versions of wxPython installed:\n" + for v in all: + if v == default: + print v, "(System default)" + else: + print v + +def version_exists(version): + """Returns True if version of wxPython is installed""" + if os.path.exists(os.path.join(SITE_PKGS, version)): + return True + +def set_default(version): + """Sets default wxPython version""" + + if os.getuid() != 0: + print "!!! ERROR - You must be root to change the default wxPython version." + sys.exit(1) + + if version_exists(version): + try: + open(os.path.join(SITE_PKGS, "wx.pth"), "w").write(version) + except: + print "!!! ERROR - Failed to set %s as default wxPython version" % version + sys.exit(1) + else: + print "!!! ERROR - Version %s is not installed." % version + sys.exit(1) + + +if __name__ == "__main__": + + optParser = optparse.OptionParser() + + optParser.add_option( "-s", action="store", dest="version", type="string", + help="Set default wxPython version") + + optParser.add_option( "-l", action="store_true", dest="list", + help="List all wxPython versions installed.") + + (options, remainingArgs) = optParser.parse_args() + + if len(sys.argv) == 1: + optParser.print_help() + sys.exit(1) + + if options.list: + print_installed() + sys.exit() + + if options.version: + set_default(options.version) diff --git a/dev-python/wxpython/files/wxversion.py b/dev-python/wxpython/files/wxversion.py new file mode 100644 index 000000000000..bd0202e4030f --- /dev/null +++ b/dev-python/wxpython/files/wxversion.py @@ -0,0 +1,430 @@ +#---------------------------------------------------------------------- +# Name: wxversion +# Purpose: Allows a wxPython program to search for alternate +# installations of the wxPython packages and modify sys.path +# so they will be found when "import wx" is done. +# +# Author: Robin Dunn +# +# Created: 24-Sept-2004 +# RCS-ID: $Id: wxversion.py,v 1.1 2004/11/13 04:08:20 pythonhead Exp $ +# Copyright: (c) 2004 by Total Control Software +# Licence: wxWindows license +#---------------------------------------------------------------------- + +""" +If you have more than one version of wxPython installed this module +allows your application to choose which version of wxPython will be +imported when it does 'import wx'. You use it like this:: + + import wxversion + wxversion.select('2.4') + import wx + +Or additional build options can also be selected, like this:: + + import wxversion + wxversion.select('2.5.3-unicode') + import wx + +Of course the default wxPython version can also be controlled by +setting PYTHONPATH or by editing the wx.pth path configuration file, +but using wxversion will allow an application to manage the version +selection itself rather than depend on the user to setup the +environment correctly. + +It works by searching the sys.path for directories matching wx-* and +then comparing them to what was passed to the select function. If a +match is found then that path is inserted into sys.path. + +NOTE: If you are making a 'bundle' of your application with a tool +like py2exe then you should *not* use the wxversion module since it +looks at the filesystem for the directories on sys.path, it will fail +in a bundled environment. Instead you should simply ensure that the +version of wxPython that you want is found by default on the sys.path +when making the bundled version by setting PYTHONPATH. Then that +version will be included in your bundle and your app will work as +expected. Py2exe and the others usually have a way to tell at runtime +if they are running from a bundle or running raw, so you can check +that and only use wxversion if needed. For example, for py2exe:: + + if not hasattr(sys, 'frozen'): + import wxversion + wxversion.select('2.5') + import wx + +More documentation on wxversion and multi-version installs can be +found at: http://wiki.wxpython.org/index.cgi/MultiVersionInstalls + +""" + +import sys, os, glob, fnmatch + + +_selected = None +class VersionError(Exception): + pass + +#---------------------------------------------------------------------- + +def select(versions): + """ + Search for a wxPython installation that matches version. If one + is found then sys.path is modified so that version will be + imported with a 'import wx', otherwise a VersionError exception is + raised. This funciton should only be caled once at the begining + of the application before wxPython is imported. + + :param version: Specifies the version to look for, it can + either be a string or a list of strings. Each + string is compared to the installed wxPythons + and the best match is inserted into the + sys.path, allowing an 'import wx' to find that + version. + + The version string is composed of the dotted + version number (at least 2 of the 4 components) + optionally followed by hyphen ('-') separated + options (wx port, unicode/ansi, flavour, etc.) A + match is determined by how much of the installed + version matches what is given in the version + parameter. If the version number components don't + match then the score is zero, otherwise the score + is increased for every specified optional component + that is specified and that matches. + """ + if type(versions) == str: + versions = [versions] + + global _selected + if _selected is not None: + # A version was previously selected, ensure that it matches + # this new request + for ver in versions: + if _selected.Score(_wxPackageInfo(ver)) > 0: + return + # otherwise, raise an exception + raise VersionError("A previously selected wx version does not match the new request.") + + # If we get here then this is the first time wxversion is used, + # ensure that wxPython hasn't been imported yet. + if sys.modules.has_key('wx') or sys.modules.has_key('wxPython'): + raise VersionError("wxversion.select() must be called before wxPython is imported") + + # Look for a matching version and manipulate the sys.path as + # needed to allow it to be imported. + installed = _find_installed(True) + bestMatch = _get_best_match(installed, versions) + + if bestMatch is None: + raise VersionError("Requested version of wxPython not found") + + sys.path.insert(0, bestMatch.pathname) + _selected = bestMatch + +#---------------------------------------------------------------------- + +UPDATE_URL = "http://wxPython.org/" +#UPDATE_URL = "http://sourceforge.net/project/showfiles.php?group_id=10718" + + +def ensureMinimal(minVersion): + """ + Checks to see if the default version of wxPython is greater-than + or equal to `minVersion`. If not then it will try to find an + installed version that is >= minVersion. If none are available + then a message is displayed that will inform the user and will + offer to open their web browser to the wxPython downloads page, + and will then exit the application. + """ + assert type(minVersion) == str + + # ensure that wxPython hasn't been imported yet. + if sys.modules.has_key('wx') or sys.modules.has_key('wxPython'): + raise VersionError("wxversion.ensureMinimal() must be called before wxPython is imported") + + bestMatch = None + minv = _wxPackageInfo(minVersion) + defaultPath = _find_default() + if defaultPath: + defv = _wxPackageInfo(defaultPath, True) + if defv >= minv: + bestMatch = defv + + if bestMatch is None: + installed = _find_installed() + if installed: + # The list is in reverse sorted order, so if the first one is + # big enough then choose it + if installed[0] >= minv: + bestMatch = installed[0] + + if bestMatch is None: + import wx, webbrowser + versions = "\n".join([" "+ver for ver in getInstalled()]) + app = wx.PySimpleApp() + result = wx.MessageBox("This application requires a version of wxPython " + "greater than or equal to %s, but a matching version " + "was not found.\n\n" + "You currently have these version(s) installed:\n%s\n\n" + "Would you like to download a new version of wxPython?\n" + % (minVersion, versions), + "wxPython Upgrade Needed", style=wx.YES_NO) + if result == wx.YES: + webbrowser.open(UPDATE_URL) + app.MainLoop() + sys.exit() + + sys.path.insert(0, bestMatch.pathname) + _selected = bestMatch + + +#---------------------------------------------------------------------- + +def checkInstalled(versions): + """ + Check if there is a version of wxPython installed that matches one + of the versions given. Returns True if so, False if not. This + can be used to determine if calling `select` will succeed or not. + + :param version: Same as in `select`, either a string or a list + of strings specifying the version(s) to check + for. + """ + + if type(versions) == str: + versions = [versions] + installed = _find_installed() + bestMatch = _get_best_match(installed, versions) + return bestMatch is not None + +#---------------------------------------------------------------------- + +def getInstalled(): + """ + Returns a list of strings representing the installed wxPython + versions that are found on the system. + """ + installed = _find_installed() + return [os.path.basename(p.pathname)[3:] for p in installed] + + + +#---------------------------------------------------------------------- +# private helpers... + +def _get_best_match(installed, versions): + bestMatch = None + bestScore = 0 + for pkg in installed: + for ver in versions: + score = pkg.Score(_wxPackageInfo(ver)) + if score > bestScore: + bestMatch = pkg + bestScore = score + return bestMatch + + +_pattern = "wx-[0-9].*" +def _find_installed(removeExisting=False): + installed = [] + toRemove = [] + for pth in sys.path: + + # empty means to look in the current dir + if not pth: + pth = '.' + + # skip it if it's not a package dir + if not os.path.isdir(pth): + continue + + base = os.path.basename(pth) + + # if it's a wx path that's already in the sys.path then mark + # it for removal and then skip it + if fnmatch.fnmatchcase(base, _pattern): + toRemove.append(pth) + continue + + # now look in the dir for matching subdirs + for name in glob.glob(os.path.join(pth, _pattern)): + # make sure it's a directory + if not os.path.isdir(name): + continue + # and has a wx subdir + if not os.path.exists(os.path.join(name, 'wx')): + continue + installed.append(_wxPackageInfo(name, True)) + + if removeExisting: + for rem in toRemove: + del sys.path[sys.path.index(rem)] + + installed.sort() + installed.reverse() + return installed + + +# Scan the sys.path looking for either a directory matching _pattern, +# or a wx.pth file +def _find_default(): + for pth in sys.path: + # empty means to look in the current dir + if not pth: + pth = '.' + + # skip it if it's not a package dir + if not os.path.isdir(pth): + continue + + # does it match the pattern? + base = os.path.basename(pth) + if fnmatch.fnmatchcase(base, _pattern): + return pth + + for pth in sys.path: + if not pth: + pth = '.' + if not os.path.isdir(pth): + continue + if os.path.exists(os.path.join(pth, 'wx.pth')): + base = open(os.path.join(pth, 'wx.pth')).read() + return os.path.join(pth, base) + + return None + + +class _wxPackageInfo(object): + def __init__(self, pathname, stripFirst=False): + self.pathname = pathname + base = os.path.basename(pathname) + segments = base.split('-') + if stripFirst: + segments = segments[1:] + self.version = tuple([int(x) for x in segments[0].split('.')]) + self.options = segments[1:] + + + def Score(self, other): + score = 0 + + # whatever number of version components given in other must + # match exactly + minlen = min(len(self.version), len(other.version)) + if self.version[:minlen] != other.version[:minlen]: + return 0 + score += 1 + + for opt in other.options: + if opt in self.options: + score += 1 + return score + + + + def __lt__(self, other): + return self.version < other.version or \ + (self.version == other.version and self.options < other.options) + def __le__(self, other): + return self.version <= other.version or \ + (self.version == other.version and self.options <= other.options) + + def __gt__(self, other): + return self.version > other.version or \ + (self.version == other.version and self.options > other.options) + def __ge__(self, other): + return self.version >= other.version or \ + (self.version == other.version and self.options >= other.options) + + def __eq__(self, other): + return self.version == other.version and self.options == other.options + + + +#---------------------------------------------------------------------- + +if __name__ == '__main__': + import pprint + + #ensureMinimal('2.5') + #pprint.pprint(sys.path) + #sys.exit() + + + def test(version): + # setup + savepath = sys.path[:] + + #test + select(version) + print "Asked for %s:\t got: %s" % (version, sys.path[0]) + pprint.pprint(sys.path) + print + + # reset + sys.path = savepath[:] + global _selected + _selected = None + + + # make some test dirs + names = ['wx-2.4', + 'wx-2.5.2', + 'wx-2.5.2.9-gtk2-unicode', + 'wx-2.5.2.9-gtk-ansi', + 'wx-2.5.1', + 'wx-2.5.2.8-gtk2-unicode', + 'wx-2.5.3'] + for name in names: + d = os.path.join('/tmp', name) + os.mkdir(d) + os.mkdir(os.path.join(d, 'wx')) + + # setup sys.path to see those dirs + sys.path.append('/tmp') + + + # now run some tests + pprint.pprint( getInstalled()) + print checkInstalled("2.4") + print checkInstalled("2.5-unicode") + print checkInstalled("2.99-bogus") + print "Current sys.path:" + pprint.pprint(sys.path) + print + + test("2.4") + test("2.5") + test("2.5-gtk2") + test("2.5.2") + test("2.5-ansi") + test("2.5-unicode") + + # There isn't a unicode match for this one, but it will give the best + # available 2.4. Should it give an error instead? I don't think so... + test("2.4-unicode") + + # Try asking for multiple versions + test(["2.6", "2.5.3", "2.5.2-gtk2"]) + + try: + # expecting an error on this one + test("2.6") + except VersionError, e: + print "Asked for 2.6:\t got Exception:", e + + # check for exception when incompatible versions are requested + try: + select("2.4") + select("2.5") + except VersionError, e: + print "Asked for incompatible versions, got Exception:", e + + # cleanup + for name in names: + d = os.path.join('/tmp', name) + os.rmdir(os.path.join(d, 'wx')) + os.rmdir(d) + + diff --git a/dev-python/wxpython/wxpython-2.4.2.4-r1.ebuild b/dev-python/wxpython/wxpython-2.4.2.4-r1.ebuild new file mode 100644 index 000000000000..b05bd599c9a8 --- /dev/null +++ b/dev-python/wxpython/wxpython-2.4.2.4-r1.ebuild @@ -0,0 +1,119 @@ +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-python/wxpython/wxpython-2.4.2.4-r1.ebuild,v 1.1 2004/11/13 04:08:20 pythonhead Exp $ + +inherit eutils wxwidgets python + +MY_P="${P/wxpython-/wxPythonSrc-}" +S="${WORKDIR}/${MY_P}/wxPython" +DESCRIPTION="A blending of the wxWindows C++ class library with Python" +HOMEPAGE="http://www.wxpython.org/" +SRC_URI="mirror://sourceforge/wxpython/${MY_P}.tar.gz" + +LICENSE="wxWinLL-3" +SLOT="2.4" +KEYWORDS="~x86 ~ppc ~sparc ~alpha ~arm ~amd64 ~ia64 ~hppa ~ppc64" +IUSE="gtk2 unicode opengl tiff jpeg png" + +RDEPEND=">=dev-lang/python-2.1 + =x11-libs/wxGTK-2.4.2* + gtk2? ( >=x11-libs/gtk+-2.0 + >=x11-libs/pango-1.2 + >=dev-libs/glib-2.0 ) + unicode? ( >=x11-libs/gtk+-2.0 + >=x11-libs/pango-1.2 + >=dev-libs/glib-2.0 ) + !gtk2? ( =x11-libs/gtk+-1.2* + =dev-libs/glib-1.2* ) + png? ( media-libs/libpng ) + jpeg? ( media-libs/jpeg ) + tiff? ( media-libs/tiff ) + >=sys-libs/zlib-1.1.4 + opengl? ( >=dev-python/pyopengl-2.0.0.44 )" + +DEPEND="${RDEPEND} + gtk2? ( dev-util/pkgconfig )" + +pkg_setup() { + einfo "You can now have gtk, gtk2 and unicode versions of wxGTK" + einfo "simultaneously installed as of >=wxGTK-2.4.2-r2." + einfo "This means you can have wxpython installed using any one of those" + einfo "versions by setting gtk2, unicode, or -gtk2 (for gtk1) in USE" + if use unicode; then + ! use gtk2 && die "You must put gtk2 in your USE if you need unicode support" + fi +} + +src_compile() { + local mypyconf + + if ! use gtk2; then + need-wxwidgets gtk || die "Emerge wxGTK with -no_wxgtk1 in USE" + elif use unicode; then + need-wxwidgets unicode || die "Emerge wxGTK with unicode in USE" + else + need-wxwidgets gtk2 || die "Emerge wxGTK with gtk2 in USE" + fi + + use opengl \ + && mypyconf="${mypyconf} BUILD_GLCANVAS=1" \ + || mypyconf="${mypyconf} BUILD_GLCANVAS=0" + + use gtk2 \ + && mypyconf="${mypyconf} WXPORT=gtk2" \ + || mypyconf="${mypyconf} WXPORT=gtk" + + use unicode && mypyconf="${mypyconf} UNICODE=1" + + python setup.py ${mypyconf} build || die "build failed" +} + +src_install() { + python_version + local mypyconf + local dest + local wx_name + local site_pkgs=/usr/lib/python${PYVER}/site-packages + + use opengl \ + && mypyconf="${mypyconf} BUILD_GLCANVAS=1" \ + || mypyconf="${mypyconf} BUILD_GLCANVAS=0" + use gtk2 \ + && mypyconf="${mypyconf} WXPORT=gtk2" \ + || mypyconf="${mypyconf} WXPORT=gtk" + use unicode && mypyconf="${mypyconf} UNICODE=1" + + python setup.py ${mypyconf} install --prefix=/usr --root=${D} || die + + # This can all be removed when 2.4.3 is released: + # Future: Make sure we don't clobber existing wxversion.py or wx.pth + # from SLOT'd versions. + if use unicode; then + wx_name=wx-${PV:0:5}-gtk2-unicode + elif use gtk2; then + wx_name=wx-${PV:0:5}-gtk2-ansi + else + wx_name=wx-${PV:0:5}-gtk-ansi + fi + dest=${site_pkgs}/${wx_name} + dodir ${site_pkgs} + dodir ${dest} + mv ${D}/${site_pkgs}/wx ${D}/${dest} + mv ${D}/${site_pkgs}/wxPython ${D}/${dest} + if [ ! -e "${site_pkgs}/wx.pth" ]; then + echo ${wx_name} > ${D}/${site_pkgs}/wx.pth || \ + die "Couldn't create wx.pth" + einfo "Setting ${wx_name} as system default wxPython" + echo ${wx_name} > ${D}/${site_pkgs}/wx.pth || \ + die "Couldn't create wx.pth" + fi + if [ ! -e "${site_pkgs}/wxversion.py" ]; then + cp ${FILESDIR}/wxversion.py ${D}/${site_pkgs} || \ + die "Couldn't copy wxversion.py" + fi + if [ ! -e "${site_pkgs}/wxpy-config.py" ]; then + cp ${FILESDIR}/wxpy-config.py ${D}/${site_pkgs}/ || \ + die "Couldn't copy wxpy-config.py" + fi +} + diff --git a/dev-python/wxpython/wxpython-2.5.3.1.ebuild b/dev-python/wxpython/wxpython-2.5.3.1.ebuild new file mode 100644 index 000000000000..2254cb5affdf --- /dev/null +++ b/dev-python/wxpython/wxpython-2.5.3.1.ebuild @@ -0,0 +1,108 @@ +# Copyright 1999-2004 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-python/wxpython/wxpython-2.5.3.1.ebuild,v 1.1 2004/11/13 04:08:20 pythonhead Exp $ + +inherit wxwidgets + +MY_P="${P/wxpython-/wxPython-src-}" +S="${WORKDIR}/${MY_P}/wxPython" +DESCRIPTION="A blending of the wxWindows C++ class library with Python" +HOMEPAGE="http://www.wxpython.org/" +SRC_URI="mirror://sourceforge/wxpython/${MY_P}.tar.gz" + +LICENSE="wxWinLL-3" +SLOT="2.5" +KEYWORDS="~x86 ~ppc ~sparc ~alpha ~arm ~amd64 ~ia64 ~hppa" +IUSE="gtk2 unicode opengl tiff jpeg png" + +RDEPEND=">=dev-lang/python-2.1 + =x11-libs/wxGTK-2.5.3* + !=x11-libs/gtk+-2.0 + >=x11-libs/pango-1.2 + >=dev-libs/glib-2.0 ) + unicode? ( >=x11-libs/gtk+-2.0 + >=x11-libs/pango-1.2 + >=dev-libs/glib-2.0 ) + !gtk2? ( =x11-libs/gtk+-1.2* + =dev-libs/glib-1.2* ) + png? ( media-libs/libpng ) + jpeg? ( media-libs/jpeg ) + tiff? ( media-libs/tiff ) + >=sys-libs/zlib-1.1.4 + opengl? ( >=dev-python/pyopengl-2.0.0.44 )" + +DEPEND="${RDEPEND} + gtk2? ( dev-util/pkgconfig ) + sys-apps/sed" + +pkg_setup() { + einfo "You can now have gtk, gtk2 and unicode versions of wxGTK" + einfo "simultaneously installed as of >=wxGTK-2.4.2-r2." + einfo "This means you can have wxpython installed using any one of those" + einfo "versions by setting gtk2, unicode, or -gtk2 (for gtk1) in USE" + if use unicode; then + ! use gtk2 && die "You must put gtk2 in your USE if you need unicode support" + fi +} + +src_unpack() { + unpack ${A} + cd ${S} + sed -i "s:cflags.append('-O3'):pass:" config.py || die +} + +src_compile() { + local mypyconf + export WX_GTK_VER="2.5" + if ! use gtk2; then + need-wxwidgets gtk || die "Emerge wxGTK with -no_wxgtk1 in USE" + elif use unicode; then + need-wxwidgets unicode || die "Emerge wxGTK with unicode in USE" + else + need-wxwidgets gtk2 || die "Emerge wxGTK with gtk2 in USE" + fi + mypyconf="${mypyconf} WX_CONFIG=${WX_CONFIG}" + use opengl \ + && mypyconf="${mypyconf} BUILD_GLCANVAS=1" \ + || mypyconf="${mypyconf} BUILD_GLCANVAS=0" + + use gtk2 \ + && mypyconf="${mypyconf} WXPORT=gtk2" \ + || mypyconf="${mypyconf} WXPORT=gtk" + + use unicode && mypyconf="${mypyconf} UNICODE=1" + + python setup.py ${mypyconf} build || die "build failed" +} + +src_install() { + python_version + local mypyconf + local site_pkgs=/usr/lib/python${PYVER}/site-packages + + use opengl \ + && mypyconf="${mypyconf} BUILD_GLCANVAS=1" \ + || mypyconf="${mypyconf} BUILD_GLCANVAS=0" + + use gtk2 \ + && mypyconf="${mypyconf} WXPORT=gtk2" \ + || mypyconf="${mypyconf} WXPORT=gtk" + + use unicode && mypyconf="${mypyconf} UNICODE=1" + + python setup.py ${mypyconf} install --prefix=/usr --root=${D} || die + + # Don't clobber existing versions from SLOT'd version + if [ -e "${site_pkgs}/wxversion.py" ]; then + rm ${D}/${site_pkgs}/wxversion.py + fi + if [ -e "${site_pkgs}/wx.pth" ]; then + rm ${D}/${site_pkgs}/wx.pth + fi + if [ ! -e "${site_pkgs}/wxpy-config.py" ]; then + cp ${FILESDIR}/wxpy-config.py ${D}/${site_pkgs}/ || \ + die "Couldn't copy wxpy-config.py" + fi +} + -- 2.26.2