diff --git a/.cvsignore b/.cvsignore index e69de29..56857ac 100644 --- a/.cvsignore +++ b/.cvsignore @@ -0,0 +1 @@ +Python-3.1.1.tar.bz2 diff --git a/Python-3.1.1-rpath.patch b/Python-3.1.1-rpath.patch new file mode 100644 index 0000000..1493af2 --- /dev/null +++ b/Python-3.1.1-rpath.patch @@ -0,0 +1,20 @@ +diff -up Python-3.1.1/Lib/distutils/unixccompiler.py.rpath Python-3.1.1/Lib/distutils/unixccompiler.py +--- Python-3.1.1/Lib/distutils/unixccompiler.py.rpath 2009-09-04 17:29:34.000000000 -0400 ++++ Python-3.1.1/Lib/distutils/unixccompiler.py 2009-09-04 17:49:54.000000000 -0400 +@@ -141,6 +141,16 @@ class UnixCCompiler(CCompiler): + if sys.platform == "cygwin": + exe_extension = ".exe" + ++ def _fix_lib_args(self, libraries, library_dirs, runtime_library_dirs): ++ """Remove standard library path from rpath""" ++ libraries, library_dirs, runtime_library_dirs = super( ++ self.__class__, self)._fix_lib_args(libraries, library_dirs, ++ runtime_library_dirs) ++ libdir = sysconfig.get_config_var('LIBDIR') ++ if runtime_library_dirs and (libdir in runtime_library_dirs): ++ runtime_library_dirs.remove(libdir) ++ return libraries, library_dirs, runtime_library_dirs ++ + def preprocess(self, source, output_file=None, macros=None, + include_dirs=None, extra_preargs=None, extra_postargs=None): + fixed_args = self._fix_compile_args(None, macros, include_dirs) diff --git a/find-provides-without-python-sonames.sh b/find-provides-without-python-sonames.sh new file mode 100755 index 0000000..406a675 --- /dev/null +++ b/find-provides-without-python-sonames.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +# The standard /usr/lib/rpm/find-provides script +# adds provides lines for all SONAME directives in all shared libraries, +# even if those libraries are not in the LD_LIBRARY_PATH + +# This leads to the rpm having a redundant Provides "foo.so" for all of the +# various foo.so Python c modules + +# So we strip out all /usr/lib/python lines first, before running them through +# the standard script: +grep -v "/usr/lib/python" | /usr/lib/rpm/find-provides + +exit 0 \ No newline at end of file diff --git a/import.log b/import.log new file mode 100644 index 0000000..1b187cb --- /dev/null +++ b/import.log @@ -0,0 +1 @@ +python3-3_1_1-13_fc12:HEAD:python3-3.1.1-13.fc12.src.rpm:1263417721 diff --git a/macros.python3 b/macros.python3 new file mode 100644 index 0000000..11636da --- /dev/null +++ b/macros.python3 @@ -0,0 +1,3 @@ +%__python3 /usr/bin/python3 +%python3_sitelib %(%{__python3} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") +%python3_sitearch %(%{__python3} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))") diff --git a/python-3.1.1-apply-our-changes-to-expected-shebang-for-test_imp.patch b/python-3.1.1-apply-our-changes-to-expected-shebang-for-test_imp.patch new file mode 100644 index 0000000..92c3e1f --- /dev/null +++ b/python-3.1.1-apply-our-changes-to-expected-shebang-for-test_imp.patch @@ -0,0 +1,11 @@ +--- Python-3.1.1/Lib/test/test_imp.py.apply-our-changes-to-expected-shebang 2009-10-27 18:05:53.539540149 -0400 ++++ Python-3.1.1/Lib/test/test_imp.py 2009-10-27 18:06:12.138538965 -0400 +@@ -52,7 +52,7 @@ class ImportTests(unittest.TestCase): + self.assertNotEqual(fp, None) + self.assertEqual(fp.encoding, "iso-8859-1") + self.assertEqual(fp.tell(), 0) +- self.assertEqual(fp.readline(), '#!/usr/bin/env python\n') ++ self.assertEqual(fp.readline(), '#!/usr/bin/python3.1\n') + fp.close() + + fp, filename, info = imp.find_module("tokenize") diff --git a/python-3.1.1-config.patch b/python-3.1.1-config.patch new file mode 100644 index 0000000..f65027f --- /dev/null +++ b/python-3.1.1-config.patch @@ -0,0 +1,245 @@ +--- Python-3.1.1/Modules/Setup.dist.config 2009-06-04 03:30:30.000000000 -0600 ++++ Python-3.1.1/Modules/Setup.dist 2009-09-25 12:14:38.000000000 -0600 +@@ -141,7 +141,7 @@ + # modules are to be built as shared libraries (see above for more + # detail; also note that *static* reverses this effect): + +-#*shared* ++*shared* + + # GNU readline. Unlike previous Python incarnations, GNU readline is + # now incorporated in an optional module, configured in the Setup file +@@ -151,71 +151,71 @@ + # it, depending on your system -- see the GNU readline instructions. + # It's okay for this to be a shared library, too. + +-#readline readline.c -lreadline -ltermcap ++readline readline.c -lreadline -ltermcap + + + # Modules that should always be present (non UNIX dependent): + +-#array arraymodule.c # array objects +-#cmath cmathmodule.c # -lm # complex math library functions +-#math mathmodule.c # -lm # math library functions, e.g. sin() +-#_struct _struct.c # binary structure packing/unpacking +-#time timemodule.c # -lm # time operations and variables +-#operator operator.c # operator.add() and similar goodies +-#_weakref _weakref.c # basic weak reference support +-#_testcapi _testcapimodule.c # Python C API test module +-#_random _randommodule.c # Random number generator +-#_collections _collectionsmodule.c # Container types +-#itertools itertoolsmodule.c # Functions creating iterators for efficient looping +-#atexit atexitmodule.c # Register functions to be run at interpreter-shutdown +-#_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c # elementtree accelerator +-#_pickle _pickle.c # pickle accelerator +-#datetime datetimemodule.c # date/time type +-#_bisect _bisectmodule.c # Bisection algorithms +-#_heapq _heapqmodule.c # Heap queue algorithm ++array arraymodule.c # array objects ++cmath cmathmodule.c # -lm # complex math library functions ++math mathmodule.c # -lm # math library functions, e.g. sin() ++_struct _struct.c # binary structure packing/unpacking ++time timemodule.c # -lm # time operations and variables ++operator operator.c # operator.add() and similar goodies ++_weakref _weakref.c # basic weak reference support ++_testcapi _testcapimodule.c # Python C API test module ++_random _randommodule.c # Random number generator ++_collections _collectionsmodule.c # Container types ++itertools itertoolsmodule.c # Functions creating iterators for efficient looping ++atexit atexitmodule.c # Register functions to be run at interpreter-shutdown ++_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c # elementtree accelerator ++_pickle _pickle.c # pickle accelerator ++#datetime datetimemodule.c # date/time type ++_bisect _bisectmodule.c # Bisection algorithms ++_heapq _heapqmodule.c # Heap queue algorithm + +-#unicodedata unicodedata.c # static Unicode character database ++unicodedata unicodedata.c # static Unicode character database + + + # Modules with some UNIX dependencies -- on by default: + # (If you have a really backward UNIX, select and socket may not be + # supported...) + +-#fcntl fcntlmodule.c # fcntl(2) and ioctl(2) +-#spwd spwdmodule.c # spwd(3) +-#grp grpmodule.c # grp(3) +-#select selectmodule.c # select(2); not on ancient System V ++fcntl fcntlmodule.c # fcntl(2) and ioctl(2) ++spwd spwdmodule.c # spwd(3) ++grp grpmodule.c # grp(3) ++select selectmodule.c # select(2); not on ancient System V + + # Memory-mapped files (also works on Win32). +-#mmap mmapmodule.c ++mmap mmapmodule.c + + # CSV file helper +-#_csv _csv.c ++_csv _csv.c + + # Socket module helper for socket(2) +-#_socket socketmodule.c ++_socket socketmodule.c + + # Socket module helper for SSL support; you must comment out the other + # socket line above, and possibly edit the SSL variable: + #SSL=/usr/local/ssl +-#_ssl _ssl.c \ +-# -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ +-# -L$(SSL)/lib -lssl -lcrypto ++_ssl _ssl.c \ ++ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ ++ -L$(SSL)/lib -lssl -lcrypto + + # The crypt module is now disabled by default because it breaks builds + # on many systems (where -lcrypt is needed), e.g. Linux (I believe). + # + # First, look at Setup.config; configure may have set this for you. + +-#crypt cryptmodule.c # -lcrypt # crypt(3); needs -lcrypt on some systems ++crypt cryptmodule.c -lcrypt # crypt(3); needs -lcrypt on some systems + + + # Some more UNIX dependent modules -- off by default, since these + # are not supported by all UNIX systems: + +-#nis nismodule.c -lnsl # Sun yellow pages -- not everywhere +-#termios termios.c # Steen Lumholt's termios module +-#resource resource.c # Jeremy Hylton's rlimit interface ++nis nismodule.c -lnsl # Sun yellow pages -- not everywhere ++termios termios.c # Steen Lumholt's termios module ++resource resource.c # Jeremy Hylton's rlimit interface + + + # Multimedia modules -- off by default. +@@ -223,7 +223,7 @@ + # #993173 says audioop works on 64-bit platforms, though. + # These represent audio samples or images as strings: + +-#audioop audioop.c # Operations on audio samples ++audioop audioop.c # Operations on audio samples + + + # Note that the _md5 and _sha modules are normally only built if the +@@ -238,9 +238,9 @@ + + # The _sha module implements the SHA checksum algorithms. + # (NIST's Secure Hash Algorithms.) +-#_sha shamodule.c +-#_sha256 sha256module.c +-#_sha512 sha512module.c ++_sha1 sha1module.c ++_sha256 sha256module.c ++_sha512 sha512module.c + + + # The _tkinter module. +@@ -255,7 +255,7 @@ + # every system. + + # *** Always uncomment this (leave the leading underscore in!): +-# _tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \ ++_tkinter _tkinter.c tkappinit.c -DWITH_APPINIT \ + # *** Uncomment and edit to reflect where your Tcl/Tk libraries are: + # -L/usr/local/lib \ + # *** Uncomment and edit to reflect where your Tcl/Tk headers are: +@@ -265,7 +265,7 @@ + # *** Or uncomment this for Solaris: + # -I/usr/openwin/include \ + # *** Uncomment and edit for Tix extension only: +-# -DWITH_TIX -ltix8.1.8.2 \ ++ -DWITH_TIX -ltix \ + # *** Uncomment and edit for BLT extension only: + # -DWITH_BLT -I/usr/local/blt/blt8.0-unoff/include -lBLT8.0 \ + # *** Uncomment and edit for PIL (TkImaging) extension only: +@@ -274,7 +274,7 @@ + # *** Uncomment and edit for TOGL extension only: + # -DWITH_TOGL togl.c \ + # *** Uncomment and edit to reflect your Tcl/Tk versions: +-# -ltk8.2 -ltcl8.2 \ ++ -ltk -ltcl \ + # *** Uncomment and edit to reflect where your X11 libraries are: + # -L/usr/X11R6/lib \ + # *** Or uncomment this for Solaris: +@@ -284,10 +284,10 @@ + # *** Uncomment for AIX: + # -lld \ + # *** Always uncomment this; X11 libraries to link with: +-# -lX11 ++ -lX11 + + # Lance Ellinghaus's syslog module +-#syslog syslogmodule.c # syslog daemon interface ++syslog syslogmodule.c # syslog daemon interface + + + # Curses support, requring the System V version of curses, often +@@ -296,9 +296,9 @@ + # + # First, look at Setup.config; configure may have set this for you. + +-#_curses _cursesmodule.c -lcurses -ltermcap ++_curses _cursesmodule.c -lcurses -ltermcap + # Wrapper for the panel library that's part of ncurses and SYSV curses. +-#_curses_panel _curses_panel.c -lpanel -lncurses ++_curses_panel _curses_panel.c -lpanel -lncurses + + + # Modules that provide persistent dictionary-like semantics. You will +@@ -321,14 +321,14 @@ + # + # First, look at Setup.config; configure may have set this for you. + +-#_gdbm _gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm ++_gdbm _gdbmmodule.c -I/usr/local/include -L/usr/local/lib -lgdbm + + + # Helper module for various ascii-encoders +-#binascii binascii.c ++binascii binascii.c + + # Fred Drake's interface to the Python parser +-#parser parsermodule.c ++parser parsermodule.c + + + # Lee Busby's SIGFPE modules. +@@ -351,7 +351,7 @@ + # Andrew Kuchling's zlib module. + # This require zlib 1.1.3 (or later). + # See http://www.gzip.org/zlib/ +-#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz ++zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz + + # Interface to the Expat XML parser + # +@@ -364,19 +364,19 @@ + # + # More information on Expat can be found at www.libexpat.org. + # +-#pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI ++pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI + + # Hye-Shik Chang's CJKCodecs + + # multibytecodec is required for all the other CJK codec modules +-#_multibytecodec cjkcodecs/multibytecodec.c ++_multibytecodec cjkcodecs/multibytecodec.c + +-#_codecs_cn cjkcodecs/_codecs_cn.c +-#_codecs_hk cjkcodecs/_codecs_hk.c +-#_codecs_iso2022 cjkcodecs/_codecs_iso2022.c +-#_codecs_jp cjkcodecs/_codecs_jp.c +-#_codecs_kr cjkcodecs/_codecs_kr.c +-#_codecs_tw cjkcodecs/_codecs_tw.c ++_codecs_cn cjkcodecs/_codecs_cn.c ++_codecs_hk cjkcodecs/_codecs_hk.c ++_codecs_iso2022 cjkcodecs/_codecs_iso2022.c ++_codecs_jp cjkcodecs/_codecs_jp.c ++_codecs_kr cjkcodecs/_codecs_kr.c ++_codecs_tw cjkcodecs/_codecs_tw.c + + # Example -- included for reference only: + # xx xxmodule.c diff --git a/python-3.1.1-importlib-fix-handling-of-readonly-pyc-files.patch b/python-3.1.1-importlib-fix-handling-of-readonly-pyc-files.patch new file mode 100644 index 0000000..1fb201b --- /dev/null +++ b/python-3.1.1-importlib-fix-handling-of-readonly-pyc-files.patch @@ -0,0 +1,12 @@ +--- Lib/importlib/_bootstrap.py.fix-handling-of-readonly-pyc-files 2009-10-22 15:24:57.575015046 -0400 ++++ Lib/importlib/_bootstrap.py 2009-10-22 15:25:24.024016069 -0400 +@@ -522,8 +522,8 @@ class _PyPycFileLoader(PyPycLoader, _PyF + bytecode_path = self.bytecode_path(name) + if not bytecode_path: + bytecode_path = self._base_path + _suffix_list(imp.PY_COMPILED)[0] +- file = _io.FileIO(bytecode_path, 'w') # Assuming bytes. + try: ++ file = _io.FileIO(bytecode_path, 'w') # Assuming bytes. + with _closing(file) as bytecode_file: + bytecode_file.write(data) + return True diff --git a/python-3.1.1-install-tkinter-tests.patch b/python-3.1.1-install-tkinter-tests.patch new file mode 100644 index 0000000..3939678 --- /dev/null +++ b/python-3.1.1-install-tkinter-tests.patch @@ -0,0 +1,10 @@ +--- Python-3.1.1/Makefile.pre.in.install-tkinter-tests 2009-10-27 20:00:09.814539776 -0400 ++++ Python-3.1.1/Makefile.pre.in 2009-10-27 20:01:43.460549947 -0400 +@@ -835,6 +835,7 @@ EXTRAPLATDIR= @EXTRAPLATDIR@ + MACHDEPS= $(PLATDIR) $(EXTRAPLATDIR) + XMLLIBSUBDIRS= xml xml/dom xml/etree xml/parsers xml/sax + LIBSUBDIRS= tkinter site-packages test test/output test/data \ ++ tkinter/test tkinter/test/test_ttk tkinter/test/test_tkinter \ + test/decimaltestdata \ + encodings \ + email email/mime email/test email/test/data \ diff --git a/python-3.1.1-lib64.patch b/python-3.1.1-lib64.patch new file mode 100644 index 0000000..3053a92 --- /dev/null +++ b/python-3.1.1-lib64.patch @@ -0,0 +1,164 @@ +diff -ur Python-3.1.1.orig/Lib/distutils/command/install.py Python-3.1.1/Lib/distutils/command/install.py +--- Python-3.1.1.orig/Lib/distutils/command/install.py 2009-09-24 15:28:57.000000000 -0600 ++++ Python-3.1.1/Lib/distutils/command/install.py 2009-09-24 15:34:18.000000000 -0600 +@@ -47,14 +47,14 @@ + INSTALL_SCHEMES = { + 'unix_prefix': { + 'purelib': '$base/lib/python$py_version_short/site-packages', +- 'platlib': '$platbase/lib/python$py_version_short/site-packages', ++ 'platlib': '$platbase/lib64/python$py_version_short/site-packages', + 'headers': '$base/include/python$py_version_short/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', + }, + 'unix_home': { + 'purelib': '$base/lib/python', +- 'platlib': '$base/lib/python', ++ 'platlib': '$base/lib64/python', + 'headers': '$base/include/python/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', +diff -ur Python-3.1.1.orig/Lib/distutils/sysconfig.py Python-3.1.1/Lib/distutils/sysconfig.py +--- Python-3.1.1.orig/Lib/distutils/sysconfig.py 2009-09-24 15:29:00.000000000 -0600 ++++ Python-3.1.1/Lib/distutils/sysconfig.py 2009-09-24 15:34:18.000000000 -0600 +@@ -117,8 +117,12 @@ + prefix = plat_specific and EXEC_PREFIX or PREFIX + + if os.name == "posix": ++ if plat_specific or standard_lib: ++ lib = "lib64" ++ else: ++ lib = "lib" + libpython = os.path.join(prefix, +- "lib", "python" + get_python_version()) ++ lib, "python" + get_python_version()) + if standard_lib: + return libpython + else: +diff -ur Python-3.1.1.orig/Lib/site.py Python-3.1.1/Lib/site.py +--- Python-3.1.1.orig/Lib/site.py 2009-09-24 15:28:56.000000000 -0600 ++++ Python-3.1.1/Lib/site.py 2009-09-24 15:34:18.000000000 -0600 +@@ -258,12 +258,16 @@ + if sys.platform in ('os2emx', 'riscos'): + sitedirs.append(os.path.join(prefix, "Lib", "site-packages")) + elif os.sep == '/': ++ sitedirs.append(os.path.join(prefix, "lib64", ++ "python" + sys.version[:3], ++ "site-packages")) + sitedirs.append(os.path.join(prefix, "lib", + "python" + sys.version[:3], + "site-packages")) + sitedirs.append(os.path.join(prefix, "lib", "site-python")) + else: + sitedirs.append(prefix) ++ sitedirs.append(os.path.join(prefix, "lib64", "site-packages")) + sitedirs.append(os.path.join(prefix, "lib", "site-packages")) + + if sys.platform == "darwin": +diff -ur Python-3.1.1.orig/Makefile.pre.in Python-3.1.1/Makefile.pre.in +--- Python-3.1.1.orig/Makefile.pre.in 2009-09-24 15:26:58.000000000 -0600 ++++ Python-3.1.1/Makefile.pre.in 2009-09-24 15:34:18.000000000 -0600 +@@ -90,11 +90,11 @@ + + # Expanded directories + BINDIR= $(exec_prefix)/bin +-LIBDIR= $(exec_prefix)/lib ++LIBDIR= $(exec_prefix)/lib64 + MANDIR= @mandir@ + INCLUDEDIR= @includedir@ + CONFINCLUDEDIR= $(exec_prefix)/include +-SCRIPTDIR= $(prefix)/lib ++SCRIPTDIR= $(prefix)/lib64 + + # Detailed destination directories + BINLIBDEST= $(LIBDIR)/python$(VERSION) +diff -ur Python-3.1.1.orig/Modules/getpath.c Python-3.1.1/Modules/getpath.c +--- Python-3.1.1.orig/Modules/getpath.c 2009-09-24 15:27:15.000000000 -0600 ++++ Python-3.1.1/Modules/getpath.c 2009-09-24 15:36:58.000000000 -0600 +@@ -117,8 +117,8 @@ + #endif + + #ifndef PYTHONPATH +-#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ +- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ++#define PYTHONPATH PREFIX "/lib64/python" VERSION ":" \ ++ EXEC_PREFIX "/lib64/python" VERSION "/lib-dynload" + #endif + + #ifndef LANDMARK +@@ -129,7 +129,7 @@ + static wchar_t exec_prefix[MAXPATHLEN+1]; + static wchar_t progpath[MAXPATHLEN+1]; + static wchar_t *module_search_path = NULL; +-static wchar_t lib_python[] = L"lib/python" VERSION; ++static wchar_t lib_python[] = L"lib64/python" VERSION; + + /* In principle, this should use HAVE__WSTAT, and _wstat + should be detected by autoconf. However, no current +@@ -603,7 +603,7 @@ + } + else + wcsncpy(zip_path, L"" PREFIX, MAXPATHLEN); +- joinpath(zip_path, L"lib/python00.zip"); ++ joinpath(zip_path, L"lib64/python00.zip"); + bufsz = wcslen(zip_path); /* Replace "00" with version */ + zip_path[bufsz - 6] = VERSION[0]; + zip_path[bufsz - 5] = VERSION[2]; +@@ -613,7 +613,7 @@ + fprintf(stderr, + "Could not find platform dependent libraries \n"); + wcsncpy(exec_prefix, L"" EXEC_PREFIX, MAXPATHLEN); +- joinpath(exec_prefix, L"lib/lib-dynload"); ++ joinpath(exec_prefix, L"lib64/lib-dynload"); + } + /* If we found EXEC_PREFIX do *not* reduce it! (Yet.) */ + +diff -ur Python-3.1.1.orig/Modules/Setup.dist Python-3.1.1/Modules/Setup.dist +--- Python-3.1.1.orig/Modules/Setup.dist 2009-09-24 15:27:30.000000000 -0600 ++++ Python-3.1.1/Modules/Setup.dist 2009-09-24 15:45:49.000000000 -0600 +@@ -351,7 +351,7 @@ + # Andrew Kuchling's zlib module. + # This require zlib 1.1.3 (or later). + # See http://www.gzip.org/zlib/ +-zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz ++zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib64 -lz + + # Interface to the Expat XML parser + # +diff -ur Python-3.1.1.orig/setup.py Python-3.1.1/setup.py +--- Python-3.1.1.orig/setup.py 2009-09-24 15:26:58.000000000 -0600 ++++ Python-3.1.1/setup.py 2009-09-24 15:34:18.000000000 -0600 +@@ -295,7 +295,7 @@ + + def detect_modules(self): + # Ensure that /usr/local is always used +- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') ++ add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib64') + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') + + # Add paths specified in the environment variables LDFLAGS and +@@ -522,11 +522,11 @@ + elif self.compiler.find_library_file(lib_dirs, 'curses'): + readline_libs.append('curses') + elif self.compiler.find_library_file(lib_dirs + +- ['/usr/lib/termcap'], ++ ['/usr/lib64/termcap'], + 'termcap'): + readline_libs.append('termcap') + exts.append( Extension('readline', ['readline.c'], +- library_dirs=['/usr/lib/termcap'], ++ library_dirs=['/usr/lib64/termcap'], + extra_link_args=readline_extra_link_args, + libraries=readline_libs) ) + else: +@@ -563,8 +563,8 @@ + if krb5_h: + ssl_incs += krb5_h + ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs, +- ['/usr/local/ssl/lib', +- '/usr/contrib/ssl/lib/' ++ ['/usr/local/ssl/lib64', ++ '/usr/contrib/ssl/lib64/' + ] ) + + if (ssl_incs is not None and diff --git a/python-3.1.1-pathfix.patch b/python-3.1.1-pathfix.patch new file mode 100644 index 0000000..f45409a --- /dev/null +++ b/python-3.1.1-pathfix.patch @@ -0,0 +1,61 @@ +--- Python-3.1.1.orig/Tools/scripts/pathfix.py 2009-09-24 15:27:04.000000000 -0600 ++++ Python-3.1.1/Tools/scripts/pathfix.py 2009-09-25 14:05:04.000000000 -0600 +@@ -1,4 +1,4 @@ +-#! /usr/bin/env python ++#!/usr/bin/env python3.1 + + # Change the #! line occurring in Python scripts. The new interpreter + # pathname must be given with a -i option. +@@ -43,8 +43,8 @@ + sys.exit(2) + for o, a in opts: + if o == '-i': +- new_interpreter = a +- if not new_interpreter or new_interpreter[0] != '/' or not args: ++ new_interpreter = a.encode() ++ if not new_interpreter or new_interpreter[0] != b'/'[0] or not args: + err('-i option or file-or-directory missing\n') + err(usage) + sys.exit(2) +@@ -61,7 +61,7 @@ + + ispythonprog = re.compile('^[a-zA-Z0-9_]+\.py$') + def ispython(name): +- return ispythonprog.match(name) >= 0 ++ return bool(ispythonprog.match(name)) + + def recursedown(dirname): + dbg('recursedown(%r)\n' % (dirname,)) +@@ -88,7 +88,7 @@ + def fix(filename): + ## dbg('fix(%r)\n' % (filename,)) + try: +- f = open(filename, 'r') ++ f = open(filename, 'rb') + except IOError as msg: + err('%s: cannot open: %r\n' % (filename, msg)) + return 1 +@@ -101,7 +101,7 @@ + head, tail = os.path.split(filename) + tempname = os.path.join(head, '@' + tail) + try: +- g = open(tempname, 'w') ++ g = open(tempname, 'wb') + except IOError as msg: + f.close() + err('%s: cannot create: %r\n' % (tempname, msg)) +@@ -139,11 +139,11 @@ + return 0 + + def fixline(line): +- if not line.startswith('#!'): ++ if not line.startswith(b'#!'): + return line +- if "python" not in line: ++ if b"python" not in line: + return line +- return '#! %s\n' % new_interpreter ++ return b'#!' + new_interpreter + b'\n' + + if __name__ == '__main__': + main() diff --git a/python-3.1.1-remove-mimeaudio-tests.patch b/python-3.1.1-remove-mimeaudio-tests.patch new file mode 100644 index 0000000..487ad3e --- /dev/null +++ b/python-3.1.1-remove-mimeaudio-tests.patch @@ -0,0 +1,55 @@ +--- Python-3.1.1/Lib/email/test/test_email.py.remove_mimeaudio_tests 2009-10-27 14:31:09.483539561 -0400 ++++ Python-3.1.1/Lib/email/test/test_email.py 2009-10-27 14:31:27.663548053 -0400 +@@ -926,52 +926,6 @@ Blah blah blah + + + +-# Test the basic MIMEAudio class +-class TestMIMEAudio(unittest.TestCase): +- def setUp(self): +- # Make sure we pick up the audiotest.au that lives in email/test/data. +- # In Python, there's an audiotest.au living in Lib/test but that isn't +- # included in some binary distros that don't include the test +- # package. The trailing empty string on the .join() is significant +- # since findfile() will do a dirname(). +- datadir = os.path.join(os.path.dirname(landmark), 'data', '') +- with open(findfile('audiotest.au', datadir), 'rb') as fp: +- self._audiodata = fp.read() +- self._au = MIMEAudio(self._audiodata) +- +- def test_guess_minor_type(self): +- self.assertEqual(self._au.get_content_type(), 'audio/basic') +- +- def test_encoding(self): +- payload = self._au.get_payload() +- self.assertEqual(base64.decodebytes(payload), self._audiodata) +- +- def test_checkSetMinor(self): +- au = MIMEAudio(self._audiodata, 'fish') +- self.assertEqual(au.get_content_type(), 'audio/fish') +- +- def test_add_header(self): +- eq = self.assertEqual +- unless = self.assertTrue +- self._au.add_header('Content-Disposition', 'attachment', +- filename='audiotest.au') +- eq(self._au['content-disposition'], +- 'attachment; filename="audiotest.au"') +- eq(self._au.get_params(header='content-disposition'), +- [('attachment', ''), ('filename', 'audiotest.au')]) +- eq(self._au.get_param('filename', header='content-disposition'), +- 'audiotest.au') +- missing = [] +- eq(self._au.get_param('attachment', header='content-disposition'), '') +- unless(self._au.get_param('foo', failobj=missing, +- header='content-disposition') is missing) +- # Try some missing stuff +- unless(self._au.get_param('foobar', missing) is missing) +- unless(self._au.get_param('attachment', missing, +- header='foobar') is missing) +- +- +- + # Test the basic MIMEImage class + class TestMIMEImage(unittest.TestCase): + def setUp(self): diff --git a/python3.spec b/python3.spec new file mode 100644 index 0000000..3cfea50 --- /dev/null +++ b/python3.spec @@ -0,0 +1,568 @@ +%global pybasever 3.1 +%global pylibdir %{_libdir}/python%{pybasever} + +# We want to byte-compile the .py files within the packages using the new +# python3 binary. +# +# Unfortunately, rpmbuild's infrastructure requires us to jump through some +# hoops to avoid byte-compiling with the system python 2 version: +# /usr/lib/rpm/redhat/macros sets up build policy that (amongst other things) +# defines __os_install_post. In particular, "brp-python-bytecompile" is +# invoked without an argument thus using the wrong version of python +# (/usr/bin/python, rather than the freshly built python), thus leading to +# numerous syntax errors, and incorrect magic numbers in the .pyc files. We +# thus override __os_install_post to avoid invoking this script: +%global __os_install_post /usr/lib/rpm/redhat/brp-compress \ + %{!?__debug_package:/usr/lib/rpm/redhat/brp-strip %{__strip}} \ + /usr/lib/rpm/redhat/brp-strip-static-archive %{__strip} \ + /usr/lib/rpm/redhat/brp-strip-comment-note %{__strip} %{__objdump} \ + /usr/lib/rpm/redhat/brp-python-hardlink +# to remove the invocation of brp-python-bytecompile, whilst keeping the +# invocation of brp-python-hardlink (since this should still work for python3 +# pyc/pyo files) + +Summary: Version 3 of the Python programming language aka Python 3000 +Name: python3 +Version: %{pybasever}.1 +Release: 13%{?dist} +License: Python +Group: Development/Languages +Source: http://python.org/ftp/python/%{version}/Python-%{version}.tar.bz2 + +# Avoid having various bogus auto-generated Provides lines for the various +# python c modules' SONAMEs: +Source1: find-provides-without-python-sonames.sh +%global _use_internal_dependency_generator 0 +%global __find_provides %{SOURCE1} + +# Supply various useful macros for building python 3 modules: +# __python3, python3_sitelib, python3_sitearch +Source2: macros.python3 + +Patch0: python-3.1.1-config.patch + + +# Fixup distutils/unixccompiler.py to remove standard library path from rpath: +# Was Patch0 in ivazquez' python3000 specfile: +Patch1: Python-3.1.1-rpath.patch + +# Fixup importlib/_bootstrap.py so that it correctly handles being unable to +# open .pyc files for writing +# Sent upstream as http://bugs.python.org/issue7187 +Patch2: python-3.1.1-importlib-fix-handling-of-readonly-pyc-files.patch + +# The four TestMIMEAudio tests fail due to "audiotest.au" not being packaged. +# It's simplest to remove them: +Patch3: python-3.1.1-remove-mimeaudio-tests.patch + +# ImportTests.test_issue1267 in test_imp.py reads pydoc.py's shebang line and +# checks that it read it correctly. +# +# Since we modify the shebang lines in our packaging, we also need to modify +# the expected value in this test: +Patch4: python-3.1.1-apply-our-changes-to-expected-shebang-for-test_imp.patch + +# test_tk test_ttk_guionly and test_ttk_textonly all rely on tkinter/test, but +# upstream's Makefile.pre.in doesn't install that subdirectory; patch it so that +# it does: +Patch5: python-3.1.1-install-tkinter-tests.patch +# (The resulting test support code is in the tkinter subpackage, but +# this is not a major problem) + +Patch102: python-3.1.1-lib64.patch + +# http://bugs.python.org/issue6999 -- fixed in r75062 +Patch200: python-3.1.1-pathfix.patch + + +BuildRoot: %{_tmppath}/%{name}-%{version}-root +BuildRequires: readline-devel, openssl-devel, gmp-devel +BuildRequires: ncurses-devel, gdbm-devel, zlib-devel, expat-devel +BuildRequires: libGL-devel gcc-c++ libX11-devel glibc-devel +BuildRequires: bzip2 tar /usr/bin/find pkgconfig tcl-devel tk-devel +BuildRequires: tix-devel bzip2-devel sqlite-devel +BuildRequires: autoconf +BuildRequires: db4-devel >= 4.7 +BuildRequires: libffi-devel + +URL: http://www.python.org/ + +# See notes in bug 532118: +Provides: python(abi) = %{pybasever} + +%description +Python 3 is a new version of the language that is incompatible with the 2.x +line of releases. The language is mostly the same, but many details, especially +how built-in objects like dictionaries and strings work, have changed +considerably, and a lot of deprecated features have finally been removed. + +%package libs +Summary: Python 3 runtime libraries +Group: Development/Libraries +#Requires: %{name} = %{version}-%{release} + +%description libs +This package contains files used to embed Python 3 into applications. + +%package devel +Summary: Libraries and header files needed for Python 3 development +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} +Conflicts: %{name} < %{version}-%{release} + +%description devel +This package contains libraries and header files used to build applications +with and native libraries for Python 3 + +%package tools +Summary: A collection of tools included with Python 3 +Group: Development/Tools +Requires: %{name} = %{version}-%{release} +Requires: %{name}-tkinter = %{version}-%{release} + +%description tools +This package contains several tools included with Python 3 + +%package tkinter +Summary: A GUI toolkit for Python 3 +Group: Development/Languages +BuildRequires: tcl, tk +Requires: %{name} = %{version}-%{release} + +%description tkinter +The Tkinter (Tk interface) program is an graphical user interface for +the Python scripting language. + +%package test +Summary: The test modules from the main python 3 package +Group: Development/Languages +Requires: %{name} = %{version}-%{release} +Requires: %{name}-tools = %{version}-%{release} + +%description test +The test modules from the main %{name} package. +These are in a separate package to save space, as they are almost never used +in production. + +You might want to install the python3-test package if you're developing +python 3 code that uses more than just unittest and/or test_support.py. + +%prep +%setup -q -n Python-%{version} +chmod +x %{SOURCE1} +%patch0 -p1 -b .config +%patch1 -p1 -b .rpath +%patch2 -p0 -b .fix-handling-of-readonly-pyc-files +%patch3 -p1 -b .remove-mimeaudio-tests +%patch4 -p1 -b .apply-our-changes-to-expected-shebang +%patch5 -p1 -b .install-tkinter-tests + +%if "%{_lib}" == "lib64" +%patch102 -p1 -b .lib64 +%endif + +%patch200 -p1 -b .pathfix + + +%build +export CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -fPIC" +export CXXFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -fPIC" +export CPPFLAGS="`pkg-config --cflags-only-I libffi`" +export OPT="$RPM_OPT_FLAGS -D_GNU_SOURCE -fPIC" +export LINKCC="gcc" +export CFLAGS="$CFLAGS `pkg-config --cflags openssl`" +export LDFLAGS="$LDFLAGS `pkg-config --libs-only-L openssl`" + +autoconf +%configure --enable-ipv6 --with-wide-unicode --enable-shared --with-system-ffi + +make OPT="$CFLAGS" %{?_smp_mflags} + + +%install +rm -fr $RPM_BUILD_ROOT +mkdir -p $RPM_BUILD_ROOT%{_prefix} $RPM_BUILD_ROOT%{_mandir} + +make install DESTDIR=$RPM_BUILD_ROOT + +mkdir -p ${RPM_BUILD_ROOT}%{pylibdir}/site-packages + +mv ${RPM_BUILD_ROOT}%{_bindir}/2to3 ${RPM_BUILD_ROOT}%{_bindir}/2to3-3 + +# Development tools +install -m755 -d ${RPM_BUILD_ROOT}%{pylibdir}/Tools +install Tools/README ${RPM_BUILD_ROOT}%{pylibdir}/Tools/ +cp -ar Tools/freeze ${RPM_BUILD_ROOT}%{pylibdir}/Tools/ +cp -ar Tools/i18n ${RPM_BUILD_ROOT}%{pylibdir}/Tools/ +cp -ar Tools/modulator ${RPM_BUILD_ROOT}%{pylibdir}/Tools/ +cp -ar Tools/pynche ${RPM_BUILD_ROOT}%{pylibdir}/Tools/ +cp -ar Tools/scripts ${RPM_BUILD_ROOT}%{pylibdir}/Tools/ + +# Documentation tools +install -m755 -d $RPM_BUILD_ROOT%{pylibdir}/Doc +cp -ar Doc/tools $RPM_BUILD_ROOT%{pylibdir}/Doc/ + +# Demo scripts +cp -ar Demo $RPM_BUILD_ROOT%{pylibdir}/ + +find $RPM_BUILD_ROOT%{pylibdir}/lib-dynload -type d | sed "s|$RPM_BUILD_ROOT|%dir |" > dynfiles +find $RPM_BUILD_ROOT%{pylibdir}/lib-dynload -type f | \ + grep -v "_tkinter.so$" | \ + grep -v "_ctypes_test.so$" | \ + grep -v "_testcapimodule.so$" | \ + sed "s|$RPM_BUILD_ROOT||" >> dynfiles + +# Fix for bug #136654 +rm -f $RPM_BUILD_ROOT%{pylibdir}/email/test/data/audiotest.au $RPM_BUILD_ROOT%{pylibdir}/test/audiotest.au + +%if "%{_lib}" == "lib64" +install -d $RPM_BUILD_ROOT/usr/lib/python%{pybasever}/site-packages +%endif + +# Make python3-devel multilib-ready (bug #192747, #139911) +%global _pyconfig32_h pyconfig-32.h +%global _pyconfig64_h pyconfig-64.h + +%ifarch ppc64 s390x x86_64 ia64 alpha sparc64 +%global _pyconfig_h %{_pyconfig64_h} +%else +%global _pyconfig_h %{_pyconfig32_h} +%endif +mv $RPM_BUILD_ROOT%{_includedir}/python%{pybasever}/pyconfig.h \ + $RPM_BUILD_ROOT%{_includedir}/python%{pybasever}/%{_pyconfig_h} +cat > $RPM_BUILD_ROOT%{_includedir}/python%{pybasever}/pyconfig.h << EOF +#include + +#if __WORDSIZE == 32 +#include "%{_pyconfig32_h}" +#elif __WORDSIZE == 64 +#include "%{_pyconfig64_h}" +#else +#error "Unknown word size" +#endif +EOF + +# Fix for bug 201434: make sure distutils looks at the right pyconfig.h file +sed -i -e "s/'pyconfig.h'/'%{_pyconfig_h}'/" $RPM_BUILD_ROOT%{pylibdir}/distutils/sysconfig.py + +# Switch all shebangs to refer to the specific Python version. +LD_LIBRARY_PATH=. ./python Tools/scripts/pathfix.py -i "%{_bindir}/python%{pybasever}" $RPM_BUILD_ROOT + +# Remove shebang lines from .py files that aren't executable, and +# remove executability from .py files that don't have a shebang line: +find $RPM_BUILD_ROOT -name \*.py \ + \( \( \! -perm /u+x,g+x,o+x -exec sed -e '/^#!/Q 0' -e 'Q 1' {} \; \ + -print -exec sed -i '1d' {} \; \) -o \( \ + -perm /u+x,g+x,o+x ! -exec grep -m 1 -q '^#!' {} \; \ + -exec chmod a-x {} \; \) \) + +# .xpm and .xbm files should not be executable: +find $RPM_BUILD_ROOT \ + \( -name \*.xbm -o -name \*.xpm -o -name \*.xpm.1 \) \ + -exec chmod a-x {} \; + +# Remove executable flag from files that shouldn't have it: +chmod a-x \ + $RPM_BUILD_ROOT%{pylibdir}/Demo/comparisons/patterns \ + $RPM_BUILD_ROOT%{pylibdir}/distutils/tests/Setup.sample \ + $RPM_BUILD_ROOT%{pylibdir}/Demo/rpc/test \ + $RPM_BUILD_ROOT%{pylibdir}/Tools/README \ + $RPM_BUILD_ROOT%{pylibdir}/Demo/scripts/newslist.doc \ + $RPM_BUILD_ROOT%{pylibdir}/Demo/md5test/foo + +# Get rid of DOS batch files: +find $RPM_BUILD_ROOT -name \*.bat -exec rm {} \; + +# Get rid of backup files: +find $RPM_BUILD_ROOT/ -name "*~" -exec rm -f {} \; +find . -name "*~" -exec rm -f {} \; +rm -f $RPM_BUILD_ROOT%{pylibdir}/LICENSE.txt +# Junk, no point in putting in -test sub-pkg +rm -f ${RPM_BUILD_ROOT}/%{pylibdir}/idlelib/testcode.py* + +# Get rid of stray patch file from buildroot: +rm -f $RPM_BUILD_ROOT%{pylibdir}/test/test_imp.py.apply-our-changes-to-expected-shebang # from patch 4 + +# Fix end-of-line encodings: +find $RPM_BUILD_ROOT/ -name \*.py -exec sed -i 's/\r//' {} \; + +# Fix an encoding: +iconv -f iso8859-1 -t utf-8 $RPM_BUILD_ROOT/%{pylibdir}/Demo/rpc/README > README.conv && mv -f README.conv $RPM_BUILD_ROOT/%{pylibdir}/Demo/rpc/README + +# Note that +# %{pylibdir}/Demo/distutils/test2to3/setup.py +# is in iso-8859-1 encoding, and that this is deliberate; this is test data +# for the 2to3 tool, and one of the functions of the 2to3 tool is to fixup +# character encodings within python source code + +# Do bytecompilation with the new interpreter. +LD_LIBRARY_PATH=. /usr/lib/rpm/brp-python-bytecompile ./python + +# Fixup permissions for shared libraries from non-standard 555 to standard 755: +find $RPM_BUILD_ROOT \ + -perm 555 -exec chmod 755 {} \; + +mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/rpm +install -m 644 %{SOURCE2} $RPM_BUILD_ROOT/%{_sysconfdir}/rpm + +%check +# Run the upstream test suite, using the "runtests.sh" harness from the upstream +# tarball. +# I'm seeing occasional hangs in "test_httplib" when running the test suite inside +# Koji. For that reason I exclude that one. +LD_LIBRARY_PATH=$(pwd) ./runtests.sh -x test_httplib + +# Note that we're running the tests using the version of the code in the builddir, +# not in the buildroot. + +# The harness only emits the names of the test scripts it ran, along with a +# summary of the form: +# 2 BAD +# 313 GOOD +# 22 SKIPPED +# 337 total +# As a byproduct it writes files "GOOD", "BAD", "SKIPPED", listing names of +# files (e.g. "test_imp") along with a subdirectory OUT containing files of the +# form $TEST.out +# Each such logfile starts with a line indicating the name of the test + +# Output the logs from failing tests, so that they are captured in the rpmbuild +# log: +for TESTNAME in $(cat BAD); do + cat OUT/$TESTNAME.out ; +done + +# There are 5 expected BAD results here: +# +# (1) test_distutils.py: tries to build an RPM inside the rpmbuild; I'll simply +# let this one fail for now (has trouble linking against -lpython3.1; perhaps +# LD_LIBRARY_PATH is being discarded somewhere?) +# +# (2) test_imp.py: ImportTests.test_issue1267 in test_imp.py reads pydoc.py's +# shebang line and checks that it read it correctly.tests that the shebang line +# is as expected. Unfortunately if we patch this up in the buildir (in the +# build phase), then the "make install" will try to reference +# /usr/bin/python%{pybasever} which won't exist on a clean build environment. +# So we fix up the shebang lines after this in the install phase, and expect +# this test to fail in the check phase. It ought to pass when run on the built +# RPMs +# +# (3) test_socket.py:testSockName can fail here if DNS isn't properly set up: +# my_ip_addr = socket.gethostbyname(socket.gethostname()) +# socket.gaierror: [Errno -2] Name or service not known +# +# (4) test_subprocess: merely get "errors occurred" +# +# (5) test_telnet: can get a "socket.error: [Errno 104] Connection reset by peer" +# +# Some additional tests fail when running the test suite as non-root outside of +# the build, due to permissions issues. + +%clean +rm -fr $RPM_BUILD_ROOT + +%post libs -p /sbin/ldconfig + +%postun libs -p /sbin/ldconfig + +%files -f dynfiles +%defattr(-, root, root) +%doc LICENSE README +%{_bindir}/pydoc* +%{_bindir}/python3 +%{_bindir}/python%{pybasever} +%{_mandir}/*/* +%dir %{pylibdir} +%dir %{pylibdir}/site-packages +%{pylibdir}/site-packages/README +%{pylibdir}/*.py* +%{pylibdir}/*.doc +%{pylibdir}/wsgiref.egg-info +%dir %{pylibdir}/ctypes +%{pylibdir}/ctypes/*.py* +%{pylibdir}/ctypes/macholib +%{pylibdir}/curses +%dir %{pylibdir}/dbm +%{pylibdir}/dbm/*.py* +%dir %{pylibdir}/distutils +%{pylibdir}/distutils/*.py* +%{pylibdir}/distutils/README +%{pylibdir}/distutils/command +%dir %{pylibdir}/email +%{pylibdir}/email/*.py* +%{pylibdir}/email/mime +%{pylibdir}/encodings +%{pylibdir}/html +%{pylibdir}/http +%{pylibdir}/idlelib +%dir %{pylibdir}/importlib +%{pylibdir}/importlib/*.py* +%dir %{pylibdir}/json +%{pylibdir}/json/*.py* +%{pylibdir}/logging +%{pylibdir}/multiprocessing +%{pylibdir}/plat-linux2 +%{pylibdir}/pydoc_data +%dir %{pylibdir}/sqlite3 +%{pylibdir}/sqlite3/*.py* +%dir %{pylibdir}/test +%{pylibdir}/test/__init__.py* +%{pylibdir}/urllib +%{pylibdir}/wsgiref +%{pylibdir}/xml +%{pylibdir}/xmlrpc +%if "%{_lib}" == "lib64" +%attr(0755,root,root) %dir /usr/lib/python%{pybasever} +%attr(0755,root,root) %dir /usr/lib/python%{pybasever}/site-packages +%endif + +# "Makefile" and the config-32/64.h file are needed by +# distutils/sysconfig.py:_init_posix(), so we include them in the core +# package, along with their parent directories (bug 531901): +%dir %{pylibdir}/config +%{pylibdir}/config/Makefile +%dir /usr/include/python%{pybasever} +/usr/include/python%{pybasever}/%{_pyconfig_h} + +%files libs +%defattr(-,root,root,-) +%{_libdir}/libpython%{pybasever}.so.* + +%files devel +%defattr(-,root,root) +%{pylibdir}/config/* +%exclude %{pylibdir}/config/Makefile +/usr/include/python%{pybasever}/*.h +%exclude /usr/include/python%{pybasever}/%{_pyconfig_h} +%doc Misc/README.valgrind Misc/valgrind-python.supp Misc/gdbinit +%{_bindir}/python3-config +%{_bindir}/python%{pybasever}-config +%{_libdir}/libpython%{pybasever}.so +%{_libdir}/pkgconfig/python*.pc +%config(noreplace) %{_sysconfdir}/rpm/macros.python3 + +%files tools +%defattr(-,root,root,755) +%{pylibdir}/lib2to3 +%exclude %{pylibdir}/lib2to3/tests +%{_bindir}/2to3* +%{_bindir}/idle* +%{pylibdir}/Tools +%doc %{pylibdir}/Demo +%exclude %{pylibdir}/Demo/distutils +%exclude %{pylibdir}/Demo/md5test +%doc %{pylibdir}/Doc + +%files tkinter +%defattr(-,root,root,755) +%{pylibdir}/tkinter +%exclude %{pylibdir}/tkinter/test +%{pylibdir}/lib-dynload/_tkinter.so + +%files test +%defattr(-, root, root) +%{pylibdir}/ctypes/test +%{pylibdir}/distutils/tests +%{pylibdir}/email/test +%{pylibdir}/importlib/test +%{pylibdir}/json/tests +%{pylibdir}/sqlite3/test +%{pylibdir}/test +%{pylibdir}/lib-dynload/_ctypes_test.so +%{pylibdir}/lib-dynload/_testcapimodule.so +%{pylibdir}/lib2to3/tests +%doc %{pylibdir}/Demo/distutils +%doc %{pylibdir}/Demo/md5test +%{pylibdir}/tkinter/test + +%changelog +* Mon Jan 11 2010 David Malcolm - 3.1.1-13 +- fix permission on find-provides-without-python-sonames.sh from 775 to 755 + +* Mon Jan 11 2010 David Malcolm - 3.1.1-12 +- remove build-time requirements on tix and tk, since we already have +build-time requirements on the -devel subpackages for each of these (Thomas +Spura) +- replace usage of %%define with %%global (Thomas Spura) +- remove forcing of CC=gcc as this old workaround for bug 109268 appears to +longer be necessary +- move various test files from the "tools"/"tkinter" subpackages to the "test" +subpackage + +* Thu Jan 7 2010 David Malcolm - 3.1.1-11 +- add %%check section (thanks to Thomas Spura) +- update patch 4 to use correct shebang line +- get rid of stray patch file from buildroot + +* Tue Nov 17 2009 Andrew McNabb - 3.1.1-10 +- switched a few instances of "find |xargs" to "find -exec" for consistency. +- made the description of __os_install_post more accurate. + +* Wed Nov 4 2009 David Malcolm - 3.1.1-9 +- add macros.python3 to the -devel subpackage, containing common macros for use +when packaging python3 modules + +* Tue Nov 3 2009 David Malcolm - 3.1.1-8 +- add a provides of "python(abi)" (see bug 532118) +- fix issues identified by a.badger in package review (bug 526126, comment 39): + - use "3" thoughout metadata, rather than "3.*" + - remove conditional around "pkg-config openssl" + - use standard cleanup of RPM_BUILD_ROOT + - replace hardcoded references to /usr with _prefix macro + - stop removing egg-info files + - use /usr/bin/python3.1 rather than /use/bin/env python3.1 when fixing +up shebang lines + - stop attempting to remove no-longer-present .cvsignore files + - move the post/postun sections above the "files" sections + +* Thu Oct 29 2009 David Malcolm - 3.1.1-7 +- remove commented-away patch 51 (python-2.6-distutils_rpm.patch): the -O1 +flag is used by default in the upstream code +- "Makefile" and the config-32/64.h file are needed by distutils/sysconfig.py +_init_posix(), so we include them in the core package, along with their parent +directories (bug 531901) + +* Tue Oct 27 2009 David Malcolm - 3.1.1-6 +- reword description, based on suggestion by amcnabb +- fix the test_email and test_imp selftests (patch 3 and patch 4 respectively) +- fix the test_tk and test_ttk_* selftests (patch 5) +- fix up the specfile's handling of shebang/perms to avoid corrupting +test_httpservers.py (sed command suggested by amcnabb) + +* Thu Oct 22 2009 David Malcolm - 3.1.1-5 +- fixup importlib/_bootstrap.py so that it correctly handles being unable to +open .pyc files for writing (patch 2, upstream issue 7187) +- actually apply the rpath patch (patch 1) + +* Thu Oct 22 2009 David Malcolm - 3.1.1-4 +- update patch0's setup of the crypt module to link it against libcrypt +- update patch0 to comment "datetimemodule" back out, so that it is built +using setup.py (see Setup, option 3), thus linking it statically against +timemodule.c and thus avoiding a run-time "undefined symbol: +_PyTime_DoubleToTimet" failure on "import datetime" + +* Wed Oct 21 2009 David Malcolm - 3.1.1-3 +- remove executable flag from various files that shouldn't have it +- fix end-of-line encodings +- fix a character encoding + +* Tue Oct 20 2009 David Malcolm - 3.1.1-2 +- disable invocation of brp-python-bytecompile in postprocessing, since +it would be with the wrong version of python (adapted from ivazquez' +python3000 specfile) +- use a custom implementation of __find_provides in order to filter out bogus +provides lines for the various .so modules +- fixup distutils/unixccompiler.py to remove standard library path from rpath +(patch 1, was Patch0 in ivazquez' python3000 specfile) +- split out libraries into a -libs subpackage +- update summaries and descriptions, basing content on ivazquez' specfile +- fixup executable permissions on .py, .xpm and .xbm files, based on work in +ivazquez's specfile +- get rid of DOS batch files +- fixup permissions for shared libraries from non-standard 555 to standard 755 +- move /usr/bin/python*-config to the -devel subpackage +- mark various directories as being documentation + +* Thu Sep 24 2009 Andrew McNabb 3.1.1-1 +- Initial package for Python 3. + diff --git a/sources b/sources index e69de29..59b2b95 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +d1ddd9f16e3c6a51c7208f33518cd674 Python-3.1.1.tar.bz2