From e20ef77f54ad0cae0fa0f9279cd6b6ad0f718db0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Wed, 17 Mar 2010 11:10:15 +0000 Subject: [PATCH 01/46] - add missing module (#573961) --- wxPython-2.8.10.1-ebmlib.patch | 1417 ++++++++++++++++++++++++++++++++ wxPython.spec | 8 +- 2 files changed, 1424 insertions(+), 1 deletion(-) create mode 100644 wxPython-2.8.10.1-ebmlib.patch diff --git a/wxPython-2.8.10.1-ebmlib.patch b/wxPython-2.8.10.1-ebmlib.patch new file mode 100644 index 0000000..7b4c904 --- /dev/null +++ b/wxPython-2.8.10.1-ebmlib.patch @@ -0,0 +1,1417 @@ +diff -Naur wxPython-src-2.8.10.1-orig/wxPython/setup.py wxPython-src-2.8.10.1/wxPython/setup.py +--- wxPython-src-2.8.10.1-orig/wxPython/setup.py 2009-06-06 14:43:00.000000000 -0400 ++++ wxPython-src-2.8.10.1/wxPython/setup.py 2009-06-06 14:43:55.000000000 -0400 +@@ -882,6 +882,7 @@ + 'wx.tools.Editra', + 'wx.tools.Editra.src', + 'wx.tools.Editra.src.autocomp', ++ 'wx.tools.Editra.src.ebmlib', + 'wx.tools.Editra.src.eclib', + 'wx.tools.Editra.src.extern', + 'wx.tools.Editra.src.syntax', +diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/__init__.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/__init__.py +--- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/__init__.py 1969-12-31 19:00:00.000000000 -0500 ++++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/__init__.py 2009-06-06 03:48:10.000000000 -0400 +@@ -0,0 +1,33 @@ ++############################################################################### ++# Name: __init__.py # ++# Purpose: Editra Buisness Model Library # ++# Author: Cody Precord # ++# Copyright: (c) 2009 Cody Precord # ++# Licence: wxWindows Licence # ++############################################################################### ++ ++""" ++Editra Buisness Model Library: ++ ++""" ++ ++__author__ = "Cody Precord " ++__cvsid__ = "$Id: __init__.py 60840 2009-05-31 16:00:50Z CJP $" ++__revision__ = "$Revision: 60840 $" ++ ++#-----------------------------------------------------------------------------# ++ ++# Text Utils ++from searcheng import * ++from fchecker import * ++from fileutil import * ++from fileimpl import * ++ ++from backupmgr import * ++ ++# Storage Classes ++from histcache import * ++from clipboard import * ++ ++# Misc ++from miscutil import * +diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/backupmgr.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/backupmgr.py +--- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/backupmgr.py 1969-12-31 19:00:00.000000000 -0500 ++++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/backupmgr.py 2009-06-06 03:48:10.000000000 -0400 +@@ -0,0 +1,160 @@ ++############################################################################### ++# Name: backupmgr.py # ++# Purpose: File Backup Manager # ++# Author: Cody Precord # ++# Copyright: (c) 2009 Cody Precord # ++# Licence: wxWindows Licence # ++############################################################################### ++ ++""" ++Editra Buisness Model Library: FileBackupMgr ++ ++Helper class for managing and creating backups of files. ++ ++""" ++ ++__author__ = "Cody Precord " ++__cvsid__ = "$Id: backupmgr.py 60581 2009-05-10 02:56:00Z CJP $" ++__revision__ = "$Revision: 60581 $" ++ ++__all__ = [ 'FileBackupMgr', ] ++ ++#-----------------------------------------------------------------------------# ++# Imports ++import os ++import shutil ++ ++# Local Imports ++import fileutil ++import fchecker ++ ++#-----------------------------------------------------------------------------# ++ ++class FileBackupMgr(object): ++ """File backup creator and manager""" ++ def __init__(self, header=None, template=u"%s~"): ++ """Create a BackupManager ++ @keyword header: header to id backups with (Text files only!!) ++ @keyword template: template string for naming backup file with ++ ++ """ ++ object.__init__(self) ++ ++ # Attributes ++ self.checker = fchecker.FileTypeChecker() ++ self.header = header # Backup id header ++ self.template = template # Filename template ++ ++ def _CheckHeader(self, fname): ++ """Check if the backup file has a header that matches the ++ header used to identify backup files. ++ @param fname: name of file to check ++ @return: bool (True if header is ok, False otherwise) ++ ++ """ ++ isok = False ++ try: ++ handle = open(fname) ++ line = handle.readline() ++ isok = line.startswith(self.header) ++ except: ++ isok = False ++ finally: ++ handle.close() ++ return isok ++ ++ def GetBackupFilename(self, fname): ++ """Get the unique name for the files backup copy ++ @param fname: string (file path) ++ @return: string ++ ++ """ ++ rname = self.template % fname ++ if self.header is not None and \ ++ not self.checker.IsBinary(fname) and \ ++ os.path.exists(rname): ++ # Make sure that the template backup name does not match ++ # an existing file that is not a backup file. ++ while not self._CheckHeader(rname): ++ rname = self.template % rname ++ ++ return rname ++ ++ def GetBackupWriter(self, fileobj): ++ """Create a backup filewriter method to backup a files contents ++ with. ++ @param fileobj: object implementing fileimpl.FileObjectImpl interface ++ @return: callable(text) to create backup with ++ ++ """ ++ nfile = fileobj.Clone() ++ fname = self.GetBackupFilename(nfile.GetPath()) ++ nfile.SetPath(fname) ++ # Write the header if it is enabled ++ if self.header is not None and not self.checker.IsBinary(fname): ++ nfile.Write(self.header + os.linesep) ++ return nfile.Write ++ ++ def HasBackup(self, fname): ++ """Check if a given file has a backup file available or not ++ @param fname: string (file path) ++ ++ """ ++ backup = self.GetBackupFilename(fname) ++ return os.path.exists(backup) ++ ++ def IsBackupNewer(self, fname): ++ """Is the backup of this file newer than the saved version ++ of the file? ++ @param fname: string (file path) ++ @return: bool ++ ++ """ ++ backup = self.GetBackupFilename(fname) ++ if os.path.exists(fname) and os.path.exists(backup): ++ mod1 = fileutil.GetFileModTime(backup) ++ mod2 = fileutil.GetFileModTime(fname) ++ return mod1 > mod2 ++ else: ++ return False ++ ++ def MakeBackupCopy(self, fname): ++ """Create a backup copy of the given filename ++ @param fname: string (file path) ++ @return: bool (True == Success) ++ ++ """ ++ backup = self.GetBackupFilename(fname) ++ try: ++ if os.path.exists(backup): ++ os.remove(backup) ++ ++ shutil.copy2(fname, backup) ++ except: ++ return False ++ else: ++ return True ++ ++ def MakeBackupCopyAsync(self, fname): ++ """Do the backup asyncronously ++ @param fname: string (file path) ++ @todo: Not implemented yet ++ ++ """ ++ raise NotImplementedError("TODO: implement once threadpool is finished") ++ ++ def SetBackupFileTemplate(self, tstr): ++ """Set the filename template for generating the backupfile name ++ @param tstr: template string i.e) %s~ ++ ++ """ ++ assert tstr.count("%s") == 1, "Format statment must only have one arg" ++ self.template = tstr ++ ++ def SetHeader(self, header): ++ """Set the header string for identifying a file as a backup ++ @param header: string (single line only) ++ ++ """ ++ assert '\n' not in header, "Header must only be a single line" ++ self.header = header +diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/clipboard.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/clipboard.py +--- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/clipboard.py 1969-12-31 19:00:00.000000000 -0500 ++++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/clipboard.py 2009-06-06 03:48:10.000000000 -0400 +@@ -0,0 +1,135 @@ ++############################################################################### ++# Name: histcache.py # ++# Purpose: History Cache # ++# Author: Cody Precord # ++# Copyright: (c) 2009 Cody Precord # ++# Licence: wxWindows Licence # ++############################################################################### ++ ++""" ++Editra Buisness Model Library: Clipboard ++ ++Clipboard helper class ++ ++""" ++ ++__author__ = "Hasan Aljudy" ++__cvsid__ = "$Id: clipboard.py 60681 2009-05-17 10:41:42Z CJP $" ++__revision__ = "$Revision: 60681 $" ++ ++__all__ = [ 'Clipboard',] ++ ++#-----------------------------------------------------------------------------# ++# Imports ++import wx ++ ++#-----------------------------------------------------------------------------# ++ ++class Clipboard(object): ++ """Multiple clipboards as named registers (as per vim) ++ ++ " is an alias for system clipboard and is also the default clipboard. ++ ++ @note: The only way to access multiple clipboards right now is through ++ Normal mode when Vi(m) emulation is enabled. ++ ++ """ ++ NAMES = list(u'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_') ++ registers = {} ++ current = u'"' ++ ++ @classmethod ++ def Switch(cls, reg): ++ """Switch to register ++ @param reg: char ++ ++ """ ++ if reg in cls.NAMES or reg == u'"': ++ cls.current = reg ++ else: ++ raise Exception(u"Switched to invalid register name") ++ ++ @classmethod ++ def NextFree(cls, reg): ++ """Switch to the next free register. If current register is free, no ++ switching happens. ++ ++ A free register is one that's either unused or has no content ++ ++ @param reg: char ++ @note: This is not used yet. ++ ++ """ ++ if cls.Get() == u'': ++ return ++ ++ for name in cls.NAMES: ++ if cls.registers.get(name, u'') == u'': ++ cls.Switch(name) ++ break ++ ++ @classmethod ++ def AllUsed(cls): ++ """Get a dictionary mapping all used clipboards (plus the system ++ clipboard) to their content. ++ ++ @note: This is not used yet. ++ ++ """ ++ cmd_map = { u'"': cls.SystemGet() } ++ for name in cls.NAMES: ++ if cls.registers.get(name, u''): ++ cmd_map[name] = cls.registers[name] ++ return cmd_map ++ ++ @classmethod ++ def Get(cls): ++ """Get the content of the current register. Used for pasting""" ++ if cls.current == u'"': ++ return cls.SystemGet() ++ else: ++ return cls.registers.get( cls.current, u'' ) ++ ++ @classmethod ++ def Set(cls, text): ++ """Set the content of the current register ++ @param text: string ++ ++ """ ++ if cls.current == u'"': ++ return cls.SystemSet(text) ++ else: ++ cls.registers[cls.current] = text ++ ++ @classmethod ++ def SystemGet(cls): ++ """Get text from the system clipboard ++ @return: string ++ ++ """ ++ text = None ++ if wx.TheClipboard.Open(): ++ if wx.TheClipboard.IsSupported(wx.DataFormat(wx.DF_TEXT)): ++ text = wx.TextDataObject() ++ wx.TheClipboard.GetData(text) ++ ++ wx.TheClipboard.Close() ++ ++ if text is not None: ++ return text.GetText() ++ else: ++ return u'' ++ ++ @classmethod ++ def SystemSet(cls, text): ++ """Set text into the system clipboard ++ @param text: string ++ @return: bool ++ ++ """ ++ ok = False ++ if wx.TheClipboard.Open(): ++ wx.TheClipboard.SetData(wx.TextDataObject(text)) ++ wx.TheClipboard.Close() ++ ok = True ++ return ok +\ No newline at end of file +diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fchecker.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fchecker.py +--- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fchecker.py 1969-12-31 19:00:00.000000000 -0500 ++++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fchecker.py 2009-06-06 03:48:10.000000000 -0400 +@@ -0,0 +1,82 @@ ++############################################################################### ++# Name: fchecker.py # ++# Purpose: Filetype checker object. # ++# Author: Cody Precord # ++# Copyright: (c) 2009 Cody Precord # ++# Licence: wxWindows Licence # ++############################################################################### ++ ++""" ++Editra Buisness Model Library: FileTypeChecker ++ ++Helper class for checking what kind of a content a file contains. ++ ++""" ++ ++__author__ = "Cody Precord " ++__cvsid__ = "$Id: fchecker.py 60505 2009-05-03 19:18:21Z CJP $" ++__revision__ = "$Revision: 60505 $" ++ ++__all__ = [ 'FileTypeChecker', ] ++ ++#-----------------------------------------------------------------------------# ++# Imports ++import os ++ ++#-----------------------------------------------------------------------------# ++ ++class FileTypeChecker(object): ++ """File type checker and recognizer""" ++ TXTCHARS = ''.join(map(chr, [7, 8, 9, 10, 12, 13, 27] + range(0x20, 0x100))) ++ ALLBYTES = ''.join(map(chr, range(256))) ++ ++ def __init__(self, preread=4096): ++ """Create the FileTypeChecker ++ @keyword preread: number of bytes to read for checking file type ++ ++ """ ++ object.__init__(self) ++ ++ # Attributes ++ self._preread = preread ++ ++ @staticmethod ++ def _GetHandle(fname): ++ """Get a file handle for reading ++ @param fname: filename ++ @return: file object or None ++ ++ """ ++ try: ++ handle = open(fname, 'rb') ++ except: ++ handle = None ++ return handle ++ ++ def IsBinary(self, fname): ++ """Is the file made up of binary data ++ @param fname: filename to check ++ @return: bool ++ ++ """ ++ handle = self._GetHandle(fname) ++ if handle is not None: ++ bytes = handle.read(self._preread) ++ handle.close() ++ nontext = bytes.translate(FileTypeChecker.ALLBYTES, ++ FileTypeChecker.TXTCHARS) ++ return bool(nontext) ++ else: ++ return False ++ ++ def IsReadableText(self, fname): ++ """Is the given path readable as text. Will return True if the ++ file is accessable by current user and is plain text. ++ @param fname: filename ++ @return: bool ++ ++ """ ++ f_ok = False ++ if os.access(fname, os.R_OK): ++ f_ok = not self.IsBinary(fname) ++ return f_ok +diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fileimpl.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fileimpl.py +--- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fileimpl.py 1969-12-31 19:00:00.000000000 -0500 ++++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fileimpl.py 2009-06-06 03:48:10.000000000 -0400 +@@ -0,0 +1,215 @@ ++############################################################################### ++# Name: Cody Precord # ++# Purpose: File Object Interface Implementation # ++# Author: Cody Precord # ++# Copyright: (c) 2009 Cody Precord # ++# License: wxWindows License # ++############################################################################### ++ ++""" ++Editra Buisness Model Library: FileObjectImpl ++ ++Implementation of a file object interface class. Objects and methods inside ++of this library expect a file object that derives from this interface. ++ ++""" ++ ++__author__ = "Cody Precord " ++__svnid__ = "$Id: fileimpl.py 60582 2009-05-10 04:24:30Z CJP $" ++__revision__ = "$Revision: 60582 $" ++ ++#--------------------------------------------------------------------------# ++# Imports ++import os ++ ++# Editra Buisness Model Imports ++import fileutil ++ ++#--------------------------------------------------------------------------# ++ ++class FileObjectImpl(object): ++ """File Object Interface implementation base class""" ++ def __init__(self, path=u'', modtime=0): ++ object.__init__(self) ++ ++ # Attributes ++ self._path = path ++ self._modtime = modtime ++ ++ self._handle = None ++ self.open = False ++ ++ self.last_err = None ++ ++ def ClearLastError(self): ++ """Reset the error marker on this file""" ++ del self.last_err ++ self.last_err = None ++ ++ def Clone(self): ++ """Clone the file object ++ @return: FileObject ++ ++ """ ++ fileobj = FileObjectImpl(self._path, self._modtime) ++ fileobj.SetLastError(self.last_err) ++ return fileobj ++ ++ def Close(self): ++ """Close the file handle ++ @note: this is normally done automatically after a read/write operation ++ ++ """ ++ try: ++ self._handle.close() ++ except: ++ pass ++ ++ self.open = False ++ ++ def DoOpen(self, mode): ++ """Opens and creates the internal file object ++ @param mode: mode to open file in ++ @return: True if opened, False if not ++ @postcondition: self._handle is set to the open handle ++ ++ """ ++ if not len(self._path): ++ return False ++ ++ try: ++ file_h = open(self._path, mode) ++ except (IOError, OSError), msg: ++ self.last_err = msg ++ return False ++ else: ++ self._handle = file_h ++ self.open = True ++ return True ++ ++ def GetExtension(self): ++ """Get the files extension if it has one else simply return the ++ filename minus the path. ++ @return: string file extension (no dot) ++ ++ """ ++ fname = os.path.split(self._path) ++ return fname[-1].split(os.extsep)[-1].lower() ++ ++ def GetHandle(self): ++ """Get this files handle""" ++ return self._handle ++ ++ def GetLastError(self): ++ """Return the last error that occured when using this file ++ @return: err traceback or None ++ ++ """ ++ return unicode(self.last_err).replace("u'", "'") ++ ++ def GetModtime(self): ++ """Get the timestamp of this files last modification""" ++ return self._modtime ++ ++ def GetPath(self): ++ """Get the path of the file ++ @return: string ++ ++ """ ++ return self._path ++ ++ def GetSize(self): ++ """Get the size of the file ++ @return: int ++ ++ """ ++ if self._path: ++ return fileutil.GetFileSize(self._path) ++ else: ++ return 0 ++ ++ @property ++ def Handle(self): ++ """Raw file handle property""" ++ return self._handle ++ ++ def IsOpen(self): ++ """Check if file is open or not ++ @return: bool ++ ++ """ ++ return self.open ++ ++ def IsReadOnly(self): ++ """Is the file Read Only ++ @return: bool ++ ++ """ ++ if os.path.exists(self._path): ++ return not os.access(self._path, os.R_OK|os.W_OK) ++ else: ++ return False ++ ++ @property ++ def Modtime(self): ++ """File modification time propery""" ++ return self.GetModtime() ++ ++ @property ++ def ReadOnly(self): ++ """Is the file read only?""" ++ return self.IsReadOnly() ++ ++ def ResetAll(self): ++ """Reset all file attributes""" ++ self._handle = None ++ self.open = False ++ self._path = u'' ++ self._modtime = 0 ++ self.last_err = None ++ ++ def SetLastError(self, err): ++ """Set the last error ++ @param err: exception object / msg ++ ++ """ ++ self.last_err = err ++ ++ def SetPath(self, path): ++ """Set the path of the file ++ @param path: absolute path to file ++ ++ """ ++ self._path = path ++ ++ def SetModTime(self, mtime): ++ """Set the modtime of this file ++ @param mtime: long int to set modtime to ++ ++ """ ++ self._modtime = mtime ++ ++ #--- SHould be overridden by subclass ---# ++ ++ def Read(self): ++ """Open/Read the file ++ @return: string (file contents) ++ ++ """ ++ txt = u'' ++ if self.DoOpen('rb'): ++ try: ++ txt = self._handle.read() ++ except: ++ pass ++ ++ return txt ++ ++ def Write(self, value): ++ """Open/Write the value to disk ++ @param value: string ++ ++ """ ++ if self.DoOpen('wb'): ++ self._handle.write(value) ++ self._handle.close() +diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fileutil.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fileutil.py +--- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fileutil.py 1969-12-31 19:00:00.000000000 -0500 ++++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fileutil.py 2009-06-06 03:48:10.000000000 -0400 +@@ -0,0 +1,180 @@ ++############################################################################### ++# Name: fileutil.py # ++# Purpose: File Management Utilities. # ++# Author: Cody Precord # ++# Copyright: (c) 2009 Cody Precord # ++# Licence: wxWindows Licence # ++############################################################################### ++ ++""" ++Editra Buisness Model Library: File Utilities ++ ++Utility functions for managing and working with files. ++ ++""" ++ ++__author__ = "Cody Precord " ++__svnid__ = "$Id: fileutil.py 60523 2009-05-05 18:49:31Z CJP $" ++__revision__ = "$Revision: 60523 $" ++ ++__all__ = [ 'GetFileModTime', 'GetFileSize', 'GetUniqueName', 'MakeNewFile', ++ 'MakeNewFolder', 'GetFileExtension', 'GetFileName', 'GetPathName', ++ 'ResolveRealPath', 'IsLink' ] ++ ++#-----------------------------------------------------------------------------# ++# Imports ++import os ++import platform ++import stat ++ ++UNIX = WIN = False ++if platform.system().lower() in ['windows', 'microsoft']: ++ WIN = True ++ try: ++ # Check for if win32 extensions are available ++ import win32com.client as win32client ++ except ImportError: ++ win32client = None ++else: ++ UNIX = True ++ ++#-----------------------------------------------------------------------------# ++ ++def GetFileExtension(file_str): ++ """Gets last atom at end of string as extension if ++ no extension whole string is returned ++ @param file_str: path or file name to get extension from ++ ++ """ ++ return file_str.split('.')[-1] ++ ++def GetFileModTime(file_name): ++ """Returns the time that the given file was last modified on ++ @param file_name: path of file to get mtime of ++ ++ """ ++ try: ++ mod_time = os.path.getmtime(file_name) ++ except (OSError, EnvironmentError): ++ mod_time = 0 ++ return mod_time ++ ++def GetFileName(path): ++ """Gets last atom on end of string as filename ++ @param path: full path to get filename from ++ ++ """ ++ return os.path.split(path)[-1] ++ ++def GetFileSize(path): ++ """Get the size of the file at a given path ++ @param path: Path to file ++ @return: long ++ ++ """ ++ try: ++ return os.stat(path)[stat.ST_SIZE] ++ except: ++ return 0 ++ ++def GetPathName(path): ++ """Gets the path minus filename ++ @param path: full path to get base of ++ ++ """ ++ return os.path.split(path)[0] ++ ++def IsLink(path): ++ """Is the file a link ++ @return: bool ++ ++ """ ++ if WIN: ++ return path.endswith(".lnk") or os.path.islink(path) ++ else: ++ return os.path.islink(path) ++ ++def ResolveRealPath(link): ++ """Return the real path of the link file ++ @param link: path of link file ++ @return: string ++ ++ """ ++ assert IsLink(link), "ResolveRealPath expects a link file!" ++ realpath = link ++ if WIN and win32client is not None: ++ shell = win32client.Dispatch("WScript.Shell") ++ shortcut = shell.CreateShortCut(link) ++ realpath = shortcut.Targetpath ++ else: ++ realpath = os.path.realpath(link) ++ return realpath ++ ++#-----------------------------------------------------------------------------# ++ ++def GetUniqueName(path, name): ++ """Make a file name that will be unique in case a file of the ++ same name already exists at that path. ++ @param path: Root path to folder of files destination ++ @param name: desired file name base ++ @return: string ++ ++ """ ++ tmpname = os.path.join(path, name) ++ if os.path.exists(tmpname): ++ if '.' not in name: ++ ext = '' ++ fbase = name ++ else: ++ ext = '.' + name.split('.')[-1] ++ fbase = name[:-1 * len(ext)] ++ ++ inc = len([x for x in os.listdir(path) if x.startswith(fbase)]) ++ tmpname = os.path.join(path, "%s-%d%s" % (fbase, inc, ext)) ++ while os.path.exists(tmpname): ++ inc = inc + 1 ++ tmpname = os.path.join(path, "%s-%d%s" % (fbase, inc, ext)) ++ ++ return tmpname ++ ++ ++#-----------------------------------------------------------------------------# ++ ++def MakeNewFile(path, name): ++ """Make a new file at the given path with the given name. ++ If the file already exists, the given name will be changed to ++ a unique name in the form of name + -NUMBER + .extension ++ @param path: path to directory to create file in ++ @param name: desired name of file ++ @return: Tuple of (success?, Path of new file OR Error message) ++ ++ """ ++ if not os.path.isdir(path): ++ path = os.path.dirname(path) ++ fname = GetUniqueName(path, name) ++ ++ try: ++ open(fname, 'w').close() ++ except (IOError, OSError), msg: ++ return (False, str(msg)) ++ ++ return (True, fname) ++ ++def MakeNewFolder(path, name): ++ """Make a new folder at the given path with the given name. ++ If the folder already exists, the given name will be changed to ++ a unique name in the form of name + -NUMBER. ++ @param path: path to create folder on ++ @param name: desired name for folder ++ @return: Tuple of (success?, new dirname OR Error message) ++ ++ """ ++ if not os.path.isdir(path): ++ path = os.path.dirname(path) ++ folder = GetUniqueName(path, name) ++ try: ++ os.mkdir(folder) ++ except (OSError, IOError), msg: ++ return (False, str(msg)) ++ ++ return (True, folder) +diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/histcache.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/histcache.py +--- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/histcache.py 1969-12-31 19:00:00.000000000 -0500 ++++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/histcache.py 2009-06-06 03:48:10.000000000 -0400 +@@ -0,0 +1,131 @@ ++############################################################################### ++# Name: histcache.py # ++# Purpose: History Cache # ++# Author: Cody Precord # ++# Copyright: (c) 2009 Cody Precord # ++# Licence: wxWindows Licence # ++############################################################################### ++ ++""" ++Editra Buisness Model Library: HistoryCache ++ ++History cache that acts as a stack for managing a history list o ++ ++""" ++ ++__author__ = "Cody Precord " ++__cvsid__ = "$Id: histcache.py 60613 2009-05-13 02:27:21Z CJP $" ++__revision__ = "$Revision: 60613 $" ++ ++__all__ = [ 'HistoryCache', 'HIST_CACHE_UNLIMITED'] ++ ++#-----------------------------------------------------------------------------# ++# Imports ++ ++#-----------------------------------------------------------------------------# ++# Globals ++HIST_CACHE_UNLIMITED = -1 ++ ++#-----------------------------------------------------------------------------# ++ ++class HistoryCache(object): ++ def __init__(self, max_size=HIST_CACHE_UNLIMITED): ++ object.__init__(self) ++ ++ # Attributes ++ self._list = list() ++ self.cpos = -1 ++ self.max_size = max_size ++ ++ def _Resize(self): ++ """Adjust cache size based on max size setting""" ++ if self.max_size != HIST_CACHE_UNLIMITED: ++ lsize = len(self._list) ++ if lsize: ++ adj = self.max_size - lsize ++ if adj < 0: ++ self._list.pop(0) ++ self.cpos = len(self._list) - 1 ++ ++ def Clear(self): ++ """Clear the history cache""" ++ del self._list ++ self._list = list() ++ self.cpos = -1 ++ ++ def GetSize(self): ++ """Get the current size of the cache ++ @return: int (number of items in the cache) ++ ++ """ ++ return len(self._list) ++ ++ def GetMaxSize(self): ++ """Get the max size of the cache ++ @return: int ++ ++ """ ++ return self.max_size ++ ++ def GetNextItem(self): ++ """Get the next item in the history cache, moving the ++ current postion towards the end of the cache. ++ @return: object or None if at end of list ++ ++ """ ++ item = None ++ if self.cpos < len(self._list) - 1: ++ self.cpos += 1 ++ item = self._list[self.cpos] ++ return item ++ ++ def GetPreviousItem(self): ++ """Get the previous item in the history cache, moving the ++ current postion towards the begining of the cache. ++ @return: object or None if at start of list ++ ++ """ ++ item = None ++ if self.cpos >= 0: ++ item = self._list[self.cpos] ++ self.cpos -= 1 ++ return item ++ ++ def HasPrevious(self): ++ """Are there more items to the left of the current position ++ @return: bool ++ ++ """ ++ more = self.cpos >= 0 ++ return more ++ ++ def HasNext(self): ++ """Are there more items to the right of the current position ++ @return: bool ++ ++ """ ++ if self.cpos == -1 and len(self._list): ++ more = True ++ else: ++ more = self.cpos >= 0 and self.cpos < len(self._list) ++ return more ++ ++ def PutItem(self, item): ++ """Put an item on the top of the cache ++ @param item: object ++ ++ """ ++ if self.cpos != len(self._list) - 1: ++ self._list = self._list[:self.cpos] ++ self._list.append(item) ++ self.cpos += 1 ++ self._Resize() ++ ++ def SetMaxSize(self, max_size): ++ """Set the maximum size of the cache ++ @param max_size: int (HIST_CACHE_UNLIMITED for unlimited size) ++ ++ """ ++ assert max_size > 0 or max_size == 1, "Invalid max size" ++ self.max_size = max_size ++ self._Resize() +diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/miscutil.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/miscutil.py +--- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/miscutil.py 1969-12-31 19:00:00.000000000 -0500 ++++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/miscutil.py 2009-06-06 03:48:10.000000000 -0400 +@@ -0,0 +1,33 @@ ++############################################################################### ++# Name: miscutil.py # ++# Purpose: Various helper functions. # ++# Author: Cody Precord # ++# Copyright: (c) 2009 Cody Precord # ++# Licence: wxWindows Licence # ++############################################################################### ++ ++""" ++Editra Buisness Model Library: MiscUtil ++ ++Various helper functions ++ ++""" ++ ++__author__ = "Cody Precord " ++__cvsid__ = "$Id: miscutil.py 60840 2009-05-31 16:00:50Z CJP $" ++__revision__ = "$Revision: 60840 $" ++ ++__all__ = [ 'MinMax', ] ++ ++#-----------------------------------------------------------------------------# ++# Imports ++ ++#-----------------------------------------------------------------------------# ++ ++def MinMax(arg1, arg2): ++ """Return an ordered tuple of the minumum and maximum value ++ of the two args. ++ @return: tuple ++ ++ """ ++ return min(arg1, arg2), max(arg1, arg2) +diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/searcheng.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/searcheng.py +--- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/searcheng.py 1969-12-31 19:00:00.000000000 -0500 ++++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/searcheng.py 2009-06-06 03:48:10.000000000 -0400 +@@ -0,0 +1,400 @@ ++############################################################################### ++# Name: searcheng.py # ++# Purpose: Text search engine and utilities # ++# Author: Cody Precord # ++# Copyright: (c) 2009 Cody Precord # ++# Licence: wxWindows Licence # ++############################################################################### ++ ++""" ++Editra Buisness Model Library: SearchEngine ++ ++Text Search Engine for finding text and grepping files ++ ++""" ++ ++__author__ = "Cody Precord " ++__cvsid__ = "$Id: searcheng.py 60680 2009-05-17 20:31:58Z CJP $" ++__revision__ = "$Revision: 60680 $" ++ ++__all__ = [ 'SearchEngine', ] ++ ++#-----------------------------------------------------------------------------# ++# Imports ++import os ++import re ++import fnmatch ++import types ++from StringIO import StringIO ++ ++# Local imports ++import fchecker ++ ++#-----------------------------------------------------------------------------# ++ ++class SearchEngine(object): ++ """Text Search Engine ++ All Search* methods are iterable generators ++ All Find* methods do a complete search and return the match collection ++ @summary: Text Search Engine ++ @todo: Add file filter support ++ ++ """ ++ def __init__(self, query, regex=True, down=True, ++ matchcase=True, wholeword=False): ++ """Initialize a search engine object ++ @param query: search string ++ @keyword regex: Is a regex search ++ @keyword down: Search down or up ++ @keyword matchcase: Match case ++ @keyword wholeword: Match whole word ++ ++ """ ++ object.__init__(self) ++ ++ # Attributes ++ self._isregex = regex ++ self._next = down ++ self._matchcase = matchcase ++ self._wholeword = wholeword ++ self._unicode = False ++ self._query = query ++ self._regex = u'' ++ self._pool = u'' ++ self._lmatch = None # Last match object ++ self._filters = None # File Filters ++ self._formatter = lambda f, l, m: u"%s %d: %s" % (f, l+1, m) ++ self._CompileRegex() ++ ++ def _CompileRegex(self): ++ """Prepare and compile the regex object based on the current state ++ and settings of the engine. ++ @postcondition: the engines regular expression is created ++ ++ """ ++ tmp = self._query ++ if not self._isregex: ++ tmp = re.escape(tmp) ++ ++ if self._wholeword: ++ tmp = "\\b%s\\b" % tmp ++ ++ flags = re.MULTILINE ++ ++ if not self._matchcase: ++ flags |= re.IGNORECASE ++ ++ if self._unicode: ++ flags |= re.UNICODE ++ ++ try: ++ self._regex = re.compile(tmp, flags) ++ except: ++ self._regex = None ++ ++ def ClearPool(self): ++ """Clear the search pool""" ++ del self._pool ++ self._pool = u"" ++ ++ def Find(self, spos=0): ++ """Find the next match based on the state of the search engine ++ @keyword spos: search start position ++ @return: tuple (match start pos, match end pos) or None if no match ++ @note: L{SetSearchPool} has been called to set search string ++ ++ """ ++ if self._regex is None: ++ return None ++ ++ if self._next: ++ return self.FindNext(spos) ++ else: ++ if spos == 0: ++ spos = -1 ++ return self.FindPrev(spos) ++ ++ def FindAll(self): ++ """Find all the matches in the current context ++ @return: list of tuples [(start1, end1), (start2, end2), ] ++ ++ """ ++ if self._regex is None: ++ return list() ++ ++ matches = [match for match in self._regex.finditer(self._pool)] ++ return matches ++ ++ def FindAllLines(self): ++ """Find all the matches in the current context ++ @return: list of strings ++ ++ """ ++ rlist = list() ++ if self._regex is None: ++ return rlist ++ ++ for lnum, line in enumerate(StringIO(self._pool)): ++ if self._regex.search(line) is not None: ++ rlist.append(self._formatter(u"Untitled", lnum, line)) ++ ++ return rlist ++ ++ def FindNext(self, spos=0): ++ """Find the next match of the query starting at spos ++ @keyword spos: search start position in string ++ @return: tuple (match start pos, match end pos) or None if no match ++ @note: L{SetSearchPool} has been called to set the string to search in. ++ ++ """ ++ if self._regex is None: ++ return None ++ ++ if spos < len(self._pool): ++ match = self._regex.search(self._pool[spos:]) ++ if match is not None: ++ self._lmatch = match ++ return match.span() ++ return None ++ ++ def FindPrev(self, spos=-1): ++ """Find the previous match of the query starting at spos ++ @keyword spos: search start position in string ++ @return: tuple (match start pos, match end pos) ++ ++ """ ++ if self._regex is None: ++ return None ++ ++ if spos+1 < len(self._pool): ++ matches = [match for match in ++ self._regex.finditer(self._pool[:spos])] ++ if len(matches): ++ lmatch = matches[-1] ++ self._lmatch = lmatch ++ return (lmatch.start(), lmatch.end()) ++ return None ++ ++ def GetLastMatch(self): ++ """Get the last found match object from the previous L{FindNext} or ++ L{FindPrev} action. ++ @return: match object or None ++ ++ """ ++ return self._lmatch ++ ++ def GetOptionsString(self): ++ """Get a string describing the search engines options""" ++ rstring = u"\"%s\" [ " % self._query ++ for desc, attr in (("regex: %s", self._isregex), ++ ("match case: %s", self._matchcase), ++ ("whole word: %s", self._wholeword)): ++ if attr: ++ rstring += (desc % u"on; ") ++ else: ++ rstring += (desc % u"off; ") ++ rstring += u"]" ++ ++ return rstring ++ ++ def GetQuery(self): ++ """Get the raw query string used by the search engine ++ @return: string ++ ++ """ ++ return self._query ++ ++ def GetQueryObject(self): ++ """Get the regex object used for the search. Will return None if ++ there was an error in creating the object. ++ @return: pattern object ++ ++ """ ++ return self._regex ++ ++ def GetSearchPool(self): ++ """Get the search pool string for this L{SearchEngine}. ++ @return: string ++ ++ """ ++ return self._pool ++ ++ def IsMatchCase(self): ++ """Is the engine set to a case sensitive search ++ @return: bool ++ ++ """ ++ return self._matchcase ++ ++ def IsRegEx(self): ++ """Is the engine searching with the query as a regular expression ++ @return: bool ++ ++ """ ++ return self._isregex ++ ++ def IsWholeWord(self): ++ """Is the engine set to search for wholeword matches ++ @return: bool ++ ++ """ ++ return self._wholeword ++ ++ def SearchInBuffer(self, sbuffer): ++ """Search in the buffer ++ @param sbuffer: buffer like object ++ @todo: implement ++ ++ """ ++ raise NotImplementedError ++ ++ def SearchInDirectory(self, directory, recursive=True): ++ """Search in all the files found in the given directory ++ @param directory: directory path ++ @keyword recursive: search recursivly ++ ++ """ ++ if self._regex is None: ++ return ++ ++ # Get all files in the directories ++ paths = [os.path.join(directory, fname) ++ for fname in os.listdir(directory) if not fname.startswith('.')] ++ ++ # Filter out files that don't match the current filter(s) ++ if self._filters is not None and len(self._filters): ++ filtered = list() ++ for fname in paths: ++ if os.path.isdir(fname): ++ filtered.append(fname) ++ continue ++ ++ for pat in self._filters: ++ if fnmatch.fnmatch(fname, pat): ++ filtered.append(fname) ++ paths = filtered ++ ++ # Begin searching in the paths ++ for path in paths: ++ if recursive and os.path.isdir(path): ++ # Recursive call to decend into directories ++ for match in self.SearchInDirectory(path, recursive): ++ yield match ++ else: ++ for match in self.SearchInFile(path): ++ yield match ++ return ++ ++ def SearchInFile(self, fname): ++ """Search in a file for all lines with matches of the set query and ++ yield the results as they are found. ++ @param fname: filename ++ @todo: unicode handling ++ ++ """ ++ if self._regex is None: ++ return ++ ++ checker = fchecker.FileTypeChecker() ++ if checker.IsReadableText(fname): ++ try: ++ fobj = open(fname, 'rb') ++ except (IOError, OSError): ++ return ++ else: ++ # Special token to signify start of a search ++ yield (None, fname) ++ ++ for lnum, line in enumerate(fobj): ++ if self._regex.search(line) is not None: ++ yield self._formatter(fname, lnum, line) ++ fobj.close() ++ return ++ ++ def SearchInFiles(self, flist): ++ """Search in a list of files and yield results as they are found. ++ @param flist: list of file names ++ ++ """ ++ if self._regex is None: ++ return ++ ++ for fname in flist: ++ for match in self.SearchInFile(fname): ++ yield match ++ return ++ ++ def SearchInString(self, sstring, startpos=0): ++ """Search in a string ++ @param sstring: string to search in ++ @keyword startpos: search start position ++ ++ """ ++ raise NotImplementedError ++ ++ def SetFileFilters(self, filters): ++ """Set the file filters to specify what type of files to search in ++ the filter should be a list of wild card patterns to match. ++ @param filters: list of strings ['*.py', '*.pyw'] ++ ++ """ ++ self._filters = filters ++ ++ def SetFlags(self, isregex=None, matchcase=None, wholeword=None, down=None): ++ """Set the search engine flags. Leaving the parameter set to None ++ will not change the flag. Setting it to non None will change the value. ++ @keyword isregex: is regex search ++ @keyword matchcase: matchcase search ++ @keyword wholeword: wholeword search ++ @keyword down: search down or up ++ ++ """ ++ for attr, val in (('_isregex', isregex), ('_matchcase', matchcase), ++ ('_wholeword', wholeword), ('_next', down)): ++ if val is not None: ++ setattr(self, attr, val) ++ self._CompileRegex() ++ ++ def SetMatchCase(self, case=True): ++ """Set whether the engine will use case sensative searches ++ @keyword case: bool ++ ++ """ ++ self._matchcase = case ++ self._CompileRegex() ++ ++ def SetResultFormatter(self, funct): ++ """Set the result formatter function ++ @param funct: callable(filename, linenum, matchstr) ++ ++ """ ++ assert callable(funct) ++ self._formatter = funct ++ ++ def SetSearchPool(self, pool): ++ """Set the search pool used by the Find methods ++ @param pool: string to search in ++ ++ """ ++ del self._pool ++ self._pool = pool ++ if isinstance(self._pool, types.UnicodeType): ++ self._unicode = True ++ self._CompileRegex() ++ ++ def SetQuery(self, query): ++ """Set the search query ++ @param query: string ++ ++ """ ++ self._query = query ++ self._CompileRegex() ++ ++ def SetUseRegex(self, use=True): ++ """Set whether the engine is using regular expresion searches or ++ not. ++ @keyword use: bool ++ ++ """ ++ self._isregex = use ++ self._CompileRegex() diff --git a/wxPython.spec b/wxPython.spec index 0dc4acb..ec91b1e 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.10.1 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GUI toolkit for the Python programming language @@ -17,6 +17,8 @@ Source0: http://downloads.sourceforge.net/wxpython/%{name}-src-%{version} Patch0: wxPython-2.8.9.2-treelist.patch # backport to wxGTK 2.8.10 API Patch1: wxPython-2.8.10-backport.patch +# add missing module - https://bugzilla.redhat.com/show_bug.cgi?id=573961 +Patch2: wxPython-2.8.10.1-ebmlib.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # make sure to keep this updated as appropriate BuildRequires: wxGTK-devel >= 2.8.10 @@ -60,6 +62,7 @@ Documentation, samples and demo application for wxPython. %setup -q -n wxPython-src-%{version} %patch0 -p1 -b .treelist %patch1 -p1 +%patch2 -p1 # fix libdir otherwise additional wx libs cannot be found sed -i -e 's|/usr/lib|%{_libdir}|' wxPython/config.py @@ -118,6 +121,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Wed Mar 17 2010 Dan Horák - 2.8.10.1-2 +- add missing module (#573961) + * Sat Jan 16 2010 Dan Horák - 2.8.10.1-1 - update to 2.8.10.1 - backport to wxGTK 2.8.10 API From 041462cf6a4714bf74d0c95350f677eff72697b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Mon, 3 May 2010 08:49:52 +0000 Subject: [PATCH 02/46] - rebuilt with wxGTK 2.8.11 --- wxPython-2.8.10-backport.patch | 390 --------------------------------- wxPython.spec | 10 +- 2 files changed, 5 insertions(+), 395 deletions(-) delete mode 100644 wxPython-2.8.10-backport.patch diff --git a/wxPython-2.8.10-backport.patch b/wxPython-2.8.10-backport.patch deleted file mode 100644 index 0639913..0000000 --- a/wxPython-2.8.10-backport.patch +++ /dev/null @@ -1,390 +0,0 @@ -diff -Nrup wxPython-src-2.8.10.1.orig/wxPython/src/gtk/_core.py wxPython-src-2.8.10.1/wxPython/src/gtk/_core.py ---- wxPython-src-2.8.10.1.orig/wxPython/src/gtk/_core.py 2009-05-12 23:24:20.000000000 +0200 -+++ wxPython-src-2.8.10.1/wxPython/src/gtk/_core.py 2010-01-16 10:52:45.000000000 +0100 -@@ -6034,10 +6034,6 @@ class ShowEvent(Event): - """GetShow(self) -> bool""" - return _core_.ShowEvent_GetShow(*args, **kwargs) - -- def IsShown(*args, **kwargs): -- """IsShown(self) -> bool""" -- return _core_.ShowEvent_IsShown(*args, **kwargs) -- - Show = property(GetShow,SetShow,doc="See `GetShow` and `SetShow`") - _core_.ShowEvent_swigregister(ShowEvent) - -diff -Nrup wxPython-src-2.8.10.1.orig/wxPython/src/gtk/_core_wrap.cpp wxPython-src-2.8.10.1/wxPython/src/gtk/_core_wrap.cpp ---- wxPython-src-2.8.10.1.orig/wxPython/src/gtk/_core_wrap.cpp 2009-05-12 23:24:20.000000000 +0200 -+++ wxPython-src-2.8.10.1/wxPython/src/gtk/_core_wrap.cpp 2010-01-16 10:53:50.000000000 +0100 -@@ -28673,36 +28673,6 @@ fail: - } - - --SWIGINTERN PyObject *_wrap_ShowEvent_IsShown(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -- PyObject *resultobj = 0; -- wxShowEvent *arg1 = (wxShowEvent *) 0 ; -- bool result; -- void *argp1 = 0 ; -- int res1 = 0 ; -- PyObject *swig_obj[1] ; -- -- if (!args) SWIG_fail; -- swig_obj[0] = args; -- res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_wxShowEvent, 0 | 0 ); -- if (!SWIG_IsOK(res1)) { -- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "ShowEvent_IsShown" "', expected argument " "1"" of type '" "wxShowEvent const *""'"); -- } -- arg1 = reinterpret_cast< wxShowEvent * >(argp1); -- { -- PyThreadState* __tstate = wxPyBeginAllowThreads(); -- result = (bool)((wxShowEvent const *)arg1)->IsShown(); -- wxPyEndAllowThreads(__tstate); -- if (PyErr_Occurred()) SWIG_fail; -- } -- { -- resultobj = result ? Py_True : Py_False; Py_INCREF(resultobj); -- } -- return resultobj; --fail: -- return NULL; --} -- -- - SWIGINTERN PyObject *ShowEvent_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *obj; - if (!SWIG_Python_UnpackTuple(args,(char*)"swigregister", 1, 1,&obj)) return NULL; -@@ -61296,7 +61266,6 @@ static PyMethodDef SwigMethods[] = { - { (char *)"new_ShowEvent", (PyCFunction) _wrap_new_ShowEvent, METH_VARARGS | METH_KEYWORDS, NULL}, - { (char *)"ShowEvent_SetShow", (PyCFunction) _wrap_ShowEvent_SetShow, METH_VARARGS | METH_KEYWORDS, NULL}, - { (char *)"ShowEvent_GetShow", (PyCFunction)_wrap_ShowEvent_GetShow, METH_O, NULL}, -- { (char *)"ShowEvent_IsShown", (PyCFunction)_wrap_ShowEvent_IsShown, METH_O, NULL}, - { (char *)"ShowEvent_swigregister", ShowEvent_swigregister, METH_VARARGS, NULL}, - { (char *)"ShowEvent_swiginit", ShowEvent_swiginit, METH_VARARGS, NULL}, - { (char *)"new_IconizeEvent", (PyCFunction) _wrap_new_IconizeEvent, METH_VARARGS | METH_KEYWORDS, NULL}, -diff -Nrup wxPython-src-2.8.10.1.orig/wxPython/src/gtk/_gdi.py wxPython-src-2.8.10.1/wxPython/src/gtk/_gdi.py ---- wxPython-src-2.8.10.1.orig/wxPython/src/gtk/_gdi.py 2009-05-12 23:24:20.000000000 +0200 -+++ wxPython-src-2.8.10.1/wxPython/src/gtk/_gdi.py 2010-01-16 10:54:38.000000000 +0100 -@@ -3538,10 +3538,6 @@ class DC(_core.Object): - """ - return _gdi_.DC_SetClippingRect(*args, **kwargs) - -- def SetDeviceClippingRegion(*args, **kwargs): -- """SetDeviceClippingRegion(self, Region region)""" -- return _gdi_.DC_SetDeviceClippingRegion(*args, **kwargs) -- - def DrawLines(*args, **kwargs): - """ - DrawLines(self, List points, int xoffset=0, int yoffset=0) -@@ -5962,11 +5958,6 @@ class GraphicsRenderer(_core.Object): - return _gdi_.GraphicsRenderer_GetDefaultRenderer(*args, **kwargs) - - GetDefaultRenderer = staticmethod(GetDefaultRenderer) -- def GetCairoRenderer(*args, **kwargs): -- """GetCairoRenderer() -> GraphicsRenderer""" -- return _gdi_.GraphicsRenderer_GetCairoRenderer(*args, **kwargs) -- -- GetCairoRenderer = staticmethod(GetCairoRenderer) - def CreateContext(*args): - """ - CreateContext(self, WindowDC dc) -> GraphicsContext -diff -Nrup wxPython-src-2.8.10.1.orig/wxPython/src/gtk/_gdi_wrap.cpp wxPython-src-2.8.10.1/wxPython/src/gtk/_gdi_wrap.cpp ---- wxPython-src-2.8.10.1.orig/wxPython/src/gtk/_gdi_wrap.cpp 2009-05-12 23:24:20.000000000 +0200 -+++ wxPython-src-2.8.10.1/wxPython/src/gtk/_gdi_wrap.cpp 2010-01-16 11:00:47.000000000 +0100 -@@ -4171,12 +4171,6 @@ public : - "wx.GraphicsRenderer is not available on this platform."); - return NULL; - } -- static wxGraphicsRenderer* GetCairoRenderer() { -- PyErr_SetString(PyExc_NotImplementedError, -- "wx.GraphicsRenderer is not available on this platform."); -- return NULL; -- } -- - virtual wxGraphicsContext * CreateContext( const wxWindowDC& ) { return NULL; } - virtual wxGraphicsContext * CreateContextFromNativeContext( void * ) { return NULL; } - virtual wxGraphicsContext * CreateContextFromNativeWindow( void * ) { return NULL; } -@@ -20579,47 +20573,6 @@ fail: - } - - --SWIGINTERN PyObject *_wrap_DC_SetDeviceClippingRegion(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { -- PyObject *resultobj = 0; -- wxDC *arg1 = (wxDC *) 0 ; -- wxRegion *arg2 = 0 ; -- void *argp1 = 0 ; -- int res1 = 0 ; -- void *argp2 = 0 ; -- int res2 = 0 ; -- PyObject * obj0 = 0 ; -- PyObject * obj1 = 0 ; -- char * kwnames[] = { -- (char *) "self",(char *) "region", NULL -- }; -- -- if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:DC_SetDeviceClippingRegion",kwnames,&obj0,&obj1)) SWIG_fail; -- res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_wxDC, 0 | 0 ); -- if (!SWIG_IsOK(res1)) { -- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "DC_SetDeviceClippingRegion" "', expected argument " "1"" of type '" "wxDC *""'"); -- } -- arg1 = reinterpret_cast< wxDC * >(argp1); -- res2 = SWIG_ConvertPtr(obj1, &argp2, SWIGTYPE_p_wxRegion, 0 | 0); -- if (!SWIG_IsOK(res2)) { -- SWIG_exception_fail(SWIG_ArgError(res2), "in method '" "DC_SetDeviceClippingRegion" "', expected argument " "2"" of type '" "wxRegion const &""'"); -- } -- if (!argp2) { -- SWIG_exception_fail(SWIG_ValueError, "invalid null reference " "in method '" "DC_SetDeviceClippingRegion" "', expected argument " "2"" of type '" "wxRegion const &""'"); -- } -- arg2 = reinterpret_cast< wxRegion * >(argp2); -- { -- PyThreadState* __tstate = wxPyBeginAllowThreads(); -- (arg1)->SetDeviceClippingRegion((wxRegion const &)*arg2); -- wxPyEndAllowThreads(__tstate); -- if (PyErr_Occurred()) SWIG_fail; -- } -- resultobj = SWIG_Py_Void(); -- return resultobj; --fail: -- return NULL; --} -- -- - SWIGINTERN PyObject *_wrap_DC_DrawLines(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { - PyObject *resultobj = 0; - wxDC *arg1 = (wxDC *) 0 ; -@@ -30753,22 +30706,6 @@ fail: - } - - --SWIGINTERN PyObject *_wrap_GraphicsRenderer_GetCairoRenderer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -- PyObject *resultobj = 0; -- wxGraphicsRenderer *result = 0 ; -- -- if (!SWIG_Python_UnpackTuple(args,"GraphicsRenderer_GetCairoRenderer",0,0,0)) SWIG_fail; -- { -- result = (wxGraphicsRenderer *)wxGraphicsRenderer::GetCairoRenderer(); -- if (PyErr_Occurred()) SWIG_fail; -- } -- resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_wxGraphicsRenderer, 0 | 0 ); -- return resultobj; --fail: -- return NULL; --} -- -- - SWIGINTERN PyObject *_wrap_GraphicsRenderer_CreateContext__SWIG_0(PyObject *SWIGUNUSEDPARM(self), int nobjs, PyObject **swig_obj) { - PyObject *resultobj = 0; - wxGraphicsRenderer *arg1 = (wxGraphicsRenderer *) 0 ; -@@ -40069,7 +40006,6 @@ static PyMethodDef SwigMethods[] = { - { (char *)"DC_SetClippingRegionPointSize", (PyCFunction) _wrap_DC_SetClippingRegionPointSize, METH_VARARGS | METH_KEYWORDS, NULL}, - { (char *)"DC_SetClippingRegionAsRegion", (PyCFunction) _wrap_DC_SetClippingRegionAsRegion, METH_VARARGS | METH_KEYWORDS, NULL}, - { (char *)"DC_SetClippingRect", (PyCFunction) _wrap_DC_SetClippingRect, METH_VARARGS | METH_KEYWORDS, NULL}, -- { (char *)"DC_SetDeviceClippingRegion", (PyCFunction) _wrap_DC_SetDeviceClippingRegion, METH_VARARGS | METH_KEYWORDS, NULL}, - { (char *)"DC_DrawLines", (PyCFunction) _wrap_DC_DrawLines, METH_VARARGS | METH_KEYWORDS, NULL}, - { (char *)"DC_DrawPolygon", (PyCFunction) _wrap_DC_DrawPolygon, METH_VARARGS | METH_KEYWORDS, NULL}, - { (char *)"DC_DrawLabel", (PyCFunction) _wrap_DC_DrawLabel, METH_VARARGS | METH_KEYWORDS, NULL}, -@@ -40341,7 +40277,6 @@ static PyMethodDef SwigMethods[] = { - { (char *)"GraphicsContext_swigregister", GraphicsContext_swigregister, METH_VARARGS, NULL}, - { (char *)"delete_GraphicsRenderer", (PyCFunction)_wrap_delete_GraphicsRenderer, METH_O, NULL}, - { (char *)"GraphicsRenderer_GetDefaultRenderer", (PyCFunction)_wrap_GraphicsRenderer_GetDefaultRenderer, METH_NOARGS, NULL}, -- { (char *)"GraphicsRenderer_GetCairoRenderer", (PyCFunction)_wrap_GraphicsRenderer_GetCairoRenderer, METH_NOARGS, NULL}, - { (char *)"GraphicsRenderer_CreateContext", _wrap_GraphicsRenderer_CreateContext, METH_VARARGS, NULL}, - { (char *)"GraphicsRenderer_CreateMeasuringContext", (PyCFunction)_wrap_GraphicsRenderer_CreateMeasuringContext, METH_O, NULL}, - { (char *)"GraphicsRenderer_CreateContextFromNativeContext", (PyCFunction) _wrap_GraphicsRenderer_CreateContextFromNativeContext, METH_VARARGS | METH_KEYWORDS, NULL}, -diff -Nrup wxPython-src-2.8.10.1.orig/wxPython/src/gtk/xrc.py wxPython-src-2.8.10.1/wxPython/src/gtk/xrc.py ---- wxPython-src-2.8.10.1.orig/wxPython/src/gtk/xrc.py 2009-05-12 23:24:20.000000000 +0200 -+++ wxPython-src-2.8.10.1/wxPython/src/gtk/xrc.py 2010-01-16 11:02:40.000000000 +0100 -@@ -441,18 +441,6 @@ class XmlNode(object): - """SetProperties(self, XmlProperty prop)""" - return _xrc.XmlNode_SetProperties(*args, **kwargs) - -- def GetAttribute(*args, **kwargs): -- """GetAttribute(self, String attrName, String defaultVal) -> String""" -- return _xrc.XmlNode_GetAttribute(*args, **kwargs) -- -- def AddAttribute(*args, **kwargs): -- """AddAttribute(self, String attrName, String value)""" -- return _xrc.XmlNode_AddAttribute(*args, **kwargs) -- -- def GetAttributes(*args, **kwargs): -- """GetAttributes(self) -> XmlProperty""" -- return _xrc.XmlNode_GetAttributes(*args, **kwargs) -- - Children = property(GetChildren,SetChildren,doc="See `GetChildren` and `SetChildren`") - Content = property(GetContent,SetContent,doc="See `GetContent` and `SetContent`") - Name = property(GetName,SetName,doc="See `GetName` and `SetName`") -diff -Nrup wxPython-src-2.8.10.1.orig/wxPython/src/gtk/xrc_wrap.cpp wxPython-src-2.8.10.1/wxPython/src/gtk/xrc_wrap.cpp ---- wxPython-src-2.8.10.1.orig/wxPython/src/gtk/xrc_wrap.cpp 2009-05-12 23:24:20.000000000 +0200 -+++ wxPython-src-2.8.10.1/wxPython/src/gtk/xrc_wrap.cpp 2010-01-16 11:03:14.000000000 +0100 -@@ -6361,163 +6361,6 @@ fail: - } - - --SWIGINTERN PyObject *_wrap_XmlNode_GetAttribute(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { -- PyObject *resultobj = 0; -- wxXmlNode *arg1 = (wxXmlNode *) 0 ; -- wxString *arg2 = 0 ; -- wxString *arg3 = 0 ; -- wxString result; -- void *argp1 = 0 ; -- int res1 = 0 ; -- bool temp2 = false ; -- bool temp3 = false ; -- PyObject * obj0 = 0 ; -- PyObject * obj1 = 0 ; -- PyObject * obj2 = 0 ; -- char * kwnames[] = { -- (char *) "self",(char *) "attrName",(char *) "defaultVal", NULL -- }; -- -- if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:XmlNode_GetAttribute",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; -- res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_wxXmlNode, 0 | 0 ); -- if (!SWIG_IsOK(res1)) { -- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XmlNode_GetAttribute" "', expected argument " "1"" of type '" "wxXmlNode const *""'"); -- } -- arg1 = reinterpret_cast< wxXmlNode * >(argp1); -- { -- arg2 = wxString_in_helper(obj1); -- if (arg2 == NULL) SWIG_fail; -- temp2 = true; -- } -- { -- arg3 = wxString_in_helper(obj2); -- if (arg3 == NULL) SWIG_fail; -- temp3 = true; -- } -- { -- PyThreadState* __tstate = wxPyBeginAllowThreads(); -- result = ((wxXmlNode const *)arg1)->GetAttribute((wxString const &)*arg2,(wxString const &)*arg3); -- wxPyEndAllowThreads(__tstate); -- if (PyErr_Occurred()) SWIG_fail; -- } -- { --#if wxUSE_UNICODE -- resultobj = PyUnicode_FromWideChar((&result)->c_str(), (&result)->Len()); --#else -- resultobj = PyString_FromStringAndSize((&result)->c_str(), (&result)->Len()); --#endif -- } -- { -- if (temp2) -- delete arg2; -- } -- { -- if (temp3) -- delete arg3; -- } -- return resultobj; --fail: -- { -- if (temp2) -- delete arg2; -- } -- { -- if (temp3) -- delete arg3; -- } -- return NULL; --} -- -- --SWIGINTERN PyObject *_wrap_XmlNode_AddAttribute(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) { -- PyObject *resultobj = 0; -- wxXmlNode *arg1 = (wxXmlNode *) 0 ; -- wxString *arg2 = 0 ; -- wxString *arg3 = 0 ; -- void *argp1 = 0 ; -- int res1 = 0 ; -- bool temp2 = false ; -- bool temp3 = false ; -- PyObject * obj0 = 0 ; -- PyObject * obj1 = 0 ; -- PyObject * obj2 = 0 ; -- char * kwnames[] = { -- (char *) "self",(char *) "attrName",(char *) "value", NULL -- }; -- -- if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OOO:XmlNode_AddAttribute",kwnames,&obj0,&obj1,&obj2)) SWIG_fail; -- res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_wxXmlNode, 0 | 0 ); -- if (!SWIG_IsOK(res1)) { -- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XmlNode_AddAttribute" "', expected argument " "1"" of type '" "wxXmlNode *""'"); -- } -- arg1 = reinterpret_cast< wxXmlNode * >(argp1); -- { -- arg2 = wxString_in_helper(obj1); -- if (arg2 == NULL) SWIG_fail; -- temp2 = true; -- } -- { -- arg3 = wxString_in_helper(obj2); -- if (arg3 == NULL) SWIG_fail; -- temp3 = true; -- } -- { -- PyThreadState* __tstate = wxPyBeginAllowThreads(); -- (arg1)->AddAttribute((wxString const &)*arg2,(wxString const &)*arg3); -- wxPyEndAllowThreads(__tstate); -- if (PyErr_Occurred()) SWIG_fail; -- } -- resultobj = SWIG_Py_Void(); -- { -- if (temp2) -- delete arg2; -- } -- { -- if (temp3) -- delete arg3; -- } -- return resultobj; --fail: -- { -- if (temp2) -- delete arg2; -- } -- { -- if (temp3) -- delete arg3; -- } -- return NULL; --} -- -- --SWIGINTERN PyObject *_wrap_XmlNode_GetAttributes(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { -- PyObject *resultobj = 0; -- wxXmlNode *arg1 = (wxXmlNode *) 0 ; -- wxXmlProperty *result = 0 ; -- void *argp1 = 0 ; -- int res1 = 0 ; -- PyObject *swig_obj[1] ; -- -- if (!args) SWIG_fail; -- swig_obj[0] = args; -- res1 = SWIG_ConvertPtr(swig_obj[0], &argp1,SWIGTYPE_p_wxXmlNode, 0 | 0 ); -- if (!SWIG_IsOK(res1)) { -- SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "XmlNode_GetAttributes" "', expected argument " "1"" of type '" "wxXmlNode const *""'"); -- } -- arg1 = reinterpret_cast< wxXmlNode * >(argp1); -- { -- PyThreadState* __tstate = wxPyBeginAllowThreads(); -- result = (wxXmlProperty *)((wxXmlNode const *)arg1)->GetAttributes(); -- wxPyEndAllowThreads(__tstate); -- if (PyErr_Occurred()) SWIG_fail; -- } -- resultobj = SWIG_NewPointerObj(SWIG_as_voidptr(result), SWIGTYPE_p_wxXmlProperty, 0 | 0 ); -- return resultobj; --fail: -- return NULL; --} -- -- - SWIGINTERN PyObject *XmlNode_swigregister(PyObject *SWIGUNUSEDPARM(self), PyObject *args) { - PyObject *obj; - if (!SWIG_Python_UnpackTuple(args,(char*)"swigregister", 1, 1,&obj)) return NULL; -@@ -9050,9 +8893,6 @@ static PyMethodDef SwigMethods[] = { - { (char *)"XmlNode_SetNext", (PyCFunction) _wrap_XmlNode_SetNext, METH_VARARGS | METH_KEYWORDS, NULL}, - { (char *)"XmlNode_SetChildren", (PyCFunction) _wrap_XmlNode_SetChildren, METH_VARARGS | METH_KEYWORDS, NULL}, - { (char *)"XmlNode_SetProperties", (PyCFunction) _wrap_XmlNode_SetProperties, METH_VARARGS | METH_KEYWORDS, NULL}, -- { (char *)"XmlNode_GetAttribute", (PyCFunction) _wrap_XmlNode_GetAttribute, METH_VARARGS | METH_KEYWORDS, NULL}, -- { (char *)"XmlNode_AddAttribute", (PyCFunction) _wrap_XmlNode_AddAttribute, METH_VARARGS | METH_KEYWORDS, NULL}, -- { (char *)"XmlNode_GetAttributes", (PyCFunction)_wrap_XmlNode_GetAttributes, METH_O, NULL}, - { (char *)"XmlNode_swigregister", XmlNode_swigregister, METH_VARARGS, NULL}, - { (char *)"XmlNode_swiginit", XmlNode_swiginit, METH_VARARGS, NULL}, - { (char *)"new_XmlDocument", (PyCFunction) _wrap_new_XmlDocument, METH_VARARGS | METH_KEYWORDS, NULL}, diff --git a/wxPython.spec b/wxPython.spec index ec91b1e..33b4df5 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.10.1 -Release: 2%{?dist} +Release: 3%{?dist} Summary: GUI toolkit for the Python programming language @@ -15,8 +15,6 @@ URL: http://www.wxpython.org/ Source0: http://downloads.sourceforge.net/wxpython/%{name}-src-%{version}.tar.bz2 # http://trac.wxwidgets.org/ticket/10703 Patch0: wxPython-2.8.9.2-treelist.patch -# backport to wxGTK 2.8.10 API -Patch1: wxPython-2.8.10-backport.patch # add missing module - https://bugzilla.redhat.com/show_bug.cgi?id=573961 Patch2: wxPython-2.8.10.1-ebmlib.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -61,8 +59,7 @@ Documentation, samples and demo application for wxPython. %prep %setup -q -n wxPython-src-%{version} %patch0 -p1 -b .treelist -%patch1 -p1 -%patch2 -p1 +%patch2 -p1 -b .ebmlib # fix libdir otherwise additional wx libs cannot be found sed -i -e 's|/usr/lib|%{_libdir}|' wxPython/config.py @@ -121,6 +118,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Sun May 2 2010 Dan Horák - 2.8.10.1-3 +- rebuilt with wxGTK 2.8.11 + * Wed Mar 17 2010 Dan Horák - 2.8.10.1-2 - add missing module (#573961) From 56ada86f3271c44ef426b4f6d4b078a99f31df26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Mon, 31 May 2010 08:44:10 +0000 Subject: [PATCH 03/46] - update to 2.8.11.0 (#593837, #595936, #597639) --- .cvsignore | 2 +- sources | 2 +- wxPython-2.8.10.1-ebmlib.patch | 1417 -------------------------------- wxPython-2.8.11.0-aui.patch | 24 + wxPython.spec | 16 +- 5 files changed, 36 insertions(+), 1425 deletions(-) delete mode 100644 wxPython-2.8.10.1-ebmlib.patch create mode 100644 wxPython-2.8.11.0-aui.patch diff --git a/.cvsignore b/.cvsignore index 5017d43..3a89b5e 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -wxPython-src-2.8.10.1.tar.bz2 +wxPython-src-2.8.11.0.tar.bz2 diff --git a/sources b/sources index 53956ee..08f0993 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -65d5ef166f23fe8b4c67f58df164f93e wxPython-src-2.8.10.1.tar.bz2 +63f73aae49e530852db56a31b57529fa wxPython-src-2.8.11.0.tar.bz2 diff --git a/wxPython-2.8.10.1-ebmlib.patch b/wxPython-2.8.10.1-ebmlib.patch deleted file mode 100644 index 7b4c904..0000000 --- a/wxPython-2.8.10.1-ebmlib.patch +++ /dev/null @@ -1,1417 +0,0 @@ -diff -Naur wxPython-src-2.8.10.1-orig/wxPython/setup.py wxPython-src-2.8.10.1/wxPython/setup.py ---- wxPython-src-2.8.10.1-orig/wxPython/setup.py 2009-06-06 14:43:00.000000000 -0400 -+++ wxPython-src-2.8.10.1/wxPython/setup.py 2009-06-06 14:43:55.000000000 -0400 -@@ -882,6 +882,7 @@ - 'wx.tools.Editra', - 'wx.tools.Editra.src', - 'wx.tools.Editra.src.autocomp', -+ 'wx.tools.Editra.src.ebmlib', - 'wx.tools.Editra.src.eclib', - 'wx.tools.Editra.src.extern', - 'wx.tools.Editra.src.syntax', -diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/__init__.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/__init__.py ---- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/__init__.py 1969-12-31 19:00:00.000000000 -0500 -+++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/__init__.py 2009-06-06 03:48:10.000000000 -0400 -@@ -0,0 +1,33 @@ -+############################################################################### -+# Name: __init__.py # -+# Purpose: Editra Buisness Model Library # -+# Author: Cody Precord # -+# Copyright: (c) 2009 Cody Precord # -+# Licence: wxWindows Licence # -+############################################################################### -+ -+""" -+Editra Buisness Model Library: -+ -+""" -+ -+__author__ = "Cody Precord " -+__cvsid__ = "$Id: __init__.py 60840 2009-05-31 16:00:50Z CJP $" -+__revision__ = "$Revision: 60840 $" -+ -+#-----------------------------------------------------------------------------# -+ -+# Text Utils -+from searcheng import * -+from fchecker import * -+from fileutil import * -+from fileimpl import * -+ -+from backupmgr import * -+ -+# Storage Classes -+from histcache import * -+from clipboard import * -+ -+# Misc -+from miscutil import * -diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/backupmgr.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/backupmgr.py ---- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/backupmgr.py 1969-12-31 19:00:00.000000000 -0500 -+++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/backupmgr.py 2009-06-06 03:48:10.000000000 -0400 -@@ -0,0 +1,160 @@ -+############################################################################### -+# Name: backupmgr.py # -+# Purpose: File Backup Manager # -+# Author: Cody Precord # -+# Copyright: (c) 2009 Cody Precord # -+# Licence: wxWindows Licence # -+############################################################################### -+ -+""" -+Editra Buisness Model Library: FileBackupMgr -+ -+Helper class for managing and creating backups of files. -+ -+""" -+ -+__author__ = "Cody Precord " -+__cvsid__ = "$Id: backupmgr.py 60581 2009-05-10 02:56:00Z CJP $" -+__revision__ = "$Revision: 60581 $" -+ -+__all__ = [ 'FileBackupMgr', ] -+ -+#-----------------------------------------------------------------------------# -+# Imports -+import os -+import shutil -+ -+# Local Imports -+import fileutil -+import fchecker -+ -+#-----------------------------------------------------------------------------# -+ -+class FileBackupMgr(object): -+ """File backup creator and manager""" -+ def __init__(self, header=None, template=u"%s~"): -+ """Create a BackupManager -+ @keyword header: header to id backups with (Text files only!!) -+ @keyword template: template string for naming backup file with -+ -+ """ -+ object.__init__(self) -+ -+ # Attributes -+ self.checker = fchecker.FileTypeChecker() -+ self.header = header # Backup id header -+ self.template = template # Filename template -+ -+ def _CheckHeader(self, fname): -+ """Check if the backup file has a header that matches the -+ header used to identify backup files. -+ @param fname: name of file to check -+ @return: bool (True if header is ok, False otherwise) -+ -+ """ -+ isok = False -+ try: -+ handle = open(fname) -+ line = handle.readline() -+ isok = line.startswith(self.header) -+ except: -+ isok = False -+ finally: -+ handle.close() -+ return isok -+ -+ def GetBackupFilename(self, fname): -+ """Get the unique name for the files backup copy -+ @param fname: string (file path) -+ @return: string -+ -+ """ -+ rname = self.template % fname -+ if self.header is not None and \ -+ not self.checker.IsBinary(fname) and \ -+ os.path.exists(rname): -+ # Make sure that the template backup name does not match -+ # an existing file that is not a backup file. -+ while not self._CheckHeader(rname): -+ rname = self.template % rname -+ -+ return rname -+ -+ def GetBackupWriter(self, fileobj): -+ """Create a backup filewriter method to backup a files contents -+ with. -+ @param fileobj: object implementing fileimpl.FileObjectImpl interface -+ @return: callable(text) to create backup with -+ -+ """ -+ nfile = fileobj.Clone() -+ fname = self.GetBackupFilename(nfile.GetPath()) -+ nfile.SetPath(fname) -+ # Write the header if it is enabled -+ if self.header is not None and not self.checker.IsBinary(fname): -+ nfile.Write(self.header + os.linesep) -+ return nfile.Write -+ -+ def HasBackup(self, fname): -+ """Check if a given file has a backup file available or not -+ @param fname: string (file path) -+ -+ """ -+ backup = self.GetBackupFilename(fname) -+ return os.path.exists(backup) -+ -+ def IsBackupNewer(self, fname): -+ """Is the backup of this file newer than the saved version -+ of the file? -+ @param fname: string (file path) -+ @return: bool -+ -+ """ -+ backup = self.GetBackupFilename(fname) -+ if os.path.exists(fname) and os.path.exists(backup): -+ mod1 = fileutil.GetFileModTime(backup) -+ mod2 = fileutil.GetFileModTime(fname) -+ return mod1 > mod2 -+ else: -+ return False -+ -+ def MakeBackupCopy(self, fname): -+ """Create a backup copy of the given filename -+ @param fname: string (file path) -+ @return: bool (True == Success) -+ -+ """ -+ backup = self.GetBackupFilename(fname) -+ try: -+ if os.path.exists(backup): -+ os.remove(backup) -+ -+ shutil.copy2(fname, backup) -+ except: -+ return False -+ else: -+ return True -+ -+ def MakeBackupCopyAsync(self, fname): -+ """Do the backup asyncronously -+ @param fname: string (file path) -+ @todo: Not implemented yet -+ -+ """ -+ raise NotImplementedError("TODO: implement once threadpool is finished") -+ -+ def SetBackupFileTemplate(self, tstr): -+ """Set the filename template for generating the backupfile name -+ @param tstr: template string i.e) %s~ -+ -+ """ -+ assert tstr.count("%s") == 1, "Format statment must only have one arg" -+ self.template = tstr -+ -+ def SetHeader(self, header): -+ """Set the header string for identifying a file as a backup -+ @param header: string (single line only) -+ -+ """ -+ assert '\n' not in header, "Header must only be a single line" -+ self.header = header -diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/clipboard.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/clipboard.py ---- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/clipboard.py 1969-12-31 19:00:00.000000000 -0500 -+++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/clipboard.py 2009-06-06 03:48:10.000000000 -0400 -@@ -0,0 +1,135 @@ -+############################################################################### -+# Name: histcache.py # -+# Purpose: History Cache # -+# Author: Cody Precord # -+# Copyright: (c) 2009 Cody Precord # -+# Licence: wxWindows Licence # -+############################################################################### -+ -+""" -+Editra Buisness Model Library: Clipboard -+ -+Clipboard helper class -+ -+""" -+ -+__author__ = "Hasan Aljudy" -+__cvsid__ = "$Id: clipboard.py 60681 2009-05-17 10:41:42Z CJP $" -+__revision__ = "$Revision: 60681 $" -+ -+__all__ = [ 'Clipboard',] -+ -+#-----------------------------------------------------------------------------# -+# Imports -+import wx -+ -+#-----------------------------------------------------------------------------# -+ -+class Clipboard(object): -+ """Multiple clipboards as named registers (as per vim) -+ -+ " is an alias for system clipboard and is also the default clipboard. -+ -+ @note: The only way to access multiple clipboards right now is through -+ Normal mode when Vi(m) emulation is enabled. -+ -+ """ -+ NAMES = list(u'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_') -+ registers = {} -+ current = u'"' -+ -+ @classmethod -+ def Switch(cls, reg): -+ """Switch to register -+ @param reg: char -+ -+ """ -+ if reg in cls.NAMES or reg == u'"': -+ cls.current = reg -+ else: -+ raise Exception(u"Switched to invalid register name") -+ -+ @classmethod -+ def NextFree(cls, reg): -+ """Switch to the next free register. If current register is free, no -+ switching happens. -+ -+ A free register is one that's either unused or has no content -+ -+ @param reg: char -+ @note: This is not used yet. -+ -+ """ -+ if cls.Get() == u'': -+ return -+ -+ for name in cls.NAMES: -+ if cls.registers.get(name, u'') == u'': -+ cls.Switch(name) -+ break -+ -+ @classmethod -+ def AllUsed(cls): -+ """Get a dictionary mapping all used clipboards (plus the system -+ clipboard) to their content. -+ -+ @note: This is not used yet. -+ -+ """ -+ cmd_map = { u'"': cls.SystemGet() } -+ for name in cls.NAMES: -+ if cls.registers.get(name, u''): -+ cmd_map[name] = cls.registers[name] -+ return cmd_map -+ -+ @classmethod -+ def Get(cls): -+ """Get the content of the current register. Used for pasting""" -+ if cls.current == u'"': -+ return cls.SystemGet() -+ else: -+ return cls.registers.get( cls.current, u'' ) -+ -+ @classmethod -+ def Set(cls, text): -+ """Set the content of the current register -+ @param text: string -+ -+ """ -+ if cls.current == u'"': -+ return cls.SystemSet(text) -+ else: -+ cls.registers[cls.current] = text -+ -+ @classmethod -+ def SystemGet(cls): -+ """Get text from the system clipboard -+ @return: string -+ -+ """ -+ text = None -+ if wx.TheClipboard.Open(): -+ if wx.TheClipboard.IsSupported(wx.DataFormat(wx.DF_TEXT)): -+ text = wx.TextDataObject() -+ wx.TheClipboard.GetData(text) -+ -+ wx.TheClipboard.Close() -+ -+ if text is not None: -+ return text.GetText() -+ else: -+ return u'' -+ -+ @classmethod -+ def SystemSet(cls, text): -+ """Set text into the system clipboard -+ @param text: string -+ @return: bool -+ -+ """ -+ ok = False -+ if wx.TheClipboard.Open(): -+ wx.TheClipboard.SetData(wx.TextDataObject(text)) -+ wx.TheClipboard.Close() -+ ok = True -+ return ok -\ No newline at end of file -diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fchecker.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fchecker.py ---- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fchecker.py 1969-12-31 19:00:00.000000000 -0500 -+++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fchecker.py 2009-06-06 03:48:10.000000000 -0400 -@@ -0,0 +1,82 @@ -+############################################################################### -+# Name: fchecker.py # -+# Purpose: Filetype checker object. # -+# Author: Cody Precord # -+# Copyright: (c) 2009 Cody Precord # -+# Licence: wxWindows Licence # -+############################################################################### -+ -+""" -+Editra Buisness Model Library: FileTypeChecker -+ -+Helper class for checking what kind of a content a file contains. -+ -+""" -+ -+__author__ = "Cody Precord " -+__cvsid__ = "$Id: fchecker.py 60505 2009-05-03 19:18:21Z CJP $" -+__revision__ = "$Revision: 60505 $" -+ -+__all__ = [ 'FileTypeChecker', ] -+ -+#-----------------------------------------------------------------------------# -+# Imports -+import os -+ -+#-----------------------------------------------------------------------------# -+ -+class FileTypeChecker(object): -+ """File type checker and recognizer""" -+ TXTCHARS = ''.join(map(chr, [7, 8, 9, 10, 12, 13, 27] + range(0x20, 0x100))) -+ ALLBYTES = ''.join(map(chr, range(256))) -+ -+ def __init__(self, preread=4096): -+ """Create the FileTypeChecker -+ @keyword preread: number of bytes to read for checking file type -+ -+ """ -+ object.__init__(self) -+ -+ # Attributes -+ self._preread = preread -+ -+ @staticmethod -+ def _GetHandle(fname): -+ """Get a file handle for reading -+ @param fname: filename -+ @return: file object or None -+ -+ """ -+ try: -+ handle = open(fname, 'rb') -+ except: -+ handle = None -+ return handle -+ -+ def IsBinary(self, fname): -+ """Is the file made up of binary data -+ @param fname: filename to check -+ @return: bool -+ -+ """ -+ handle = self._GetHandle(fname) -+ if handle is not None: -+ bytes = handle.read(self._preread) -+ handle.close() -+ nontext = bytes.translate(FileTypeChecker.ALLBYTES, -+ FileTypeChecker.TXTCHARS) -+ return bool(nontext) -+ else: -+ return False -+ -+ def IsReadableText(self, fname): -+ """Is the given path readable as text. Will return True if the -+ file is accessable by current user and is plain text. -+ @param fname: filename -+ @return: bool -+ -+ """ -+ f_ok = False -+ if os.access(fname, os.R_OK): -+ f_ok = not self.IsBinary(fname) -+ return f_ok -diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fileimpl.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fileimpl.py ---- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fileimpl.py 1969-12-31 19:00:00.000000000 -0500 -+++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fileimpl.py 2009-06-06 03:48:10.000000000 -0400 -@@ -0,0 +1,215 @@ -+############################################################################### -+# Name: Cody Precord # -+# Purpose: File Object Interface Implementation # -+# Author: Cody Precord # -+# Copyright: (c) 2009 Cody Precord # -+# License: wxWindows License # -+############################################################################### -+ -+""" -+Editra Buisness Model Library: FileObjectImpl -+ -+Implementation of a file object interface class. Objects and methods inside -+of this library expect a file object that derives from this interface. -+ -+""" -+ -+__author__ = "Cody Precord " -+__svnid__ = "$Id: fileimpl.py 60582 2009-05-10 04:24:30Z CJP $" -+__revision__ = "$Revision: 60582 $" -+ -+#--------------------------------------------------------------------------# -+# Imports -+import os -+ -+# Editra Buisness Model Imports -+import fileutil -+ -+#--------------------------------------------------------------------------# -+ -+class FileObjectImpl(object): -+ """File Object Interface implementation base class""" -+ def __init__(self, path=u'', modtime=0): -+ object.__init__(self) -+ -+ # Attributes -+ self._path = path -+ self._modtime = modtime -+ -+ self._handle = None -+ self.open = False -+ -+ self.last_err = None -+ -+ def ClearLastError(self): -+ """Reset the error marker on this file""" -+ del self.last_err -+ self.last_err = None -+ -+ def Clone(self): -+ """Clone the file object -+ @return: FileObject -+ -+ """ -+ fileobj = FileObjectImpl(self._path, self._modtime) -+ fileobj.SetLastError(self.last_err) -+ return fileobj -+ -+ def Close(self): -+ """Close the file handle -+ @note: this is normally done automatically after a read/write operation -+ -+ """ -+ try: -+ self._handle.close() -+ except: -+ pass -+ -+ self.open = False -+ -+ def DoOpen(self, mode): -+ """Opens and creates the internal file object -+ @param mode: mode to open file in -+ @return: True if opened, False if not -+ @postcondition: self._handle is set to the open handle -+ -+ """ -+ if not len(self._path): -+ return False -+ -+ try: -+ file_h = open(self._path, mode) -+ except (IOError, OSError), msg: -+ self.last_err = msg -+ return False -+ else: -+ self._handle = file_h -+ self.open = True -+ return True -+ -+ def GetExtension(self): -+ """Get the files extension if it has one else simply return the -+ filename minus the path. -+ @return: string file extension (no dot) -+ -+ """ -+ fname = os.path.split(self._path) -+ return fname[-1].split(os.extsep)[-1].lower() -+ -+ def GetHandle(self): -+ """Get this files handle""" -+ return self._handle -+ -+ def GetLastError(self): -+ """Return the last error that occured when using this file -+ @return: err traceback or None -+ -+ """ -+ return unicode(self.last_err).replace("u'", "'") -+ -+ def GetModtime(self): -+ """Get the timestamp of this files last modification""" -+ return self._modtime -+ -+ def GetPath(self): -+ """Get the path of the file -+ @return: string -+ -+ """ -+ return self._path -+ -+ def GetSize(self): -+ """Get the size of the file -+ @return: int -+ -+ """ -+ if self._path: -+ return fileutil.GetFileSize(self._path) -+ else: -+ return 0 -+ -+ @property -+ def Handle(self): -+ """Raw file handle property""" -+ return self._handle -+ -+ def IsOpen(self): -+ """Check if file is open or not -+ @return: bool -+ -+ """ -+ return self.open -+ -+ def IsReadOnly(self): -+ """Is the file Read Only -+ @return: bool -+ -+ """ -+ if os.path.exists(self._path): -+ return not os.access(self._path, os.R_OK|os.W_OK) -+ else: -+ return False -+ -+ @property -+ def Modtime(self): -+ """File modification time propery""" -+ return self.GetModtime() -+ -+ @property -+ def ReadOnly(self): -+ """Is the file read only?""" -+ return self.IsReadOnly() -+ -+ def ResetAll(self): -+ """Reset all file attributes""" -+ self._handle = None -+ self.open = False -+ self._path = u'' -+ self._modtime = 0 -+ self.last_err = None -+ -+ def SetLastError(self, err): -+ """Set the last error -+ @param err: exception object / msg -+ -+ """ -+ self.last_err = err -+ -+ def SetPath(self, path): -+ """Set the path of the file -+ @param path: absolute path to file -+ -+ """ -+ self._path = path -+ -+ def SetModTime(self, mtime): -+ """Set the modtime of this file -+ @param mtime: long int to set modtime to -+ -+ """ -+ self._modtime = mtime -+ -+ #--- SHould be overridden by subclass ---# -+ -+ def Read(self): -+ """Open/Read the file -+ @return: string (file contents) -+ -+ """ -+ txt = u'' -+ if self.DoOpen('rb'): -+ try: -+ txt = self._handle.read() -+ except: -+ pass -+ -+ return txt -+ -+ def Write(self, value): -+ """Open/Write the value to disk -+ @param value: string -+ -+ """ -+ if self.DoOpen('wb'): -+ self._handle.write(value) -+ self._handle.close() -diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fileutil.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fileutil.py ---- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/fileutil.py 1969-12-31 19:00:00.000000000 -0500 -+++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/fileutil.py 2009-06-06 03:48:10.000000000 -0400 -@@ -0,0 +1,180 @@ -+############################################################################### -+# Name: fileutil.py # -+# Purpose: File Management Utilities. # -+# Author: Cody Precord # -+# Copyright: (c) 2009 Cody Precord # -+# Licence: wxWindows Licence # -+############################################################################### -+ -+""" -+Editra Buisness Model Library: File Utilities -+ -+Utility functions for managing and working with files. -+ -+""" -+ -+__author__ = "Cody Precord " -+__svnid__ = "$Id: fileutil.py 60523 2009-05-05 18:49:31Z CJP $" -+__revision__ = "$Revision: 60523 $" -+ -+__all__ = [ 'GetFileModTime', 'GetFileSize', 'GetUniqueName', 'MakeNewFile', -+ 'MakeNewFolder', 'GetFileExtension', 'GetFileName', 'GetPathName', -+ 'ResolveRealPath', 'IsLink' ] -+ -+#-----------------------------------------------------------------------------# -+# Imports -+import os -+import platform -+import stat -+ -+UNIX = WIN = False -+if platform.system().lower() in ['windows', 'microsoft']: -+ WIN = True -+ try: -+ # Check for if win32 extensions are available -+ import win32com.client as win32client -+ except ImportError: -+ win32client = None -+else: -+ UNIX = True -+ -+#-----------------------------------------------------------------------------# -+ -+def GetFileExtension(file_str): -+ """Gets last atom at end of string as extension if -+ no extension whole string is returned -+ @param file_str: path or file name to get extension from -+ -+ """ -+ return file_str.split('.')[-1] -+ -+def GetFileModTime(file_name): -+ """Returns the time that the given file was last modified on -+ @param file_name: path of file to get mtime of -+ -+ """ -+ try: -+ mod_time = os.path.getmtime(file_name) -+ except (OSError, EnvironmentError): -+ mod_time = 0 -+ return mod_time -+ -+def GetFileName(path): -+ """Gets last atom on end of string as filename -+ @param path: full path to get filename from -+ -+ """ -+ return os.path.split(path)[-1] -+ -+def GetFileSize(path): -+ """Get the size of the file at a given path -+ @param path: Path to file -+ @return: long -+ -+ """ -+ try: -+ return os.stat(path)[stat.ST_SIZE] -+ except: -+ return 0 -+ -+def GetPathName(path): -+ """Gets the path minus filename -+ @param path: full path to get base of -+ -+ """ -+ return os.path.split(path)[0] -+ -+def IsLink(path): -+ """Is the file a link -+ @return: bool -+ -+ """ -+ if WIN: -+ return path.endswith(".lnk") or os.path.islink(path) -+ else: -+ return os.path.islink(path) -+ -+def ResolveRealPath(link): -+ """Return the real path of the link file -+ @param link: path of link file -+ @return: string -+ -+ """ -+ assert IsLink(link), "ResolveRealPath expects a link file!" -+ realpath = link -+ if WIN and win32client is not None: -+ shell = win32client.Dispatch("WScript.Shell") -+ shortcut = shell.CreateShortCut(link) -+ realpath = shortcut.Targetpath -+ else: -+ realpath = os.path.realpath(link) -+ return realpath -+ -+#-----------------------------------------------------------------------------# -+ -+def GetUniqueName(path, name): -+ """Make a file name that will be unique in case a file of the -+ same name already exists at that path. -+ @param path: Root path to folder of files destination -+ @param name: desired file name base -+ @return: string -+ -+ """ -+ tmpname = os.path.join(path, name) -+ if os.path.exists(tmpname): -+ if '.' not in name: -+ ext = '' -+ fbase = name -+ else: -+ ext = '.' + name.split('.')[-1] -+ fbase = name[:-1 * len(ext)] -+ -+ inc = len([x for x in os.listdir(path) if x.startswith(fbase)]) -+ tmpname = os.path.join(path, "%s-%d%s" % (fbase, inc, ext)) -+ while os.path.exists(tmpname): -+ inc = inc + 1 -+ tmpname = os.path.join(path, "%s-%d%s" % (fbase, inc, ext)) -+ -+ return tmpname -+ -+ -+#-----------------------------------------------------------------------------# -+ -+def MakeNewFile(path, name): -+ """Make a new file at the given path with the given name. -+ If the file already exists, the given name will be changed to -+ a unique name in the form of name + -NUMBER + .extension -+ @param path: path to directory to create file in -+ @param name: desired name of file -+ @return: Tuple of (success?, Path of new file OR Error message) -+ -+ """ -+ if not os.path.isdir(path): -+ path = os.path.dirname(path) -+ fname = GetUniqueName(path, name) -+ -+ try: -+ open(fname, 'w').close() -+ except (IOError, OSError), msg: -+ return (False, str(msg)) -+ -+ return (True, fname) -+ -+def MakeNewFolder(path, name): -+ """Make a new folder at the given path with the given name. -+ If the folder already exists, the given name will be changed to -+ a unique name in the form of name + -NUMBER. -+ @param path: path to create folder on -+ @param name: desired name for folder -+ @return: Tuple of (success?, new dirname OR Error message) -+ -+ """ -+ if not os.path.isdir(path): -+ path = os.path.dirname(path) -+ folder = GetUniqueName(path, name) -+ try: -+ os.mkdir(folder) -+ except (OSError, IOError), msg: -+ return (False, str(msg)) -+ -+ return (True, folder) -diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/histcache.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/histcache.py ---- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/histcache.py 1969-12-31 19:00:00.000000000 -0500 -+++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/histcache.py 2009-06-06 03:48:10.000000000 -0400 -@@ -0,0 +1,131 @@ -+############################################################################### -+# Name: histcache.py # -+# Purpose: History Cache # -+# Author: Cody Precord # -+# Copyright: (c) 2009 Cody Precord # -+# Licence: wxWindows Licence # -+############################################################################### -+ -+""" -+Editra Buisness Model Library: HistoryCache -+ -+History cache that acts as a stack for managing a history list o -+ -+""" -+ -+__author__ = "Cody Precord " -+__cvsid__ = "$Id: histcache.py 60613 2009-05-13 02:27:21Z CJP $" -+__revision__ = "$Revision: 60613 $" -+ -+__all__ = [ 'HistoryCache', 'HIST_CACHE_UNLIMITED'] -+ -+#-----------------------------------------------------------------------------# -+# Imports -+ -+#-----------------------------------------------------------------------------# -+# Globals -+HIST_CACHE_UNLIMITED = -1 -+ -+#-----------------------------------------------------------------------------# -+ -+class HistoryCache(object): -+ def __init__(self, max_size=HIST_CACHE_UNLIMITED): -+ object.__init__(self) -+ -+ # Attributes -+ self._list = list() -+ self.cpos = -1 -+ self.max_size = max_size -+ -+ def _Resize(self): -+ """Adjust cache size based on max size setting""" -+ if self.max_size != HIST_CACHE_UNLIMITED: -+ lsize = len(self._list) -+ if lsize: -+ adj = self.max_size - lsize -+ if adj < 0: -+ self._list.pop(0) -+ self.cpos = len(self._list) - 1 -+ -+ def Clear(self): -+ """Clear the history cache""" -+ del self._list -+ self._list = list() -+ self.cpos = -1 -+ -+ def GetSize(self): -+ """Get the current size of the cache -+ @return: int (number of items in the cache) -+ -+ """ -+ return len(self._list) -+ -+ def GetMaxSize(self): -+ """Get the max size of the cache -+ @return: int -+ -+ """ -+ return self.max_size -+ -+ def GetNextItem(self): -+ """Get the next item in the history cache, moving the -+ current postion towards the end of the cache. -+ @return: object or None if at end of list -+ -+ """ -+ item = None -+ if self.cpos < len(self._list) - 1: -+ self.cpos += 1 -+ item = self._list[self.cpos] -+ return item -+ -+ def GetPreviousItem(self): -+ """Get the previous item in the history cache, moving the -+ current postion towards the begining of the cache. -+ @return: object or None if at start of list -+ -+ """ -+ item = None -+ if self.cpos >= 0: -+ item = self._list[self.cpos] -+ self.cpos -= 1 -+ return item -+ -+ def HasPrevious(self): -+ """Are there more items to the left of the current position -+ @return: bool -+ -+ """ -+ more = self.cpos >= 0 -+ return more -+ -+ def HasNext(self): -+ """Are there more items to the right of the current position -+ @return: bool -+ -+ """ -+ if self.cpos == -1 and len(self._list): -+ more = True -+ else: -+ more = self.cpos >= 0 and self.cpos < len(self._list) -+ return more -+ -+ def PutItem(self, item): -+ """Put an item on the top of the cache -+ @param item: object -+ -+ """ -+ if self.cpos != len(self._list) - 1: -+ self._list = self._list[:self.cpos] -+ self._list.append(item) -+ self.cpos += 1 -+ self._Resize() -+ -+ def SetMaxSize(self, max_size): -+ """Set the maximum size of the cache -+ @param max_size: int (HIST_CACHE_UNLIMITED for unlimited size) -+ -+ """ -+ assert max_size > 0 or max_size == 1, "Invalid max size" -+ self.max_size = max_size -+ self._Resize() -diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/miscutil.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/miscutil.py ---- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/miscutil.py 1969-12-31 19:00:00.000000000 -0500 -+++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/miscutil.py 2009-06-06 03:48:10.000000000 -0400 -@@ -0,0 +1,33 @@ -+############################################################################### -+# Name: miscutil.py # -+# Purpose: Various helper functions. # -+# Author: Cody Precord # -+# Copyright: (c) 2009 Cody Precord # -+# Licence: wxWindows Licence # -+############################################################################### -+ -+""" -+Editra Buisness Model Library: MiscUtil -+ -+Various helper functions -+ -+""" -+ -+__author__ = "Cody Precord " -+__cvsid__ = "$Id: miscutil.py 60840 2009-05-31 16:00:50Z CJP $" -+__revision__ = "$Revision: 60840 $" -+ -+__all__ = [ 'MinMax', ] -+ -+#-----------------------------------------------------------------------------# -+# Imports -+ -+#-----------------------------------------------------------------------------# -+ -+def MinMax(arg1, arg2): -+ """Return an ordered tuple of the minumum and maximum value -+ of the two args. -+ @return: tuple -+ -+ """ -+ return min(arg1, arg2), max(arg1, arg2) -diff -Naur wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/searcheng.py wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/searcheng.py ---- wxPython-src-2.8.10.1-orig/wxPython/wx/tools/Editra/src/ebmlib/searcheng.py 1969-12-31 19:00:00.000000000 -0500 -+++ wxPython-src-2.8.10.1/wxPython/wx/tools/Editra/src/ebmlib/searcheng.py 2009-06-06 03:48:10.000000000 -0400 -@@ -0,0 +1,400 @@ -+############################################################################### -+# Name: searcheng.py # -+# Purpose: Text search engine and utilities # -+# Author: Cody Precord # -+# Copyright: (c) 2009 Cody Precord # -+# Licence: wxWindows Licence # -+############################################################################### -+ -+""" -+Editra Buisness Model Library: SearchEngine -+ -+Text Search Engine for finding text and grepping files -+ -+""" -+ -+__author__ = "Cody Precord " -+__cvsid__ = "$Id: searcheng.py 60680 2009-05-17 20:31:58Z CJP $" -+__revision__ = "$Revision: 60680 $" -+ -+__all__ = [ 'SearchEngine', ] -+ -+#-----------------------------------------------------------------------------# -+# Imports -+import os -+import re -+import fnmatch -+import types -+from StringIO import StringIO -+ -+# Local imports -+import fchecker -+ -+#-----------------------------------------------------------------------------# -+ -+class SearchEngine(object): -+ """Text Search Engine -+ All Search* methods are iterable generators -+ All Find* methods do a complete search and return the match collection -+ @summary: Text Search Engine -+ @todo: Add file filter support -+ -+ """ -+ def __init__(self, query, regex=True, down=True, -+ matchcase=True, wholeword=False): -+ """Initialize a search engine object -+ @param query: search string -+ @keyword regex: Is a regex search -+ @keyword down: Search down or up -+ @keyword matchcase: Match case -+ @keyword wholeword: Match whole word -+ -+ """ -+ object.__init__(self) -+ -+ # Attributes -+ self._isregex = regex -+ self._next = down -+ self._matchcase = matchcase -+ self._wholeword = wholeword -+ self._unicode = False -+ self._query = query -+ self._regex = u'' -+ self._pool = u'' -+ self._lmatch = None # Last match object -+ self._filters = None # File Filters -+ self._formatter = lambda f, l, m: u"%s %d: %s" % (f, l+1, m) -+ self._CompileRegex() -+ -+ def _CompileRegex(self): -+ """Prepare and compile the regex object based on the current state -+ and settings of the engine. -+ @postcondition: the engines regular expression is created -+ -+ """ -+ tmp = self._query -+ if not self._isregex: -+ tmp = re.escape(tmp) -+ -+ if self._wholeword: -+ tmp = "\\b%s\\b" % tmp -+ -+ flags = re.MULTILINE -+ -+ if not self._matchcase: -+ flags |= re.IGNORECASE -+ -+ if self._unicode: -+ flags |= re.UNICODE -+ -+ try: -+ self._regex = re.compile(tmp, flags) -+ except: -+ self._regex = None -+ -+ def ClearPool(self): -+ """Clear the search pool""" -+ del self._pool -+ self._pool = u"" -+ -+ def Find(self, spos=0): -+ """Find the next match based on the state of the search engine -+ @keyword spos: search start position -+ @return: tuple (match start pos, match end pos) or None if no match -+ @note: L{SetSearchPool} has been called to set search string -+ -+ """ -+ if self._regex is None: -+ return None -+ -+ if self._next: -+ return self.FindNext(spos) -+ else: -+ if spos == 0: -+ spos = -1 -+ return self.FindPrev(spos) -+ -+ def FindAll(self): -+ """Find all the matches in the current context -+ @return: list of tuples [(start1, end1), (start2, end2), ] -+ -+ """ -+ if self._regex is None: -+ return list() -+ -+ matches = [match for match in self._regex.finditer(self._pool)] -+ return matches -+ -+ def FindAllLines(self): -+ """Find all the matches in the current context -+ @return: list of strings -+ -+ """ -+ rlist = list() -+ if self._regex is None: -+ return rlist -+ -+ for lnum, line in enumerate(StringIO(self._pool)): -+ if self._regex.search(line) is not None: -+ rlist.append(self._formatter(u"Untitled", lnum, line)) -+ -+ return rlist -+ -+ def FindNext(self, spos=0): -+ """Find the next match of the query starting at spos -+ @keyword spos: search start position in string -+ @return: tuple (match start pos, match end pos) or None if no match -+ @note: L{SetSearchPool} has been called to set the string to search in. -+ -+ """ -+ if self._regex is None: -+ return None -+ -+ if spos < len(self._pool): -+ match = self._regex.search(self._pool[spos:]) -+ if match is not None: -+ self._lmatch = match -+ return match.span() -+ return None -+ -+ def FindPrev(self, spos=-1): -+ """Find the previous match of the query starting at spos -+ @keyword spos: search start position in string -+ @return: tuple (match start pos, match end pos) -+ -+ """ -+ if self._regex is None: -+ return None -+ -+ if spos+1 < len(self._pool): -+ matches = [match for match in -+ self._regex.finditer(self._pool[:spos])] -+ if len(matches): -+ lmatch = matches[-1] -+ self._lmatch = lmatch -+ return (lmatch.start(), lmatch.end()) -+ return None -+ -+ def GetLastMatch(self): -+ """Get the last found match object from the previous L{FindNext} or -+ L{FindPrev} action. -+ @return: match object or None -+ -+ """ -+ return self._lmatch -+ -+ def GetOptionsString(self): -+ """Get a string describing the search engines options""" -+ rstring = u"\"%s\" [ " % self._query -+ for desc, attr in (("regex: %s", self._isregex), -+ ("match case: %s", self._matchcase), -+ ("whole word: %s", self._wholeword)): -+ if attr: -+ rstring += (desc % u"on; ") -+ else: -+ rstring += (desc % u"off; ") -+ rstring += u"]" -+ -+ return rstring -+ -+ def GetQuery(self): -+ """Get the raw query string used by the search engine -+ @return: string -+ -+ """ -+ return self._query -+ -+ def GetQueryObject(self): -+ """Get the regex object used for the search. Will return None if -+ there was an error in creating the object. -+ @return: pattern object -+ -+ """ -+ return self._regex -+ -+ def GetSearchPool(self): -+ """Get the search pool string for this L{SearchEngine}. -+ @return: string -+ -+ """ -+ return self._pool -+ -+ def IsMatchCase(self): -+ """Is the engine set to a case sensitive search -+ @return: bool -+ -+ """ -+ return self._matchcase -+ -+ def IsRegEx(self): -+ """Is the engine searching with the query as a regular expression -+ @return: bool -+ -+ """ -+ return self._isregex -+ -+ def IsWholeWord(self): -+ """Is the engine set to search for wholeword matches -+ @return: bool -+ -+ """ -+ return self._wholeword -+ -+ def SearchInBuffer(self, sbuffer): -+ """Search in the buffer -+ @param sbuffer: buffer like object -+ @todo: implement -+ -+ """ -+ raise NotImplementedError -+ -+ def SearchInDirectory(self, directory, recursive=True): -+ """Search in all the files found in the given directory -+ @param directory: directory path -+ @keyword recursive: search recursivly -+ -+ """ -+ if self._regex is None: -+ return -+ -+ # Get all files in the directories -+ paths = [os.path.join(directory, fname) -+ for fname in os.listdir(directory) if not fname.startswith('.')] -+ -+ # Filter out files that don't match the current filter(s) -+ if self._filters is not None and len(self._filters): -+ filtered = list() -+ for fname in paths: -+ if os.path.isdir(fname): -+ filtered.append(fname) -+ continue -+ -+ for pat in self._filters: -+ if fnmatch.fnmatch(fname, pat): -+ filtered.append(fname) -+ paths = filtered -+ -+ # Begin searching in the paths -+ for path in paths: -+ if recursive and os.path.isdir(path): -+ # Recursive call to decend into directories -+ for match in self.SearchInDirectory(path, recursive): -+ yield match -+ else: -+ for match in self.SearchInFile(path): -+ yield match -+ return -+ -+ def SearchInFile(self, fname): -+ """Search in a file for all lines with matches of the set query and -+ yield the results as they are found. -+ @param fname: filename -+ @todo: unicode handling -+ -+ """ -+ if self._regex is None: -+ return -+ -+ checker = fchecker.FileTypeChecker() -+ if checker.IsReadableText(fname): -+ try: -+ fobj = open(fname, 'rb') -+ except (IOError, OSError): -+ return -+ else: -+ # Special token to signify start of a search -+ yield (None, fname) -+ -+ for lnum, line in enumerate(fobj): -+ if self._regex.search(line) is not None: -+ yield self._formatter(fname, lnum, line) -+ fobj.close() -+ return -+ -+ def SearchInFiles(self, flist): -+ """Search in a list of files and yield results as they are found. -+ @param flist: list of file names -+ -+ """ -+ if self._regex is None: -+ return -+ -+ for fname in flist: -+ for match in self.SearchInFile(fname): -+ yield match -+ return -+ -+ def SearchInString(self, sstring, startpos=0): -+ """Search in a string -+ @param sstring: string to search in -+ @keyword startpos: search start position -+ -+ """ -+ raise NotImplementedError -+ -+ def SetFileFilters(self, filters): -+ """Set the file filters to specify what type of files to search in -+ the filter should be a list of wild card patterns to match. -+ @param filters: list of strings ['*.py', '*.pyw'] -+ -+ """ -+ self._filters = filters -+ -+ def SetFlags(self, isregex=None, matchcase=None, wholeword=None, down=None): -+ """Set the search engine flags. Leaving the parameter set to None -+ will not change the flag. Setting it to non None will change the value. -+ @keyword isregex: is regex search -+ @keyword matchcase: matchcase search -+ @keyword wholeword: wholeword search -+ @keyword down: search down or up -+ -+ """ -+ for attr, val in (('_isregex', isregex), ('_matchcase', matchcase), -+ ('_wholeword', wholeword), ('_next', down)): -+ if val is not None: -+ setattr(self, attr, val) -+ self._CompileRegex() -+ -+ def SetMatchCase(self, case=True): -+ """Set whether the engine will use case sensative searches -+ @keyword case: bool -+ -+ """ -+ self._matchcase = case -+ self._CompileRegex() -+ -+ def SetResultFormatter(self, funct): -+ """Set the result formatter function -+ @param funct: callable(filename, linenum, matchstr) -+ -+ """ -+ assert callable(funct) -+ self._formatter = funct -+ -+ def SetSearchPool(self, pool): -+ """Set the search pool used by the Find methods -+ @param pool: string to search in -+ -+ """ -+ del self._pool -+ self._pool = pool -+ if isinstance(self._pool, types.UnicodeType): -+ self._unicode = True -+ self._CompileRegex() -+ -+ def SetQuery(self, query): -+ """Set the search query -+ @param query: string -+ -+ """ -+ self._query = query -+ self._CompileRegex() -+ -+ def SetUseRegex(self, use=True): -+ """Set whether the engine is using regular expresion searches or -+ not. -+ @keyword use: bool -+ -+ """ -+ self._isregex = use -+ self._CompileRegex() diff --git a/wxPython-2.8.11.0-aui.patch b/wxPython-2.8.11.0-aui.patch new file mode 100644 index 0000000..45fab7c --- /dev/null +++ b/wxPython-2.8.11.0-aui.patch @@ -0,0 +1,24 @@ +diff -up wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_pages.py.aui wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_pages.py +--- wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_pages.py.aui 2010-05-27 15:38:42.000000000 +0200 ++++ wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_pages.py 2010-05-27 15:38:50.000000000 +0200 +@@ -36,7 +36,7 @@ import ed_txt + import ed_mdlg + import ebmlib + import eclib +-from extern import aui ++from wx.lib.agw import aui + + #--------------------------------------------------------------------------# + # Globals +diff -up wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_shelf.py.aui wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_shelf.py +--- wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_shelf.py.aui 2010-05-27 15:38:20.000000000 +0200 ++++ wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_shelf.py 2010-05-27 15:38:28.000000000 +0200 +@@ -28,7 +28,7 @@ import ed_glob + from profiler import Profile_Get + import plugin + import iface +-import extern.aui as aui ++from wx.lib.agw import aui + + #--------------------------------------------------------------------------# + # Globals diff --git a/wxPython.spec b/wxPython.spec index 33b4df5..d8effbd 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -4,8 +4,8 @@ %define buildflags WXPORT=gtk2 UNICODE=1 Name: wxPython -Version: 2.8.10.1 -Release: 3%{?dist} +Version: 2.8.11.0 +Release: 1%{?dist} Summary: GUI toolkit for the Python programming language @@ -15,11 +15,12 @@ URL: http://www.wxpython.org/ Source0: http://downloads.sourceforge.net/wxpython/%{name}-src-%{version}.tar.bz2 # http://trac.wxwidgets.org/ticket/10703 Patch0: wxPython-2.8.9.2-treelist.patch -# add missing module - https://bugzilla.redhat.com/show_bug.cgi?id=573961 -Patch2: wxPython-2.8.10.1-ebmlib.patch +# fix aui imports +# http://trac.wxwidgets.org/ticket/12107 +Patch1: wxPython-2.8.11.0-aui.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # make sure to keep this updated as appropriate -BuildRequires: wxGTK-devel >= 2.8.10 +BuildRequires: wxGTK-devel >= 2.8.11 BuildRequires: python-devel # packages should depend on "wxPython", not "wxPythonGTK2", but in case @@ -59,7 +60,7 @@ Documentation, samples and demo application for wxPython. %prep %setup -q -n wxPython-src-%{version} %patch0 -p1 -b .treelist -%patch2 -p1 -b .ebmlib +%patch1 -p1 -b .aui # fix libdir otherwise additional wx libs cannot be found sed -i -e 's|/usr/lib|%{_libdir}|' wxPython/config.py @@ -118,6 +119,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon May 31 2010 Dan Horák - 2.8.11.0-1 +- update to 2.8.11.0 (#593837, #595936, #597639) + * Sun May 2 2010 Dan Horák - 2.8.10.1-3 - rebuilt with wxGTK 2.8.11 From b0fcfef23eaab54b04ae9ea89c03f90c84bdd323 Mon Sep 17 00:00:00 2001 From: Lubomir Rintel Date: Sun, 11 Jul 2010 20:59:20 +0000 Subject: [PATCH 04/46] - Include egg-info when build on recent RHEL --- wxPython.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/wxPython.spec b/wxPython.spec index d8effbd..cd99754 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.11.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GUI toolkit for the Python programming language @@ -99,7 +99,7 @@ rm -rf $RPM_BUILD_ROOT %dir %{python_sitearch}/wx-2.8-gtk2-unicode/ %{python_sitearch}/wx-2.8-gtk2-unicode/wx %{python_sitearch}/wx-2.8-gtk2-unicode/wxPython -%if 0%{?fedora} >= 9 +%if 0%{?fedora} >= 9 || 0%{?rhel} >= 6 %{python_sitelib}/*egg-info %{python_sitearch}/wx-2.8-gtk2-unicode/*egg-info %endif @@ -119,6 +119,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Sun Jul 11 2010 Lubomir Rintel - 2.8.11.0-2 +- Include egg-info when build on recent RHEL + * Mon May 31 2010 Dan Horák - 2.8.11.0-1 - update to 2.8.11.0 (#593837, #595936, #597639) From 73774afa9769164b730408001d5cc2865092407b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Mon, 12 Jul 2010 16:07:49 +0000 Subject: [PATCH 05/46] - rebuilt against wxGTK-2.8.11-2 --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index cd99754..6fbe78a 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.11.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: GUI toolkit for the Python programming language @@ -119,6 +119,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon Jul 12 2010 Dan Horák - 2.8.11.0-3 +- rebuilt against wxGTK-2.8.11-2 + * Sun Jul 11 2010 Lubomir Rintel - 2.8.11.0-2 - Include egg-info when build on recent RHEL From 083fc56324a759d62817bda762315722566e055b Mon Sep 17 00:00:00 2001 From: dmalcolm Date: Thu, 22 Jul 2010 07:16:26 +0000 Subject: [PATCH 06/46] - Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 6fbe78a..57a1af6 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.11.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: GUI toolkit for the Python programming language @@ -119,6 +119,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Thu Jul 22 2010 David Malcolm - 2.8.11.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + * Mon Jul 12 2010 Dan Horák - 2.8.11.0-3 - rebuilt against wxGTK-2.8.11-2 From addd933c6b11854d3b0196c87d3f4afa6aabfaba Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 29 Jul 2010 15:29:15 +0000 Subject: [PATCH 07/46] dist-git conversion --- .cvsignore => .gitignore | 0 Makefile | 21 --------------------- 2 files changed, 21 deletions(-) rename .cvsignore => .gitignore (100%) delete mode 100644 Makefile diff --git a/.cvsignore b/.gitignore similarity index 100% rename from .cvsignore rename to .gitignore diff --git a/Makefile b/Makefile deleted file mode 100644 index 436fca0..0000000 --- a/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# Makefile for source rpm: wxPython -# $Id: Makefile,v 1.4 2005/12/21 13:19:54 mschwendt Exp $ -NAME := wxPython -SPECFILE = $(firstword $(wildcard *.spec)) - -define find-makefile-common -for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done -endef - -MAKEFILE_COMMON := $(shell $(find-makefile-common)) - -ifeq ($(MAKEFILE_COMMON),) -# attept a checkout -define checkout-makefile-common -test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 -endef - -MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) -endif - -include $(MAKEFILE_COMMON) From ff005f72a5ab69d9af4430755fb6855b8615ad93 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Mon, 7 Feb 2011 21:21:45 -0600 Subject: [PATCH 08/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 57a1af6..4a677ca 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.11.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: GUI toolkit for the Python programming language @@ -119,6 +119,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Mon Feb 07 2011 Fedora Release Engineering - 2.8.11.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + * Thu Jul 22 2010 David Malcolm - 2.8.11.0-4 - Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild From cb785537826248822abd17c59ccf7d309312d445 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Thu, 28 Apr 2011 14:57:28 +0200 Subject: [PATCH 09/46] update to 2.8.12.0 (#699207) --- .gitignore | 1 + sources | 2 +- wxPython-2.8.11.0-aui.patch | 24 ------------------------ wxPython-2.8.12.0-aui.patch | 24 ++++++++++++++++++++++++ wxPython-2.8.9.2-treelist.patch | 11 ----------- wxPython.spec | 14 +++++++------- 6 files changed, 33 insertions(+), 43 deletions(-) delete mode 100644 wxPython-2.8.11.0-aui.patch create mode 100644 wxPython-2.8.12.0-aui.patch delete mode 100644 wxPython-2.8.9.2-treelist.patch diff --git a/.gitignore b/.gitignore index 3a89b5e..ea61b77 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ wxPython-src-2.8.11.0.tar.bz2 +/wxPython-src-2.8.12.0.tar.bz2 diff --git a/sources b/sources index 08f0993..f117e2f 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -63f73aae49e530852db56a31b57529fa wxPython-src-2.8.11.0.tar.bz2 +402e0b81e06f596d849e221a7a76acc6 wxPython-src-2.8.12.0.tar.bz2 diff --git a/wxPython-2.8.11.0-aui.patch b/wxPython-2.8.11.0-aui.patch deleted file mode 100644 index 45fab7c..0000000 --- a/wxPython-2.8.11.0-aui.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_pages.py.aui wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_pages.py ---- wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_pages.py.aui 2010-05-27 15:38:42.000000000 +0200 -+++ wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_pages.py 2010-05-27 15:38:50.000000000 +0200 -@@ -36,7 +36,7 @@ import ed_txt - import ed_mdlg - import ebmlib - import eclib --from extern import aui -+from wx.lib.agw import aui - - #--------------------------------------------------------------------------# - # Globals -diff -up wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_shelf.py.aui wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_shelf.py ---- wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_shelf.py.aui 2010-05-27 15:38:20.000000000 +0200 -+++ wxPython-src-2.8.11.0/wxPython/wx/tools/Editra/src/ed_shelf.py 2010-05-27 15:38:28.000000000 +0200 -@@ -28,7 +28,7 @@ import ed_glob - from profiler import Profile_Get - import plugin - import iface --import extern.aui as aui -+from wx.lib.agw import aui - - #--------------------------------------------------------------------------# - # Globals diff --git a/wxPython-2.8.12.0-aui.patch b/wxPython-2.8.12.0-aui.patch new file mode 100644 index 0000000..bd631e0 --- /dev/null +++ b/wxPython-2.8.12.0-aui.patch @@ -0,0 +1,24 @@ +diff -up wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_pages.py.aui wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_pages.py +--- wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_pages.py.aui 2011-04-13 22:28:07.000000000 +0200 ++++ wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_pages.py 2011-04-26 08:40:13.000000000 +0200 +@@ -37,7 +37,7 @@ import ed_txt + import ed_mdlg + import ebmlib + import eclib +-from extern import aui ++from wx.lib.agw import aui + import ed_book + + #--------------------------------------------------------------------------# +diff -up wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_shelf.py.aui wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_shelf.py +--- wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_shelf.py.aui 2011-04-13 22:28:07.000000000 +0200 ++++ wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_shelf.py 2011-04-26 08:40:26.000000000 +0200 +@@ -29,7 +29,7 @@ from profiler import Profile_Get + import ed_msg + import plugin + import iface +-from extern import aui ++from wx.lib.agw import aui + import ed_book + + #--------------------------------------------------------------------------# diff --git a/wxPython-2.8.9.2-treelist.patch b/wxPython-2.8.9.2-treelist.patch deleted file mode 100644 index e7cf28b..0000000 --- a/wxPython-2.8.9.2-treelist.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- wxPython-src-2.8.9.2/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp.orig 2009-04-10 23:03:18.000000000 +0200 -+++ wxPython-src-2.8.9.2/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp 2009-04-10 23:03:41.000000000 +0200 -@@ -10321,7 +10321,7 @@ SWIGINTERN PyObject *_wrap_TreeListCtrl_ - PyObject *resultobj = 0; - wxPyTreeListCtrl *arg1 = (wxPyTreeListCtrl *) 0 ; - wxTreeItemId *arg2 = 0 ; -- wxTreeItemId const &arg3_defvalue = NULL ; -+ wxTreeItemId const &arg3_defvalue = (wxTreeItemId *) NULL ; - wxTreeItemId *arg3 = (wxTreeItemId *) &arg3_defvalue ; - bool arg4 = (bool) true ; - void *argp1 = 0 ; diff --git a/wxPython.spec b/wxPython.spec index 4a677ca..71a62a3 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -4,8 +4,8 @@ %define buildflags WXPORT=gtk2 UNICODE=1 Name: wxPython -Version: 2.8.11.0 -Release: 5%{?dist} +Version: 2.8.12.0 +Release: 1%{?dist} Summary: GUI toolkit for the Python programming language @@ -13,11 +13,9 @@ Group: Development/Languages License: LGPLv2+ and wxWidgets URL: http://www.wxpython.org/ Source0: http://downloads.sourceforge.net/wxpython/%{name}-src-%{version}.tar.bz2 -# http://trac.wxwidgets.org/ticket/10703 -Patch0: wxPython-2.8.9.2-treelist.patch # fix aui imports # http://trac.wxwidgets.org/ticket/12107 -Patch1: wxPython-2.8.11.0-aui.patch +Patch0: wxPython-2.8.12.0-aui.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) # make sure to keep this updated as appropriate BuildRequires: wxGTK-devel >= 2.8.11 @@ -59,8 +57,7 @@ Documentation, samples and demo application for wxPython. %prep %setup -q -n wxPython-src-%{version} -%patch0 -p1 -b .treelist -%patch1 -p1 -b .aui +%patch0 -p1 -b .aui # fix libdir otherwise additional wx libs cannot be found sed -i -e 's|/usr/lib|%{_libdir}|' wxPython/config.py @@ -119,6 +116,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Tue Apr 26 2011 Dan Horák - 2.8.12.0-1 +- update to 2.8.12.0 (#699207) + * Mon Feb 07 2011 Fedora Release Engineering - 2.8.11.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild From ede0e97ed3636b8d07eeabf289092b08782c38d9 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sat, 14 Jan 2012 02:32:51 -0600 Subject: [PATCH 10/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 71a62a3..e05ac16 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.12.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GUI toolkit for the Python programming language @@ -116,6 +116,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Sat Jan 14 2012 Fedora Release Engineering - 2.8.12.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + * Tue Apr 26 2011 Dan Horák - 2.8.12.0-1 - update to 2.8.12.0 (#699207) From a36650e4d0469341e136226909e6fe313ee5660d Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sat, 21 Jul 2012 23:11:34 -0500 Subject: [PATCH 11/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index e05ac16..4593909 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.12.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: GUI toolkit for the Python programming language @@ -116,6 +116,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Sun Jul 22 2012 Fedora Release Engineering - 2.8.12.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + * Sat Jan 14 2012 Fedora Release Engineering - 2.8.12.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild From 9cdb44a167bcdcec81c408e7b687a3cca696758a Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Thu, 14 Feb 2013 21:22:13 -0600 Subject: [PATCH 12/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 4593909..c036485 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.12.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: GUI toolkit for the Python programming language @@ -116,6 +116,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Fri Feb 15 2013 Fedora Release Engineering - 2.8.12.0-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + * Sun Jul 22 2012 Fedora Release Engineering - 2.8.12.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild From 9f454de419f3964c27e6d78fde3ff3f5593acda0 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sun, 4 Aug 2013 02:24:49 -0500 Subject: [PATCH 13/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index c036485..f65e132 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.12.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: GUI toolkit for the Python programming language @@ -116,6 +116,9 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Sun Aug 04 2013 Fedora Release Engineering - 2.8.12.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + * Fri Feb 15 2013 Fedora Release Engineering - 2.8.12.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild From cd515dfe0e28b8cc163a75f671db17ccc3b84800 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Fri, 14 Mar 2014 13:02:32 +0100 Subject: [PATCH 14/46] - fix FTBFS due -Werror=format-security - modernize spec --- wxPython-2.8.12.0-format.patch | 230 +++++++++++++++++++++++++++++++++ wxPython.spec | 22 ++-- 2 files changed, 240 insertions(+), 12 deletions(-) create mode 100644 wxPython-2.8.12.0-format.patch diff --git a/wxPython-2.8.12.0-format.patch b/wxPython-2.8.12.0-format.patch new file mode 100644 index 0000000..64644df --- /dev/null +++ b/wxPython-2.8.12.0-format.patch @@ -0,0 +1,230 @@ +diff -up wxPython-src-2.8.12.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp.format 2014-03-14 11:35:34.581008618 +0100 ++++ wxPython-src-2.8.12.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp 2014-03-14 11:35:46.035843300 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/contrib/glcanvas/gtk/glcanvas_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/contrib/glcanvas/gtk/glcanvas_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/contrib/glcanvas/gtk/glcanvas_wrap.cpp.format 2014-03-14 11:34:19.451092820 +0100 ++++ wxPython-src-2.8.12.0/wxPython/contrib/glcanvas/gtk/glcanvas_wrap.cpp 2014-03-14 11:34:32.157909458 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/contrib/stc/gtk/stc_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/contrib/stc/gtk/stc_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/contrib/stc/gtk/stc_wrap.cpp.format 2014-03-14 11:34:48.078679712 +0100 ++++ wxPython-src-2.8.12.0/wxPython/contrib/stc/gtk/stc_wrap.cpp 2014-03-14 11:34:59.102520628 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp.format 2014-03-14 11:27:46.008769964 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp 2014-03-14 11:28:51.805819727 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp.format 2014-03-14 11:27:46.008769964 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp 2014-03-14 11:28:51.805819727 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/animate_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/animate_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/animate_wrap.cpp.format 2014-03-14 11:27:46.008769964 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/animate_wrap.cpp 2014-03-14 11:28:51.805819727 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/aui_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/aui_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/aui_wrap.cpp.format 2014-03-14 11:27:46.013769892 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/aui_wrap.cpp 2014-03-14 11:29:04.018643338 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/calendar_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/calendar_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/calendar_wrap.cpp.format 2014-03-14 11:27:46.015769863 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/calendar_wrap.cpp 2014-03-14 11:29:17.674446166 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/combo_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/combo_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/combo_wrap.cpp.format 2014-03-14 11:27:46.018769820 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/combo_wrap.cpp 2014-03-14 11:29:29.227279558 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_controls_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_controls_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/_controls_wrap.cpp.format 2014-03-14 11:27:46.025769719 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/_controls_wrap.cpp 2014-03-14 11:28:04.778498903 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/grid_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/grid_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/grid_wrap.cpp.format 2014-03-14 11:27:46.044769444 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/grid_wrap.cpp 2014-03-14 11:29:40.914111013 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/html_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/html_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/html_wrap.cpp.format 2014-03-14 11:27:46.048769387 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/html_wrap.cpp 2014-03-14 11:29:52.878938455 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/media_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/media_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/media_wrap.cpp.format 2014-03-14 11:27:46.050769358 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/media_wrap.cpp 2014-03-14 11:30:04.953764306 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_misc_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_misc_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/_misc_wrap.cpp.format 2014-03-14 11:27:46.055769285 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/_misc_wrap.cpp 2014-03-14 11:28:26.677182645 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/richtext_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/richtext_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/richtext_wrap.cpp.format 2014-03-14 11:27:46.060769213 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/richtext_wrap.cpp 2014-03-14 11:30:15.843607244 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/webkit_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/webkit_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/webkit_wrap.cpp.format 2014-03-14 11:27:46.063769170 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/webkit_wrap.cpp 2014-03-14 11:30:31.108387076 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_windows_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_windows_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/_windows_wrap.cpp.format 2014-03-14 11:27:46.068769098 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/_windows_wrap.cpp 2014-03-14 11:28:41.342970838 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/wizard_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/wizard_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/wizard_wrap.cpp.format 2014-03-14 11:27:46.070769069 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/wizard_wrap.cpp 2014-03-14 11:30:42.440223630 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/xrc_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/xrc_wrap.cpp +--- wxPython-src-2.8.12.0/wxPython/src/gtk/xrc_wrap.cpp.format 2014-03-14 11:27:46.073769026 +0100 ++++ wxPython-src-2.8.12.0/wxPython/src/gtk/xrc_wrap.cpp 2014-03-14 11:30:55.391036827 +0100 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + diff --git a/wxPython.spec b/wxPython.spec index f65e132..4f6758e 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.12.0 -Release: 5%{?dist} +Release: 6%{?dist} Summary: GUI toolkit for the Python programming language @@ -16,7 +16,7 @@ Source0: http://downloads.sourceforge.net/wxpython/%{name}-src-%{version} # fix aui imports # http://trac.wxwidgets.org/ticket/12107 Patch0: wxPython-2.8.12.0-aui.patch -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Patch1: wxPython-2.8.12.0-format.patch # make sure to keep this updated as appropriate BuildRequires: wxGTK-devel >= 2.8.11 BuildRequires: python-devel @@ -58,9 +58,10 @@ Documentation, samples and demo application for wxPython. %prep %setup -q -n wxPython-src-%{version} %patch0 -p1 -b .aui +%patch1 -p1 -b .format -# fix libdir otherwise additional wx libs cannot be found -sed -i -e 's|/usr/lib|%{_libdir}|' wxPython/config.py +# fix libdir otherwise additional wx libs cannot be found, fix default optimization flags +sed -i -e 's|/usr/lib|%{_libdir}|' -e 's|-O3||' wxPython/config.py %build @@ -73,7 +74,6 @@ python setup.py %{buildflags} build %install -rm -rf $RPM_BUILD_ROOT cd wxPython python setup.py %{buildflags} install --root=$RPM_BUILD_ROOT @@ -83,12 +83,8 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wx.pth $RPM_BUILD_ROOT%{python_sitearch} mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitearch} %endif -%clean -rm -rf $RPM_BUILD_ROOT - %files -%defattr(-,root,root,-) %doc wxPython/licence %{_bindir}/* %{python_sitearch}/wx.pth @@ -102,7 +98,6 @@ rm -rf $RPM_BUILD_ROOT %endif %files devel -%defattr(-,root,root,-) %dir %{_includedir}/wx-2.8/wx/wxPython %{_includedir}/wx-2.8/wx/wxPython/*.h %dir %{_includedir}/wx-2.8/wx/wxPython/i_files @@ -111,11 +106,14 @@ rm -rf $RPM_BUILD_ROOT %{_includedir}/wx-2.8/wx/wxPython/i_files/*.swg %files docs -%defattr(-,root,root,-) %doc wxPython/docs wxPython/demo wxPython/samples %changelog +* Fri Mar 14 2014 Dan Horák - 2.8.12.0-6 +- fix FTBFS due -Werror=format-security +- modernize spec + * Sun Aug 04 2013 Fedora Release Engineering - 2.8.12.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild @@ -200,7 +198,7 @@ rm -rf $RPM_BUILD_ROOT - Fix an attribute error when importing wxPython (compat) module (redhat bugzilla 450073, 450074) -* Sat Jun 6 2008 Matthew Miller - 2.8.7.1-4 +* Sat Jun 7 2008 Matthew Miller - 2.8.7.1-4 - gratuitously bump package release number to work around build system glitch. again, but it will work this time. From 765f773e42540ed754237ea5b006b9a4026c679c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Hor=C3=A1k?= Date: Fri, 14 Mar 2014 13:23:26 +0100 Subject: [PATCH 15/46] set CFLAGS to -O2 --- wxPython.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 4f6758e..d6bb295 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -61,7 +61,7 @@ Documentation, samples and demo application for wxPython. %patch1 -p1 -b .format # fix libdir otherwise additional wx libs cannot be found, fix default optimization flags -sed -i -e 's|/usr/lib|%{_libdir}|' -e 's|-O3||' wxPython/config.py +sed -i -e 's|/usr/lib|%{_libdir}|' -e 's|-O3|-O2|' wxPython/config.py %build From a4ea84a4e8916e15b71f9748d5f1f11f7ebe8ba0 Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Sun, 8 Jun 2014 00:01:48 -0500 Subject: [PATCH 16/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index d6bb295..6760b60 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.12.0 -Release: 6%{?dist} +Release: 7%{?dist} Summary: GUI toolkit for the Python programming language @@ -110,6 +110,9 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitear %changelog +* Sun Jun 08 2014 Fedora Release Engineering - 2.8.12.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + * Fri Mar 14 2014 Dan Horák - 2.8.12.0-6 - fix FTBFS due -Werror=format-security - modernize spec From 9ba8899d0e19a3e1b7d28b0c43bea98bd7548f27 Mon Sep 17 00:00:00 2001 From: Peter Robinson Date: Mon, 18 Aug 2014 09:01:42 +0000 Subject: [PATCH 17/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 6760b60..1a29463 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 2.8.12.0 -Release: 7%{?dist} +Release: 8%{?dist} Summary: GUI toolkit for the Python programming language @@ -110,6 +110,9 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitear %changelog +* Mon Aug 18 2014 Fedora Release Engineering - 2.8.12.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + * Sun Jun 08 2014 Fedora Release Engineering - 2.8.12.0-7 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild From b91dc38d2c5665a6967ec212597b3a19cf885661 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Sat, 3 Jan 2015 12:53:27 -0500 Subject: [PATCH 18/46] New upstream release 3.0.2.0, built against wxGTK3 --- fix-editra-removal.patch | 160 +++++++++++++++++++++ wxPython-3.0.0.0-format.patch | 264 ++++++++++++++++++++++++++++++++++ wxPython.spec | 46 +++--- 3 files changed, 446 insertions(+), 24 deletions(-) create mode 100644 fix-editra-removal.patch create mode 100644 wxPython-3.0.0.0-format.patch diff --git a/fix-editra-removal.patch b/fix-editra-removal.patch new file mode 100644 index 0000000..c21a153 --- /dev/null +++ b/fix-editra-removal.patch @@ -0,0 +1,160 @@ +diff --git a/wxPython/distrib/DIRLIST b/wxPython/distrib/DIRLIST +index 688d0d1..82dd00d 100644 +--- a/wxPython/distrib/DIRLIST ++++ b/wxPython/distrib/DIRLIST +@@ -149,104 +149,5 @@ wx/tools/XRCed/misc/src-images + wx/tools/XRCed/plugins + wx/tools/XRCed/plugins/bitmaps + wx/tools/XRCed/plugins/src-images +-wx/tools/Editra +-wx/tools/Editra/docs +-wx/tools/Editra/include +-wx/tools/Editra/include/python2.5 +-wx/tools/Editra/include/python2.5/darwin +-wx/tools/Editra/include/python2.5/win32 +-wx/tools/Editra/locale +-wx/tools/Editra/locale/ca_ES@valencia +-wx/tools/Editra/locale/ca_ES@valencia/LC_MESSAGES +-wx/tools/Editra/locale/cs_CZ +-wx/tools/Editra/locale/cs_CZ/LC_MESSAGES +-wx/tools/Editra/locale/da_DK +-wx/tools/Editra/locale/da_DK/LC_MESSAGES +-wx/tools/Editra/locale/de_DE +-wx/tools/Editra/locale/de_DE/LC_MESSAGES +-wx/tools/Editra/locale/en_US +-wx/tools/Editra/locale/en_US/LC_MESSAGES +-wx/tools/Editra/locale/es_ES +-wx/tools/Editra/locale/es_ES/LC_MESSAGES +-wx/tools/Editra/locale/fr_FR +-wx/tools/Editra/locale/fr_FR/LC_MESSAGES +-wx/tools/Editra/locale/gl_ES +-wx/tools/Editra/locale/gl_ES/LC_MESSAGES +-wx/tools/Editra/locale/it_IT +-wx/tools/Editra/locale/it_IT/LC_MESSAGES +-wx/tools/Editra/locale/hr_HR +-wx/tools/Editra/locale/hr_HR/LC_MESSAGES +-wx/tools/Editra/locale/hu_HU +-wx/tools/Editra/locale/hu_HU/LC_MESSAGES +-wx/tools/Editra/locale/ja_JP +-wx/tools/Editra/locale/ja_JP/LC_MESSAGES +-wx/tools/Editra/locale/lv_LV +-wx/tools/Editra/locale/lv_LV/LC_MESSAGES +-wx/tools/Editra/locale/nl_NL +-wx/tools/Editra/locale/nl_NL/LC_MESSAGES +-wx/tools/Editra/locale/nn_NO +-wx/tools/Editra/locale/nn_NO/LC_MESSAGES +-wx/tools/Editra/locale/pl_PL +-wx/tools/Editra/locale/pl_PL/LC_MESSAGES +-wx/tools/Editra/locale/pt_BR +-wx/tools/Editra/locale/pt_BR/LC_MESSAGES +-wx/tools/Editra/locale/ro_RO +-wx/tools/Editra/locale/ro_RO/LC_MESSAGES +-wx/tools/Editra/locale/ru_RU +-wx/tools/Editra/locale/ru_RU/LC_MESSAGES +-wx/tools/Editra/locale/sk_SK +-wx/tools/Editra/locale/sk_SK/LC_MESSAGES +-wx/tools/Editra/locale/sl_SI +-wx/tools/Editra/locale/sl_SI/LC_MESSAGES +-wx/tools/Editra/locale/sr_RS +-wx/tools/Editra/locale/sr_RS/LC_MESSAGES +-wx/tools/Editra/locale/sv_SE +-wx/tools/Editra/locale/sv_SE/LC_MESSAGES +-wx/tools/Editra/locale/tr_TR +-wx/tools/Editra/locale/tr_TR/LC_MESSAGES +-wx/tools/Editra/locale/uk_UA +-wx/tools/Editra/locale/uk_UA/LC_MESSAGES +-wx/tools/Editra/locale/zh_CN +-wx/tools/Editra/locale/zh_CN/LC_MESSAGES +-wx/tools/Editra/locale/zh_TW +-wx/tools/Editra/locale/zh_TW/LC_MESSAGES +-wx/tools/Editra/pixmaps +-wx/tools/Editra/pixmaps/theme +-wx/tools/Editra/pixmaps/theme/Default +-wx/tools/Editra/pixmaps/theme/Tango +-wx/tools/Editra/pixmaps/theme/Tango/menu +-wx/tools/Editra/pixmaps/theme/Tango/mime +-wx/tools/Editra/pixmaps/theme/Tango/other +-wx/tools/Editra/pixmaps/theme/Tango/toolbar +-wx/tools/Editra/pixmaps/theme/Tango/other +-wx/tools/Editra/plugins +-wx/tools/Editra/plugins/codebrowser +-wx/tools/Editra/plugins/codebrowser/codebrowser +-wx/tools/Editra/plugins/codebrowser/codebrowser/gentag +-wx/tools/Editra/plugins/filebrowser +-wx/tools/Editra/plugins/filebrowser/filebrowser +-wx/tools/Editra/plugins/hello +-wx/tools/Editra/plugins/hello/hello +-wx/tools/Editra/plugins/Launch +-wx/tools/Editra/plugins/Launch/launch +-wx/tools/Editra/plugins/pyshell +-wx/tools/Editra/plugins/pyshell/pyshell +-wx/tools/Editra/scripts +-wx/tools/Editra/scripts/i18n +-wx/tools/Editra/src +-wx/tools/Editra/src/autocomp +-wx/tools/Editra/src/ebmlib +-wx/tools/Editra/src/eclib +-wx/tools/Editra/src/extern +-wx/tools/Editra/src/extern/aui +-wx/tools/Editra/src/extern/pygments +-wx/tools/Editra/src/extern/pygments/filters +-wx/tools/Editra/src/extern/pygments/formatters +-wx/tools/Editra/src/extern/pygments/lexers +-wx/tools/Editra/src/extern/pygments/styles +-wx/tools/Editra/src/syntax +-wx/tools/Editra/styles +-wx/tools/Editra/templates +-wx/tools/Editra/tests/syntax + + wxversion +diff --git a/wxPython/setup.py b/wxPython/setup.py +index 35ce514..76fe6d1 100755 +--- a/wxPython/setup.py ++++ b/wxPython/setup.py +@@ -897,13 +897,6 @@ WX_PKGLIST = [ 'wx', + 'wx.tools', + 'wx.tools.XRCed', + 'wx.tools.XRCed.plugins', +- 'wx.tools.Editra', +- 'wx.tools.Editra.src', +- 'wx.tools.Editra.src.autocomp', +- 'wx.tools.Editra.src.eclib', +- 'wx.tools.Editra.src.ebmlib', +- 'wx.tools.Editra.src.extern', +- 'wx.tools.Editra.src.syntax', + ] + + +@@ -921,7 +914,6 @@ else: + opj('scripts/pywrap'), + opj('scripts/pywxrc'), + opj('scripts/xrced'), +- opj('scripts/editra'), + ] + if os.name == 'nt': + SCRIPTS.append( opj('scripts/genaxmodule') ) +@@ -936,16 +928,6 @@ DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc', '*.htb') + DATA_FILES += find_data_files('wx/tools/XRCed/plugins', '*.crx') + DATA_FILES += find_data_files('wx/tools/XRCed/plugins/bitmaps', '*.png') + +-DATA_FILES += find_data_files('wx/tools/Editra/docs', '*.txt') +-DATA_FILES += find_data_files('wx/tools/Editra/locale', '*.mo') +-DATA_FILES += find_data_files('wx/tools/Editra/pixmaps', +- '*.png', '*.icns', '*.ico', 'README', 'AUTHORS', 'COPYING') +-DATA_FILES += find_data_files('wx/tools/Editra/plugins', '*.egg') +-DATA_FILES += find_data_files('wx/tools/Editra/src', 'README') +-DATA_FILES += find_data_files('wx/tools/Editra/styles', '*.ess') +-DATA_FILES += find_data_files('wx/tools/Editra/tests/syntax', '*') +-DATA_FILES += find_data_files('wx/tools/Editra', '[A-Z]*', recursive=False) +- + + ## import pprint + ## pprint.pprint(DATA_FILES) +@@ -995,7 +977,6 @@ if EGGing: + 'pyshell = wx.py.PyShell:main', + 'pywrap = wx.py.PyWrap:main', + 'helpviewer = wx.tools.helpviewer:main', +- 'editra = wx.tools.Editra.launcher:main', + 'xrced = wx.tools.XRCed.xrced:main', + ], + }, diff --git a/wxPython-3.0.0.0-format.patch b/wxPython-3.0.0.0-format.patch new file mode 100644 index 0000000..540ced9 --- /dev/null +++ b/wxPython-3.0.0.0-format.patch @@ -0,0 +1,264 @@ +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp wxPython-src-3.0.0.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp 2013-12-16 08:52:12.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp 2014-09-04 22:58:04.035387024 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/animate_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/animate_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/animate_wrap.cpp 2013-12-16 08:51:56.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/animate_wrap.cpp 2014-09-04 22:58:04.075387422 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/aui_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/aui_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/aui_wrap.cpp 2013-12-28 04:28:56.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/aui_wrap.cpp 2014-09-04 22:58:04.080387472 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/calendar_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/calendar_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/calendar_wrap.cpp 2013-12-16 08:51:28.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/calendar_wrap.cpp 2014-09-04 22:58:04.082387492 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/combo_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/combo_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/combo_wrap.cpp 2013-12-16 08:51:32.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/combo_wrap.cpp 2014-09-04 22:58:04.084387512 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_controls_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/_controls_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_controls_wrap.cpp 2013-12-16 08:51:23.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/_controls_wrap.cpp 2014-09-04 22:58:04.094387611 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_core_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/_core_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_core_wrap.cpp 2013-12-28 04:18:40.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/_core_wrap.cpp 2014-09-04 22:58:04.062387293 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/dataview_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/dataview_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/dataview_wrap.cpp 2013-12-16 08:51:45.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/dataview_wrap.cpp 2014-09-04 23:00:27.042820179 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_gdi_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/_gdi_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_gdi_wrap.cpp 2013-12-16 08:51:16.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/_gdi_wrap.cpp 2014-09-04 22:58:04.073387402 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/glcanvas_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/glcanvas_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/glcanvas_wrap.cpp 2013-12-16 08:52:07.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/glcanvas_wrap.cpp 2014-09-04 22:58:04.037387044 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/grid_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/grid_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/grid_wrap.cpp 2013-12-16 08:51:35.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/grid_wrap.cpp 2014-09-04 22:58:04.100387671 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/html2_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/html2_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/html2_wrap.cpp 2013-12-28 04:28:56.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/html2_wrap.cpp 2014-09-04 23:01:00.379154803 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/html_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/html_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/html_wrap.cpp 2013-12-16 08:51:38.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/html_wrap.cpp 2014-09-04 22:58:04.104387710 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/media_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/media_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/media_wrap.cpp 2013-12-16 08:51:39.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/media_wrap.cpp 2014-09-04 22:58:04.106387730 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_misc_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/_misc_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_misc_wrap.cpp 2013-12-28 04:18:47.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/_misc_wrap.cpp 2014-09-04 22:58:04.113387800 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/propgrid_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/propgrid_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/propgrid_wrap.cpp 2013-12-16 08:52:01.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/propgrid_wrap.cpp 2014-09-04 23:01:26.082412807 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/richtext_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/richtext_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/richtext_wrap.cpp 2013-12-16 08:51:52.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/richtext_wrap.cpp 2014-09-04 22:58:04.122387890 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/stc_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/stc_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/stc_wrap.cpp 2013-12-16 08:52:06.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/stc_wrap.cpp 2014-09-04 22:58:04.045387124 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/webkit_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/webkit_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/webkit_wrap.cpp 2013-12-16 08:51:41.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/webkit_wrap.cpp 2014-09-04 22:58:04.124387909 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_windows_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/_windows_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_windows_wrap.cpp 2013-12-16 08:51:19.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/_windows_wrap.cpp 2014-09-04 22:58:04.131387979 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/wizard_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/wizard_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/wizard_wrap.cpp 2013-12-16 08:51:43.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/wizard_wrap.cpp 2014-09-04 22:58:04.134388009 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + +diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/xrc_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/xrc_wrap.cpp +--- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/xrc_wrap.cpp 2013-12-16 08:51:46.000000000 -0500 ++++ wxPython-src-3.0.0.0/wxPython/src/gtk/xrc_wrap.cpp 2014-09-04 22:58:04.136388029 -0400 +@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg + Py_DECREF(old_str); + Py_DECREF(value); + } else { +- PyErr_Format(PyExc_RuntimeError, mesg); ++ PyErr_Format(PyExc_RuntimeError, "%s", mesg); + } + } + diff --git a/wxPython.spec b/wxPython.spec index 1a29463..305f941 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -1,11 +1,11 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} -%define buildflags WXPORT=gtk2 UNICODE=1 +%define buildflags WX_CONFIG=/usr/bin/wx-config-3.0 WXPORT=gtk3 Name: wxPython -Version: 2.8.12.0 -Release: 8%{?dist} +Version: 3.0.2.0 +Release: 1%{?dist} Summary: GUI toolkit for the Python programming language @@ -13,18 +13,14 @@ Group: Development/Languages License: LGPLv2+ and wxWidgets URL: http://www.wxpython.org/ Source0: http://downloads.sourceforge.net/wxpython/%{name}-src-%{version}.tar.bz2 -# fix aui imports -# http://trac.wxwidgets.org/ticket/12107 -Patch0: wxPython-2.8.12.0-aui.patch -Patch1: wxPython-2.8.12.0-format.patch +# Remove Editra - it doesn't work and is technically a bundle. Thanks to +# Debian for the patch. +Patch0: fix-editra-removal.patch +Patch1: wxPython-3.0.0.0-format.patch # make sure to keep this updated as appropriate -BuildRequires: wxGTK-devel >= 2.8.11 +BuildRequires: wxGTK3-devel >= 3.0.0 BuildRequires: python-devel -# packages should depend on "wxPython", not "wxPythonGTK2", but in case -# one does, here's the provides for it. -Provides: wxPythonGTK2 = %{version}-%{release} - %description wxPython is a GUI toolkit for the Python programming language. It allows Python programmers to create programs with a robust, highly functional @@ -36,7 +32,7 @@ platform GUI library, which is written in C++. Group: Development/Libraries Summary: Development files for wxPython add-on modules Requires: %{name} = %{version}-%{release} -Requires: wxGTK-devel +Requires: wxGTK3-devel %description devel This package includes C++ header files and SWIG files needed for developing @@ -57,7 +53,7 @@ Documentation, samples and demo application for wxPython. %prep %setup -q -n wxPython-src-%{version} -%patch0 -p1 -b .aui +%patch0 -p1 -b .editra-removal %patch1 -p1 -b .format # fix libdir otherwise additional wx libs cannot be found, fix default optimization flags @@ -89,27 +85,29 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitear %{_bindir}/* %{python_sitearch}/wx.pth %{python_sitearch}/wxversion.py* -%dir %{python_sitearch}/wx-2.8-gtk2-unicode/ -%{python_sitearch}/wx-2.8-gtk2-unicode/wx -%{python_sitearch}/wx-2.8-gtk2-unicode/wxPython +%dir %{python_sitearch}/wx-3.0-gtk3/ +%{python_sitearch}/wx-3.0-gtk3/wx %if 0%{?fedora} >= 9 || 0%{?rhel} >= 6 %{python_sitelib}/*egg-info -%{python_sitearch}/wx-2.8-gtk2-unicode/*egg-info +%{python_sitearch}/wx-3.0-gtk3/*egg-info %endif %files devel -%dir %{_includedir}/wx-2.8/wx/wxPython -%{_includedir}/wx-2.8/wx/wxPython/*.h -%dir %{_includedir}/wx-2.8/wx/wxPython/i_files -%{_includedir}/wx-2.8/wx/wxPython/i_files/*.i -%{_includedir}/wx-2.8/wx/wxPython/i_files/*.py* -%{_includedir}/wx-2.8/wx/wxPython/i_files/*.swg +%dir %{_includedir}/wx-3.0/wx/wxPython +%{_includedir}/wx-3.0/wx/wxPython/*.h +%dir %{_includedir}/wx-3.0/wx/wxPython/i_files +%{_includedir}/wx-3.0/wx/wxPython/i_files/*.i +%{_includedir}/wx-3.0/wx/wxPython/i_files/*.py* +%{_includedir}/wx-3.0/wx/wxPython/i_files/*.swg %files docs %doc wxPython/docs wxPython/demo wxPython/samples %changelog +* Tue Dec 23 2014 Scott Talbert - 3.0.2.0-1 +- New upstream release 3.0.2.0, built against wxGTK3 + * Mon Aug 18 2014 Fedora Release Engineering - 2.8.12.0-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild From 26b05c42b7a972687cfa2b0663d5947dde6f9157 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Sun, 4 Jan 2015 21:25:46 -0500 Subject: [PATCH 19/46] Added patches for fixing crash in GetXWindow() and wx.lib.plot bugs --- wxPython-3.0.2.0-getxwindowcrash.patch | 26 ++++++++ wxPython-3.0.2.0-plot.patch | 91 ++++++++++++++++++++++++++ wxPython.spec | 11 +++- 3 files changed, 127 insertions(+), 1 deletion(-) create mode 100644 wxPython-3.0.2.0-getxwindowcrash.patch create mode 100644 wxPython-3.0.2.0-plot.patch diff --git a/wxPython-3.0.2.0-getxwindowcrash.patch b/wxPython-3.0.2.0-getxwindowcrash.patch new file mode 100644 index 0000000..ce0217f --- /dev/null +++ b/wxPython-3.0.2.0-getxwindowcrash.patch @@ -0,0 +1,26 @@ +diff -up wxPython-src-3.0.2.0/wxPython/src/helpers.cpp.getxwindowcrash wxPython-src-3.0.2.0/wxPython/src/helpers.cpp +--- wxPython-src-3.0.2.0/wxPython/src/helpers.cpp.getxwindowcrash 2014-10-13 18:37:52.000000000 -0400 ++++ wxPython-src-3.0.2.0/wxPython/src/helpers.cpp 2015-01-03 22:05:35.936010783 -0500 +@@ -29,9 +29,19 @@ + #include + #include + #ifdef __WXGTK3__ +-#define GetXWindow(wxwin) (wxwin)->m_wxwindow ? \ +- GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_wxwindow)) : \ +- GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_widget)) ++// Unlike GDK_WINDOW_XWINDOW, GDK_WINDOW_XID can't handle a NULL, so check 1st ++static XID GetXWindow(wxWindow* wxwin) { ++ if ((wxwin)->m_wxwindow) { ++ if (gtk_widget_get_window((wxwin)->m_wxwindow)) ++ return GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_wxwindow)); ++ return 0; ++ } ++ else { ++ if (gtk_widget_get_window((wxwin)->m_widget)) ++ return GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_widget)); ++ return 0; ++ } ++} + #else + #define GetXWindow(wxwin) (wxwin)->m_wxwindow ? \ + GDK_WINDOW_XWINDOW((wxwin)->m_wxwindow->window) : \ diff --git a/wxPython-3.0.2.0-plot.patch b/wxPython-3.0.2.0-plot.patch new file mode 100644 index 0000000..f56956a --- /dev/null +++ b/wxPython-3.0.2.0-plot.patch @@ -0,0 +1,91 @@ +diff -up wxPython-src-3.0.2.0/wxPython/wx/lib/plot.py.plot wxPython-src-3.0.2.0/wxPython/wx/lib/plot.py +--- wxPython-src-3.0.2.0/wxPython/wx/lib/plot.py.plot 2014-10-13 18:37:22.000000000 -0400 ++++ wxPython-src-3.0.2.0/wxPython/wx/lib/plot.py 2015-01-04 20:38:04.645350202 -0500 +@@ -237,7 +237,7 @@ class PolyLine(PolyPoints): + :keyword `attr`: keyword attributes, default to: + + ========================== ================================ +- 'colour'= 'black' wx.Pen Colour any wx.Colour ++ 'colour'= 'black' wx.Pen Colour any wx.NamedColour + 'width'= 1 Pen width + 'style'= wx.PENSTYLE_SOLID wx.Pen style + 'legend'= '' Line Legend to display +@@ -251,7 +251,7 @@ class PolyLine(PolyPoints): + width = self.attributes['width'] * printerScale * self._pointSize[0] + style = self.attributes['style'] + if not isinstance(colour, wx.Colour): +- colour = wx.Colour(colour) ++ colour = wx.NamedColour(colour) + pen = wx.Pen(colour, width, style) + pen.SetCap(wx.CAP_BUTT) + dc.SetPen(pen) +@@ -287,7 +287,7 @@ class PolySpline(PolyLine): + :keyword `attr`: keyword attributes, default to: + + ========================== ================================ +- 'colour'= 'black' wx.Pen Colour any wx.Colour ++ 'colour'= 'black' wx.Pen Colour any wx.NamedColour + 'width'= 1 Pen width + 'style'= wx.PENSTYLE_SOLID wx.Pen style + 'legend'= '' Line Legend to display +@@ -301,7 +301,7 @@ class PolySpline(PolyLine): + width = self.attributes['width'] * printerScale * self._pointSize[0] + style = self.attributes['style'] + if not isinstance(colour, wx.Colour): +- colour = wx.Colour(colour) ++ colour = wx.NamedColour(colour) + pen = wx.Pen(colour, width, style) + pen.SetCap(wx.CAP_ROUND) + dc.SetPen(pen) +@@ -365,9 +365,9 @@ class PolyMarker(PolyPoints): + marker = self.attributes['marker'] + + if colour and not isinstance(colour, wx.Colour): +- colour = wx.Colour(colour) ++ colour = wx.NamedColour(colour) + if fillcolour and not isinstance(fillcolour, wx.Colour): +- fillcolour = wx.Colour(fillcolour) ++ fillcolour = wx.NamedColour(fillcolour) + + dc.SetPen(wx.Pen(colour, width)) + if fillcolour: +@@ -595,9 +595,9 @@ class PlotCanvas(wx.Panel): + + # set curser as cross-hairs + self.canvas.SetCursor(wx.CROSS_CURSOR) +- self.HandCursor = wx.Cursor(Hand.GetImage()) +- self.GrabHandCursor = wx.Cursor(GrabHand.GetImage()) +- self.MagCursor = wx.Cursor(MagPlus.GetImage()) ++ self.HandCursor = wx.CursorFromImage(Hand.GetImage()) ++ self.GrabHandCursor = wx.CursorFromImage(GrabHand.GetImage()) ++ self.MagCursor = wx.CursorFromImage(MagPlus.GetImage()) + + # Things for printing + self._print_data = None +@@ -681,7 +681,7 @@ class PlotCanvas(wx.Panel): + if isinstance(colour, wx.Colour): + self._gridColour = colour + else: +- self._gridColour = wx.Colour(colour) ++ self._gridColour = wx.NamedColour(colour) + + # SaveFile + def SaveFile(self, fileName=''): +@@ -1513,7 +1513,7 @@ class PlotCanvas(wx.Panel): + # Make new offscreen bitmap: this bitmap will always have the + # current drawing in it, so it can be used to save the image to + # a file, or whatever. +- self._Buffer = wx.Bitmap(Size.width, Size.height) ++ self._Buffer = wx.EmptyBitmap(Size.width, Size.height) + self._setSize() + + self.last_PointLabel = None # reset pointLabel +@@ -1578,7 +1578,7 @@ class PlotCanvas(wx.Panel): + width = self._Buffer.GetWidth() + height = self._Buffer.GetHeight() + if sys.platform != "darwin": +- tmp_Buffer = wx.Bitmap(width, height) ++ tmp_Buffer = wx.EmptyBitmap(width, height) + dcs = wx.MemoryDC() + dcs.SelectObject(tmp_Buffer) + dcs.Clear() diff --git a/wxPython.spec b/wxPython.spec index 305f941..a8f0e33 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 1%{?dist} +Release: 2%{?dist} Summary: GUI toolkit for the Python programming language @@ -17,6 +17,10 @@ Source0: http://downloads.sourceforge.net/wxpython/%{name}-src-%{version} # Debian for the patch. Patch0: fix-editra-removal.patch Patch1: wxPython-3.0.0.0-format.patch +# http://trac.wxwidgets.org/ticket/16765 +Patch2: wxPython-3.0.2.0-getxwindowcrash.patch +# http://trac.wxwidgets.org/ticket/16767 +Patch3: wxPython-3.0.2.0-plot.patch # make sure to keep this updated as appropriate BuildRequires: wxGTK3-devel >= 3.0.0 BuildRequires: python-devel @@ -55,6 +59,8 @@ Documentation, samples and demo application for wxPython. %setup -q -n wxPython-src-%{version} %patch0 -p1 -b .editra-removal %patch1 -p1 -b .format +%patch2 -p1 -b .getxwindowcrash +%patch3 -p1 -b .plot # fix libdir otherwise additional wx libs cannot be found, fix default optimization flags sed -i -e 's|/usr/lib|%{_libdir}|' -e 's|-O3|-O2|' wxPython/config.py @@ -105,6 +111,9 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitear %changelog +* Sun Jan 04 2015 Scott Talbert - 3.0.2.0-2 +- Added patches for fixing crash in GetXWindow() and wx.lib.plot bugs + * Tue Dec 23 2014 Scott Talbert - 3.0.2.0-1 - New upstream release 3.0.2.0, built against wxGTK3 From b9b45055dd7373c2cfb9388de595b6b56a3102a0 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Wed, 14 Jan 2015 20:01:03 -0500 Subject: [PATCH 20/46] Forgot to add the new source tarball --- .gitignore | 1 + sources | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ea61b77..02f9d27 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ wxPython-src-2.8.11.0.tar.bz2 /wxPython-src-2.8.12.0.tar.bz2 +/wxPython-src-3.0.2.0.tar.bz2 diff --git a/sources b/sources index f117e2f..1cbbf0e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -402e0b81e06f596d849e221a7a76acc6 wxPython-src-2.8.12.0.tar.bz2 +922b02ff2c0202a7bf1607c98bbbbc04 wxPython-src-3.0.2.0.tar.bz2 From 995427e4c4b8aa21a840876f5add108beb87f842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Devrim=20G=C3=BCnd=C3=BCz?= Date: Thu, 19 Mar 2015 11:47:57 +0200 Subject: [PATCH 21/46] - Rebuild for new GCC to fix C++ ABI issues. --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index a8f0e33..448efc5 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 2%{?dist} +Release: 3%{?dist} Summary: GUI toolkit for the Python programming language @@ -111,6 +111,9 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitear %changelog +* Thu Mar 19 2015 Devrim Gunduz - 3.0.2.0-3 +- Rebuild for new GCC to fix C++ ABI issues. + * Sun Jan 04 2015 Scott Talbert - 3.0.2.0-2 - Added patches for fixing crash in GetXWindow() and wx.lib.plot bugs From fa7236947cd274561d98e809ec9aeefdf5b2e86a Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Sat, 2 May 2015 18:39:11 +0200 Subject: [PATCH 22/46] Rebuilt for GCC 5 C++11 ABI change --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 448efc5..6192a33 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 3%{?dist} +Release: 4%{?dist} Summary: GUI toolkit for the Python programming language @@ -111,6 +111,9 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitear %changelog +* Sat May 02 2015 Kalev Lember - 3.0.2.0-4 +- Rebuilt for GCC 5 C++11 ABI change + * Thu Mar 19 2015 Devrim Gunduz - 3.0.2.0-3 - Rebuild for new GCC to fix C++ ABI issues. From 7460b1c44305f5f1e062efbee6adaeb071a9d9f9 Mon Sep 17 00:00:00 2001 From: Jason Tibbitts Date: Mon, 4 May 2015 14:25:35 -0500 Subject: [PATCH 23/46] Indicate that this package bundles scintilla 3.2.1. --- wxPython.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 6192a33..58e833c 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 4%{?dist} +Release: 5%{?dist} Summary: GUI toolkit for the Python programming language @@ -24,6 +24,7 @@ Patch3: wxPython-3.0.2.0-plot.patch # make sure to keep this updated as appropriate BuildRequires: wxGTK3-devel >= 3.0.0 BuildRequires: python-devel +Provides: bundled(scintilla) = 3.2.1 %description wxPython is a GUI toolkit for the Python programming language. It allows @@ -111,6 +112,9 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitear %changelog +* Mon May 04 2015 Jason L Tibbitts III - 3.0.2.0-5 +- Indicate that this package bundles scintilla 3.2.1. + * Sat May 02 2015 Kalev Lember - 3.0.2.0-4 - Rebuilt for GCC 5 C++11 ABI change From 5144288d2c06f7b12b7d1ac73a84dc04e69a749e Mon Sep 17 00:00:00 2001 From: Dennis Gilmore Date: Fri, 19 Jun 2015 02:39:25 +0000 Subject: [PATCH 24/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 58e833c..9bb95be 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 5%{?dist} +Release: 6%{?dist} Summary: GUI toolkit for the Python programming language @@ -112,6 +112,9 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitear %changelog +* Fri Jun 19 2015 Fedora Release Engineering - 3.0.2.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + * Mon May 04 2015 Jason L Tibbitts III - 3.0.2.0-5 - Indicate that this package bundles scintilla 3.2.1. From a27aaf9147447d0c48355b049ba98281844af27b Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Tue, 29 Sep 2015 23:19:59 -0400 Subject: [PATCH 25/46] Add patch to workaround TextCtrl height issue in ListCtrl mixin (#1264698) --- wxPython-3.0.2.0-listctrl-mixin-edit.patch | 16 ++++++++++++++++ wxPython.spec | 8 +++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 wxPython-3.0.2.0-listctrl-mixin-edit.patch diff --git a/wxPython-3.0.2.0-listctrl-mixin-edit.patch b/wxPython-3.0.2.0-listctrl-mixin-edit.patch new file mode 100644 index 0000000..47a6b16 --- /dev/null +++ b/wxPython-3.0.2.0-listctrl-mixin-edit.patch @@ -0,0 +1,16 @@ +diff -up wxPython-src-3.0.2.0/wxPython/wx/lib/mixins/listctrl.py.editzeroheight wxPython-src-3.0.2.0/wxPython/wx/lib/mixins/listctrl.py +--- wxPython-src-3.0.2.0/wxPython/wx/lib/mixins/listctrl.py.editzeroheight 2014-10-13 18:37:52.000000000 -0400 ++++ wxPython-src-3.0.2.0/wxPython/wx/lib/mixins/listctrl.py 2015-09-29 20:57:15.334780365 -0400 +@@ -604,7 +604,11 @@ class TextEditMixin: + y0 = self.GetItemRect(row)[1] + + editor = self.editor +- editor.SetDimensions(x0-scrolloffset,y0, x1,-1) ++ # Temp fix: for some reason on GTK3, setting the height as -1 (default) ++ # with the above code flow results in the height being zero. Work ++ # around this by setting the height to the existing height. Upstream ++ # bug reported: http://trac.wxwidgets.org/ticket/17160 ++ editor.SetDimensions(x0-scrolloffset,y0, x1,editor.GetSize()[1]) + + editor.SetValue(self.GetItem(row, col).GetText()) + editor.Show() diff --git a/wxPython.spec b/wxPython.spec index 9bb95be..2dec501 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -5,7 +5,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 6%{?dist} +Release: 7%{?dist} Summary: GUI toolkit for the Python programming language @@ -21,6 +21,8 @@ Patch1: wxPython-3.0.0.0-format.patch Patch2: wxPython-3.0.2.0-getxwindowcrash.patch # http://trac.wxwidgets.org/ticket/16767 Patch3: wxPython-3.0.2.0-plot.patch +# http://trac.wxwidgets.org/ticket/17160 +Patch4: wxPython-3.0.2.0-listctrl-mixin-edit.patch # make sure to keep this updated as appropriate BuildRequires: wxGTK3-devel >= 3.0.0 BuildRequires: python-devel @@ -62,6 +64,7 @@ Documentation, samples and demo application for wxPython. %patch1 -p1 -b .format %patch2 -p1 -b .getxwindowcrash %patch3 -p1 -b .plot +%patch4 -p1 -b .listctrl-mixin-edit # fix libdir otherwise additional wx libs cannot be found, fix default optimization flags sed -i -e 's|/usr/lib|%{_libdir}|' -e 's|-O3|-O2|' wxPython/config.py @@ -112,6 +115,9 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitear %changelog +* Tue Sep 29 2015 Scott Talbert - 3.0.2.0-7 +- Add patch to workaround TextCtrl height issue in ListCtrl mixin (#1264698) + * Fri Jun 19 2015 Fedora Release Engineering - 3.0.2.0-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild From 8d55ef441d7d6b3aebc0a0cca38953ffa8465873 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Sun, 27 Dec 2015 23:05:33 -0500 Subject: [PATCH 26/46] Replace define macros with global ones --- wxPython.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/wxPython.spec b/wxPython.spec index 2dec501..65a43e1 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -1,11 +1,11 @@ %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} -%define buildflags WX_CONFIG=/usr/bin/wx-config-3.0 WXPORT=gtk3 +%global buildflags WX_CONFIG=/usr/bin/wx-config-3.0 WXPORT=gtk3 Name: wxPython Version: 3.0.2.0 -Release: 7%{?dist} +Release: 8%{?dist} Summary: GUI toolkit for the Python programming language @@ -115,6 +115,9 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitear %changelog +* Sun Dec 27 2015 Scott Talbert - 3.0.2.0-8 +- Replace define macros with global ones + * Tue Sep 29 2015 Scott Talbert - 3.0.2.0-7 - Add patch to workaround TextCtrl height issue in ListCtrl mixin (#1264698) From 8a2f6eb073ad8070e89dc0a97ee27d9efa9eae06 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Fri, 8 Jan 2016 20:18:04 -0500 Subject: [PATCH 27/46] Modernize python packaging and general cleanup --- wxPython.spec | 48 +++++++++++++++--------------------------------- 1 file changed, 15 insertions(+), 33 deletions(-) diff --git a/wxPython.spec b/wxPython.spec index 65a43e1..6352747 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -1,11 +1,8 @@ -%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} -%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} - -%global buildflags WX_CONFIG=/usr/bin/wx-config-3.0 WXPORT=gtk3 +%global py_setup_args WX_CONFIG=/usr/bin/wx-config-3.0 WXPORT=gtk3 Name: wxPython Version: 3.0.2.0 -Release: 8%{?dist} +Release: 9%{?dist} Summary: GUI toolkit for the Python programming language @@ -25,8 +22,7 @@ Patch3: wxPython-3.0.2.0-plot.patch Patch4: wxPython-3.0.2.0-listctrl-mixin-edit.patch # make sure to keep this updated as appropriate BuildRequires: wxGTK3-devel >= 3.0.0 -BuildRequires: python-devel -Provides: bundled(scintilla) = 3.2.1 +BuildRequires: python2-devel %description wxPython is a GUI toolkit for the Python programming language. It allows @@ -50,57 +46,40 @@ programs which use the wxPython toolkit. Group: Documentation Summary: Documentation and samples for wxPython Requires: %{name} = %{version}-%{release} -%if 0%{?fedora} > 9 BuildArch: noarch -%endif %description docs Documentation, samples and demo application for wxPython. %prep -%setup -q -n wxPython-src-%{version} -%patch0 -p1 -b .editra-removal -%patch1 -p1 -b .format -%patch2 -p1 -b .getxwindowcrash -%patch3 -p1 -b .plot -%patch4 -p1 -b .listctrl-mixin-edit +%autosetup -p1 -n wxPython-src-%{version} # fix libdir otherwise additional wx libs cannot be found, fix default optimization flags sed -i -e 's|/usr/lib|%{_libdir}|' -e 's|-O3|-O2|' wxPython/config.py %build -# Just build the wxPython part, not all of wxWindows which we already have -# in Fedora cd wxPython -# included distutils is not multilib aware; use normal -rm -rf distutils -python setup.py %{buildflags} build +%py2_build %install cd wxPython -python setup.py %{buildflags} install --root=$RPM_BUILD_ROOT +%py2_install # this is a kludge.... -%if "%{python_sitelib}" != "%{python_sitearch}" -mv $RPM_BUILD_ROOT%{python_sitelib}/wx.pth $RPM_BUILD_ROOT%{python_sitearch} -mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitearch} +%if "%{python2_sitelib}" != "%{python2_sitearch}" +mv $RPM_BUILD_ROOT%{python2_sitelib}/wx.pth $RPM_BUILD_ROOT%{python2_sitearch} +mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_sitearch} %endif %files -%doc wxPython/licence +%license wxPython/licence/* %{_bindir}/* -%{python_sitearch}/wx.pth -%{python_sitearch}/wxversion.py* -%dir %{python_sitearch}/wx-3.0-gtk3/ -%{python_sitearch}/wx-3.0-gtk3/wx -%if 0%{?fedora} >= 9 || 0%{?rhel} >= 6 -%{python_sitelib}/*egg-info -%{python_sitearch}/wx-3.0-gtk3/*egg-info -%endif +%{python2_sitelib}/* +%{python2_sitearch}/* %files devel %dir %{_includedir}/wx-3.0/wx/wxPython @@ -115,6 +94,9 @@ mv $RPM_BUILD_ROOT%{python_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python_sitear %changelog +* Wed Jan 06 2016 Scott Talbert - 3.0.2.0-9 +- Modernize python packaging and general cleanup + * Sun Dec 27 2015 Scott Talbert - 3.0.2.0-8 - Replace define macros with global ones From a312ccd0f556532038a62b1f919968fb1233d9d7 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 5 Feb 2016 03:12:39 +0000 Subject: [PATCH 28/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 6352747..4e55d20 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 9%{?dist} +Release: 10%{?dist} Summary: GUI toolkit for the Python programming language @@ -94,6 +94,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Fri Feb 05 2016 Fedora Release Engineering - 3.0.2.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + * Wed Jan 06 2016 Scott Talbert - 3.0.2.0-9 - Modernize python packaging and general cleanup From 8e4800650c9032202fea03bdd8ea00b0f006b2ec Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Tue, 19 Jul 2016 13:11:08 +0000 Subject: [PATCH 29/46] - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 4e55d20..15bef79 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 10%{?dist} +Release: 11%{?dist} Summary: GUI toolkit for the Python programming language @@ -94,6 +94,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Tue Jul 19 2016 Fedora Release Engineering - 3.0.2.0-11 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + * Fri Feb 05 2016 Fedora Release Engineering - 3.0.2.0-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild From b0ad45f3ca90a9e868b2eea4338228b555cda442 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Fri, 7 Oct 2016 22:46:32 -0400 Subject: [PATCH 30/46] Add a -webview subpackage in F26+ --- wxPython-3.0.2.0-webview-optional.patch | 23 +++++++++++++++++++++++ wxPython.spec | 25 ++++++++++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 wxPython-3.0.2.0-webview-optional.patch diff --git a/wxPython-3.0.2.0-webview-optional.patch b/wxPython-3.0.2.0-webview-optional.patch new file mode 100644 index 0000000..555dc44 --- /dev/null +++ b/wxPython-3.0.2.0-webview-optional.patch @@ -0,0 +1,23 @@ +Description: Allow wx.html2 to be packaged separately + Installing it drags in the "libwxgtk-webview3.0-0v5" runtime package which + drags in rather a lot of packages. +Author: Scott Talbert +Bug-Debian: http://bugs.debian.org/821934 +Forwarded: not-needed +Last-Update: 2016-04-30 + +diff -up wxpython3.0-3.0.2.0+dfsg/wxPython/config.py.webview wxpython3.0-3.0.2.0+dfsg/wxPython/config.py +--- wxpython3.0-3.0.2.0+dfsg/wxPython/config.py.webview 2016-04-29 00:06:26.000000000 -0400 ++++ wxpython3.0-3.0.2.0+dfsg/wxPython/config.py 2016-04-29 20:14:59.830690131 -0400 +@@ -660,7 +660,10 @@ def adjustLFLAGS(lflags, libdirs, libs): + if flag[:2] == '-L': + libdirs.append(flag[2:]) + elif flag[:2] == '-l': +- libs.append(flag[2:]) ++ # Remove 'webview' from the default libs so we don't always link ++ # with it. It gets added specifically for html2 elsewhere. ++ if flag[2:] != makeLibName('webview')[0]: ++ libs.append(flag[2:]) + else: + newLFLAGS.append(flag) + return removeDuplicates(newLFLAGS) diff --git a/wxPython.spec b/wxPython.spec index 15bef79..048ddf0 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 11%{?dist} +Release: 12%{?dist} Summary: GUI toolkit for the Python programming language @@ -20,6 +20,8 @@ Patch2: wxPython-3.0.2.0-getxwindowcrash.patch Patch3: wxPython-3.0.2.0-plot.patch # http://trac.wxwidgets.org/ticket/17160 Patch4: wxPython-3.0.2.0-listctrl-mixin-edit.patch +# From Debian +Patch5: wxPython-3.0.2.0-webview-optional.patch # make sure to keep this updated as appropriate BuildRequires: wxGTK3-devel >= 3.0.0 BuildRequires: python2-devel @@ -51,6 +53,16 @@ BuildArch: noarch %description docs Documentation, samples and demo application for wxPython. +%if 0%{?fedora} > 25 +%package webview +Group: Development/Languages +Summary: WebView add-on for wxPython +Requires: %{name} = %{version}-%{release} + +%description webview +This package contains the optional WebView (html2) module for wxPython. +%endif + %prep %autosetup -p1 -n wxPython-src-%{version} @@ -79,6 +91,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %license wxPython/licence/* %{_bindir}/* %{python2_sitelib}/* +%if 0%{?fedora} > 25 +%exclude %{python2_sitearch}/wx-3.0-gtk3/wx/*html2.* +%endif %{python2_sitearch}/* %files devel @@ -92,8 +107,16 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %files docs %doc wxPython/docs wxPython/demo wxPython/samples +%if 0%{?fedora} > 25 +%files webview +%{python2_sitearch}/wx-3.0-gtk3/wx/*html2.* +%endif + %changelog +* Sat Oct 08 2016 Scott Talbert - 3.0.2.0-12 +- Add a -webview subpackage in F26+ + * Tue Jul 19 2016 Fedora Release Engineering - 3.0.2.0-11 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages From e15a4b9f4024789622995299f7dc80b8f13d743f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 11 Feb 2017 17:35:22 +0000 Subject: [PATCH 31/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 048ddf0..34ba183 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 12%{?dist} +Release: 13%{?dist} Summary: GUI toolkit for the Python programming language @@ -114,6 +114,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Sat Feb 11 2017 Fedora Release Engineering - 3.0.2.0-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + * Sat Oct 08 2016 Scott Talbert - 3.0.2.0-12 - Add a -webview subpackage in F26+ From 1112474969561de20b37c3f5b6e2434d4f2e8250 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 27 Jul 2017 21:49:09 +0000 Subject: [PATCH 32/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 34ba183..3907c83 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 13%{?dist} +Release: 14%{?dist} Summary: GUI toolkit for the Python programming language @@ -114,6 +114,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Thu Jul 27 2017 Fedora Release Engineering - 3.0.2.0-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + * Sat Feb 11 2017 Fedora Release Engineering - 3.0.2.0-13 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild From f0f8829ebfa0b3c41fdd00acd9cf904fe991c93f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Thu, 3 Aug 2017 10:24:47 +0000 Subject: [PATCH 33/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 3907c83..ee5b188 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 14%{?dist} +Release: 15%{?dist} Summary: GUI toolkit for the Python programming language @@ -114,6 +114,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Thu Aug 03 2017 Fedora Release Engineering - 3.0.2.0-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + * Thu Jul 27 2017 Fedora Release Engineering - 3.0.2.0-14 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild From 1468f8851f083d516ce780a3a100ee08840e00d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 10 Aug 2017 13:33:43 -0400 Subject: [PATCH 34/46] Python 2 subpackages renamed to python2-wxpython and python2-wxpython-webview --- wxPython.spec | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/wxPython.spec b/wxPython.spec index ee5b188..dccc9d1 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 15%{?dist} +Release: 16%{?dist} Summary: GUI toolkit for the Python programming language @@ -26,13 +26,24 @@ Patch5: wxPython-3.0.2.0-webview-optional.patch BuildRequires: wxGTK3-devel >= 3.0.0 BuildRequires: python2-devel -%description -wxPython is a GUI toolkit for the Python programming language. It allows -Python programmers to create programs with a robust, highly functional -graphical user interface, simply and easily. It is implemented as a Python -extension module (native code) that wraps the popular wxWindows cross +%global _description\ +wxPython is a GUI toolkit for the Python programming language. It allows\ +Python programmers to create programs with a robust, highly functional\ +graphical user interface, simply and easily. It is implemented as a Python\ +extension module (native code) that wraps the popular wxWindows cross\ platform GUI library, which is written in C++. +%description %_description + +%package -n python2-wxpython +Summary: %summary +%{?python_provide:%python_provide python2-wxpython} +# Remove before F30 +Provides: wxPython%{?_isa} = %{version}-%{release} +Obsoletes: wxPython < %{version}-%{release} + +%description -n python2-wxpython %_description + %package devel Group: Development/Libraries Summary: Development files for wxPython add-on modules @@ -54,12 +65,17 @@ BuildArch: noarch Documentation, samples and demo application for wxPython. %if 0%{?fedora} > 25 -%package webview +%package -n python2-wxpython-webview Group: Development/Languages Summary: WebView add-on for wxPython -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} +%{?python_provide:%python_provide python2-wxpython-webview} +# Remove before F30 +Provides: wxPython-webview%{?_isa} = %{version}-%{release} +Obsoletes: wxPython-webview < %{version}-%{release} -%description webview + +%description -n python2-wxpython-webview This package contains the optional WebView (html2) module for wxPython. %endif @@ -87,7 +103,7 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %endif -%files +%files -n python2-wxpython %license wxPython/licence/* %{_bindir}/* %{python2_sitelib}/* @@ -108,12 +124,17 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %doc wxPython/docs wxPython/demo wxPython/samples %if 0%{?fedora} > 25 -%files webview +%files -n python2-wxpython-webview %{python2_sitearch}/wx-3.0-gtk3/wx/*html2.* %endif %changelog +* Thu Aug 10 2017 Zbigniew Jędrzejewski-Szmek - 3.0.2.0-16 +- Main Python 2 binary package renamed to python2-wxpython, + and wxPython-webview renamed to python2-wxpython-webview. + See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 + * Thu Aug 03 2017 Fedora Release Engineering - 3.0.2.0-15 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild From f7af00b1739508661e1ed4b0b686da9a6ee319a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 20 Aug 2017 08:56:22 -0400 Subject: [PATCH 35/46] Fix internal Requires and add Provides for the old name without %_isa --- wxPython.spec | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/wxPython.spec b/wxPython.spec index dccc9d1..278ef82 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 16%{?dist} +Release: 17%{?dist} Summary: GUI toolkit for the Python programming language @@ -39,6 +39,7 @@ platform GUI library, which is written in C++. Summary: %summary %{?python_provide:%python_provide python2-wxpython} # Remove before F30 +Provides: wxPython = %{version}-%{release} Provides: wxPython%{?_isa} = %{version}-%{release} Obsoletes: wxPython < %{version}-%{release} @@ -47,7 +48,7 @@ Obsoletes: wxPython < %{version}-%{release} %package devel Group: Development/Libraries Summary: Development files for wxPython add-on modules -Requires: %{name} = %{version}-%{release} +Requires: python2-%{name} = %{version}-%{release} Requires: wxGTK3-devel %description devel @@ -58,7 +59,7 @@ programs which use the wxPython toolkit. %package docs Group: Documentation Summary: Documentation and samples for wxPython -Requires: %{name} = %{version}-%{release} +Requires: python2-%{name} = %{version}-%{release} BuildArch: noarch %description docs @@ -68,9 +69,10 @@ Documentation, samples and demo application for wxPython. %package -n python2-wxpython-webview Group: Development/Languages Summary: WebView add-on for wxPython -Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: python2-%{name}%{?_isa} = %{version}-%{release} %{?python_provide:%python_provide python2-wxpython-webview} # Remove before F30 +Provides: wxPython-webview = %{version}-%{release} Provides: wxPython-webview%{?_isa} = %{version}-%{release} Obsoletes: wxPython-webview < %{version}-%{release} @@ -130,6 +132,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek - 3.0.2.0-17 +- Fix internal Requires and add Provides for the old name without %%_isa + * Thu Aug 10 2017 Zbigniew Jędrzejewski-Szmek - 3.0.2.0-16 - Main Python 2 binary package renamed to python2-wxpython, and wxPython-webview renamed to python2-wxpython-webview. From 47a7d3177b223126f170fa7eddf048e22e4dd7f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 20 Aug 2017 14:48:12 -0400 Subject: [PATCH 36/46] Fix internal Requires (case was wrong) --- wxPython.spec | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/wxPython.spec b/wxPython.spec index 278ef82..16e5790 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 17%{?dist} +Release: 18%{?dist} Summary: GUI toolkit for the Python programming language @@ -48,7 +48,7 @@ Obsoletes: wxPython < %{version}-%{release} %package devel Group: Development/Libraries Summary: Development files for wxPython add-on modules -Requires: python2-%{name} = %{version}-%{release} +Requires: python2-wxpython = %{version}-%{release} Requires: wxGTK3-devel %description devel @@ -59,7 +59,7 @@ programs which use the wxPython toolkit. %package docs Group: Documentation Summary: Documentation and samples for wxPython -Requires: python2-%{name} = %{version}-%{release} +Requires: python2-wxpython = %{version}-%{release} BuildArch: noarch %description docs @@ -69,7 +69,7 @@ Documentation, samples and demo application for wxPython. %package -n python2-wxpython-webview Group: Development/Languages Summary: WebView add-on for wxPython -Requires: python2-%{name}%{?_isa} = %{version}-%{release} +Requires: python2-wxpython%{?_isa} = %{version}-%{release} %{?python_provide:%python_provide python2-wxpython-webview} # Remove before F30 Provides: wxPython-webview = %{version}-%{release} @@ -132,6 +132,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek - 3.0.2.0-18 +- Fix internal requires (case was wrong) + * Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek - 3.0.2.0-17 - Fix internal Requires and add Provides for the old name without %%_isa From 6fc8ad3ae67878fcfe4b4458ef4985d868619e12 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Sat, 2 Sep 2017 22:35:12 -0400 Subject: [PATCH 37/46] Suppress warning about release version mismatch (since wxGTK3 3.0.3 update) --- ....0-suppress-version-mismatch-warning.patch | 44 +++++++++++++++++++ wxPython.spec | 7 ++- 2 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 wxPython-3.0.2.0-suppress-version-mismatch-warning.patch diff --git a/wxPython-3.0.2.0-suppress-version-mismatch-warning.patch b/wxPython-3.0.2.0-suppress-version-mismatch-warning.patch new file mode 100644 index 0000000..2bc5634 --- /dev/null +++ b/wxPython-3.0.2.0-suppress-version-mismatch-warning.patch @@ -0,0 +1,44 @@ +Description: Suppress warning about RELEASE_VERSION mismatch + This will often be the case in Debian, since wxwidgets3.0 and wxpython3.0 are + separate source packages, and upstream releases of each happen on different + schedules. +Author: Olly Betts +Forwarded: not-needed +Last-Update: 2014-08-07 + +--- a/wxPython/src/_core_ex.py ++++ b/wxPython/src/_core_ex.py +@@ -26,9 +26,12 @@ + + assert MAJOR_VERSION == _core_.MAJOR_VERSION, "wxPython/wxWidgets version mismatch" + assert MINOR_VERSION == _core_.MINOR_VERSION, "wxPython/wxWidgets version mismatch" +-if RELEASE_VERSION != _core_.RELEASE_VERSION: +- import warnings +- warnings.warn("wxPython/wxWidgets release number mismatch") ++# This will often be the case in Debian, since wxwidgets3.0 and wxpython3.0 are ++# separate source packages, and upstream releases of each happen on different ++# schedules. ++#if RELEASE_VERSION != _core_.RELEASE_VERSION: ++# import warnings ++# warnings.warn("wxPython/wxWidgets release number mismatch") + + + def version(): +--- a/wxPython/src/gtk/_core.py ++++ b/wxPython/src/gtk/_core.py +@@ -16624,9 +16624,12 @@ + + assert MAJOR_VERSION == _core_.MAJOR_VERSION, "wxPython/wxWidgets version mismatch" + assert MINOR_VERSION == _core_.MINOR_VERSION, "wxPython/wxWidgets version mismatch" +-if RELEASE_VERSION != _core_.RELEASE_VERSION: +- import warnings +- warnings.warn("wxPython/wxWidgets release number mismatch") ++# This will often be the case in Debian, since wxwidgets3.0 and wxpython3.0 are ++# separate source packages, and upstream releases of each happen on different ++# schedules. ++#if RELEASE_VERSION != _core_.RELEASE_VERSION: ++# import warnings ++# warnings.warn("wxPython/wxWidgets release number mismatch") + + + def version(): diff --git a/wxPython.spec b/wxPython.spec index 16e5790..8f8d788 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 18%{?dist} +Release: 19%{?dist} Summary: GUI toolkit for the Python programming language @@ -22,6 +22,8 @@ Patch3: wxPython-3.0.2.0-plot.patch Patch4: wxPython-3.0.2.0-listctrl-mixin-edit.patch # From Debian Patch5: wxPython-3.0.2.0-webview-optional.patch +# From Debian +Patch6: wxPython-3.0.2.0-suppress-version-mismatch-warning.patch # make sure to keep this updated as appropriate BuildRequires: wxGTK3-devel >= 3.0.0 BuildRequires: python2-devel @@ -132,6 +134,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Sun Sep 03 2017 Scott Talbert - 3.0.2.0-19 +- Suppress warning about release version mismatch (since wxGTK3 3.0.3 update) + * Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek - 3.0.2.0-18 - Fix internal requires (case was wrong) From 29a897e0eb46a0fa5470298452906e999b935d34 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Wed, 20 Sep 2017 00:05:20 -0400 Subject: [PATCH 38/46] Make -devel noarch to resolve issue with conflicting archful pkgs (#1493233) --- wxPython.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 8f8d788..50bcc66 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 19%{?dist} +Release: 20%{?dist} Summary: GUI toolkit for the Python programming language @@ -52,6 +52,7 @@ Group: Development/Libraries Summary: Development files for wxPython add-on modules Requires: python2-wxpython = %{version}-%{release} Requires: wxGTK3-devel +BuildArch: noarch %description devel This package includes C++ header files and SWIG files needed for developing @@ -134,6 +135,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Wed Sep 20 2017 Scott Talbert - 3.0.2.0-20 +- Make -devel noarch to resolve issue with conflicting archful pkgs (#1493233) + * Sun Sep 03 2017 Scott Talbert - 3.0.2.0-19 - Suppress warning about release version mismatch (since wxGTK3 3.0.3 update) From 7ad7dfb6fd971af80f4b226d309c9bee7cde89db Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Tue, 19 Dec 2017 20:36:00 -0500 Subject: [PATCH 39/46] Add patch to fix wxcairo for pycairo 1.11.1+ --- wxPython-3.0.2.0-fix-wxcairo.patch | 70 ++++++++++++++++++++++++++++++ wxPython.spec | 7 ++- 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 wxPython-3.0.2.0-fix-wxcairo.patch diff --git a/wxPython-3.0.2.0-fix-wxcairo.patch b/wxPython-3.0.2.0-fix-wxcairo.patch new file mode 100644 index 0000000..389ef25 --- /dev/null +++ b/wxPython-3.0.2.0-fix-wxcairo.patch @@ -0,0 +1,70 @@ +From 31f1eb9ef2b4b2d12e6c6ddc5af9888fae1857ee Mon Sep 17 00:00:00 2001 +From: Scott Talbert +Date: Fri, 15 Dec 2017 22:13:54 -0500 +Subject: [PATCH] Add wxcairo support for pycairo 1.11.1+ +Origin: https://github.com/wxWidgets/wxPython/pull/23 + +--- + wxPython/wx/lib/wxcairo.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 46 insertions(+) + +diff --git a/wxPython/wx/lib/wxcairo.py b/wx/lib/wxcairo.py +index 48e2ed62a1..ddb55cde6a 100644 +--- a/wxPython/wx/lib/wxcairo.py ++++ b/wxPython/wx/lib/wxcairo.py +@@ -465,6 +465,52 @@ class Pycairo_CAPI(ctypes.Structure): + ctypes.py_object)), + ('Check_Status', ctypes.PYFUNCTYPE(ctypes.c_int, ctypes.c_int))] + ++ # This structure is known good with pycairo 1.11.1+. ++ else: ++ _fields_ = [ ++ ('Context_Type', ctypes.py_object), ++ ('Context_FromContext', ctypes.PYFUNCTYPE(ctypes.py_object, ++ ctypes.c_void_p, ++ ctypes.py_object, ++ ctypes.py_object)), ++ ('FontFace_Type', ctypes.py_object), ++ ('ToyFontFace_Type', ctypes.py_object), ++ ('FontFace_FromFontFace', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), ++ ('FontOptions_Type', ctypes.py_object), ++ ('FontOptions_FromFontOptions', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), ++ ('Matrix_Type', ctypes.py_object), ++ ('Matrix_FromMatrix', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), ++ ('Path_Type', ctypes.py_object), ++ ('Path_FromPath', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), ++ ('Pattern_Type', ctypes.py_object), ++ ('SolidPattern_Type', ctypes.py_object), ++ ('SurfacePattern_Type', ctypes.py_object), ++ ('Gradient_Type', ctypes.py_object), ++ ('LinearGradient_Type', ctypes.py_object), ++ ('RadialGradient_Type', ctypes.py_object), ++ ('Pattern_FromPattern', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p, ++ ctypes.py_object)), #** changed in 1.8.4 ++ ('ScaledFont_Type', ctypes.py_object), ++ ('ScaledFont_FromScaledFont', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), ++ ('Surface_Type', ctypes.py_object), ++ ('ImageSurface_Type', ctypes.py_object), ++ ('PDFSurface_Type', ctypes.py_object), ++ ('PSSurface_Type', ctypes.py_object), ++ ('SVGSurface_Type', ctypes.py_object), ++ ('Win32Surface_Type', ctypes.py_object), ++ ('Win32PrintingSurface_Type', ctypes.py_object), #** new ++ ('XCBSurface_Type', ctypes.py_object), #** new ++ ('XlibSurface_Type', ctypes.py_object), ++ ('Surface_FromSurface', ctypes.PYFUNCTYPE(ctypes.py_object, ++ ctypes.c_void_p, ++ ctypes.py_object)), ++ ('Check_Status', ctypes.PYFUNCTYPE(ctypes.c_int, ctypes.c_int)), ++ ('RectangleInt_Type', ctypes.py_object), ++ ('RectangleInt_FromRectangleInt', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), ++ ('Region_Type', ctypes.py_object), ++ ('Region_FromRegion', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), ++ ('RecordingSurface_Type', ctypes.py_object)] ++ + + def _loadPycairoAPI(): + global pycairoAPI +-- +2.14.3 + diff --git a/wxPython.spec b/wxPython.spec index 50bcc66..faa3aeb 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 20%{?dist} +Release: 21%{?dist} Summary: GUI toolkit for the Python programming language @@ -24,6 +24,8 @@ Patch4: wxPython-3.0.2.0-listctrl-mixin-edit.patch Patch5: wxPython-3.0.2.0-webview-optional.patch # From Debian Patch6: wxPython-3.0.2.0-suppress-version-mismatch-warning.patch +# https://github.com/wxWidgets/wxPython/pull/23 +Patch7: wxPython-3.0.2.0-fix-wxcairo.patch # make sure to keep this updated as appropriate BuildRequires: wxGTK3-devel >= 3.0.0 BuildRequires: python2-devel @@ -135,6 +137,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Wed Dec 20 2017 Scott Talbert - 3.0.2.0-21 +- Add patch to fix wxcairo for pycairo 1.11.1+ + * Wed Sep 20 2017 Scott Talbert - 3.0.2.0-20 - Make -devel noarch to resolve issue with conflicting archful pkgs (#1493233) From f90a6c4a4c009d9dd2d21748eb6ad4d9a676784f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Fri, 9 Feb 2018 21:14:21 +0000 Subject: [PATCH 40/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index faa3aeb..7f59fae 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 21%{?dist} +Release: 22%{?dist} Summary: GUI toolkit for the Python programming language @@ -137,6 +137,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Fri Feb 09 2018 Fedora Release Engineering - 3.0.2.0-22 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + * Wed Dec 20 2017 Scott Talbert - 3.0.2.0-21 - Add patch to fix wxcairo for pycairo 1.11.1+ From 5dcd728b5fd353c54a79d9d9434b777e357f6b04 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Sun, 18 Feb 2018 22:09:14 -0500 Subject: [PATCH 41/46] Add missing BR for gcc-c++ --- wxPython.spec | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 7f59fae..9d93503 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 22%{?dist} +Release: 23%{?dist} Summary: GUI toolkit for the Python programming language @@ -27,6 +27,7 @@ Patch6: wxPython-3.0.2.0-suppress-version-mismatch-warning.patch # https://github.com/wxWidgets/wxPython/pull/23 Patch7: wxPython-3.0.2.0-fix-wxcairo.patch # make sure to keep this updated as appropriate +BuildRequires: gcc-c++ BuildRequires: wxGTK3-devel >= 3.0.0 BuildRequires: python2-devel @@ -137,6 +138,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Mon Feb 19 2018 Scott Talbert - 3.0.2.0-23 +- Add missing BR for gcc-c++ + * Fri Feb 09 2018 Fedora Release Engineering - 3.0.2.0-22 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild From 95f76bc0231ccb57c2a73d1bde02ab12f761021f Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 14 Jul 2018 09:02:34 +0000 Subject: [PATCH 42/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 9d93503..522ed91 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 23%{?dist} +Release: 24%{?dist} Summary: GUI toolkit for the Python programming language @@ -138,6 +138,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Sat Jul 14 2018 Fedora Release Engineering - 3.0.2.0-24 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + * Mon Feb 19 2018 Scott Talbert - 3.0.2.0-23 - Add missing BR for gcc-c++ From e9a3c26f0d0add9e1ba4c1aeb47c661c133eb662 Mon Sep 17 00:00:00 2001 From: Igor Gnatenko Date: Mon, 28 Jan 2019 20:18:30 +0100 Subject: [PATCH 43/46] Remove obsolete Group tag References: https://fedoraproject.org/wiki/Changes/Remove_Group_Tag --- wxPython.spec | 4 ---- 1 file changed, 4 deletions(-) diff --git a/wxPython.spec b/wxPython.spec index 522ed91..3fb71e0 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -6,7 +6,6 @@ Release: 24%{?dist} Summary: GUI toolkit for the Python programming language -Group: Development/Languages License: LGPLv2+ and wxWidgets URL: http://www.wxpython.org/ Source0: http://downloads.sourceforge.net/wxpython/%{name}-src-%{version}.tar.bz2 @@ -51,7 +50,6 @@ Obsoletes: wxPython < %{version}-%{release} %description -n python2-wxpython %_description %package devel -Group: Development/Libraries Summary: Development files for wxPython add-on modules Requires: python2-wxpython = %{version}-%{release} Requires: wxGTK3-devel @@ -63,7 +61,6 @@ add-on modules for wxPython. It is NOT needed for development of most programs which use the wxPython toolkit. %package docs -Group: Documentation Summary: Documentation and samples for wxPython Requires: python2-wxpython = %{version}-%{release} BuildArch: noarch @@ -73,7 +70,6 @@ Documentation, samples and demo application for wxPython. %if 0%{?fedora} > 25 %package -n python2-wxpython-webview -Group: Development/Languages Summary: WebView add-on for wxPython Requires: python2-wxpython%{?_isa} = %{version}-%{release} %{?python_provide:%python_provide python2-wxpython-webview} From 157a7002363c9294ca99700dca714906d06f9632 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sun, 3 Feb 2019 12:00:33 +0000 Subject: [PATCH 44/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 3fb71e0..3123c41 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 24%{?dist} +Release: 25%{?dist} Summary: GUI toolkit for the Python programming language @@ -134,6 +134,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Sun Feb 03 2019 Fedora Release Engineering - 3.0.2.0-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + * Sat Jul 14 2018 Fedora Release Engineering - 3.0.2.0-24 - Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild From 09debf9e63824d3a051ffaa8db3721ac4b331ca6 Mon Sep 17 00:00:00 2001 From: Fedora Release Engineering Date: Sat, 27 Jul 2019 03:47:34 +0000 Subject: [PATCH 45/46] - Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild Signed-off-by: Fedora Release Engineering --- wxPython.spec | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/wxPython.spec b/wxPython.spec index 3123c41..69d9ffb 100644 --- a/wxPython.spec +++ b/wxPython.spec @@ -2,7 +2,7 @@ Name: wxPython Version: 3.0.2.0 -Release: 25%{?dist} +Release: 26%{?dist} Summary: GUI toolkit for the Python programming language @@ -134,6 +134,9 @@ mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_site %changelog +* Sat Jul 27 2019 Fedora Release Engineering - 3.0.2.0-26 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + * Sun Feb 03 2019 Fedora Release Engineering - 3.0.2.0-25 - Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild From 38077c57120f5daf3cb28d7788b83454b0f81480 Mon Sep 17 00:00:00 2001 From: Scott Talbert Date: Mon, 11 Nov 2019 19:48:05 -0500 Subject: [PATCH 46/46] Python 2 only - replaced by python-wxpython4 --- .gitignore | 3 - dead.package | 1 + fix-editra-removal.patch | 160 ------- sources | 1 - wxPython-2.8.12.0-aui.patch | 24 -- wxPython-2.8.12.0-format.patch | 230 ---------- wxPython-3.0.0.0-format.patch | 264 ------------ wxPython-3.0.2.0-fix-wxcairo.patch | 70 --- wxPython-3.0.2.0-getxwindowcrash.patch | 26 -- wxPython-3.0.2.0-listctrl-mixin-edit.patch | 16 - wxPython-3.0.2.0-plot.patch | 91 ---- ....0-suppress-version-mismatch-warning.patch | 44 -- wxPython-3.0.2.0-webview-optional.patch | 23 - wxPython.spec | 402 ------------------ 14 files changed, 1 insertion(+), 1354 deletions(-) delete mode 100644 .gitignore create mode 100644 dead.package delete mode 100644 fix-editra-removal.patch delete mode 100644 sources delete mode 100644 wxPython-2.8.12.0-aui.patch delete mode 100644 wxPython-2.8.12.0-format.patch delete mode 100644 wxPython-3.0.0.0-format.patch delete mode 100644 wxPython-3.0.2.0-fix-wxcairo.patch delete mode 100644 wxPython-3.0.2.0-getxwindowcrash.patch delete mode 100644 wxPython-3.0.2.0-listctrl-mixin-edit.patch delete mode 100644 wxPython-3.0.2.0-plot.patch delete mode 100644 wxPython-3.0.2.0-suppress-version-mismatch-warning.patch delete mode 100644 wxPython-3.0.2.0-webview-optional.patch delete mode 100644 wxPython.spec diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 02f9d27..0000000 --- a/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -wxPython-src-2.8.11.0.tar.bz2 -/wxPython-src-2.8.12.0.tar.bz2 -/wxPython-src-3.0.2.0.tar.bz2 diff --git a/dead.package b/dead.package new file mode 100644 index 0000000..fb13297 --- /dev/null +++ b/dead.package @@ -0,0 +1 @@ +Python 2 only - replaced by python-wxpython4 diff --git a/fix-editra-removal.patch b/fix-editra-removal.patch deleted file mode 100644 index c21a153..0000000 --- a/fix-editra-removal.patch +++ /dev/null @@ -1,160 +0,0 @@ -diff --git a/wxPython/distrib/DIRLIST b/wxPython/distrib/DIRLIST -index 688d0d1..82dd00d 100644 ---- a/wxPython/distrib/DIRLIST -+++ b/wxPython/distrib/DIRLIST -@@ -149,104 +149,5 @@ wx/tools/XRCed/misc/src-images - wx/tools/XRCed/plugins - wx/tools/XRCed/plugins/bitmaps - wx/tools/XRCed/plugins/src-images --wx/tools/Editra --wx/tools/Editra/docs --wx/tools/Editra/include --wx/tools/Editra/include/python2.5 --wx/tools/Editra/include/python2.5/darwin --wx/tools/Editra/include/python2.5/win32 --wx/tools/Editra/locale --wx/tools/Editra/locale/ca_ES@valencia --wx/tools/Editra/locale/ca_ES@valencia/LC_MESSAGES --wx/tools/Editra/locale/cs_CZ --wx/tools/Editra/locale/cs_CZ/LC_MESSAGES --wx/tools/Editra/locale/da_DK --wx/tools/Editra/locale/da_DK/LC_MESSAGES --wx/tools/Editra/locale/de_DE --wx/tools/Editra/locale/de_DE/LC_MESSAGES --wx/tools/Editra/locale/en_US --wx/tools/Editra/locale/en_US/LC_MESSAGES --wx/tools/Editra/locale/es_ES --wx/tools/Editra/locale/es_ES/LC_MESSAGES --wx/tools/Editra/locale/fr_FR --wx/tools/Editra/locale/fr_FR/LC_MESSAGES --wx/tools/Editra/locale/gl_ES --wx/tools/Editra/locale/gl_ES/LC_MESSAGES --wx/tools/Editra/locale/it_IT --wx/tools/Editra/locale/it_IT/LC_MESSAGES --wx/tools/Editra/locale/hr_HR --wx/tools/Editra/locale/hr_HR/LC_MESSAGES --wx/tools/Editra/locale/hu_HU --wx/tools/Editra/locale/hu_HU/LC_MESSAGES --wx/tools/Editra/locale/ja_JP --wx/tools/Editra/locale/ja_JP/LC_MESSAGES --wx/tools/Editra/locale/lv_LV --wx/tools/Editra/locale/lv_LV/LC_MESSAGES --wx/tools/Editra/locale/nl_NL --wx/tools/Editra/locale/nl_NL/LC_MESSAGES --wx/tools/Editra/locale/nn_NO --wx/tools/Editra/locale/nn_NO/LC_MESSAGES --wx/tools/Editra/locale/pl_PL --wx/tools/Editra/locale/pl_PL/LC_MESSAGES --wx/tools/Editra/locale/pt_BR --wx/tools/Editra/locale/pt_BR/LC_MESSAGES --wx/tools/Editra/locale/ro_RO --wx/tools/Editra/locale/ro_RO/LC_MESSAGES --wx/tools/Editra/locale/ru_RU --wx/tools/Editra/locale/ru_RU/LC_MESSAGES --wx/tools/Editra/locale/sk_SK --wx/tools/Editra/locale/sk_SK/LC_MESSAGES --wx/tools/Editra/locale/sl_SI --wx/tools/Editra/locale/sl_SI/LC_MESSAGES --wx/tools/Editra/locale/sr_RS --wx/tools/Editra/locale/sr_RS/LC_MESSAGES --wx/tools/Editra/locale/sv_SE --wx/tools/Editra/locale/sv_SE/LC_MESSAGES --wx/tools/Editra/locale/tr_TR --wx/tools/Editra/locale/tr_TR/LC_MESSAGES --wx/tools/Editra/locale/uk_UA --wx/tools/Editra/locale/uk_UA/LC_MESSAGES --wx/tools/Editra/locale/zh_CN --wx/tools/Editra/locale/zh_CN/LC_MESSAGES --wx/tools/Editra/locale/zh_TW --wx/tools/Editra/locale/zh_TW/LC_MESSAGES --wx/tools/Editra/pixmaps --wx/tools/Editra/pixmaps/theme --wx/tools/Editra/pixmaps/theme/Default --wx/tools/Editra/pixmaps/theme/Tango --wx/tools/Editra/pixmaps/theme/Tango/menu --wx/tools/Editra/pixmaps/theme/Tango/mime --wx/tools/Editra/pixmaps/theme/Tango/other --wx/tools/Editra/pixmaps/theme/Tango/toolbar --wx/tools/Editra/pixmaps/theme/Tango/other --wx/tools/Editra/plugins --wx/tools/Editra/plugins/codebrowser --wx/tools/Editra/plugins/codebrowser/codebrowser --wx/tools/Editra/plugins/codebrowser/codebrowser/gentag --wx/tools/Editra/plugins/filebrowser --wx/tools/Editra/plugins/filebrowser/filebrowser --wx/tools/Editra/plugins/hello --wx/tools/Editra/plugins/hello/hello --wx/tools/Editra/plugins/Launch --wx/tools/Editra/plugins/Launch/launch --wx/tools/Editra/plugins/pyshell --wx/tools/Editra/plugins/pyshell/pyshell --wx/tools/Editra/scripts --wx/tools/Editra/scripts/i18n --wx/tools/Editra/src --wx/tools/Editra/src/autocomp --wx/tools/Editra/src/ebmlib --wx/tools/Editra/src/eclib --wx/tools/Editra/src/extern --wx/tools/Editra/src/extern/aui --wx/tools/Editra/src/extern/pygments --wx/tools/Editra/src/extern/pygments/filters --wx/tools/Editra/src/extern/pygments/formatters --wx/tools/Editra/src/extern/pygments/lexers --wx/tools/Editra/src/extern/pygments/styles --wx/tools/Editra/src/syntax --wx/tools/Editra/styles --wx/tools/Editra/templates --wx/tools/Editra/tests/syntax - - wxversion -diff --git a/wxPython/setup.py b/wxPython/setup.py -index 35ce514..76fe6d1 100755 ---- a/wxPython/setup.py -+++ b/wxPython/setup.py -@@ -897,13 +897,6 @@ WX_PKGLIST = [ 'wx', - 'wx.tools', - 'wx.tools.XRCed', - 'wx.tools.XRCed.plugins', -- 'wx.tools.Editra', -- 'wx.tools.Editra.src', -- 'wx.tools.Editra.src.autocomp', -- 'wx.tools.Editra.src.eclib', -- 'wx.tools.Editra.src.ebmlib', -- 'wx.tools.Editra.src.extern', -- 'wx.tools.Editra.src.syntax', - ] - - -@@ -921,7 +914,6 @@ else: - opj('scripts/pywrap'), - opj('scripts/pywxrc'), - opj('scripts/xrced'), -- opj('scripts/editra'), - ] - if os.name == 'nt': - SCRIPTS.append( opj('scripts/genaxmodule') ) -@@ -936,16 +928,6 @@ DATA_FILES += find_data_files('wx/tools/XRCed', '*.txt', '*.xrc', '*.htb') - DATA_FILES += find_data_files('wx/tools/XRCed/plugins', '*.crx') - DATA_FILES += find_data_files('wx/tools/XRCed/plugins/bitmaps', '*.png') - --DATA_FILES += find_data_files('wx/tools/Editra/docs', '*.txt') --DATA_FILES += find_data_files('wx/tools/Editra/locale', '*.mo') --DATA_FILES += find_data_files('wx/tools/Editra/pixmaps', -- '*.png', '*.icns', '*.ico', 'README', 'AUTHORS', 'COPYING') --DATA_FILES += find_data_files('wx/tools/Editra/plugins', '*.egg') --DATA_FILES += find_data_files('wx/tools/Editra/src', 'README') --DATA_FILES += find_data_files('wx/tools/Editra/styles', '*.ess') --DATA_FILES += find_data_files('wx/tools/Editra/tests/syntax', '*') --DATA_FILES += find_data_files('wx/tools/Editra', '[A-Z]*', recursive=False) -- - - ## import pprint - ## pprint.pprint(DATA_FILES) -@@ -995,7 +977,6 @@ if EGGing: - 'pyshell = wx.py.PyShell:main', - 'pywrap = wx.py.PyWrap:main', - 'helpviewer = wx.tools.helpviewer:main', -- 'editra = wx.tools.Editra.launcher:main', - 'xrced = wx.tools.XRCed.xrced:main', - ], - }, diff --git a/sources b/sources deleted file mode 100644 index 1cbbf0e..0000000 --- a/sources +++ /dev/null @@ -1 +0,0 @@ -922b02ff2c0202a7bf1607c98bbbbc04 wxPython-src-3.0.2.0.tar.bz2 diff --git a/wxPython-2.8.12.0-aui.patch b/wxPython-2.8.12.0-aui.patch deleted file mode 100644 index bd631e0..0000000 --- a/wxPython-2.8.12.0-aui.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_pages.py.aui wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_pages.py ---- wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_pages.py.aui 2011-04-13 22:28:07.000000000 +0200 -+++ wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_pages.py 2011-04-26 08:40:13.000000000 +0200 -@@ -37,7 +37,7 @@ import ed_txt - import ed_mdlg - import ebmlib - import eclib --from extern import aui -+from wx.lib.agw import aui - import ed_book - - #--------------------------------------------------------------------------# -diff -up wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_shelf.py.aui wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_shelf.py ---- wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_shelf.py.aui 2011-04-13 22:28:07.000000000 +0200 -+++ wxPython-src-2.8.12.0/wxPython/wx/tools/Editra/src/ed_shelf.py 2011-04-26 08:40:26.000000000 +0200 -@@ -29,7 +29,7 @@ from profiler import Profile_Get - import ed_msg - import plugin - import iface --from extern import aui -+from wx.lib.agw import aui - import ed_book - - #--------------------------------------------------------------------------# diff --git a/wxPython-2.8.12.0-format.patch b/wxPython-2.8.12.0-format.patch deleted file mode 100644 index 64644df..0000000 --- a/wxPython-2.8.12.0-format.patch +++ /dev/null @@ -1,230 +0,0 @@ -diff -up wxPython-src-2.8.12.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp.format 2014-03-14 11:35:34.581008618 +0100 -+++ wxPython-src-2.8.12.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp 2014-03-14 11:35:46.035843300 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/contrib/glcanvas/gtk/glcanvas_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/contrib/glcanvas/gtk/glcanvas_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/contrib/glcanvas/gtk/glcanvas_wrap.cpp.format 2014-03-14 11:34:19.451092820 +0100 -+++ wxPython-src-2.8.12.0/wxPython/contrib/glcanvas/gtk/glcanvas_wrap.cpp 2014-03-14 11:34:32.157909458 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/contrib/stc/gtk/stc_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/contrib/stc/gtk/stc_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/contrib/stc/gtk/stc_wrap.cpp.format 2014-03-14 11:34:48.078679712 +0100 -+++ wxPython-src-2.8.12.0/wxPython/contrib/stc/gtk/stc_wrap.cpp 2014-03-14 11:34:59.102520628 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp.format 2014-03-14 11:27:46.008769964 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp 2014-03-14 11:28:51.805819727 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp.format 2014-03-14 11:27:46.008769964 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp 2014-03-14 11:28:51.805819727 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/animate_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/animate_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/animate_wrap.cpp.format 2014-03-14 11:27:46.008769964 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/animate_wrap.cpp 2014-03-14 11:28:51.805819727 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/aui_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/aui_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/aui_wrap.cpp.format 2014-03-14 11:27:46.013769892 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/aui_wrap.cpp 2014-03-14 11:29:04.018643338 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/calendar_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/calendar_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/calendar_wrap.cpp.format 2014-03-14 11:27:46.015769863 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/calendar_wrap.cpp 2014-03-14 11:29:17.674446166 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/combo_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/combo_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/combo_wrap.cpp.format 2014-03-14 11:27:46.018769820 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/combo_wrap.cpp 2014-03-14 11:29:29.227279558 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_controls_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_controls_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/_controls_wrap.cpp.format 2014-03-14 11:27:46.025769719 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/_controls_wrap.cpp 2014-03-14 11:28:04.778498903 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_core_wrap.cpp -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_gdi_wrap.cpp -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/grid_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/grid_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/grid_wrap.cpp.format 2014-03-14 11:27:46.044769444 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/grid_wrap.cpp 2014-03-14 11:29:40.914111013 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/html_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/html_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/html_wrap.cpp.format 2014-03-14 11:27:46.048769387 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/html_wrap.cpp 2014-03-14 11:29:52.878938455 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/media_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/media_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/media_wrap.cpp.format 2014-03-14 11:27:46.050769358 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/media_wrap.cpp 2014-03-14 11:30:04.953764306 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_misc_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_misc_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/_misc_wrap.cpp.format 2014-03-14 11:27:46.055769285 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/_misc_wrap.cpp 2014-03-14 11:28:26.677182645 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/richtext_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/richtext_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/richtext_wrap.cpp.format 2014-03-14 11:27:46.060769213 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/richtext_wrap.cpp 2014-03-14 11:30:15.843607244 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/webkit_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/webkit_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/webkit_wrap.cpp.format 2014-03-14 11:27:46.063769170 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/webkit_wrap.cpp 2014-03-14 11:30:31.108387076 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/_windows_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/_windows_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/_windows_wrap.cpp.format 2014-03-14 11:27:46.068769098 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/_windows_wrap.cpp 2014-03-14 11:28:41.342970838 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/wizard_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/wizard_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/wizard_wrap.cpp.format 2014-03-14 11:27:46.070769069 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/wizard_wrap.cpp 2014-03-14 11:30:42.440223630 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -up wxPython-src-2.8.12.0/wxPython/src/gtk/xrc_wrap.cpp.format wxPython-src-2.8.12.0/wxPython/src/gtk/xrc_wrap.cpp ---- wxPython-src-2.8.12.0/wxPython/src/gtk/xrc_wrap.cpp.format 2014-03-14 11:27:46.073769026 +0100 -+++ wxPython-src-2.8.12.0/wxPython/src/gtk/xrc_wrap.cpp 2014-03-14 11:30:55.391036827 +0100 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - diff --git a/wxPython-3.0.0.0-format.patch b/wxPython-3.0.0.0-format.patch deleted file mode 100644 index 540ced9..0000000 --- a/wxPython-3.0.0.0-format.patch +++ /dev/null @@ -1,264 +0,0 @@ -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp wxPython-src-3.0.0.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp 2013-12-16 08:52:12.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/contrib/gizmos/gtk/gizmos_wrap.cpp 2014-09-04 22:58:04.035387024 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/animate_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/animate_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/animate_wrap.cpp 2013-12-16 08:51:56.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/animate_wrap.cpp 2014-09-04 22:58:04.075387422 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/aui_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/aui_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/aui_wrap.cpp 2013-12-28 04:28:56.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/aui_wrap.cpp 2014-09-04 22:58:04.080387472 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/calendar_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/calendar_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/calendar_wrap.cpp 2013-12-16 08:51:28.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/calendar_wrap.cpp 2014-09-04 22:58:04.082387492 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/combo_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/combo_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/combo_wrap.cpp 2013-12-16 08:51:32.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/combo_wrap.cpp 2014-09-04 22:58:04.084387512 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_controls_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/_controls_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_controls_wrap.cpp 2013-12-16 08:51:23.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/_controls_wrap.cpp 2014-09-04 22:58:04.094387611 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_core_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/_core_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_core_wrap.cpp 2013-12-28 04:18:40.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/_core_wrap.cpp 2014-09-04 22:58:04.062387293 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/dataview_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/dataview_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/dataview_wrap.cpp 2013-12-16 08:51:45.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/dataview_wrap.cpp 2014-09-04 23:00:27.042820179 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_gdi_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/_gdi_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_gdi_wrap.cpp 2013-12-16 08:51:16.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/_gdi_wrap.cpp 2014-09-04 22:58:04.073387402 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/glcanvas_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/glcanvas_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/glcanvas_wrap.cpp 2013-12-16 08:52:07.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/glcanvas_wrap.cpp 2014-09-04 22:58:04.037387044 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/grid_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/grid_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/grid_wrap.cpp 2013-12-16 08:51:35.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/grid_wrap.cpp 2014-09-04 22:58:04.100387671 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/html2_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/html2_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/html2_wrap.cpp 2013-12-28 04:28:56.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/html2_wrap.cpp 2014-09-04 23:01:00.379154803 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/html_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/html_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/html_wrap.cpp 2013-12-16 08:51:38.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/html_wrap.cpp 2014-09-04 22:58:04.104387710 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/media_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/media_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/media_wrap.cpp 2013-12-16 08:51:39.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/media_wrap.cpp 2014-09-04 22:58:04.106387730 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_misc_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/_misc_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_misc_wrap.cpp 2013-12-28 04:18:47.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/_misc_wrap.cpp 2014-09-04 22:58:04.113387800 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/propgrid_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/propgrid_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/propgrid_wrap.cpp 2013-12-16 08:52:01.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/propgrid_wrap.cpp 2014-09-04 23:01:26.082412807 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/richtext_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/richtext_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/richtext_wrap.cpp 2013-12-16 08:51:52.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/richtext_wrap.cpp 2014-09-04 22:58:04.122387890 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/stc_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/stc_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/stc_wrap.cpp 2013-12-16 08:52:06.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/stc_wrap.cpp 2014-09-04 22:58:04.045387124 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/webkit_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/webkit_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/webkit_wrap.cpp 2013-12-16 08:51:41.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/webkit_wrap.cpp 2014-09-04 22:58:04.124387909 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_windows_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/_windows_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/_windows_wrap.cpp 2013-12-16 08:51:19.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/_windows_wrap.cpp 2014-09-04 22:58:04.131387979 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/wizard_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/wizard_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/wizard_wrap.cpp 2013-12-16 08:51:43.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/wizard_wrap.cpp 2014-09-04 22:58:04.134388009 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - -diff -Nrup wxPython-src-3.0.0.0.orig/wxPython/src/gtk/xrc_wrap.cpp wxPython-src-3.0.0.0/wxPython/src/gtk/xrc_wrap.cpp ---- wxPython-src-3.0.0.0.orig/wxPython/src/gtk/xrc_wrap.cpp 2013-12-16 08:51:46.000000000 -0500 -+++ wxPython-src-3.0.0.0/wxPython/src/gtk/xrc_wrap.cpp 2014-09-04 22:58:04.136388029 -0400 -@@ -861,7 +861,7 @@ SWIG_Python_AddErrorMsg(const char* mesg - Py_DECREF(old_str); - Py_DECREF(value); - } else { -- PyErr_Format(PyExc_RuntimeError, mesg); -+ PyErr_Format(PyExc_RuntimeError, "%s", mesg); - } - } - diff --git a/wxPython-3.0.2.0-fix-wxcairo.patch b/wxPython-3.0.2.0-fix-wxcairo.patch deleted file mode 100644 index 389ef25..0000000 --- a/wxPython-3.0.2.0-fix-wxcairo.patch +++ /dev/null @@ -1,70 +0,0 @@ -From 31f1eb9ef2b4b2d12e6c6ddc5af9888fae1857ee Mon Sep 17 00:00:00 2001 -From: Scott Talbert -Date: Fri, 15 Dec 2017 22:13:54 -0500 -Subject: [PATCH] Add wxcairo support for pycairo 1.11.1+ -Origin: https://github.com/wxWidgets/wxPython/pull/23 - ---- - wxPython/wx/lib/wxcairo.py | 46 ++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 46 insertions(+) - -diff --git a/wxPython/wx/lib/wxcairo.py b/wx/lib/wxcairo.py -index 48e2ed62a1..ddb55cde6a 100644 ---- a/wxPython/wx/lib/wxcairo.py -+++ b/wxPython/wx/lib/wxcairo.py -@@ -465,6 +465,52 @@ class Pycairo_CAPI(ctypes.Structure): - ctypes.py_object)), - ('Check_Status', ctypes.PYFUNCTYPE(ctypes.c_int, ctypes.c_int))] - -+ # This structure is known good with pycairo 1.11.1+. -+ else: -+ _fields_ = [ -+ ('Context_Type', ctypes.py_object), -+ ('Context_FromContext', ctypes.PYFUNCTYPE(ctypes.py_object, -+ ctypes.c_void_p, -+ ctypes.py_object, -+ ctypes.py_object)), -+ ('FontFace_Type', ctypes.py_object), -+ ('ToyFontFace_Type', ctypes.py_object), -+ ('FontFace_FromFontFace', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), -+ ('FontOptions_Type', ctypes.py_object), -+ ('FontOptions_FromFontOptions', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), -+ ('Matrix_Type', ctypes.py_object), -+ ('Matrix_FromMatrix', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), -+ ('Path_Type', ctypes.py_object), -+ ('Path_FromPath', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), -+ ('Pattern_Type', ctypes.py_object), -+ ('SolidPattern_Type', ctypes.py_object), -+ ('SurfacePattern_Type', ctypes.py_object), -+ ('Gradient_Type', ctypes.py_object), -+ ('LinearGradient_Type', ctypes.py_object), -+ ('RadialGradient_Type', ctypes.py_object), -+ ('Pattern_FromPattern', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p, -+ ctypes.py_object)), #** changed in 1.8.4 -+ ('ScaledFont_Type', ctypes.py_object), -+ ('ScaledFont_FromScaledFont', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), -+ ('Surface_Type', ctypes.py_object), -+ ('ImageSurface_Type', ctypes.py_object), -+ ('PDFSurface_Type', ctypes.py_object), -+ ('PSSurface_Type', ctypes.py_object), -+ ('SVGSurface_Type', ctypes.py_object), -+ ('Win32Surface_Type', ctypes.py_object), -+ ('Win32PrintingSurface_Type', ctypes.py_object), #** new -+ ('XCBSurface_Type', ctypes.py_object), #** new -+ ('XlibSurface_Type', ctypes.py_object), -+ ('Surface_FromSurface', ctypes.PYFUNCTYPE(ctypes.py_object, -+ ctypes.c_void_p, -+ ctypes.py_object)), -+ ('Check_Status', ctypes.PYFUNCTYPE(ctypes.c_int, ctypes.c_int)), -+ ('RectangleInt_Type', ctypes.py_object), -+ ('RectangleInt_FromRectangleInt', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), -+ ('Region_Type', ctypes.py_object), -+ ('Region_FromRegion', ctypes.PYFUNCTYPE(ctypes.py_object, ctypes.c_void_p)), -+ ('RecordingSurface_Type', ctypes.py_object)] -+ - - def _loadPycairoAPI(): - global pycairoAPI --- -2.14.3 - diff --git a/wxPython-3.0.2.0-getxwindowcrash.patch b/wxPython-3.0.2.0-getxwindowcrash.patch deleted file mode 100644 index ce0217f..0000000 --- a/wxPython-3.0.2.0-getxwindowcrash.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff -up wxPython-src-3.0.2.0/wxPython/src/helpers.cpp.getxwindowcrash wxPython-src-3.0.2.0/wxPython/src/helpers.cpp ---- wxPython-src-3.0.2.0/wxPython/src/helpers.cpp.getxwindowcrash 2014-10-13 18:37:52.000000000 -0400 -+++ wxPython-src-3.0.2.0/wxPython/src/helpers.cpp 2015-01-03 22:05:35.936010783 -0500 -@@ -29,9 +29,19 @@ - #include - #include - #ifdef __WXGTK3__ --#define GetXWindow(wxwin) (wxwin)->m_wxwindow ? \ -- GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_wxwindow)) : \ -- GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_widget)) -+// Unlike GDK_WINDOW_XWINDOW, GDK_WINDOW_XID can't handle a NULL, so check 1st -+static XID GetXWindow(wxWindow* wxwin) { -+ if ((wxwin)->m_wxwindow) { -+ if (gtk_widget_get_window((wxwin)->m_wxwindow)) -+ return GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_wxwindow)); -+ return 0; -+ } -+ else { -+ if (gtk_widget_get_window((wxwin)->m_widget)) -+ return GDK_WINDOW_XID(gtk_widget_get_window((wxwin)->m_widget)); -+ return 0; -+ } -+} - #else - #define GetXWindow(wxwin) (wxwin)->m_wxwindow ? \ - GDK_WINDOW_XWINDOW((wxwin)->m_wxwindow->window) : \ diff --git a/wxPython-3.0.2.0-listctrl-mixin-edit.patch b/wxPython-3.0.2.0-listctrl-mixin-edit.patch deleted file mode 100644 index 47a6b16..0000000 --- a/wxPython-3.0.2.0-listctrl-mixin-edit.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff -up wxPython-src-3.0.2.0/wxPython/wx/lib/mixins/listctrl.py.editzeroheight wxPython-src-3.0.2.0/wxPython/wx/lib/mixins/listctrl.py ---- wxPython-src-3.0.2.0/wxPython/wx/lib/mixins/listctrl.py.editzeroheight 2014-10-13 18:37:52.000000000 -0400 -+++ wxPython-src-3.0.2.0/wxPython/wx/lib/mixins/listctrl.py 2015-09-29 20:57:15.334780365 -0400 -@@ -604,7 +604,11 @@ class TextEditMixin: - y0 = self.GetItemRect(row)[1] - - editor = self.editor -- editor.SetDimensions(x0-scrolloffset,y0, x1,-1) -+ # Temp fix: for some reason on GTK3, setting the height as -1 (default) -+ # with the above code flow results in the height being zero. Work -+ # around this by setting the height to the existing height. Upstream -+ # bug reported: http://trac.wxwidgets.org/ticket/17160 -+ editor.SetDimensions(x0-scrolloffset,y0, x1,editor.GetSize()[1]) - - editor.SetValue(self.GetItem(row, col).GetText()) - editor.Show() diff --git a/wxPython-3.0.2.0-plot.patch b/wxPython-3.0.2.0-plot.patch deleted file mode 100644 index f56956a..0000000 --- a/wxPython-3.0.2.0-plot.patch +++ /dev/null @@ -1,91 +0,0 @@ -diff -up wxPython-src-3.0.2.0/wxPython/wx/lib/plot.py.plot wxPython-src-3.0.2.0/wxPython/wx/lib/plot.py ---- wxPython-src-3.0.2.0/wxPython/wx/lib/plot.py.plot 2014-10-13 18:37:22.000000000 -0400 -+++ wxPython-src-3.0.2.0/wxPython/wx/lib/plot.py 2015-01-04 20:38:04.645350202 -0500 -@@ -237,7 +237,7 @@ class PolyLine(PolyPoints): - :keyword `attr`: keyword attributes, default to: - - ========================== ================================ -- 'colour'= 'black' wx.Pen Colour any wx.Colour -+ 'colour'= 'black' wx.Pen Colour any wx.NamedColour - 'width'= 1 Pen width - 'style'= wx.PENSTYLE_SOLID wx.Pen style - 'legend'= '' Line Legend to display -@@ -251,7 +251,7 @@ class PolyLine(PolyPoints): - width = self.attributes['width'] * printerScale * self._pointSize[0] - style = self.attributes['style'] - if not isinstance(colour, wx.Colour): -- colour = wx.Colour(colour) -+ colour = wx.NamedColour(colour) - pen = wx.Pen(colour, width, style) - pen.SetCap(wx.CAP_BUTT) - dc.SetPen(pen) -@@ -287,7 +287,7 @@ class PolySpline(PolyLine): - :keyword `attr`: keyword attributes, default to: - - ========================== ================================ -- 'colour'= 'black' wx.Pen Colour any wx.Colour -+ 'colour'= 'black' wx.Pen Colour any wx.NamedColour - 'width'= 1 Pen width - 'style'= wx.PENSTYLE_SOLID wx.Pen style - 'legend'= '' Line Legend to display -@@ -301,7 +301,7 @@ class PolySpline(PolyLine): - width = self.attributes['width'] * printerScale * self._pointSize[0] - style = self.attributes['style'] - if not isinstance(colour, wx.Colour): -- colour = wx.Colour(colour) -+ colour = wx.NamedColour(colour) - pen = wx.Pen(colour, width, style) - pen.SetCap(wx.CAP_ROUND) - dc.SetPen(pen) -@@ -365,9 +365,9 @@ class PolyMarker(PolyPoints): - marker = self.attributes['marker'] - - if colour and not isinstance(colour, wx.Colour): -- colour = wx.Colour(colour) -+ colour = wx.NamedColour(colour) - if fillcolour and not isinstance(fillcolour, wx.Colour): -- fillcolour = wx.Colour(fillcolour) -+ fillcolour = wx.NamedColour(fillcolour) - - dc.SetPen(wx.Pen(colour, width)) - if fillcolour: -@@ -595,9 +595,9 @@ class PlotCanvas(wx.Panel): - - # set curser as cross-hairs - self.canvas.SetCursor(wx.CROSS_CURSOR) -- self.HandCursor = wx.Cursor(Hand.GetImage()) -- self.GrabHandCursor = wx.Cursor(GrabHand.GetImage()) -- self.MagCursor = wx.Cursor(MagPlus.GetImage()) -+ self.HandCursor = wx.CursorFromImage(Hand.GetImage()) -+ self.GrabHandCursor = wx.CursorFromImage(GrabHand.GetImage()) -+ self.MagCursor = wx.CursorFromImage(MagPlus.GetImage()) - - # Things for printing - self._print_data = None -@@ -681,7 +681,7 @@ class PlotCanvas(wx.Panel): - if isinstance(colour, wx.Colour): - self._gridColour = colour - else: -- self._gridColour = wx.Colour(colour) -+ self._gridColour = wx.NamedColour(colour) - - # SaveFile - def SaveFile(self, fileName=''): -@@ -1513,7 +1513,7 @@ class PlotCanvas(wx.Panel): - # Make new offscreen bitmap: this bitmap will always have the - # current drawing in it, so it can be used to save the image to - # a file, or whatever. -- self._Buffer = wx.Bitmap(Size.width, Size.height) -+ self._Buffer = wx.EmptyBitmap(Size.width, Size.height) - self._setSize() - - self.last_PointLabel = None # reset pointLabel -@@ -1578,7 +1578,7 @@ class PlotCanvas(wx.Panel): - width = self._Buffer.GetWidth() - height = self._Buffer.GetHeight() - if sys.platform != "darwin": -- tmp_Buffer = wx.Bitmap(width, height) -+ tmp_Buffer = wx.EmptyBitmap(width, height) - dcs = wx.MemoryDC() - dcs.SelectObject(tmp_Buffer) - dcs.Clear() diff --git a/wxPython-3.0.2.0-suppress-version-mismatch-warning.patch b/wxPython-3.0.2.0-suppress-version-mismatch-warning.patch deleted file mode 100644 index 2bc5634..0000000 --- a/wxPython-3.0.2.0-suppress-version-mismatch-warning.patch +++ /dev/null @@ -1,44 +0,0 @@ -Description: Suppress warning about RELEASE_VERSION mismatch - This will often be the case in Debian, since wxwidgets3.0 and wxpython3.0 are - separate source packages, and upstream releases of each happen on different - schedules. -Author: Olly Betts -Forwarded: not-needed -Last-Update: 2014-08-07 - ---- a/wxPython/src/_core_ex.py -+++ b/wxPython/src/_core_ex.py -@@ -26,9 +26,12 @@ - - assert MAJOR_VERSION == _core_.MAJOR_VERSION, "wxPython/wxWidgets version mismatch" - assert MINOR_VERSION == _core_.MINOR_VERSION, "wxPython/wxWidgets version mismatch" --if RELEASE_VERSION != _core_.RELEASE_VERSION: -- import warnings -- warnings.warn("wxPython/wxWidgets release number mismatch") -+# This will often be the case in Debian, since wxwidgets3.0 and wxpython3.0 are -+# separate source packages, and upstream releases of each happen on different -+# schedules. -+#if RELEASE_VERSION != _core_.RELEASE_VERSION: -+# import warnings -+# warnings.warn("wxPython/wxWidgets release number mismatch") - - - def version(): ---- a/wxPython/src/gtk/_core.py -+++ b/wxPython/src/gtk/_core.py -@@ -16624,9 +16624,12 @@ - - assert MAJOR_VERSION == _core_.MAJOR_VERSION, "wxPython/wxWidgets version mismatch" - assert MINOR_VERSION == _core_.MINOR_VERSION, "wxPython/wxWidgets version mismatch" --if RELEASE_VERSION != _core_.RELEASE_VERSION: -- import warnings -- warnings.warn("wxPython/wxWidgets release number mismatch") -+# This will often be the case in Debian, since wxwidgets3.0 and wxpython3.0 are -+# separate source packages, and upstream releases of each happen on different -+# schedules. -+#if RELEASE_VERSION != _core_.RELEASE_VERSION: -+# import warnings -+# warnings.warn("wxPython/wxWidgets release number mismatch") - - - def version(): diff --git a/wxPython-3.0.2.0-webview-optional.patch b/wxPython-3.0.2.0-webview-optional.patch deleted file mode 100644 index 555dc44..0000000 --- a/wxPython-3.0.2.0-webview-optional.patch +++ /dev/null @@ -1,23 +0,0 @@ -Description: Allow wx.html2 to be packaged separately - Installing it drags in the "libwxgtk-webview3.0-0v5" runtime package which - drags in rather a lot of packages. -Author: Scott Talbert -Bug-Debian: http://bugs.debian.org/821934 -Forwarded: not-needed -Last-Update: 2016-04-30 - -diff -up wxpython3.0-3.0.2.0+dfsg/wxPython/config.py.webview wxpython3.0-3.0.2.0+dfsg/wxPython/config.py ---- wxpython3.0-3.0.2.0+dfsg/wxPython/config.py.webview 2016-04-29 00:06:26.000000000 -0400 -+++ wxpython3.0-3.0.2.0+dfsg/wxPython/config.py 2016-04-29 20:14:59.830690131 -0400 -@@ -660,7 +660,10 @@ def adjustLFLAGS(lflags, libdirs, libs): - if flag[:2] == '-L': - libdirs.append(flag[2:]) - elif flag[:2] == '-l': -- libs.append(flag[2:]) -+ # Remove 'webview' from the default libs so we don't always link -+ # with it. It gets added specifically for html2 elsewhere. -+ if flag[2:] != makeLibName('webview')[0]: -+ libs.append(flag[2:]) - else: - newLFLAGS.append(flag) - return removeDuplicates(newLFLAGS) diff --git a/wxPython.spec b/wxPython.spec deleted file mode 100644 index 69d9ffb..0000000 --- a/wxPython.spec +++ /dev/null @@ -1,402 +0,0 @@ -%global py_setup_args WX_CONFIG=/usr/bin/wx-config-3.0 WXPORT=gtk3 - -Name: wxPython -Version: 3.0.2.0 -Release: 26%{?dist} - -Summary: GUI toolkit for the Python programming language - -License: LGPLv2+ and wxWidgets -URL: http://www.wxpython.org/ -Source0: http://downloads.sourceforge.net/wxpython/%{name}-src-%{version}.tar.bz2 -# Remove Editra - it doesn't work and is technically a bundle. Thanks to -# Debian for the patch. -Patch0: fix-editra-removal.patch -Patch1: wxPython-3.0.0.0-format.patch -# http://trac.wxwidgets.org/ticket/16765 -Patch2: wxPython-3.0.2.0-getxwindowcrash.patch -# http://trac.wxwidgets.org/ticket/16767 -Patch3: wxPython-3.0.2.0-plot.patch -# http://trac.wxwidgets.org/ticket/17160 -Patch4: wxPython-3.0.2.0-listctrl-mixin-edit.patch -# From Debian -Patch5: wxPython-3.0.2.0-webview-optional.patch -# From Debian -Patch6: wxPython-3.0.2.0-suppress-version-mismatch-warning.patch -# https://github.com/wxWidgets/wxPython/pull/23 -Patch7: wxPython-3.0.2.0-fix-wxcairo.patch -# make sure to keep this updated as appropriate -BuildRequires: gcc-c++ -BuildRequires: wxGTK3-devel >= 3.0.0 -BuildRequires: python2-devel - -%global _description\ -wxPython is a GUI toolkit for the Python programming language. It allows\ -Python programmers to create programs with a robust, highly functional\ -graphical user interface, simply and easily. It is implemented as a Python\ -extension module (native code) that wraps the popular wxWindows cross\ -platform GUI library, which is written in C++. - -%description %_description - -%package -n python2-wxpython -Summary: %summary -%{?python_provide:%python_provide python2-wxpython} -# Remove before F30 -Provides: wxPython = %{version}-%{release} -Provides: wxPython%{?_isa} = %{version}-%{release} -Obsoletes: wxPython < %{version}-%{release} - -%description -n python2-wxpython %_description - -%package devel -Summary: Development files for wxPython add-on modules -Requires: python2-wxpython = %{version}-%{release} -Requires: wxGTK3-devel -BuildArch: noarch - -%description devel -This package includes C++ header files and SWIG files needed for developing -add-on modules for wxPython. It is NOT needed for development of most -programs which use the wxPython toolkit. - -%package docs -Summary: Documentation and samples for wxPython -Requires: python2-wxpython = %{version}-%{release} -BuildArch: noarch - -%description docs -Documentation, samples and demo application for wxPython. - -%if 0%{?fedora} > 25 -%package -n python2-wxpython-webview -Summary: WebView add-on for wxPython -Requires: python2-wxpython%{?_isa} = %{version}-%{release} -%{?python_provide:%python_provide python2-wxpython-webview} -# Remove before F30 -Provides: wxPython-webview = %{version}-%{release} -Provides: wxPython-webview%{?_isa} = %{version}-%{release} -Obsoletes: wxPython-webview < %{version}-%{release} - - -%description -n python2-wxpython-webview -This package contains the optional WebView (html2) module for wxPython. -%endif - - -%prep -%autosetup -p1 -n wxPython-src-%{version} - -# fix libdir otherwise additional wx libs cannot be found, fix default optimization flags -sed -i -e 's|/usr/lib|%{_libdir}|' -e 's|-O3|-O2|' wxPython/config.py - - -%build -cd wxPython -%py2_build - - -%install -cd wxPython -%py2_install - -# this is a kludge.... -%if "%{python2_sitelib}" != "%{python2_sitearch}" -mv $RPM_BUILD_ROOT%{python2_sitelib}/wx.pth $RPM_BUILD_ROOT%{python2_sitearch} -mv $RPM_BUILD_ROOT%{python2_sitelib}/wxversion.py* $RPM_BUILD_ROOT%{python2_sitearch} -%endif - - -%files -n python2-wxpython -%license wxPython/licence/* -%{_bindir}/* -%{python2_sitelib}/* -%if 0%{?fedora} > 25 -%exclude %{python2_sitearch}/wx-3.0-gtk3/wx/*html2.* -%endif -%{python2_sitearch}/* - -%files devel -%dir %{_includedir}/wx-3.0/wx/wxPython -%{_includedir}/wx-3.0/wx/wxPython/*.h -%dir %{_includedir}/wx-3.0/wx/wxPython/i_files -%{_includedir}/wx-3.0/wx/wxPython/i_files/*.i -%{_includedir}/wx-3.0/wx/wxPython/i_files/*.py* -%{_includedir}/wx-3.0/wx/wxPython/i_files/*.swg - -%files docs -%doc wxPython/docs wxPython/demo wxPython/samples - -%if 0%{?fedora} > 25 -%files -n python2-wxpython-webview -%{python2_sitearch}/wx-3.0-gtk3/wx/*html2.* -%endif - - -%changelog -* Sat Jul 27 2019 Fedora Release Engineering - 3.0.2.0-26 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild - -* Sun Feb 03 2019 Fedora Release Engineering - 3.0.2.0-25 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild - -* Sat Jul 14 2018 Fedora Release Engineering - 3.0.2.0-24 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild - -* Mon Feb 19 2018 Scott Talbert - 3.0.2.0-23 -- Add missing BR for gcc-c++ - -* Fri Feb 09 2018 Fedora Release Engineering - 3.0.2.0-22 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild - -* Wed Dec 20 2017 Scott Talbert - 3.0.2.0-21 -- Add patch to fix wxcairo for pycairo 1.11.1+ - -* Wed Sep 20 2017 Scott Talbert - 3.0.2.0-20 -- Make -devel noarch to resolve issue with conflicting archful pkgs (#1493233) - -* Sun Sep 03 2017 Scott Talbert - 3.0.2.0-19 -- Suppress warning about release version mismatch (since wxGTK3 3.0.3 update) - -* Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek - 3.0.2.0-18 -- Fix internal requires (case was wrong) - -* Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek - 3.0.2.0-17 -- Fix internal Requires and add Provides for the old name without %%_isa - -* Thu Aug 10 2017 Zbigniew Jędrzejewski-Szmek - 3.0.2.0-16 -- Main Python 2 binary package renamed to python2-wxpython, - and wxPython-webview renamed to python2-wxpython-webview. - See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3 - -* Thu Aug 03 2017 Fedora Release Engineering - 3.0.2.0-15 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild - -* Thu Jul 27 2017 Fedora Release Engineering - 3.0.2.0-14 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild - -* Sat Feb 11 2017 Fedora Release Engineering - 3.0.2.0-13 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild - -* Sat Oct 08 2016 Scott Talbert - 3.0.2.0-12 -- Add a -webview subpackage in F26+ - -* Tue Jul 19 2016 Fedora Release Engineering - 3.0.2.0-11 -- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages - -* Fri Feb 05 2016 Fedora Release Engineering - 3.0.2.0-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild - -* Wed Jan 06 2016 Scott Talbert - 3.0.2.0-9 -- Modernize python packaging and general cleanup - -* Sun Dec 27 2015 Scott Talbert - 3.0.2.0-8 -- Replace define macros with global ones - -* Tue Sep 29 2015 Scott Talbert - 3.0.2.0-7 -- Add patch to workaround TextCtrl height issue in ListCtrl mixin (#1264698) - -* Fri Jun 19 2015 Fedora Release Engineering - 3.0.2.0-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild - -* Mon May 04 2015 Jason L Tibbitts III - 3.0.2.0-5 -- Indicate that this package bundles scintilla 3.2.1. - -* Sat May 02 2015 Kalev Lember - 3.0.2.0-4 -- Rebuilt for GCC 5 C++11 ABI change - -* Thu Mar 19 2015 Devrim Gunduz - 3.0.2.0-3 -- Rebuild for new GCC to fix C++ ABI issues. - -* Sun Jan 04 2015 Scott Talbert - 3.0.2.0-2 -- Added patches for fixing crash in GetXWindow() and wx.lib.plot bugs - -* Tue Dec 23 2014 Scott Talbert - 3.0.2.0-1 -- New upstream release 3.0.2.0, built against wxGTK3 - -* Mon Aug 18 2014 Fedora Release Engineering - 2.8.12.0-8 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild - -* Sun Jun 08 2014 Fedora Release Engineering - 2.8.12.0-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild - -* Fri Mar 14 2014 Dan Horák - 2.8.12.0-6 -- fix FTBFS due -Werror=format-security -- modernize spec - -* Sun Aug 04 2013 Fedora Release Engineering - 2.8.12.0-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild - -* Fri Feb 15 2013 Fedora Release Engineering - 2.8.12.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild - -* Sun Jul 22 2012 Fedora Release Engineering - 2.8.12.0-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild - -* Sat Jan 14 2012 Fedora Release Engineering - 2.8.12.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild - -* Tue Apr 26 2011 Dan Horák - 2.8.12.0-1 -- update to 2.8.12.0 (#699207) - -* Mon Feb 07 2011 Fedora Release Engineering - 2.8.11.0-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild - -* Thu Jul 22 2010 David Malcolm - 2.8.11.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild - -* Mon Jul 12 2010 Dan Horák - 2.8.11.0-3 -- rebuilt against wxGTK-2.8.11-2 - -* Sun Jul 11 2010 Lubomir Rintel - 2.8.11.0-2 -- Include egg-info when build on recent RHEL - -* Mon May 31 2010 Dan Horák - 2.8.11.0-1 -- update to 2.8.11.0 (#593837, #595936, #597639) - -* Sun May 2 2010 Dan Horák - 2.8.10.1-3 -- rebuilt with wxGTK 2.8.11 - -* Wed Mar 17 2010 Dan Horák - 2.8.10.1-2 -- add missing module (#573961) - -* Sat Jan 16 2010 Dan Horák - 2.8.10.1-1 -- update to 2.8.10.1 -- backport to wxGTK 2.8.10 API -- cleaned up BRs - -* Thu Jan 7 2010 Hans de Goede - 2.8.9.2-4 -- Change python_foo macros to use %%global as the new rpm will break - using %%define here, see: - https://www.redhat.com/archives/fedora-devel-list/2010-January/msg00093.html - -* Mon Jul 27 2009 Fedora Release Engineering - 2.8.9.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild - -* Fri Apr 10 2009 Dan Horák - 2.8.9.2-2 -- add patch to fix compile failure for contrib/gizmos/_treelist.i - -* Fri Apr 10 2009 Dan Horák - 2.8.9.2-1 -- update to 2.8.9.2 -- create noarch docs subpackage - -* Thu Mar 5 2009 Lubomir Rintel - 2.8.9.1-4 -- Rebuilt for newer wxgtk package - -* Wed Feb 25 2009 Fedora Release Engineering - 2.8.9.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild - -* Sat Nov 29 2008 Ignacio Vazquez-Abrams - 2.8.9.1-2 -- Rebuild for Python 2.6 - -* Tue Sep 30 2008 Dan Horak - 2.8.9.1-1 -- update to 2.8.9.1 -- fix libdir for additional wx libraries (#306761) - -* Mon Sep 29 2008 Dan Horak - 2.8.9.0-1 -- update to 2.8.9.0 - -* Sat Sep 6 2008 Tom "spot" Callaway - 2.8.8.0-2 -- fix license tag - -* Thu Jul 31 2008 Matthew Miller - 2.8.8.0-1 -- update to 2.8.8.0 (bug #457408) -- a fix for bug #450073 is included in the upstream release, so - dropping that patch. - -* Thu Jun 12 2008 Hans de Goede - 2.8.7.1-5 -- Fix an attribute error when importing wxPython (compat) module - (redhat bugzilla 450073, 450074) - -* Sat Jun 7 2008 Matthew Miller - 2.8.7.1-4 -- gratuitously bump package release number to work around build system - glitch. again, but it will work this time. - -* Wed Jun 4 2008 Matthew Miller - 2.8.7.1-3 -- gratuitously bump package release number to work around build system - glitch - -* Thu Feb 21 2008 Matthew Miller - 2.8.7.1-2 -- include egg-info files for fedora 9 or greater - -* Wed Feb 20 2008 Matthew Miller - 2.8.7.1-1 -- update to 2.8.7.1 - -* Tue Feb 19 2008 Fedora Release Engineering - 2.8.4.0-3 -- Autorebuild for GCC 4.3 - -* Wed Aug 29 2007 Fedora Release Engineering - 2.8.4.0-2 -- Rebuild for selinux ppc32 issue. - -* Wed Jul 11 2007 Matthew Miller - 2.8.4.0-1 -- update to 2.8.4.0 -- obsolete compat-wxPythonGTK - -* Sun Apr 15 2007 Matthew Miller - 2.8.3.0-1 -- update to 2.8.3.0 - -* Fri Dec 15 2006 Matthew Miller - 2.8.0.1-1 -- update to 2.8.0.1 -- make buildrequire wxGTK of version-wxpythonsubrelease -- add wxaddons to filelist - -* Mon Dec 11 2006 Matthew Miller - 2.6.3.2-3 -- bump release for rebuild against python 2.5. - -* Mon Aug 28 2006 Matthew Miller - 2.6.3.2-2 -- bump release for FC6 rebuild - -* Thu Apr 13 2006 Matthew Miller - 2.6.3.2-1 -- version 2.6.3.2 -- move wxversion.py _into_ lib64. Apparently that's the right thing to do. :) -- upstream tarball no longer includes embedded.o (since I finally got around - to pointing that out to the developers instead of just kludging it away.) -- buildrequires to just libGLU-devel instead of mesa-libGL-devel - -* Fri Mar 31 2006 Matthew Miller - 2.6.3.0-4 -- grr. bump relnumber. - -* Fri Mar 31 2006 Matthew Miller - 2.6.3.0-3 -- oh yeah -- wxversion.py not lib64. - -* Fri Mar 31 2006 Matthew Miller - 2.6.3.0-2 -- buildrequires mesa-libGLU-devel - -* Thu Mar 30 2006 Matthew Miller - 2.6.3.0-1 -- update to 2.6.3.0 -- wxGTK and wxPython versions are inexorably linked; make BuildRequires - be exact, rather than >=. -- make devel subpackage as per comment #7 in bug #163440. - -* Thu Nov 24 2005 Matthew Miller - 2.6.1.0-1 -- update to 2.6.0.0 -- merge in changes from current extras 2.4.x package -- Happy Thanksgiving -- build animate extention again -- works now. - -* Thu Apr 28 2005 Matthew Miller - 2.6.0.0-bu45.1 -- get rid of accidental binaries in source tarball -- they generates - spurious dependencies and serve no purpose -- update to 2.6.0.0 and build for Velouria -- switch to Fedora Extras base spec file -- enable gtk2 and unicode and all the code stuff (as FE does) -- disable BUILD_ANIMATE extension from contrib -- doesn't build -- files are in a different location now -- adjust to that -- zap include files (needed only for building wxPython 3rd-party modules), - because I don't think this is likely to be very useful. Other option - would be to create a -devel package, but I think that'd be confusing. - -* Tue Feb 08 2005 Thorsten Leemhuis 0:2.4.2.4-4 -- remove included disutils - it is not multilib aware; this - fixes build on x86_64 - -* Tue Jan 06 2004 Panu Matilainen 0:2.4.2.4-0.fdr.3 -- rename package to wxPythonGTK2, provide wxPython (see bug 927) -- dont ship binaries in /usr/share - -* Thu Nov 20 2003 Panu Matilainen 0:2.4.2.4-0.fdr.2 -- add missing buildrequires: python-devel, wxGTK2-gl - -* Sun Nov 02 2003 Panu Matilainen 0:2.4.2.4-0.fdr.1 -- Initial RPM release. -~