diff options
author | Anas Nashif <anas.nashif@intel.com> | 2012-11-07 07:15:19 -0800 |
---|---|---|
committer | Chanho Park <chanho61.park@samsung.com> | 2014-08-19 19:35:27 +0900 |
commit | 4252549b57962f6b8f1e66cea37abe4b7492b575 (patch) | |
tree | e2d9c757a3b4dd8b016f83952c09a0e860c58bd5 | |
parent | f153198bebe97a3d7576aefcec4841bc04b45ddc (diff) | |
download | python-4252549b57962f6b8f1e66cea37abe4b7492b575.tar.gz python-4252549b57962f6b8f1e66cea37abe4b7492b575.tar.bz2 python-4252549b57962f6b8f1e66cea37abe4b7492b575.zip |
add packaging
-rw-r--r-- | packaging/pypirc-secure.diff | 30 | ||||
-rw-r--r-- | packaging/python-2.5.1-sqlite.patch | 12 | ||||
-rw-r--r-- | packaging/python-2.6-gettext-plurals.patch | 16 | ||||
-rw-r--r-- | packaging/python-2.6b3-curses-panel.patch | 11 | ||||
-rw-r--r-- | packaging/python-2.7-dirs.patch | 13 | ||||
-rw-r--r-- | packaging/python-2.7.1-distutils_test_path.patch | 52 | ||||
-rw-r--r-- | packaging/python-2.7.2-fix_date_time_compiler.patch | 18 | ||||
-rw-r--r-- | packaging/python-2.7.3-ssl_ca_path.patch | 41 | ||||
-rw-r--r-- | packaging/python-2.7.3rc2-canonicalize2.patch | 0 | ||||
-rw-r--r-- | packaging/python-2.7.3rc2-multilib.patch | 389 | ||||
-rw-r--r-- | packaging/python-2.7rc2-configure.patch | 26 | ||||
-rw-r--r-- | packaging/python-distutils-rpm-8.patch | 84 | ||||
-rw-r--r-- | packaging/python-test_structmembers.patch | 21 | ||||
-rw-r--r-- | packaging/remove-static-libpython.diff | 49 |
14 files changed, 762 insertions, 0 deletions
diff --git a/packaging/pypirc-secure.diff b/packaging/pypirc-secure.diff new file mode 100644 index 0000000..f20c32f --- /dev/null +++ b/packaging/pypirc-secure.diff @@ -0,0 +1,30 @@ +# HG changeset patch +# User Philip Jenvey <pjenvey@underboss.org> +# Date 1322701507 28800 +# Branch 2.7 +# Node ID e7c20a8476a0e2ca18f8040864cbc400818d8f24 +# Parent 3ecddf168f1f554a17a047384fe0b02f2d688277 +create the .pypirc securely + +diff -r 3ecddf168f1f -r e7c20a8476a0 Lib/distutils/config.py +--- a/Lib/distutils/config.py Tue Nov 29 00:53:09 2011 +0100 ++++ b/Lib/distutils/config.py Wed Nov 30 17:05:07 2011 -0800 +@@ -42,16 +42,8 @@ + def _store_pypirc(self, username, password): + """Creates a default .pypirc file.""" + rc = self._get_rc_file() +- f = open(rc, 'w') +- try: +- f.write(DEFAULT_PYPIRC % (username, password)) +- finally: +- f.close() +- try: +- os.chmod(rc, 0600) +- except OSError: +- # should do something better here +- pass ++ with os.fdopen(os.open(rc, os.O_CREAT | os.O_WRONLY, 0600), 'w') as fp: ++ fp.write(DEFAULT_PYPIRC % (username, password)) + + def _read_pypirc(self): + """Reads the .pypirc file.""" diff --git a/packaging/python-2.5.1-sqlite.patch b/packaging/python-2.5.1-sqlite.patch new file mode 100644 index 0000000..60f6ffc --- /dev/null +++ b/packaging/python-2.5.1-sqlite.patch @@ -0,0 +1,12 @@ +--- Modules/_sqlite/cursor.c ++++ Modules/_sqlite/cursor.c +@@ -782,6 +782,9 @@ + goto error; + } + ++ if (! statement) ++ break; ++ + /* execute statement, and ignore results of SELECT statements */ + rc = SQLITE_ROW; + while (rc == SQLITE_ROW) { diff --git a/packaging/python-2.6-gettext-plurals.patch b/packaging/python-2.6-gettext-plurals.patch new file mode 100644 index 0000000..6985442 --- /dev/null +++ b/packaging/python-2.6-gettext-plurals.patch @@ -0,0 +1,16 @@ +Index: Lib/gettext.py +=================================================================== +--- Lib/gettext.py.orig ++++ Lib/gettext.py +@@ -311,8 +311,9 @@ class GNUTranslations(NullTranslations): + self._charset = v.split('charset=')[1] + elif k == 'plural-forms': + v = v.split(';') +- plural = v[1].split('plural=')[1] +- self.plural = c2py(plural) ++ if len(v) > 1: ++ plural = v[1].split('plural=')[1] ++ self.plural = c2py(plural) + # Note: we unconditionally convert both msgids and msgstrs to + # Unicode using the character encoding specified in the charset + # parameter of the Content-Type header. The gettext documentation diff --git a/packaging/python-2.6b3-curses-panel.patch b/packaging/python-2.6b3-curses-panel.patch new file mode 100644 index 0000000..abf4b6e --- /dev/null +++ b/packaging/python-2.6b3-curses-panel.patch @@ -0,0 +1,11 @@ +--- Modules/_curses_panel.c ++++ Modules/_curses_panel.c +@@ -14,7 +14,7 @@ + + #include "py_curses.h" + +-#include <panel.h> ++#include <ncurses/panel.h> + + static PyObject *PyCursesError; + diff --git a/packaging/python-2.7-dirs.patch b/packaging/python-2.7-dirs.patch new file mode 100644 index 0000000..2c36f7d --- /dev/null +++ b/packaging/python-2.7-dirs.patch @@ -0,0 +1,13 @@ +Index: Python-2.7/Makefile.pre.in +=================================================================== +--- Python-2.7.orig/Makefile.pre.in ++++ Python-2.7/Makefile.pre.in +@@ -94,7 +94,7 @@ LIBDIR= @libdir@ + MANDIR= @mandir@ + INCLUDEDIR= @includedir@ + CONFINCLUDEDIR= $(exec_prefix)/include +-SCRIPTDIR= $(prefix)/lib ++SCRIPTDIR= @libdir@ + + # Detailed destination directories + BINLIBDEST= $(LIBDIR)/python$(VERSION) diff --git a/packaging/python-2.7.1-distutils_test_path.patch b/packaging/python-2.7.1-distutils_test_path.patch new file mode 100644 index 0000000..9f1b6c4 --- /dev/null +++ b/packaging/python-2.7.1-distutils_test_path.patch @@ -0,0 +1,52 @@ +Index: Python-2.7/Lib/distutils/tests/test_build_ext.py +=================================================================== +--- Python-2.7.orig/Lib/distutils/tests/test_build_ext.py ++++ Python-2.7/Lib/distutils/tests/test_build_ext.py +@@ -261,20 +261,14 @@ class BuildExtTestCase(support.TempdirMa + + # issue #5977 : distutils build_ext.get_outputs + # returns wrong result with --inplace +- other_tmp_dir = os.path.realpath(self.mkdtemp()) +- old_wd = os.getcwd() +- os.chdir(other_tmp_dir) +- try: +- cmd.inplace = 1 +- cmd.run() +- so_file = cmd.get_outputs()[0] +- finally: +- os.chdir(old_wd) ++ cmd.inplace = 1 ++ cmd.run() ++ so_file = cmd.get_outputs()[0] + self.assertTrue(os.path.exists(so_file)) + self.assertEqual(os.path.splitext(so_file)[-1], + sysconfig.get_config_var('SO')) + so_dir = os.path.dirname(so_file) +- self.assertEqual(so_dir, other_tmp_dir) ++ self.assertEqual(so_dir, os.getcwd()) + cmd.compiler = None + cmd.inplace = 0 + cmd.run() +Index: Python-2.7/Lib/test/regrtest.py +=================================================================== +--- Python-2.7.orig/Lib/test/regrtest.py ++++ Python-2.7/Lib/test/regrtest.py +@@ -1503,16 +1503,5 @@ if __name__ == '__main__': + if not os.path.exists(TEMPDIR): + os.mkdir(TEMPDIR) + +- # Define a writable temp dir that will be used as cwd while running +- # the tests. The name of the dir includes the pid to allow parallel +- # testing (see the -j option). +- TESTCWD = 'test_python_{}'.format(os.getpid()) +- +- TESTCWD = os.path.join(TEMPDIR, TESTCWD) +- +- # Run the tests in a context manager that temporary changes the CWD to a +- # temporary and writable directory. If it's not possible to create or +- # change the CWD, the original CWD will be used. The original CWD is +- # available from test_support.SAVEDCWD. +- with test_support.temp_cwd(TESTCWD, quiet=True): +- main() ++ # do not change directory, because it breaks distutils tests ++ main() diff --git a/packaging/python-2.7.2-fix_date_time_compiler.patch b/packaging/python-2.7.2-fix_date_time_compiler.patch new file mode 100644 index 0000000..5e5fd23 --- /dev/null +++ b/packaging/python-2.7.2-fix_date_time_compiler.patch @@ -0,0 +1,18 @@ +--- Makefile.pre.in ++++ Makefile.pre.in +@@ -524,8 +524,15 @@ + -DHGVERSION="\"`LC_ALL=C $(HGVERSION)`\"" \ + -DHGTAG="\"`LC_ALL=C $(HGTAG)`\"" \ + -DHGBRANCH="\"`LC_ALL=C $(HGBRANCH)`\"" \ ++ -DDATE="\"`LC_ALL=C date -u -r Makefile.pre.in +"%b %d %Y"`\"" \ ++ -DTIME="\"`LC_ALL=C date -u -r Makefile.pre.in +"%T"`\"" \ + -o $@ $(srcdir)/Modules/getbuildinfo.c + ++Python/getcompiler.o: $(srcdir)/Python/getcompiler.c Makefile ++ $(CC) -c $(PY_CFLAGS) \ ++ -DCOMPILER='"[GCC]"' \ ++ -o $@ $(srcdir)/Python/getcompiler.c ++ + Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile + $(CC) -c $(PY_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \ + -DPREFIX='"$(prefix)"' \ diff --git a/packaging/python-2.7.3-ssl_ca_path.patch b/packaging/python-2.7.3-ssl_ca_path.patch new file mode 100644 index 0000000..95ff23a --- /dev/null +++ b/packaging/python-2.7.3-ssl_ca_path.patch @@ -0,0 +1,41 @@ +Index: Modules/_ssl.c +=================================================================== +--- Modules/_ssl.c.orig ++++ Modules/_ssl.c +@@ -271,6 +271,7 @@ newPySSLObject(PySocketSockObject *Sock, + char *errstr = NULL; + int ret; + int verification_mode; ++ struct stat stat_buf; + + self = PyObject_New(PySSLObject, &PySSL_Type); /* Create new object */ + if (self == NULL) +@@ -331,11 +332,23 @@ newPySSLObject(PySocketSockObject *Sock, + "verification of other-side certificates."); + goto fail; + } else { +- PySSL_BEGIN_ALLOW_THREADS +- ret = SSL_CTX_load_verify_locations(self->ctx, +- cacerts_file, +- NULL); +- PySSL_END_ALLOW_THREADS ++ /* If cacerts_file is a directory-based cert store, pass it as the ++ third parameter, CApath, instead ++ */ ++ if (stat(cacerts_file, &stat_buf) == 0 && S_ISDIR(stat_buf.st_mode)) { ++ PySSL_BEGIN_ALLOW_THREADS ++ ret = SSL_CTX_load_verify_locations(self->ctx, ++ NULL, ++ cacerts_file); ++ PySSL_END_ALLOW_THREADS ++ } else { ++ PySSL_BEGIN_ALLOW_THREADS ++ ret = SSL_CTX_load_verify_locations(self->ctx, ++ cacerts_file, ++ NULL); ++ PySSL_END_ALLOW_THREADS ++ } ++ + if (ret != 1) { + _setSSLError(NULL, 0, __FILE__, __LINE__); + goto fail; diff --git a/packaging/python-2.7.3rc2-canonicalize2.patch b/packaging/python-2.7.3rc2-canonicalize2.patch new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/packaging/python-2.7.3rc2-canonicalize2.patch diff --git a/packaging/python-2.7.3rc2-multilib.patch b/packaging/python-2.7.3rc2-multilib.patch new file mode 100644 index 0000000..8ecbeef --- /dev/null +++ b/packaging/python-2.7.3rc2-multilib.patch @@ -0,0 +1,389 @@ +Index: configure.in +=================================================================== +--- configure.in.orig 2012-03-16 02:26:39.000000000 +0100 ++++ configure.in 2012-03-28 20:09:13.000000000 +0200 +@@ -630,6 +630,41 @@ + ;; + esac + ++AC_SUBST(ARCH) ++AC_MSG_CHECKING(ARCH) ++ARCH=`uname -m` ++case $ARCH in ++i?86) ARCH=i386;; ++esac ++AC_MSG_RESULT($ARCH) ++ ++AC_SUBST(LIB) ++AC_MSG_CHECKING(LIB) ++case $ac_sys_system in ++Linux*) ++ # Test if the compiler is 64bit ++ echo 'int i;' > conftest.$ac_ext ++ python_cv_cc_64bit_output=no ++ if AC_TRY_EVAL(ac_compile); then ++ case `/usr/bin/file conftest.$ac_objext` in ++ *"ELF 64"*) ++ python_cv_cc_64bit_output=yes ++ ;; ++ esac ++ fi ++ rm -rf conftest* ++ ;; ++esac ++ ++case $ARCH:$python_cv_cc_64bit_output in ++ppc64:yes | powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes) ++ LIB="lib64" ++ ;; ++*:*) ++ LIB="lib" ++ ;; ++esac ++AC_MSG_RESULT($LIB) + + AC_SUBST(LIBRARY) + AC_MSG_CHECKING(LIBRARY) +Index: Include/pythonrun.h +=================================================================== +--- Include/pythonrun.h.orig 2012-03-16 02:26:31.000000000 +0100 ++++ Include/pythonrun.h 2012-03-28 20:09:13.000000000 +0200 +@@ -108,6 +108,8 @@ + /* In their own files */ + PyAPI_FUNC(const char *) Py_GetVersion(void); + PyAPI_FUNC(const char *) Py_GetPlatform(void); ++PyAPI_FUNC(const char *) Py_GetArch(void); ++PyAPI_FUNC(const char *) Py_GetLib(void); + PyAPI_FUNC(const char *) Py_GetCopyright(void); + PyAPI_FUNC(const char *) Py_GetCompiler(void); + PyAPI_FUNC(const char *) Py_GetBuildInfo(void); +Index: Lib/distutils/command/install.py +=================================================================== +--- Lib/distutils/command/install.py.orig 2012-03-28 20:09:11.000000000 +0200 ++++ Lib/distutils/command/install.py 2012-03-28 20:09:13.000000000 +0200 +@@ -22,6 +22,8 @@ + from site import USER_SITE + + ++libname = sys.lib ++ + if sys.version < "2.2": + WINDOWS_SCHEME = { + 'purelib': '$base', +@@ -42,7 +44,7 @@ + INSTALL_SCHEMES = { + 'unix_prefix': { + 'purelib': '$base/lib/python$py_version_short/site-packages', +- 'platlib': '$platbase/lib/python$py_version_short/site-packages', ++ 'platlib': '$platbase/'+libname+'/python$py_version_short/site-packages', + 'headers': '$base/include/python$py_version_short/$dist_name', + 'scripts': '$base/bin', + 'data' : '$base', +Index: Lib/distutils/sysconfig.py +=================================================================== +--- Lib/distutils/sysconfig.py.orig 2012-03-16 02:26:31.000000000 +0100 ++++ Lib/distutils/sysconfig.py 2012-03-28 20:09:13.000000000 +0200 +@@ -114,8 +114,11 @@ + prefix = plat_specific and EXEC_PREFIX or PREFIX + + if os.name == "posix": +- libpython = os.path.join(prefix, +- "lib", "python" + get_python_version()) ++ if plat_specific or standard_lib: ++ lib = sys.lib ++ else: ++ lib = "lib" ++ libpython = os.path.join(prefix, lib, "python" + get_python_version()) + if standard_lib: + return libpython + else: +Index: Lib/pydoc.py +=================================================================== +--- Lib/pydoc.py.orig 2012-03-16 02:26:33.000000000 +0100 ++++ Lib/pydoc.py 2012-03-28 20:09:13.000000000 +0200 +@@ -352,7 +352,7 @@ + + docloc = os.environ.get("PYTHONDOCS", + "http://docs.python.org/library") +- basedir = os.path.join(sys.exec_prefix, "lib", ++ basedir = os.path.join(sys.exec_prefix, sys.lib, + "python"+sys.version[0:3]) + if (isinstance(object, type(os)) and + (object.__name__ in ('errno', 'exceptions', 'gc', 'imp', +Index: Lib/site.py +=================================================================== +--- Lib/site.py.orig 2012-03-16 02:26:33.000000000 +0100 ++++ Lib/site.py 2012-03-28 20:09:13.000000000 +0200 +@@ -300,13 +300,18 @@ + if sys.platform in ('os2emx', 'riscos'): + sitepackages.append(os.path.join(prefix, "Lib", "site-packages")) + elif os.sep == '/': +- sitepackages.append(os.path.join(prefix, "lib", ++ sitepackages.append(os.path.join(prefix, sys.lib, + "python" + sys.version[:3], + "site-packages")) +- sitepackages.append(os.path.join(prefix, "lib", "site-python")) ++ sitepackages.append(os.path.join(prefix, sys.lib, "site-python")) ++ if sys.lib != "lib": ++ sitepackages.append(os.path.join(prefix, "lib", ++ "python" + sys.version[:3], ++ "site-packages")) ++ sitepackages.append(os.path.join(prefix, "lib", "site-python")) + else: + sitepackages.append(prefix) +- sitepackages.append(os.path.join(prefix, "lib", "site-packages")) ++ sitepackages.append(os.path.join(prefix, sys.lib, "site-packages")) + if sys.platform == "darwin": + # for framework builds *only* we add the standard Apple + # locations. +Index: Lib/sysconfig.py +=================================================================== +--- Lib/sysconfig.py.orig 2012-03-16 02:26:33.000000000 +0100 ++++ Lib/sysconfig.py 2012-03-28 20:09:13.000000000 +0200 +@@ -7,10 +7,10 @@ + + _INSTALL_SCHEMES = { + 'posix_prefix': { +- 'stdlib': '{base}/lib/python{py_version_short}', +- 'platstdlib': '{platbase}/lib/python{py_version_short}', ++ 'stdlib': '{base}/'+sys.lib+'/python{py_version_short}', ++ 'platstdlib': '{platbase}/'+sys.lib+'/python{py_version_short}', + 'purelib': '{base}/lib/python{py_version_short}/site-packages', +- 'platlib': '{platbase}/lib/python{py_version_short}/site-packages', ++ 'platlib': '{platbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'include': '{base}/include/python{py_version_short}', + 'platinclude': '{platbase}/include/python{py_version_short}', + 'scripts': '{base}/bin', +@@ -65,10 +65,10 @@ + 'data' : '{userbase}', + }, + 'posix_user': { +- 'stdlib': '{userbase}/lib/python{py_version_short}', +- 'platstdlib': '{userbase}/lib/python{py_version_short}', ++ 'stdlib': '{userbase}/'+sys.lib+'/python{py_version_short}', ++ 'platstdlib': '{userbase}/'+sys.lib+'/python{py_version_short}', + 'purelib': '{userbase}/lib/python{py_version_short}/site-packages', +- 'platlib': '{userbase}/lib/python{py_version_short}/site-packages', ++ 'platlib': '{userbase}/'+sys.lib+'/python{py_version_short}/site-packages', + 'include': '{userbase}/include/python{py_version_short}', + 'scripts': '{userbase}/bin', + 'data' : '{userbase}', +Index: Lib/test/test_dl.py +=================================================================== +--- Lib/test/test_dl.py.orig 2012-03-16 02:26:34.000000000 +0100 ++++ Lib/test/test_dl.py 2012-03-28 20:09:13.000000000 +0200 +@@ -5,10 +5,11 @@ + import unittest + from test.test_support import verbose, import_module + dl = import_module('dl', deprecated=True) ++import sys + + sharedlibs = [ +- ('/usr/lib/libc.so', 'getpid'), +- ('/lib/libc.so.6', 'getpid'), ++ ('/usr/'+sys.lib+'/libc.so', 'getpid'), ++ ('/'+sys.lib+'/libc.so.6', 'getpid'), + ('/usr/bin/cygwin1.dll', 'getpid'), + ('/usr/lib/libc.dylib', 'getpid'), + ] +Index: Lib/test/test_site.py +=================================================================== +--- Lib/test/test_site.py.orig 2012-03-16 02:26:34.000000000 +0100 ++++ Lib/test/test_site.py 2012-03-28 20:11:10.000000000 +0200 +@@ -241,12 +241,16 @@ + self.assertEqual(dirs[2], wanted) + elif os.sep == '/': + # OS X non-framwework builds, Linux, FreeBSD, etc +- self.assertEqual(len(dirs), 2) + wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3], + 'site-packages') +- self.assertEqual(dirs[0], wanted) ++ self.assertTrue(wanted in dirs) + wanted = os.path.join('xoxo', 'lib', 'site-python') +- self.assertEqual(dirs[1], wanted) ++ self.assertTrue(wanted in dirs) ++ wanted = os.path.join('xoxo', sys.lib, 'python' + sys.version[:3], ++ 'site-packages') ++ self.assertTrue(wanted in dirs) ++ wanted = os.path.join('xoxo', sys.lib, 'site-python') ++ self.assertTrue(wanted in dirs) + else: + # other platforms + self.assertEqual(len(dirs), 2) +Index: Lib/trace.py +=================================================================== +--- Lib/trace.py.orig 2012-03-16 02:26:34.000000000 +0100 ++++ Lib/trace.py 2012-03-28 20:09:13.000000000 +0200 +@@ -754,10 +754,10 @@ + # should I also call expanduser? (after all, could use $HOME) + + s = s.replace("$prefix", +- os.path.join(sys.prefix, "lib", ++ os.path.join(sys.prefix, sys.lib, + "python" + sys.version[:3])) + s = s.replace("$exec_prefix", +- os.path.join(sys.exec_prefix, "lib", ++ os.path.join(sys.exec_prefix, sys.lib, + "python" + sys.version[:3])) + s = os.path.normpath(s) + ignore_dirs.append(s) +Index: Makefile.pre.in +=================================================================== +--- Makefile.pre.in.orig 2012-03-28 20:09:11.000000000 +0200 ++++ Makefile.pre.in 2012-03-28 20:09:13.000000000 +0200 +@@ -81,6 +81,8 @@ + + # Machine-dependent subdirectories + MACHDEP= @MACHDEP@ ++LIB= @LIB@ ++ARCH= @ARCH@ + + # Install prefix for architecture-independent files + prefix= @prefix@ +@@ -533,6 +535,7 @@ + -DEXEC_PREFIX='"$(exec_prefix)"' \ + -DVERSION='"$(VERSION)"' \ + -DVPATH='"$(VPATH)"' \ ++ -DARCH='"$(ARCH)"' -DLIB='"$(LIB)"' \ + -o $@ $(srcdir)/Modules/getpath.c + + Modules/python.o: $(srcdir)/Modules/python.c +@@ -567,7 +570,7 @@ + Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H) + + Python/getplatform.o: $(srcdir)/Python/getplatform.c +- $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c ++ $(CC) -c $(PY_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -DARCH='"$(ARCH)"' -DLIB='"$(LIB)"' -o $@ $(srcdir)/Python/getplatform.c + + Python/importdl.o: $(srcdir)/Python/importdl.c + $(CC) -c $(PY_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c +Index: Modules/getpath.c +=================================================================== +--- Modules/getpath.c.orig 2012-03-16 02:26:37.000000000 +0100 ++++ Modules/getpath.c 2012-03-28 20:09:13.000000000 +0200 +@@ -116,9 +116,11 @@ + #define EXEC_PREFIX PREFIX + #endif + ++#define LIB_PYTHON LIB "/python" VERSION ++ + #ifndef PYTHONPATH +-#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ +- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ++#define PYTHONPATH PREFIX "/" LIB_PYTHON ":" \ ++ EXEC_PREFIX "/" LIB_PYTHON "/lib-dynload" + #endif + + #ifndef LANDMARK +@@ -129,7 +131,7 @@ + static char exec_prefix[MAXPATHLEN+1]; + static char progpath[MAXPATHLEN+1]; + static char *module_search_path = NULL; +-static char lib_python[] = "lib/python" VERSION; ++static char lib_python[] = LIB_PYTHON; + + static void + reduce(char *dir) +Index: Python/getplatform.c +=================================================================== +--- Python/getplatform.c.orig 2012-03-16 02:26:38.000000000 +0100 ++++ Python/getplatform.c 2012-03-28 20:09:13.000000000 +0200 +@@ -10,3 +10,23 @@ + { + return PLATFORM; + } ++ ++#ifndef ARCH ++#define ARCH "unknown" ++#endif ++ ++const char * ++Py_GetArch(void) ++{ ++ return ARCH; ++} ++ ++#ifndef LIB ++#define LIB "lib" ++#endif ++ ++const char * ++Py_GetLib(void) ++{ ++ return LIB; ++} +Index: Python/sysmodule.c +=================================================================== +--- Python/sysmodule.c.orig 2012-03-16 02:26:39.000000000 +0100 ++++ Python/sysmodule.c 2012-03-28 20:09:13.000000000 +0200 +@@ -1419,6 +1419,10 @@ + PyString_FromString(Py_GetCopyright())); + SET_SYS_FROM_STRING("platform", + PyString_FromString(Py_GetPlatform())); ++ SET_SYS_FROM_STRING("arch", ++ PyString_FromString(Py_GetArch())); ++ SET_SYS_FROM_STRING("lib", ++ PyString_FromString(Py_GetLib())); + SET_SYS_FROM_STRING("executable", + PyString_FromString(Py_GetProgramFullPath())); + SET_SYS_FROM_STRING("prefix", +Index: setup.py +=================================================================== +--- setup.py.orig 2012-03-16 02:26:39.000000000 +0100 ++++ setup.py 2012-03-28 20:09:13.000000000 +0200 +@@ -369,7 +369,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/' + sys.lib) + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') + self.add_multiarch_paths() + +@@ -427,8 +427,7 @@ + # if a file is found in one of those directories, it can + # be assumed that no additional -I,-L directives are needed. + lib_dirs = self.compiler.library_dirs + [ +- '/lib64', '/usr/lib64', +- '/lib', '/usr/lib', ++ '/' + sys.lib, '/usr/' + sys.lib, + ] + inc_dirs = self.compiler.include_dirs + ['/usr/include'] + exts = [] +@@ -677,11 +676,11 @@ + elif curses_library: + readline_libs.append(curses_library) + elif self.compiler.find_library_file(lib_dirs + +- ['/usr/lib/termcap'], ++ ['/usr/'+sys.lib+'/termcap'], + 'termcap'): + readline_libs.append('termcap') + exts.append( Extension('readline', ['readline.c'], +- library_dirs=['/usr/lib/termcap'], ++ library_dirs=['/usr/'+sys.lib+'/termcap'], + extra_link_args=readline_extra_link_args, + libraries=readline_libs) ) + else: +@@ -1753,18 +1752,17 @@ + # Check for various platform-specific directories + if platform == 'sunos5': + include_dirs.append('/usr/openwin/include') +- added_lib_dirs.append('/usr/openwin/lib') ++ added_lib_dirs.append('/usr/openwin/' + sys.lib) + elif os.path.exists('/usr/X11R6/include'): + include_dirs.append('/usr/X11R6/include') +- added_lib_dirs.append('/usr/X11R6/lib64') +- added_lib_dirs.append('/usr/X11R6/lib') ++ added_lib_dirs.append('/usr/X11R6/' + sys.lib) + elif os.path.exists('/usr/X11R5/include'): + include_dirs.append('/usr/X11R5/include') +- added_lib_dirs.append('/usr/X11R5/lib') ++ added_lib_dirs.append('/usr/X11R5/' + sys.lib) + else: + # Assume default location for X11 + include_dirs.append('/usr/X11/include') +- added_lib_dirs.append('/usr/X11/lib') ++ added_lib_dirs.append('/usr/X11/' + sys.lib) + + # If Cygwin, then verify that X is installed before proceeding + if platform == 'cygwin': diff --git a/packaging/python-2.7rc2-configure.patch b/packaging/python-2.7rc2-configure.patch new file mode 100644 index 0000000..dae0335 --- /dev/null +++ b/packaging/python-2.7rc2-configure.patch @@ -0,0 +1,26 @@ +Index: configure.in +=================================================================== +--- configure.in.orig ++++ configure.in +@@ -3892,9 +3892,18 @@ then + fi + + # check for readline 4.0 +-AC_CHECK_LIB(readline, rl_pre_input_hook, +- AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1, +- [Define if you have readline 4.0]), ,$READLINE_LIBS) ++AC_MSG_CHECKING([for rl_pre_input_hook in -lreadline]) ++AC_CACHE_VAL(ac_cv_have_rl_re_input_hook, [ ++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <stdio.h> ++#include <readline/readline.h>], ++ [return rl_pre_input_hook != 0])], ++ ac_cv_have_rl_re_input_hook=yes, ++ ac_cv_have_rl_re_input_hook=no)]) ++AC_MSG_RESULT($ac_cv_have_rl_re_input_hook) ++if test "$ac_cv_have_rl_re_input_hook" = yes; then ++ AC_DEFINE(HAVE_RL_PRE_INPUT_HOOK, 1, ++ [Define if you have readline 4.0]) ++fi + + # also in 4.0 + AC_CHECK_LIB(readline, rl_completion_display_matches_hook, diff --git a/packaging/python-distutils-rpm-8.patch b/packaging/python-distutils-rpm-8.patch new file mode 100644 index 0000000..a5c614b --- /dev/null +++ b/packaging/python-distutils-rpm-8.patch @@ -0,0 +1,84 @@ +Index: Python-2.6.2/Lib/distutils/command/install.py +=================================================================== +--- Python-2.6.2.orig/Lib/distutils/command/install.py ++++ Python-2.6.2/Lib/distutils/command/install.py +@@ -168,6 +168,8 @@ class install (Command): + + ('record=', None, + "filename in which to record list of installed files"), ++ ('record-rpm=', None, ++ "filename in which to record list of installed files and directories suitable as filelist for rpm"), + ] + + boolean_options = ['compile', 'force', 'skip-build', 'user'] +@@ -243,6 +245,7 @@ class install (Command): + #self.install_info = None + + self.record = None ++ self.record_rpm = None + + + # -- Option finalizing methods ------------------------------------- +@@ -592,12 +595,61 @@ class install (Command): + self.create_path_file() + + # write list of installed files, if requested. +- if self.record: ++ if self.record or self.record_rpm: + outputs = self.get_outputs() + if self.root: # strip any package prefix + root_len = len(self.root) + for counter in xrange(len(outputs)): + outputs[counter] = outputs[counter][root_len:] ++ if self.record_rpm: # add directories ++ self.record = self.record_rpm ++ dirs = [] ++ # directories to reject: ++ rejectdirs = [ ++ '/etc', ++ '/', ++ '', ++ self.prefix, ++ self.exec_prefix, ++ self.install_base, ++ self.install_platbase, ++ self.install_purelib, ++ self.install_platlib, ++ self.install_headers[:len(self.install_headers) - len(self.distribution.get_name()) - 1], ++ self.install_libbase, ++ self.install_scripts, ++ self.install_data, ++ os.path.join(self.install_data, 'share'), ++ os.path.join(self.install_data, 'share', 'doc'), ++ ] ++ # directories whose childs reject: ++ rejectdirs2 = [ ++ os.path.join(self.install_data, 'share', 'man'), ++ ] ++ # directories whose grandsons reject: ++ rejectdirs3 = [ ++ os.path.join(self.install_data, 'share', 'man'), ++ os.path.join(self.install_data, 'share', 'locale'), ++ ] ++ for counter in xrange(len(rejectdirs)): ++ if len(rejectdirs[counter]) > root_len: ++ rejectdirs[counter] = rejectdirs[counter][root_len:] ++ for counter in xrange(len(rejectdirs2)): ++ if len(rejectdirs2[counter]) > root_len: ++ rejectdirs2[counter] = rejectdirs2[counter][root_len:] ++ for counter in xrange(len(rejectdirs3)): ++ if len(rejectdirs3[counter]) > root_len: ++ rejectdirs3[counter] = rejectdirs3[counter][root_len:] ++ for counter in xrange(len(outputs)): ++ directory = os.path.dirname(outputs[counter]) ++ while directory not in rejectdirs and \ ++ os.path.dirname(directory) not in rejectdirs2 and \ ++ os.path.dirname(os.path.dirname(directory)) not in rejectdirs3: ++ dirname = '%dir ' + directory ++ if dirname not in dirs: ++ dirs.append(dirname) ++ directory = os.path.dirname(directory) ++ outputs += dirs + self.execute(write_file, + (self.record, outputs), + "writing list of installed files to '%s'" % diff --git a/packaging/python-test_structmembers.patch b/packaging/python-test_structmembers.patch new file mode 100644 index 0000000..a250dea --- /dev/null +++ b/packaging/python-test_structmembers.patch @@ -0,0 +1,21 @@ +Index: Modules/_testcapimodule.c +=================================================================== +--- Modules/_testcapimodule.c (revision 85001) ++++ Modules/_testcapimodule.c (working copy) +@@ -5,6 +5,7 @@ + * standard Python regression test, via Lib/test/test_capi.py. + */ + ++#define PY_SSIZE_T_CLEAN + #include "Python.h" + #include <float.h> + #include "structmember.h" +@@ -593,7 +594,7 @@ + { + PyObject *tuple, *obj; + Py_UNICODE *value; +- int len; ++ Py_ssize_t len; + + /* issue4122: Undefined reference to _Py_ascii_whitespace on Windows */ + /* Just use the macro and check that it compiles */ diff --git a/packaging/remove-static-libpython.diff b/packaging/remove-static-libpython.diff new file mode 100644 index 0000000..b3f7805 --- /dev/null +++ b/packaging/remove-static-libpython.diff @@ -0,0 +1,49 @@ +--- Makefile.pre.in ++++ Makefile.pre.in +@@ -396,7 +396,7 @@ + + + # Build the interpreter +-$(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) ++$(BUILDPYTHON): Modules/python.o $(LDLIBRARY) + $(LINKCC) $(LDFLAGS) $(LINKFORSHARED) -o $@ \ + Modules/python.o \ + $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) +@@ -412,18 +412,6 @@ + *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \ + esac + +-# Build static library +-# avoid long command lines, same as LIBRARY_OBJS +-$(LIBRARY): $(LIBRARY_OBJS) +- -rm -f $@ +- $(AR) $(ARFLAGS) $@ Modules/getbuildinfo.o +- $(AR) $(ARFLAGS) $@ $(PARSER_OBJS) +- $(AR) $(ARFLAGS) $@ $(OBJECT_OBJS) +- $(AR) $(ARFLAGS) $@ $(PYTHON_OBJS) +- $(AR) $(ARFLAGS) $@ $(MODULE_OBJS) $(SIGNAL_OBJS) +- $(AR) $(ARFLAGS) $@ $(MODOBJS) +- $(RANLIB) $@ +- + libpython$(VERSION).so: $(LIBRARY_OBJS) + if test $(INSTSONAME) != $(LDLIBRARY); then \ + $(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \ +@@ -1008,18 +996,6 @@ + else true; \ + fi; \ + done +- @if test -d $(LIBRARY); then :; else \ +- if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \ +- if test "$(SO)" = .dll; then \ +- $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \ +- else \ +- $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \ +- $(RANLIB) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \ +- fi; \ +- else \ +- echo Skip install of $(LIBRARY) - use make frameworkinstall; \ +- fi; \ +- fi + $(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c + $(INSTALL_DATA) Modules/python.o $(DESTDIR)$(LIBPL)/python.o + $(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in |