[python3/python3.3] 3.3.0-0.1.b1: 3.2 -> 3.3
dmalcolm
dmalcolm at fedoraproject.org
Fri Jul 20 20:35:43 UTC 2012
commit 1c94c1ae4ebfa045a6ebaf83b6f88afc55573997
Author: David Malcolm <dmalcolm at redhat.com>
Date: Fri Jul 20 16:34:09 2012 -0400
3.3.0-0.1.b1: 3.2 -> 3.3
* Fri Jul 20 2012 David Malcolm <dmalcolm at redhat.com> - 3.3.0-0.1.b1
- 3.2 -> 3.3: https://fedoraproject.org/wiki/Features/Python_3.3
- 3.3.0b1: refresh patches 3, 55, 102, 111, 113, 114, 134, 157; drop upstream
patch 147; regenenerate autotools patch; drop "--with-wide-unicode" from
configure (PEP 393); "plat-linux2" -> "plat-linux" (upstream issue 12326);
"bz2" -> "_bz2" and "crypt" -> "_crypt"; egg-info files are no longer shipped
for stdlib (upstream issues 10645 and 12218); email/test moved to
test/test_email; add /usr/bin/pyvenv[-3.3] and venv module (PEP 405); add
_decimal and _lzma modules; make collections modules explicit in payload again
(upstream issue 11085); add _testbuffer module to tests subpackage (added in
upstream commit 3f9b3b6f7ff0)
...sts.patch => 00003-remove-mimeaudio-tests.patch | 16 +-
00055-systemtap.patch | 912 ++++++++++++++++----
00111-no-static-lib.patch | 18 +-
00113-more-configuration-flags.patch | 20 +-
00114-statvfs-f_flag-constants.patch | 26 +-
00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch | 16 +-
00147-add-debug-malloc-stats.patch | 590 -------------
00157-uid-gid-overflows.patch | 168 ++--
05000-autotool-intermediates.patch | 752 ++++++++++++++--
...3.2.3-lib64.patch => python-3.3.0b1-lib64.patch | 78 +-
python3.spec | 98 ++-
sources | 2 +-
12 files changed, 1642 insertions(+), 1054 deletions(-)
---
diff --git a/python-3.2b2-remove-mimeaudio-tests.patch b/00003-remove-mimeaudio-tests.patch
similarity index 67%
rename from python-3.2b2-remove-mimeaudio-tests.patch
rename to 00003-remove-mimeaudio-tests.patch
index 118b7b2..08ae10a 100644
--- a/python-3.2b2-remove-mimeaudio-tests.patch
+++ b/00003-remove-mimeaudio-tests.patch
@@ -1,20 +1,14 @@
-diff -up Python-3.2b2/Lib/email/test/test_email.py.remove-mimeaudio-tests Python-3.2b2/Lib/email/test/test_email.py
---- Python-3.2b2/Lib/email/test/test_email.py.remove-mimeaudio-tests 2010-12-18 13:25:38.000000000 -0500
-+++ Python-3.2b2/Lib/email/test/test_email.py 2010-12-28 16:50:34.910309105 -0500
-@@ -977,53 +977,6 @@ Blah blah blah
+diff -up Python-3.3.0b1/Lib/test/test_email/test_email.py.remove-mimeaudio-tests Python-3.3.0b1/Lib/test/test_email/test_email.py
+--- Python-3.3.0b1/Lib/test/test_email/test_email.py.remove-mimeaudio-tests 2012-06-26 16:19:47.000000000 -0400
++++ Python-3.3.0b1/Lib/test/test_email/test_email.py 2012-07-20 12:04:45.316472136 -0400
+@@ -1285,47 +1285,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:
+- with openfile('audiotest.au', 'rb') as fp:
- self._audiodata = fp.read()
- self._au = MIMEAudio(self._audiodata)
-
diff --git a/00055-systemtap.patch b/00055-systemtap.patch
index f87fc60..33b82d4 100644
--- a/00055-systemtap.patch
+++ b/00055-systemtap.patch
@@ -1,214 +1,808 @@
-diff -up Python-3.2b2/configure.in.systemtap Python-3.2b2/configure.in
---- Python-3.2b2/configure.in.systemtap 2010-12-13 02:59:39.000000000 -0500
-+++ Python-3.2b2/configure.in 2010-12-28 17:01:58.044059433 -0500
-@@ -2470,6 +2470,38 @@ if test "$with_valgrind" != no; then
+diff -up Python-3.3.0b1/configure.ac.systemtap Python-3.3.0b1/configure.ac
+--- Python-3.3.0b1/configure.ac.systemtap 2012-06-26 16:19:58.000000000 -0400
++++ Python-3.3.0b1/configure.ac 2012-07-20 13:05:39.221792032 -0400
+@@ -2616,6 +2616,23 @@ if test "$with_valgrind" != no; then
OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
fi
-+# Check for dtrace support
-+AC_MSG_CHECKING(for --with-dtrace)
-+AC_ARG_WITH(dtrace,
-+ AC_HELP_STRING(--with(out)-dtrace, disable/enable dtrace support))
-+
-+if test ! -z "$with_dtrace"
-+then
-+ if dtrace -G -o /dev/null -s $srcdir/Include/pydtrace.d 2>/dev/null
-+ then
-+ AC_DEFINE(WITH_DTRACE, 1,
-+ [Define if you want to compile in Dtrace support])
-+ with_dtrace="Sun"
-+ DTRACEOBJS="Python/dtrace.o"
-+ DTRADEHDRS=""
-+ elif dtrace -h -o /dev/null -s $srcdir/Include/pydtrace.d
-+ then
-+ AC_DEFINE(WITH_DTRACE, 1,
-+ [Define if you want to compile in Dtrace support])
-+ with_dtrace="Apple"
-+ DTRACEOBJS=""
-+ DTRADEHDRS="pydtrace.h"
-+ else
-+ with_dtrace="no"
-+ fi
-+else
-+ with_dtrace="no"
++# Check for systemtap support
++# On Linux, /usr/bin/dtrace is in fact a shim to SystemTap
++AC_MSG_CHECKING([for --with-systemtap])
++AC_ARG_WITH([systemtap],
++ AC_HELP_STRING([--with(out)-systemtap], [disable/enable SystemTap support]),,
++ with_systemtap=no)
++AC_MSG_RESULT([$with_systemtap])
++if test "$with_systemtap" != no; then
++ AC_DEFINE(WITH_SYSTEMTAP, 1,
++ [Define if you want to compile in SystemTap support])
++ SYSTEMTAPOBJS="Python/pysystemtap.o"
++ SYSTEMTAPDEPS="\$(srcdir)/Python/pysystemtap.h"
+fi
+
-+AC_MSG_RESULT($with_dtrace)
-+AC_SUBST(DTRACEOBJS)
-+AC_SUBST(DTRACEHDRS)
++AC_SUBST(SYSTEMTAPOBJS)
++AC_SUBST(SYSTEMTAPDEPS)
+
# -I${DLINCLDIR} is added to the compile rule for importdl.o
AC_SUBST(DLINCLDIR)
DLINCLDIR=.
-diff -up Python-3.2b2/Include/pydtrace.d.systemtap Python-3.2b2/Include/pydtrace.d
---- Python-3.2b2/Include/pydtrace.d.systemtap 2010-12-28 16:58:41.762936379 -0500
-+++ Python-3.2b2/Include/pydtrace.d 2010-12-28 16:58:41.762936379 -0500
-@@ -0,0 +1,10 @@
-+provider python {
-+ probe function__entry(const char *, const char *, int);
-+ probe function__return(const char *, const char *, int);
-+};
+diff -up Python-3.3.0b1/configure.systemtap Python-3.3.0b1/configure
+--- Python-3.3.0b1/configure.systemtap 2012-06-26 16:19:58.000000000 -0400
++++ Python-3.3.0b1/configure 2012-07-20 13:05:39.220792044 -0400
+@@ -638,6 +638,8 @@ TRUE
+ MACHDEP_OBJS
+ DYNLOADFILE
+ DLINCLDIR
++SYSTEMTAPDEPS
++SYSTEMTAPOBJS
+ THREADOBJ
+ LDLAST
+ USE_THREAD_MODULE
+@@ -793,6 +795,7 @@ with_doc_strings
+ with_tsc
+ with_pymalloc
+ with_valgrind
++with_systemtap
+ with_fpectl
+ with_libm
+ with_libc
+@@ -1468,6 +1471,7 @@ Optional Packages:
+ --with(out)-tsc enable/disable timestamp counter profile
+ --with(out)-pymalloc disable/enable specialized mallocs
+ --with-valgrind Enable Valgrind support
++ --with(out)-systemtap disable/enable SystemTap support
+ --with-fpectl enable SIGFPE catching
+ --with-libm=STRING math library
+ --with-libc=STRING C library
+@@ -9639,6 +9643,31 @@ fi
+ OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
+ fi
+
++# Check for systemtap support
++# On Linux, /usr/bin/dtrace is in fact a shim to SystemTap
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-systemtap" >&5
++$as_echo_n "checking for --with-systemtap... " >&6; }
++
++# Check whether --with-systemtap was given.
++if test "${with_systemtap+set}" = set; then :
++ withval=$with_systemtap;
++else
++ with_systemtap=no
++fi
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_systemtap" >&5
++$as_echo "$with_systemtap" >&6; }
++if test "$with_systemtap" != no; then
++
++$as_echo "#define WITH_SYSTEMTAP 1" >>confdefs.h
++
++ SYSTEMTAPOBJS="Python/pysystemtap.o"
++ SYSTEMTAPDEPS="\$(srcdir)/Python/pysystemtap.h"
++fi
++
++
++
++
+ # -I${DLINCLDIR} is added to the compile rule for importdl.o
+
+ DLINCLDIR=.
+diff -up Python-3.3.0b1/Doc/howto/index.rst.systemtap Python-3.3.0b1/Doc/howto/index.rst
+--- Python-3.3.0b1/Doc/howto/index.rst.systemtap 2012-06-26 16:19:37.000000000 -0400
++++ Python-3.3.0b1/Doc/howto/index.rst 2012-07-20 13:05:39.215792107 -0400
+@@ -29,4 +29,5 @@ Currently, the HOWTOs are:
+ webservers.rst
+ argparse.rst
+ ipaddress.rst
++ instrumentation.rst
+
+diff -up Python-3.3.0b1/Doc/howto/instrumentation.rst.systemtap Python-3.3.0b1/Doc/howto/instrumentation.rst
+--- Python-3.3.0b1/Doc/howto/instrumentation.rst.systemtap 2012-07-20 13:05:39.215792107 -0400
++++ Python-3.3.0b1/Doc/howto/instrumentation.rst 2012-07-20 13:05:39.215792107 -0400
+@@ -0,0 +1,295 @@
++.. _instrumentation:
++
++====================================
++Instrumenting CPython with SystemTap
++====================================
++
++:author: David Malcolm <dmalcolm at redhat.com>
++
++DTrace and SystemTap are monitoring tools, each providing a way to inspect
++what the processes on a computer system are doing. They both use
++domain-specific languages allowing a user to write scripts which:
++
++ - filter which processes are to be observed
++ - gather data from the processes of interest
++ - generate reports on the data
++
++As of Python 3.3, CPython can be built with embedded "markers" that can be
++observed by a SystemTap script, making it easier to monitor what the CPython
++processes on a system are doing.
++
++.. Potentially this document could be expanded to also cover DTrace markers.
++ However, I'm not a DTrace expert.
++
++.. I'm using ".. code-block:: c" for SystemTap scripts, as "c" is syntactically
++ the closest match that Sphinx supports
++
++
++Enabling the static markers
++---------------------------
++
++In order to build CPython with the embedded markers for SystemTap, the
++SystemTap development tools must be installed.
++
++On a Fedora or Red Hat Enterprise Linux machine, this can be done via::
++
++ yum install systemtap-sdt-devel
++
++CPython must then be configured `--with-systemtap`::
++
++ checking for --with-systemtap... yes
++
++You can verify if the SystemTap static markers are present in the built
++binary by seeing if it contains a ".note.stapsdt" section.
++
++.. code-block:: bash
++
++ $ eu-readelf -S ./python | grep .note.stapsdt
++ [29] .note.stapsdt NOTE 0000000000000000 00308d78 000000b8 0 0 0 4
++
++If you've built python as a shared library (with --enable-shared), you need
++to look instead within the shared library. For example:
++
++.. code-block:: bash
++
++ $ eu-readelf -S libpython3.3dm.so.1.0 | grep .note.stapsdt
++ [28] .note.stapsdt NOTE 0000000000000000 00365b68 000000b8 0 0 0 4
++
++Earlier versions of SystemTap stored the markers in a ".probes" section.
++
++For the curious, you can see the metadata for the static markers using this
++invocation.
++
++.. code-block:: bash
++
++ $ eu-readelf -x .note.stapsdt ./python
++
++ Hex dump of section [29] '.note.stapsdt', 184 bytes at offset 0x308d78:
++ 0x00000000 08000000 45000000 03000000 73746170 ....E.......stap
++ 0x00000010 73647400 d4664b00 00000000 4fc36600 sdt..fK.....O.f.
++ 0x00000020 00000000 488d9000 00000000 70797468 ....H.......pyth
++ 0x00000030 6f6e0066 756e6374 696f6e5f 5f656e74 on.function__ent
++ 0x00000040 72790038 40257261 78203840 25726478 ry.8@%rax 8@%rdx
++ 0x00000050 202d3440 25656378 00000000 08000000 -4@%ecx........
++ 0x00000060 46000000 03000000 73746170 73647400 F.......stapsdt.
++ 0x00000070 0d674b00 00000000 4fc36600 00000000 .gK.....O.f.....
++ 0x00000080 4a8d9000 00000000 70797468 6f6e0066 J.......python.f
++ 0x00000090 756e6374 696f6e5f 5f726574 75726e00 unction__return.
++ 0x000000a0 38402572 61782038 40257264 78202d34 8@%rax 8@%rdx -4
++ 0x000000b0 40256563 78000000 @%ecx...
++
++and a sufficiently modern eu-readelf can print the metadata:
++
++.. code-block:: bash
++
++ $ eu-readelf -n ./python
++
++ Note section [ 1] '.note.gnu.build-id' of 36 bytes at offset 0x190:
++ Owner Data size Type
++ GNU 20 GNU_BUILD_ID
++ Build ID: a28f8db1b224530b0d38ad7b82a249cf7c3f18d6
++
++ Note section [27] '.note.stapsdt' of 184 bytes at offset 0x1ae884:
++ Owner Data size Type
++ stapsdt 70 Version: 3
++ PC: 0xe0d3a, Base: 0x14b150, Semaphore: 0x3ae882
++ Provider: python, Name: function__return, Args: '8@%rbx 8@%r13 -4@%eax'
++ stapsdt 69 Version: 3
++ PC: 0xe0f37, Base: 0x14b150, Semaphore: 0x3ae880
++ Provider: python, Name: function__entry, Args: '8@%rbx 8@%r13 -4@%eax'
++
++The above metadata contains information for SystemTap describing how it can
++patch strategically-placed machine code instructions to enable the tracing
++hooks used by a SystemTap script.
++
++
++Static markers
++--------------
++
++The low-level way to use the SystemTap integration is to use the static
++markers directly. This requires you to explicitly state the binary file
++containing them.
++
++For example, this script can be used to show the call/return hierarchy of a
++Python script:
++
++.. code-block:: c
++
++ probe process('python').mark("function__entry") {
++ filename = user_string($arg1);
++ funcname = user_string($arg2);
++ lineno = $arg3;
++
++ printf("%s => %s in %s:%d\\n",
++ thread_indent(1), funcname, filename, lineno);
++ }
++
++ probe process('python').mark("function__return") {
++ filename = user_string($arg1);
++ funcname = user_string($arg2);
++ lineno = $arg3;
++
++ printf("%s <= %s in %s:%d\\n",
++ thread_indent(-1), funcname, filename, lineno);
++ }
++
++It can be invoked like this:
++
++.. code-block:: bash
++
++ $ stap \
++ show-call-hierarchy.stp \
++ -c ./python test.py
++
++The output looks like this::
++
++ 11408 python(8274): => __contains__ in Lib/_abcoll.py:362
++ 11414 python(8274): => __getitem__ in Lib/os.py:425
++ 11418 python(8274): => encode in Lib/os.py:490
++ 11424 python(8274): <= encode in Lib/os.py:493
++ 11428 python(8274): <= __getitem__ in Lib/os.py:426
++ 11433 python(8274): <= __contains__ in Lib/_abcoll.py:366
++
++where the columns are:
++
++ - time in microseconds since start of script
++
++ - name of executable
++
++ - PID of process
++
++and the remainder indicates the call/return hierarchy as the script executes.
++
++For a `--enable-shared` build of CPython, the markers are contained within the
++libpython shared library, and the probe's dotted path needs to reflect this. For
++example, this line from the above example::
++
++ probe process('python').mark("function__entry") {
++
++should instead read::
++
++ probe process('python').library("libpython3.3dm.so.1.0").mark("function__entry") {
++
++(assuming a debug build of CPython 3.3)
++
++.. I'm reusing the "c:function" type for markers
++
++.. c:function:: function__entry(str filename, str funcname, int lineno)
++
++ This marker indicates that execution of a Python function has begun. It is
++ only triggered for pure-python (bytecode) functions.
++
++ The filename, function name, and line number are provided back to the
++ tracing script as positional arguments, which must be accessed using
++ `$arg1`, `$arg2`:
++
++ * `$arg1` : `(const char *)` filename, accessible using `user_string($arg1)`
++
++ * `$arg2` : `(const char *)` function name, accessible using
++ `user_string($arg2)`
++
++ * `$arg3` : `int` line number
++
++ * `$arg4` : `(PyFrameObject *)`, the frame being executed
++
++.. c:function:: function__return(str filename, str funcname, int lineno)
++
++ This marker is the converse of `function__entry`, and indicates that
++ execution of a Python function has ended (either via ``return``, or via an
++ exception). It is only triggered for pure-python (bytecode) functions.
++
++ The arguments are the same as for `function__entry`
++
++
++Tapsets
++-------
++
++The higher-level way to use the SystemTap integration is to use a "tapset":
++SystemTap's equivalent of a library, which hides some of the lower-level
++details of the static markers.
++
++Here is a tapset file, based on a non-shared build of CPython:
++
++.. code-block:: c
++
++ /*
++ Provide a higher-level wrapping around the function__entry and
++ function__return markers:
++ */
++ probe python.function.entry = process("python").mark("function__entry")
++ {
++ filename = user_string($arg1);
++ funcname = user_string($arg2);
++ lineno = $arg3;
++ frameptr = $arg4
++ }
++ probe python.function.return = process("python").mark("function__return")
++ {
++ filename = user_string($arg1);
++ funcname = user_string($arg2);
++ lineno = $arg3;
++ frameptr = $arg4
++ }
++
++If this file is installed in SystemTap's tapset directory (e.g.
++`/usr/share/systemtap/tapset`), then these additional probepoints become
++available:
++
++.. c:function:: python.function.entry(str filename, str funcname, int lineno, frameptr)
++
++ This probe point indicates that execution of a Python function has begun.
++ It is only triggered for pure-python (bytecode) functions.
++
++.. c:function:: python.function.return(str filename, str funcname, int lineno, frameptr)
++
++ This probe point is the converse of `python.function.return`, and indicates
++ that execution of a Python function has ended (either via ``return``, or
++ via an exception). It is only triggered for pure-python (bytecode) functions.
++
++
++Examples
++--------
++This SystemTap script uses the tapset above to more cleanly implement the
++example given above of tracing the Python function-call hierarchy, without
++needing to directly name the static markers:
++
++.. code-block:: c
++
++ probe python.function.entry
++ {
++ printf("%s => %s in %s:%d\n",
++ thread_indent(1), funcname, filename, lineno);
++ }
++
++ probe python.function.return
++ {
++ printf("%s <= %s in %s:%d\n",
++ thread_indent(-1), funcname, filename, lineno);
++ }
++
+
-+#pragma D attributes Evolving/Evolving/Common provider python provider
-+#pragma D attributes Private/Private/Common provider python module
-+#pragma D attributes Private/Private/Common provider python function
-+#pragma D attributes Evolving/Evolving/Common provider python name
-+#pragma D attributes Evolving/Evolving/Common provider python args
-diff -up Python-3.2b2/Makefile.pre.in.systemtap Python-3.2b2/Makefile.pre.in
---- Python-3.2b2/Makefile.pre.in.systemtap 2010-12-28 16:58:41.000000000 -0500
-+++ Python-3.2b2/Makefile.pre.in 2010-12-28 17:00:58.607310089 -0500
-@@ -328,6 +328,7 @@ PYTHON_OBJS= \
++The following script uses the tapset above to provide a top-like view of all
++running CPython code, showing the top 20 most frequently-entered bytecode
++frames, each second, across the whole system:
++
++.. code-block:: c
++
++ global fn_calls;
++
++ probe python.function.entry
++ {
++ fn_calls[pid(), filename, funcname, lineno] += 1;
++ }
++
++ probe timer.ms(1000) {
++ printf("\033[2J\033[1;1H") /* clear screen */
++ printf("%6s %80s %6s %30s %6s\n",
++ "PID", "FILENAME", "LINE", "FUNCTION", "CALLS")
++ foreach ([pid, filename, funcname, lineno] in fn_calls- limit 20) {
++ printf("%6d %80s %6d %30s %6d\n",
++ pid, filename, lineno, funcname,
++ fn_calls[pid, filename, funcname, lineno]);
++ }
++ delete fn_calls;
++ }
++
+diff -up Python-3.3.0b1/Lib/test/test_systemtap.py.systemtap Python-3.3.0b1/Lib/test/test_systemtap.py
+--- Python-3.3.0b1/Lib/test/test_systemtap.py.systemtap 2012-07-20 13:05:39.215792107 -0400
++++ Python-3.3.0b1/Lib/test/test_systemtap.py 2012-07-20 13:05:39.215792107 -0400
+@@ -0,0 +1,205 @@
++# Verify that systemtap static probes work
++#
++import subprocess
++import sys
++import sysconfig
++import os
++import unittest
++
++from test.support import run_unittest, TESTFN, unlink
++
++if '--with-systemtap' not in sysconfig.get_config_var('CONFIG_ARGS'):
++ raise unittest.SkipTest("Python was not configured --with-systemtap")
++
++try:
++ _, stap_version = subprocess.Popen(["stap", "-V"],
++ stdout=subprocess.PIPE,
++ stderr=subprocess.PIPE,
++ ).communicate()
++except OSError:
++ # This is what "no stap" looks like. There may, however, be other
++ # errors that manifest this way too.
++ raise unittest.SkipTest("Couldn't find stap on the path")
++
++def invoke_systemtap_script(script, cmd):
++ # Start a child process, probing with the given systemtap script
++ # (passed as stdin to the "stap" tool)
++ # The script should be a bytes instance
++ # Return (stdout, stderr) pair
++
++ p = subprocess.Popen(["stap", "-", '-vv', '-c', cmd],
++ stdin=subprocess.PIPE,
++ stdout=subprocess.PIPE,
++ stderr=subprocess.PIPE)
++ out, err = p.communicate(input=script)
++ return out, err
++
++# Verify that stap can run a simple "hello world"-style script
++# This can fail for various reasons:
++# - missing kernel headers
++# - permissions (a non-root user needs to be in the "stapdev" group)
++TRIVIAL_STAP_SCRIPT = b'probe begin { println("hello world") exit () }'
++
++out, err = invoke_systemtap_script(TRIVIAL_STAP_SCRIPT, 'true')
++if out != b'hello world\n':
++ raise unittest.SkipTest("Test systemtap script did not run; stderr was: %s" % err)
++
++# We don't expect stderr to be empty, since we're invoking stap with "-vv": stap
++# will (we hope) generate debugging output on stderr.
++
++def invoke_python_under_systemtap(script, pythoncode=None, pythonfile=None):
++ # Start a child python process, probing with the given systemtap script
++ # (passed as stdin to the "stap" tool)
++ # The script should be a bytes instance
++ # Return (stdout, stderr) pair
++
++ if pythonfile:
++ pythoncmd = '%s %s' % (sys.executable, pythonfile)
++ else:
++ pythoncmd = '%s -c %r' % (sys.executable, pythoncode)
++
++ # The process tree of a stap invocation of a command goes through
++ # something like this:
++ # stap ->fork/exec(staprun; exec stapio ->f/e(-c cmd); exec staprun -r)
++ # and this trip through setuid leads to LD_LIBRARY_PATH being dropped,
++ # which would lead to an --enable-shared build of python failing to be
++ # find its libpython, with an error like:
++ # error while loading shared libraries: libpython3.3dm.so.1.0: cannot
++ # open shared object file: No such file or directory
++ # Hence we need to jump through some hoops to expose LD_LIBRARY_PATH to
++ # the invoked python process:
++ LD_LIBRARY_PATH = os.environ.get('LD_LIBRARY_PATH', '')
++ if LD_LIBRARY_PATH:
++ pythoncmd = 'env LD_LIBRARY_PATH=%s ' % LD_LIBRARY_PATH + pythoncmd
++
++ return invoke_systemtap_script(script, pythoncmd)
++
++# When using the static markers, we need to supply the prefix of a systemtap
++# dotted probe point that containing the marker.
++# See http://sourceware.org/systemtap/langref/Probe_points.html
++#
++# We need to determine if this is a shared-library build
++#
++# Note that sysconfig can get this wrong; see:
++# http://bugs.python.org/issue14774
++#
++if '--enable-shared' in sysconfig.get_config_var('CONFIG_ARGS'):
++ # For a shared-library build, the markers are in library(INSTSONAME):
++ INSTSONAME = sysconfig.get_config_var('INSTSONAME')
++ probe_prefix = 'process("%s").library("%s")' % (sys.executable, INSTSONAME)
++else:
++ # For a non-shared-library build, we can simply use sys.executable:
++ probe_prefix = 'process("%s")' % sys.executable
++
++# The following script ought to generate lots of lines showing recursive
++# function entry and return, of the form:
++# 11408 python(8274): => __contains__ in Lib/_abcoll.py:362
++# 11414 python(8274): => __getitem__ in Lib/os.py:425
++# 11418 python(8274): => encode in Lib/os.py:490
++# 11424 python(8274): <= encode in Lib/os.py:493
++# 11428 python(8274): <= __getitem__ in Lib/os.py:426
++# 11433 python(8274): <= __contains__ in Lib/_abcoll.py:366
++# where the column are:
++# - time in microseconds since start of script
++# - name of executable
++# - PID of process
++# and the remainder indicates the call/return hierarchy
++
++hierarchy_script = ('''
++probe %s.mark("function__entry") {
++ filename = user_string($arg1);
++ funcname = user_string($arg2);
++ lineno = $arg3;
++
++ printf("%%s => %%s in %%s:%%d\\n", thread_indent(1), funcname, filename, lineno);
++}
++
++probe %s.mark("function__return") {
++ filename = user_string($arg1);
++ funcname = user_string($arg2);
++ lineno = $arg3;
++
++ printf("%%s <= %%s in %%s:%%d\\n", thread_indent(-1), funcname, filename, lineno);
++}
++''' % (probe_prefix, probe_prefix)).encode('utf-8')
++
++
++class ErrorDumper:
++ # A context manager that dumps extra information if an exception is raised,
++ # to help track down why the problem occurred
++ def __init__(self, out, err):
++ self.out = out
++ self.err = err
++
++ def __enter__(self):
++ pass
++
++ def __exit__(self, type_, value, traceback):
++ if type_:
++ # an exception is being raised:
++ print('stdout: %s' % out.decode())
++ print('stderr: %s' % err.decode())
++
++class SystemtapTests(unittest.TestCase):
++
++ def test_invoking_python(self):
++ # Ensure that we can invoke python under stap, with a trivial stap
++ # script:
++ out, err = invoke_python_under_systemtap(
++ b'probe begin { println("hello from stap") exit () }',
++ pythoncode="print('hello from python')")
++ with ErrorDumper(out, err):
++ self.assertIn(b'hello from stap', out)
++ self.assertIn(b'hello from python', out)
++
++ def test_function_entry(self):
++ # Ensure that the function_entry static marker works
++ out, err = invoke_python_under_systemtap(hierarchy_script)
++ # stdout ought to contain various lines showing recursive function
++ # entry and return (see above)
++
++ # Uncomment this for debugging purposes:
++ # print(out.decode('utf-8'))
++
++ # Executing the cmdline-supplied "pass":
++ # 0 python(8274): => <module> in <string>:1
++ # 5 python(8274): <= <module> in <string>:1
++ with ErrorDumper(out, err):
++ self.assertIn(b'=> <module> in <string>:1', out,
++ msg="stdout: %s\nstderr: %s\n" % (out, err))
++
++ def test_encoding(self):
++ # Ensure that scripts and function names containing non-Latin 1 code
++ # points are handled:
++ pythonfile = TESTFN + '_☠.py'
++ try:
++ unlink(pythonfile)
++ f = open(pythonfile, "wb")
++ f.write("""
++# Sample script with non-ASCII filename, for use by test_systemtap.py
++# Implicitly UTF-8
++
++def 文字化け():
++ '''Function with non-ASCII identifier; I believe this reads "mojibake"'''
++ print("hello world!")
++
++文字化け()
++""".encode('utf-8'))
++ f.close()
++
++ out, err = invoke_python_under_systemtap(hierarchy_script,
++ pythonfile=pythonfile)
++ out_utf8 = out.decode('utf-8')
++ with ErrorDumper(out, err):
++ self.assertIn('=> <module> in %s:5' % pythonfile, out_utf8)
++ self.assertIn(' => 文字化け in %s:5' % pythonfile, out_utf8)
++ self.assertIn(' <= 文字化け in %s:7' % pythonfile, out_utf8)
++ self.assertIn('<= <module> in %s:9' % pythonfile, out_utf8)
++ finally:
++ unlink(pythonfile)
++
++def test_main():
++ run_unittest(SystemtapTests)
++
++if __name__ == "__main__":
++ test_main()
+diff -up Python-3.3.0b1/Makefile.pre.in.systemtap Python-3.3.0b1/Makefile.pre.in
+--- Python-3.3.0b1/Makefile.pre.in.systemtap 2012-06-26 16:19:51.000000000 -0400
++++ Python-3.3.0b1/Makefile.pre.in 2012-07-20 13:05:39.216792095 -0400
+@@ -358,6 +358,7 @@ PYTHON_OBJS= \
Python/formatter_unicode.o \
Python/fileutils.o \
Python/$(DYNLOADFILE) \
-+ @DTRACEOBJS@ \
++ @SYSTEMTAPOBJS@ \
$(LIBOBJS) \
$(MACHDEP_OBJS) \
$(THREADOBJ)
-@@ -632,6 +633,18 @@ Objects/typeobject.o: $(srcdir)/Objects/
+@@ -708,7 +709,8 @@ Objects/setobject.o: $(srcdir)/Objects/s
+ $(OPCODETARGETS_H): $(OPCODETARGETGEN_FILES)
+ $(OPCODETARGETGEN) $(OPCODETARGETS_H)
+
+-Python/ceval.o: $(OPCODETARGETS_H) $(srcdir)/Python/ceval_gil.h
++Python/ceval.o: $(OPCODETARGETS_H) $(srcdir)/Python/ceval_gil.h \
++ $(srcdir)/Python/ceval_systemtap.h @SYSTEMTAPDEPS@
+
+ Python/formatter_unicode.o: $(srcdir)/Python/formatter_unicode.c \
+ $(BYTESTR_DEPS)
+@@ -719,6 +721,13 @@ Objects/typeobject.o: $(srcdir)/Objects/
$(srcdir)/Objects/typeslots.inc: $(srcdir)/Include/typeslots.h $(srcdir)/Objects/typeslots.py
$(PYTHON) $(srcdir)/Objects/typeslots.py < $(srcdir)/Include/typeslots.h > $(srcdir)/Objects/typeslots.inc
-+# Only needed with --with-dtrace
-+buildinclude:
-+ mkdir -p Include
-+
-+Include/pydtrace.h: buildinclude $(srcdir)/Include/pydtrace.d
-+ dtrace -o $@ $(DFLAGS) -C -h -s $(srcdir)/Include/pydtrace.d
++# Only needed with --with-systemtap; not a public header:
++$(srcdir)/Python/pysystemtap.h: $(srcdir)/Python/pysystemtap.d
++ dtrace -o $@ $(DFLAGS) -C -h -s $(srcdir)/Python/pysystemtap.d
+
-+Python/ceval.o: Include/pydtrace.h
-+
-+Python/dtrace.o: buildinclude $(srcdir)/Include/pydtrace.d Python/ceval.o
-+ dtrace -o $@ $(DFLAGS) -C -G -s $(srcdir)/Include/pydtrace.d Python/ceval.o
++Python/pysystemtap.o: $(srcdir)/Python/pysystemtap.d Python/ceval.o
++ dtrace -o $@ $(DFLAGS) -C -G -s $(srcdir)/Python/pysystemtap.d Python/ceval.o
+
############################################################################
# Header files
-@@ -1282,7 +1295,7 @@ Python/thread.o: @THREADHEADERS@
- .PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure
- .PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools
- .PHONY: frameworkaltinstallunixtools recheck autoconf clean clobber distclean
--.PHONY: smelly funny patchcheck
-+.PHONY: smelly funny patchcheck buildinclude
- .PHONY: gdbhooks
-
- # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
-diff -up Python-3.2b2/pyconfig.h.in.systemtap Python-3.2b2/pyconfig.h.in
---- Python-3.2b2/pyconfig.h.in.systemtap 2010-11-20 05:29:12.000000000 -0500
-+++ Python-3.2b2/pyconfig.h.in 2010-12-28 16:58:41.765937360 -0500
-@@ -1092,6 +1092,9 @@
- /* Define if you want documentation strings in extension modules */
- #undef WITH_DOC_STRINGS
-
-+/* Define if you want to compile in Dtrace support */
-+#undef WITH_DTRACE
-+
- /* Define if you want to use the new-style (Openstep, Rhapsody, MacOS) dynamic
- linker (dyld) instead of the old-style (NextStep) dynamic linker (rld).
- Dyld is necessary to support frameworks. */
-diff -up Python-3.2b2/Python/ceval.c.systemtap Python-3.2b2/Python/ceval.c
---- Python-3.2b2/Python/ceval.c.systemtap 2010-12-03 15:14:31.000000000 -0500
-+++ Python-3.2b2/Python/ceval.c 2010-12-28 16:58:41.768935588 -0500
-@@ -18,6 +18,10 @@
+@@ -1335,6 +1344,7 @@ clean: pycremoval
+ -rm -f Lib/lib2to3/*Grammar*.pickle
+ -rm -f $(SYSCONFIGDATA)
+ -rm -f Modules/_testembed Modules/_freeze_importlib
++ -rm -f $(srcdir)/Python/pysystemtap.h
+
+ profile-removal:
+ find . -name '*.gc??' -exec rm -f {} ';'
+diff -up Python-3.3.0b1/Misc/NEWS.systemtap Python-3.3.0b1/Misc/NEWS
+--- Python-3.3.0b1/Misc/NEWS.systemtap 2012-06-26 16:19:51.000000000 -0400
++++ Python-3.3.0b1/Misc/NEWS 2012-07-20 13:05:39.217792083 -0400
+@@ -55,6 +55,11 @@ Core and Builtins
+
+ - Issue #15038: Optimize python Locks on Windows.
+
++- Issue #14776: Added a new --with-systemtap configure-time option, which adds
++ static markers for SystemTap so that SystemTap scripts can observe bytecode
++ frames being entered and exited and so generate reports on what Python code
++ is being exectuted.
++
+ Library
+ -------
+
+diff -up Python-3.3.0b1/pyconfig.h.in.systemtap Python-3.3.0b1/pyconfig.h.in
+--- Python-3.3.0b1/pyconfig.h.in.systemtap 2012-06-26 16:19:58.000000000 -0400
++++ Python-3.3.0b1/pyconfig.h.in 2012-07-20 13:05:39.222792020 -0400
+@@ -1306,6 +1306,9 @@
+ /* Define if you want to compile in Python-specific mallocs */
+ #undef WITH_PYMALLOC
+
++/* Define if you want to compile in SystemTap support */
++#undef WITH_SYSTEMTAP
++
+ /* Define if you want to compile in rudimentary thread support */
+ #undef WITH_THREAD
+
+diff -up Python-3.3.0b1/Python/ceval.c.systemtap Python-3.3.0b1/Python/ceval.c
+--- Python-3.3.0b1/Python/ceval.c.systemtap 2012-06-26 16:19:56.000000000 -0400
++++ Python-3.3.0b1/Python/ceval.c 2012-07-20 13:05:39.218792070 -0400
+@@ -18,6 +18,8 @@
#include <ctype.h>
-+#ifdef WITH_DTRACE
-+#include "pydtrace.h"
-+#endif
++#include "ceval_systemtap.h"
+
#ifndef WITH_TSC
#define READ_TIMESTAMP(var)
-@@ -766,6 +770,70 @@ PyEval_EvalCode(PyObject *co, PyObject *
- }
+@@ -1160,6 +1162,10 @@ PyEval_EvalFrameEx(PyFrameObject *f, int
+ }
+ }
++ if (PYTHON_FUNCTION_ENTRY_ENABLED()) {
++ systemtap_function_entry(f);
++ }
++
+ co = f->f_code;
+ names = co->co_names;
+ consts = co->co_consts;
+@@ -3077,6 +3083,11 @@ fast_yield:
-+#ifdef WITH_DTRACE
+ /* pop frame */
+ exit_eval_frame:
++
++ if (PYTHON_FUNCTION_RETURN_ENABLED()) {
++ systemtap_function_return(f);
++ }
++
+ Py_LeaveRecursiveCall();
+ tstate->frame = f->f_back;
+
+diff -up Python-3.3.0b1/Python/ceval_systemtap.h.systemtap Python-3.3.0b1/Python/ceval_systemtap.h
+--- Python-3.3.0b1/Python/ceval_systemtap.h.systemtap 2012-07-20 13:05:39.218792070 -0400
++++ Python-3.3.0b1/Python/ceval_systemtap.h 2012-07-20 13:05:39.218792070 -0400
+@@ -0,0 +1,86 @@
++/*
++ Support for SystemTap static markers
++*/
++
++#ifdef WITH_SYSTEMTAP
++
++#include "pysystemtap.h"
++
++/*
++ A struct to hold all of the information gathered when one of the traceable
++ markers is triggered
++*/
+struct frame_marker_info
+{
-+ char *filename;
-+ char *name;
-+ int lineno;
-+
-+ PyObject *utf8_filename;
-+ PyObject *utf8_name;
++ PyObject *filename_obj;
++ PyObject *funcname_obj;
++ const char *filename;
++ const char *funcname;
++ int lineno;
+};
+
+static void
+get_frame_marker_info(PyFrameObject *f, struct frame_marker_info *fmi)
+{
-+ fmi->utf8_filename = PyUnicode_AsUTF8String(f->f_code->co_filename);
-+ if (fmi->utf8_filename) {
-+ fmi->filename = PyBytes_AsString(fmi->utf8_filename);
-+ } else {
-+ fmi->filename = NULL;
-+ /* FIXME: clear the exception? */
-+ }
-+
-+ fmi->utf8_name = PyUnicode_AsUTF8String(f->f_code->co_name);
-+ if (fmi->utf8_name) {
-+ fmi->name = PyBytes_AsString(fmi->utf8_name);
-+ } else {
-+ fmi->name = NULL;
-+ /* FIXME: clear the exception? */
-+ }
-+
-+ fmi->lineno = PyCode_Addr2Line(f->f_code, f->f_lasti);
++ PyObject *ptype;
++ PyObject *pvalue;
++ PyObject *ptraceback;
++
++ PyErr_Fetch(&ptype, &pvalue, &ptraceback);
++
++ fmi->filename_obj = PyUnicode_EncodeFSDefault(f->f_code->co_filename);
++ if (fmi->filename_obj) {
++ fmi->filename = PyBytes_AsString(fmi->filename_obj);
++ } else {
++ fmi->filename = NULL;
++ }
++
++ fmi->funcname_obj = PyUnicode_AsUTF8String(f->f_code->co_name);
++ if (fmi->funcname_obj) {
++ fmi->funcname = PyBytes_AsString(fmi->funcname_obj);
++ } else {
++ fmi->funcname = NULL;
++ }
++
++ fmi->lineno = PyCode_Addr2Line(f->f_code, f->f_lasti);
++
++ PyErr_Restore(ptype, pvalue, ptraceback);
++
+}
+
+static void
+release_frame_marker_info(struct frame_marker_info *fmi)
+{
-+ Py_XDECREF(fmi->utf8_filename);
-+ Py_XDECREF(fmi->utf8_name);
++ Py_XDECREF(fmi->filename_obj);
++ Py_XDECREF(fmi->funcname_obj);
+}
+
+static void
-+dtrace_entry(PyFrameObject *f)
++systemtap_function_entry(PyFrameObject *f)
+{
-+ struct frame_marker_info fmi;
-+ get_frame_marker_info(f, &fmi);
-+ PYTHON_FUNCTION_ENTRY(fmi.filename, fmi.name, fmi.lineno);
-+ release_frame_marker_info(&fmi);
++ struct frame_marker_info fmi;
++ get_frame_marker_info(f, &fmi);
++ PYTHON_FUNCTION_ENTRY(fmi.filename, fmi.funcname, fmi.lineno, f);
++ release_frame_marker_info(&fmi);
+}
+
+static void
-+dtrace_return(PyFrameObject *f)
++systemtap_function_return(PyFrameObject *f)
+{
-+ struct frame_marker_info fmi;
-+ get_frame_marker_info(f, &fmi);
-+ PYTHON_FUNCTION_RETURN(fmi.filename, fmi.name, fmi.lineno);
-+ release_frame_marker_info(&fmi);
++ struct frame_marker_info fmi;
++ get_frame_marker_info(f, &fmi);
++ PYTHON_FUNCTION_RETURN(fmi.filename, fmi.funcname, fmi.lineno, f);
++ release_frame_marker_info(&fmi);
+}
-+#else
-+#define PYTHON_FUNCTION_ENTRY_ENABLED() 0
-+#define PYTHON_FUNCTION_RETURN_ENABLED() 0
-+#define dtrace_entry(f)
-+#define dtrace_return(f)
-+#endif
-+
- /* Interpreter main loop */
-
- PyObject *
-@@ -1183,6 +1251,10 @@ PyEval_EvalFrameEx(PyFrameObject *f, int
- }
- }
-
-+ if (PYTHON_FUNCTION_ENTRY_ENABLED()) {
-+ dtrace_entry(f);
-+ }
+
- co = f->f_code;
- names = co->co_names;
- consts = co->co_consts;
-@@ -3048,6 +3120,9 @@ fast_yield:
-
- /* pop frame */
- exit_eval_frame:
-+ if (PYTHON_FUNCTION_RETURN_ENABLED()) {
-+ dtrace_return(f);
-+ }
- Py_LeaveRecursiveCall();
- tstate->frame = f->f_back;
-
++#else /* #ifdef WITH_SYSTEMTAP */
++
++/*
++ When configured --without-systemtap, everything compiles away to nothing:
++*/
++#define PYTHON_FUNCTION_ENTRY_ENABLED() 0
++#define PYTHON_FUNCTION_RETURN_ENABLED() 0
++#define systemtap_function_entry(f)
++#define systemtap_function_return(f)
++
++#endif
+diff -up Python-3.3.0b1/Python/pysystemtap.d.systemtap Python-3.3.0b1/Python/pysystemtap.d
+--- Python-3.3.0b1/Python/pysystemtap.d.systemtap 2012-07-20 13:05:39.218792070 -0400
++++ Python-3.3.0b1/Python/pysystemtap.d 2012-07-20 13:05:39.218792070 -0400
+@@ -0,0 +1,4 @@
++provider python {
++ probe function__entry(const char *, const char *, int, PyFrameObject *);
++ probe function__return(const char *, const char *, int, PyFrameObject *);
++};
diff --git a/00111-no-static-lib.patch b/00111-no-static-lib.patch
index 3a6ac8a..8ba0fd7 100644
--- a/00111-no-static-lib.patch
+++ b/00111-no-static-lib.patch
@@ -1,7 +1,7 @@
-diff -up Python-3.2.1/Makefile.pre.in.no-static-lib Python-3.2.1/Makefile.pre.in
---- Python-3.2.1/Makefile.pre.in.no-static-lib 2011-07-09 02:58:52.000000000 -0400
-+++ Python-3.2.1/Makefile.pre.in 2011-07-11 11:46:27.381425999 -0400
-@@ -425,7 +425,7 @@ coverage:
+diff -up Python-3.3.0b1/Makefile.pre.in.no-static-lib Python-3.3.0b1/Makefile.pre.in
+--- Python-3.3.0b1/Makefile.pre.in.no-static-lib 2012-07-20 13:20:34.056605058 -0400
++++ Python-3.3.0b1/Makefile.pre.in 2012-07-20 13:21:41.540761389 -0400
+@@ -458,7 +458,7 @@ coverage:
# Build the interpreter
@@ -9,8 +9,8 @@ diff -up Python-3.2.1/Makefile.pre.in.no-static-lib Python-3.2.1/Makefile.pre.in
+$(BUILDPYTHON): Modules/python.o $(LDLIBRARY) $(PY3LIBRARY)
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
- platform: $(BUILDPYTHON)
-@@ -439,18 +439,6 @@ sharedmods: $(BUILDPYTHON)
+ platform: $(BUILDPYTHON) $(SYSCONFIGDATA)
+@@ -475,18 +475,6 @@ sharedmods: $(BUILDPYTHON) $(SYSCONFIGDA
*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \
esac
@@ -21,7 +21,7 @@ diff -up Python-3.2.1/Makefile.pre.in.no-static-lib Python-3.2.1/Makefile.pre.in
- $(AR) $(ARFLAGS) $@ Modules/getbuildinfo.o
- $(AR) $(ARFLAGS) $@ $(PARSER_OBJS)
- $(AR) $(ARFLAGS) $@ $(OBJECT_OBJS)
-- $(AR) $(ARFLAGS) $@ $(PYTHON_OBJS)
+- $(AR) $(ARFLAGS) $@ $(PYTHON_OBJS) Python/frozen.o
- $(AR) $(ARFLAGS) $@ $(MODULE_OBJS) $(SIGNAL_OBJS)
- $(AR) $(ARFLAGS) $@ $(MODOBJS)
- $(RANLIB) $@
@@ -29,7 +29,7 @@ diff -up Python-3.2.1/Makefile.pre.in.no-static-lib Python-3.2.1/Makefile.pre.in
libpython$(LDVERSION).so: $(LIBRARY_OBJS)
if test $(INSTSONAME) != $(LDLIBRARY); then \
$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
-@@ -540,7 +528,7 @@ Modules/Setup: $(srcdir)/Modules/Setup.d
+@@ -576,7 +564,7 @@ Modules/Setup: $(srcdir)/Modules/Setup.d
echo "-----------------------------------------------"; \
fi
@@ -38,7 +38,7 @@ diff -up Python-3.2.1/Makefile.pre.in.no-static-lib Python-3.2.1/Makefile.pre.in
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Modules/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
############################################################################
-@@ -1058,18 +1046,6 @@ libainstall: all python-config
+@@ -1150,18 +1138,6 @@ libainstall: all python-config
else true; \
fi; \
done
diff --git a/00113-more-configuration-flags.patch b/00113-more-configuration-flags.patch
index 24df543..1067af1 100644
--- a/00113-more-configuration-flags.patch
+++ b/00113-more-configuration-flags.patch
@@ -1,7 +1,7 @@
-diff -up Python-3.1.2/configure.in.more-configuration-flags Python-3.1.2/configure.in
---- Python-3.1.2/configure.in.more-configuration-flags 2010-05-25 12:16:48.602875960 -0400
-+++ Python-3.1.2/configure.in 2010-05-25 12:16:48.609879553 -0400
-@@ -2443,6 +2443,30 @@ else AC_MSG_RESULT(no)
+diff -up Python-3.3.0b1/configure.ac.more-configuration-flags Python-3.3.0b1/configure.ac
+--- Python-3.3.0b1/configure.ac.more-configuration-flags 2012-07-20 13:25:33.232864839 -0400
++++ Python-3.3.0b1/configure.ac 2012-07-20 13:25:33.314863815 -0400
+@@ -2585,6 +2585,30 @@ else AC_MSG_RESULT(no)
fi],
[AC_MSG_RESULT(no)])
@@ -32,12 +32,12 @@ diff -up Python-3.1.2/configure.in.more-configuration-flags Python-3.1.2/configu
# Check for Python-specific malloc support
AC_MSG_CHECKING(for --with-pymalloc)
AC_ARG_WITH(pymalloc,
-diff -up Python-3.1.2/pyconfig.h.in.more-configuration-flags Python-3.1.2/pyconfig.h.in
---- Python-3.1.2/pyconfig.h.in.more-configuration-flags 2010-05-25 12:16:48.000000000 -0400
-+++ Python-3.1.2/pyconfig.h.in 2010-05-25 12:17:54.428126399 -0400
-@@ -18,6 +18,12 @@
- /* Define if you have the Mach cthreads package */
- #undef C_THREADS
+diff -up Python-3.3.0b1/pyconfig.h.in.more-configuration-flags Python-3.3.0b1/pyconfig.h.in
+--- Python-3.3.0b1/pyconfig.h.in.more-configuration-flags 2012-07-20 13:25:33.000000000 -0400
++++ Python-3.3.0b1/pyconfig.h.in 2012-07-20 13:26:02.826494869 -0400
+@@ -12,6 +12,12 @@
+ support for AIX C++ shared extension modules. */
+ #undef AIX_GENUINE_CPLUSPLUS
+/* Define to keep records on function call invocation */
+#undef CALL_PROFILE
diff --git a/00114-statvfs-f_flag-constants.patch b/00114-statvfs-f_flag-constants.patch
index b666c1b..af0d780 100644
--- a/00114-statvfs-f_flag-constants.patch
+++ b/00114-statvfs-f_flag-constants.patch
@@ -1,18 +1,10 @@
-diff -up Python-3.2a1/Modules/posixmodule.c.statvfs-f-flag-constants Python-3.2a1/Modules/posixmodule.c
---- Python-3.2a1/Modules/posixmodule.c.statvfs-f-flag-constants 2010-07-23 09:53:51.000000000 -0400
-+++ Python-3.2a1/Modules/posixmodule.c 2010-08-02 16:39:38.756000423 -0400
-@@ -8173,6 +8173,43 @@ all_ins(PyObject *d)
- #endif
- #endif
+diff -up Python-3.3.0b1/Modules/posixmodule.c.statvfs-f_flag-constants Python-3.3.0b1/Modules/posixmodule.c
+--- Python-3.3.0b1/Modules/posixmodule.c.statvfs-f_flag-constants 2012-06-26 16:19:54.000000000 -0400
++++ Python-3.3.0b1/Modules/posixmodule.c 2012-07-20 13:39:18.595546387 -0400
+@@ -11665,6 +11665,35 @@ all_ins(PyObject *d)
+ if (ins(d, "ST_NOSUID", (long)ST_NOSUID)) return -1;
+ #endif /* ST_NOSUID */
-+ /* These came from statvfs.h */
-+#ifdef ST_RDONLY
-+ if (ins(d, "ST_RDONLY", (long)ST_RDONLY)) return -1;
-+#endif /* ST_RDONLY */
-+#ifdef ST_NOSUID
-+ if (ins(d, "ST_NOSUID", (long)ST_NOSUID)) return -1;
-+#endif /* ST_NOSUID */
-+
+ /* GNU extensions */
+#ifdef ST_NODEV
+ if (ins(d, "ST_NODEV", (long)ST_NODEV)) return -1;
@@ -42,6 +34,6 @@ diff -up Python-3.2a1/Modules/posixmodule.c.statvfs-f-flag-constants Python-3.2a
+ if (ins(d, "ST_RELATIME", (long)ST_RELATIME)) return -1;
+#endif /* ST_RELATIME */
+
- #if defined(PYOS_OS2)
- if (insertvalues(d)) return -1;
- #endif
+ /* FreeBSD sendfile() constants */
+ #ifdef SF_NODISKIO
+ if (ins(d, "SF_NODISKIO", (long)SF_NODISKIO)) return -1;
diff --git a/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch b/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch
index c1871ac..18549cb 100644
--- a/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch
+++ b/00134-fix-COUNT_ALLOCS-failure-in-test_sys.patch
@@ -1,13 +1,13 @@
-diff -up Python-3.2b2/Lib/test/test_sys.py.fix-test-sys-COUNT_ALLOCS Python-3.2b2/Lib/test/test_sys.py
---- Python-3.2b2/Lib/test/test_sys.py.fix-test-sys-COUNT_ALLOCS 2010-12-28 20:52:43.236310184 -0500
-+++ Python-3.2b2/Lib/test/test_sys.py 2010-12-28 20:58:09.164184094 -0500
-@@ -817,6 +817,9 @@ class SizeofTest(unittest.TestCase):
- # (PyTypeObject + PyNumberMethods + PyMappingMethods +
- # PySequenceMethods + PyBufferProcs)
- s = size(vh + 'P2P15Pl4PP9PP11PI') + size('16Pi17P 3P 10P 2P 2P')
+diff -up Python-3.3.0b1/Lib/test/test_sys.py.fix-COUNT_ALLOCS-failure-in-test_sys Python-3.3.0b1/Lib/test/test_sys.py
+--- Python-3.3.0b1/Lib/test/test_sys.py.fix-COUNT_ALLOCS-failure-in-test_sys 2012-06-26 16:19:48.000000000 -0400
++++ Python-3.3.0b1/Lib/test/test_sys.py 2012-07-20 13:44:23.050740172 -0400
+@@ -869,6 +869,9 @@ class SizeofTest(unittest.TestCase):
+ s = size(vh + 'P2P15Pl4PP9PP11PI') + size('34P 3P 10P 2P 4P')
+ # Separate block for PyDictKeysObject with 4 entries
+ s += size("PPPP") + 4*size("PPP")
+ # COUNT_ALLOCS adds a further 3 Py_ssize_t and 2 pointers:
+ if hasattr(sys, 'getcounts'):
+ s += size('3P2P')
- check(int, s)
# class
class newstyleclass(object): pass
+ check(newstyleclass, s)
diff --git a/00157-uid-gid-overflows.patch b/00157-uid-gid-overflows.patch
index 6be557d..ab4cb0c 100644
--- a/00157-uid-gid-overflows.patch
+++ b/00157-uid-gid-overflows.patch
@@ -1,6 +1,6 @@
-diff -up Python-3.2.3/Include/modsupport.h.uid-gid-overflows Python-3.2.3/Include/modsupport.h
---- Python-3.2.3/Include/modsupport.h.uid-gid-overflows 2012-04-11 02:54:01.000000000 -0400
-+++ Python-3.2.3/Include/modsupport.h 2012-06-18 17:20:38.193527374 -0400
+diff -up Python-3.3.0b1/Include/modsupport.h.uid-gid-overflows Python-3.3.0b1/Include/modsupport.h
+--- Python-3.3.0b1/Include/modsupport.h.uid-gid-overflows 2012-06-26 16:19:40.000000000 -0400
++++ Python-3.3.0b1/Include/modsupport.h 2012-07-20 14:21:46.854688763 -0400
@@ -8,6 +8,7 @@ extern "C" {
/* Module support interface */
@@ -9,7 +9,7 @@ diff -up Python-3.2.3/Include/modsupport.h.uid-gid-overflows Python-3.2.3/Includ
/* If PY_SSIZE_T_CLEAN is defined, each functions treats #-specifier
to mean Py_ssize_t */
-@@ -122,6 +123,17 @@ PyAPI_FUNC(PyObject *) PyModule_Create2(
+@@ -125,6 +126,17 @@ PyAPI_FUNC(PyObject *) PyModule_Create2(
PyAPI_DATA(char *) _Py_PackageContext;
#endif
@@ -27,10 +27,10 @@ diff -up Python-3.2.3/Include/modsupport.h.uid-gid-overflows Python-3.2.3/Includ
#ifdef __cplusplus
}
#endif
-diff -up Python-3.2.3/Lib/test/test_os.py.uid-gid-overflows Python-3.2.3/Lib/test/test_os.py
---- Python-3.2.3/Lib/test/test_os.py.uid-gid-overflows 2012-04-11 02:54:05.000000000 -0400
-+++ Python-3.2.3/Lib/test/test_os.py 2012-06-18 17:20:18.360775320 -0400
-@@ -885,30 +885,36 @@ if sys.platform != 'win32':
+diff -up Python-3.3.0b1/Lib/test/test_os.py.uid-gid-overflows Python-3.3.0b1/Lib/test/test_os.py
+--- Python-3.3.0b1/Lib/test/test_os.py.uid-gid-overflows 2012-06-26 16:19:48.000000000 -0400
++++ Python-3.3.0b1/Lib/test/test_os.py 2012-07-20 14:21:46.856688739 -0400
+@@ -1174,30 +1174,36 @@ if sys.platform != 'win32':
def test_setuid(self):
if os.getuid() != 0:
self.assertRaises(os.error, os.setuid, 0)
@@ -67,7 +67,7 @@ diff -up Python-3.2.3/Lib/test/test_os.py.uid-gid-overflows Python-3.2.3/Lib/tes
self.assertRaises(OverflowError, os.setreuid, 1<<32, 0)
self.assertRaises(OverflowError, os.setreuid, 0, 1<<32)
-@@ -923,6 +929,8 @@ if sys.platform != 'win32':
+@@ -1212,6 +1218,8 @@ if sys.platform != 'win32':
def test_setregid(self):
if os.getuid() != 0:
self.assertRaises(os.error, os.setregid, 0, 0)
@@ -76,20 +76,16 @@ diff -up Python-3.2.3/Lib/test/test_os.py.uid-gid-overflows Python-3.2.3/Lib/tes
self.assertRaises(OverflowError, os.setregid, 1<<32, 0)
self.assertRaises(OverflowError, os.setregid, 0, 1<<32)
-diff -up Python-3.2.3/Lib/test/test_posix.py.uid-gid-overflows Python-3.2.3/Lib/test/test_posix.py
---- Python-3.2.3/Lib/test/test_posix.py.uid-gid-overflows 2012-04-11 02:54:05.000000000 -0400
-+++ Python-3.2.3/Lib/test/test_posix.py 2012-06-18 17:20:18.360775320 -0400
-@@ -227,7 +227,7 @@ class PosixTester(unittest.TestCase):
+diff -up Python-3.3.0b1/Lib/test/test_posix.py.uid-gid-overflows Python-3.3.0b1/Lib/test/test_posix.py
+--- Python-3.3.0b1/Lib/test/test_posix.py.uid-gid-overflows 2012-06-26 16:19:48.000000000 -0400
++++ Python-3.3.0b1/Lib/test/test_posix.py 2012-07-20 14:21:46.857688726 -0400
+@@ -387,10 +387,17 @@ class PosixTester(unittest.TestCase):
else:
self.assertTrue(stat.S_ISFIFO(posix.stat(support.TESTFN).st_mode))
- def _test_all_chown_common(self, chown_func, first_param):
+ def _test_all_chown_common(self, chown_func, stat_func, first_param):
"""Common code for chown, fchown and lchown tests."""
- if os.getuid() == 0:
- try:
-@@ -246,6 +246,13 @@ class PosixTester(unittest.TestCase):
- first_param, 0, 0)
# test a successful chown call
chown_func(first_param, os.getuid(), os.getgid())
+ self.assertEqual(stat_func(first_param).st_uid, os.getuid())
@@ -100,18 +96,18 @@ diff -up Python-3.2.3/Lib/test/test_posix.py.uid-gid-overflows Python-3.2.3/Lib/
+ self.assertEqual(stat_func(first_param).st_uid, os.getuid())
+ self.assertEqual(stat_func(first_param).st_gid, os.getgid())
- @unittest.skipUnless(hasattr(posix, 'chown'), "test needs os.chown()")
- def test_chown(self):
-@@ -255,7 +262,7 @@ class PosixTester(unittest.TestCase):
+ if os.getuid() == 0:
+ try:
+@@ -421,7 +428,7 @@ class PosixTester(unittest.TestCase):
# re-create the file
- open(support.TESTFN, 'w').close()
+ support.create_empty_file(support.TESTFN)
- self._test_all_chown_common(posix.chown, support.TESTFN)
+ self._test_all_chown_common(posix.chown, posix.stat, support.TESTFN)
@unittest.skipUnless(hasattr(posix, 'fchown'), "test needs os.fchown()")
def test_fchown(self):
-@@ -265,7 +272,7 @@ class PosixTester(unittest.TestCase):
+@@ -431,7 +438,7 @@ class PosixTester(unittest.TestCase):
test_file = open(support.TESTFN, 'w')
try:
fd = test_file.fileno()
@@ -120,7 +116,7 @@ diff -up Python-3.2.3/Lib/test/test_posix.py.uid-gid-overflows Python-3.2.3/Lib/
finally:
test_file.close()
-@@ -274,7 +281,7 @@ class PosixTester(unittest.TestCase):
+@@ -440,7 +447,7 @@ class PosixTester(unittest.TestCase):
os.unlink(support.TESTFN)
# create a symlink
os.symlink(_DUMMY_SYMLINK, support.TESTFN)
@@ -129,9 +125,9 @@ diff -up Python-3.2.3/Lib/test/test_posix.py.uid-gid-overflows Python-3.2.3/Lib/
def test_chdir(self):
if hasattr(posix, 'chdir'):
-diff -up Python-3.2.3/Lib/test/test_pwd.py.uid-gid-overflows Python-3.2.3/Lib/test/test_pwd.py
---- Python-3.2.3/Lib/test/test_pwd.py.uid-gid-overflows 2012-04-11 02:54:05.000000000 -0400
-+++ Python-3.2.3/Lib/test/test_pwd.py 2012-06-18 17:20:18.360775320 -0400
+diff -up Python-3.3.0b1/Lib/test/test_pwd.py.uid-gid-overflows Python-3.3.0b1/Lib/test/test_pwd.py
+--- Python-3.3.0b1/Lib/test/test_pwd.py.uid-gid-overflows 2012-06-26 16:19:48.000000000 -0400
++++ Python-3.3.0b1/Lib/test/test_pwd.py 2012-07-20 14:21:46.857688726 -0400
@@ -87,9 +87,9 @@ class PwdTest(unittest.TestCase):
# In some cases, byuids isn't a complete list of all users in the
# system, so if we try to pick a value not in byuids (via a perturbing
@@ -144,9 +140,9 @@ diff -up Python-3.2.3/Lib/test/test_pwd.py.uid-gid-overflows Python-3.2.3/Lib/te
self.assertNotIn(fakeuid, byuids)
self.assertRaises(KeyError, pwd.getpwuid, fakeuid)
-diff -up Python-3.2.3/Modules/grpmodule.c.uid-gid-overflows Python-3.2.3/Modules/grpmodule.c
---- Python-3.2.3/Modules/grpmodule.c.uid-gid-overflows 2012-04-11 02:54:07.000000000 -0400
-+++ Python-3.2.3/Modules/grpmodule.c 2012-06-18 17:20:18.361775307 -0400
+diff -up Python-3.3.0b1/Modules/grpmodule.c.uid-gid-overflows Python-3.3.0b1/Modules/grpmodule.c
+--- Python-3.3.0b1/Modules/grpmodule.c.uid-gid-overflows 2012-06-26 16:19:54.000000000 -0400
++++ Python-3.3.0b1/Modules/grpmodule.c 2012-07-20 14:21:46.858688713 -0400
@@ -69,7 +69,7 @@ mkgrent(struct group *p)
Py_INCREF(Py_None);
}
@@ -181,10 +177,10 @@ diff -up Python-3.2.3/Modules/grpmodule.c.uid-gid-overflows Python-3.2.3/Modules
return NULL;
}
return mkgrent(p);
-diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modules/posixmodule.c
---- Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows 2012-06-18 17:20:18.258776596 -0400
-+++ Python-3.2.3/Modules/posixmodule.c 2012-06-18 17:20:18.362775294 -0400
-@@ -1642,8 +1642,8 @@ _pystat_fromstructstat(STRUCT_STAT *st)
+diff -up Python-3.3.0b1/Modules/posixmodule.c.uid-gid-overflows Python-3.3.0b1/Modules/posixmodule.c
+--- Python-3.3.0b1/Modules/posixmodule.c.uid-gid-overflows 2012-07-20 14:21:46.788689588 -0400
++++ Python-3.3.0b1/Modules/posixmodule.c 2012-07-20 14:24:19.626778849 -0400
+@@ -2151,8 +2151,8 @@ _pystat_fromstructstat(STRUCT_STAT *st)
PyStructSequence_SET_ITEM(v, 2, PyLong_FromLong((long)st->st_dev));
#endif
PyStructSequence_SET_ITEM(v, 3, PyLong_FromLong((long)st->st_nlink));
@@ -195,29 +191,37 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
#ifdef HAVE_LARGEFILE_SUPPORT
PyStructSequence_SET_ITEM(v, 6,
PyLong_FromLongLong((PY_LONG_LONG)st->st_size));
-@@ -2172,15 +2172,17 @@ posix_chown(PyObject *self, PyObject *ar
+@@ -2957,7 +2957,6 @@ static PyObject *
+ posix_chown(PyObject *self, PyObject *args, PyObject *kwargs)
{
- PyObject *opath;
- char *path;
-- long uid, gid;
-+ uid_t uid;
-+ gid_t gid;
- int res;
-- if (!PyArg_ParseTuple(args, "O&ll:chown",
-+ if (!PyArg_ParseTuple(args, "O&O&O&:chown",
- PyUnicode_FSConverter, &opath,
-- &uid, &gid))
-+ _PyArg_ParseUid, &uid,
-+ _PyArg_ParseGid, &gid))
- return NULL;
- path = PyBytes_AsString(opath);
+ path_t path;
+- long uid_l, gid_l;
+ uid_t uid;
+ gid_t gid;
+ int dir_fd = DEFAULT_DIR_FD;
+@@ -2971,9 +2970,10 @@ posix_chown(PyObject *self, PyObject *ar
+ #ifdef HAVE_FCHOWN
+ path.allow_fd = 1;
+ #endif
+- if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&ll|$O&p:chown", keywords,
++ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O&O&O&|$O&p:chown", keywords,
+ path_converter, &path,
+- &uid_l, &gid_l,
++ _PyArg_ParseUid, &uid,
++ _PyArg_ParseGid, &gid,
+ #ifdef HAVE_FCHOWNAT
+ dir_fd_converter, &dir_fd,
+ #else
+@@ -3004,8 +3004,6 @@ posix_chown(PyObject *self, PyObject *ar
+ #endif
+
Py_BEGIN_ALLOW_THREADS
-- res = chown(path, (uid_t) uid, (gid_t) gid);
-+ res = chown(path, uid, gid);
- Py_END_ALLOW_THREADS
- if (res < 0)
- return posix_error_with_allocated_filename(opath);
-@@ -2200,12 +2202,15 @@ static PyObject *
+- uid = (uid_t)uid_l;
+- gid = (uid_t)gid_l;
+ #ifdef HAVE_FCHOWN
+ if (path.fd != -1)
+ result = fchown(path.fd, uid, gid);
+@@ -3049,12 +3047,15 @@ static PyObject *
posix_fchown(PyObject *self, PyObject *args)
{
int fd;
@@ -236,7 +240,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
Py_END_ALLOW_THREADS
if (res < 0)
return posix_error();
-@@ -2224,15 +2229,17 @@ posix_lchown(PyObject *self, PyObject *a
+@@ -3074,15 +3075,17 @@ posix_lchown(PyObject *self, PyObject *a
{
PyObject *opath;
char *path;
@@ -258,7 +262,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
Py_END_ALLOW_THREADS
if (res < 0)
return posix_error_with_allocated_filename(opath);
-@@ -4287,7 +4294,7 @@ Return the current process's effective g
+@@ -6184,7 +6187,7 @@ Return the current process's effective g
static PyObject *
posix_getegid(PyObject *self, PyObject *noargs)
{
@@ -267,7 +271,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
}
#endif
-@@ -4300,7 +4307,7 @@ Return the current process's effective u
+@@ -6197,7 +6200,7 @@ Return the current process's effective u
static PyObject *
posix_geteuid(PyObject *self, PyObject *noargs)
{
@@ -276,7 +280,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
}
#endif
-@@ -4313,7 +4320,7 @@ Return the current process's group id.")
+@@ -6210,7 +6213,7 @@ Return the current process's group id.")
static PyObject *
posix_getgid(PyObject *self, PyObject *noargs)
{
@@ -285,7 +289,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
}
#endif
-@@ -4388,7 +4395,7 @@ posix_getgroups(PyObject *self, PyObject
+@@ -6349,7 +6352,7 @@ posix_getgroups(PyObject *self, PyObject
if (result != NULL) {
int i;
for (i = 0; i < n; ++i) {
@@ -294,7 +298,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
if (o == NULL) {
Py_DECREF(result);
result = NULL;
-@@ -4419,14 +4426,15 @@ posix_initgroups(PyObject *self, PyObjec
+@@ -6380,14 +6383,15 @@ posix_initgroups(PyObject *self, PyObjec
PyObject *oname;
char *username;
int res;
@@ -314,7 +318,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
Py_DECREF(oname);
if (res == -1)
return PyErr_SetFromErrno(PyExc_OSError);
-@@ -4601,7 +4609,7 @@ Return the current process's user id.");
+@@ -6562,7 +6566,7 @@ Return the current process's user id.");
static PyObject *
posix_getuid(PyObject *self, PyObject *noargs)
{
@@ -323,7 +327,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
}
#endif
-@@ -4741,15 +4749,9 @@ Set the current process's user id.");
+@@ -6702,15 +6706,9 @@ Set the current process's user id.");
static PyObject *
posix_setuid(PyObject *self, PyObject *args)
{
@@ -340,24 +344,24 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
if (setuid(uid) < 0)
return posix_error();
Py_INCREF(Py_None);
-@@ -4766,15 +4768,9 @@ Set the current process's effective user
+@@ -6727,15 +6725,9 @@ Set the current process's effective user
static PyObject *
posix_seteuid (PyObject *self, PyObject *args)
{
- long euid_arg;
uid_t euid;
- if (!PyArg_ParseTuple(args, "l", &euid_arg))
-- return NULL;
++ if (!PyArg_ParseTuple(args, "O&:seteuid", _PyArg_ParseUid, &euid))
+ return NULL;
- euid = euid_arg;
- if (euid != euid_arg) {
- PyErr_SetString(PyExc_OverflowError, "user id too big");
-+ if (!PyArg_ParseTuple(args, "O&:seteuid", _PyArg_ParseUid, &euid))
- return NULL;
+- return NULL;
- }
if (seteuid(euid) < 0) {
return posix_error();
} else {
-@@ -4792,15 +4788,9 @@ Set the current process's effective grou
+@@ -6753,15 +6745,9 @@ Set the current process's effective grou
static PyObject *
posix_setegid (PyObject *self, PyObject *args)
{
@@ -374,7 +378,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
if (setegid(egid) < 0) {
return posix_error();
} else {
-@@ -4818,23 +4808,11 @@ Set the current process's real and effec
+@@ -6779,23 +6765,11 @@ Set the current process's real and effec
static PyObject *
posix_setreuid (PyObject *self, PyObject *args)
{
@@ -401,7 +405,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
if (setreuid(ruid, euid) < 0) {
return posix_error();
} else {
-@@ -4852,23 +4830,11 @@ Set the current process's real and effec
+@@ -6813,23 +6787,11 @@ Set the current process's real and effec
static PyObject *
posix_setregid (PyObject *self, PyObject *args)
{
@@ -428,7 +432,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
if (setregid(rgid, egid) < 0) {
return posix_error();
} else {
-@@ -4886,15 +4852,9 @@ Set the current process's group id.");
+@@ -6847,15 +6809,9 @@ Set the current process's group id.");
static PyObject *
posix_setgid(PyObject *self, PyObject *args)
{
@@ -445,7 +449,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
if (setgid(gid) < 0)
return posix_error();
Py_INCREF(Py_None);
-@@ -4927,27 +4887,9 @@ posix_setgroups(PyObject *self, PyObject
+@@ -6888,27 +6844,9 @@ posix_setgroups(PyObject *self, PyObject
elem = PySequence_GetItem(groups, i);
if (!elem)
return NULL;
@@ -474,7 +478,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
}
Py_DECREF(elem);
}
-@@ -7689,9 +7631,11 @@ Set the current process's real, effectiv
+@@ -10388,9 +10326,11 @@ Set the current process's real, effectiv
static PyObject*
posix_setresuid (PyObject *self, PyObject *args)
{
@@ -489,7 +493,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
return NULL;
if (setresuid(ruid, euid, suid) < 0)
return posix_error();
-@@ -7707,9 +7651,11 @@ Set the current process's real, effectiv
+@@ -10406,9 +10346,11 @@ Set the current process's real, effectiv
static PyObject*
posix_setresgid (PyObject *self, PyObject *args)
{
@@ -504,7 +508,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
return NULL;
if (setresgid(rgid, egid, sgid) < 0)
return posix_error();
-@@ -7726,14 +7672,13 @@ static PyObject*
+@@ -10425,14 +10367,13 @@ static PyObject*
posix_getresuid (PyObject *self, PyObject *noargs)
{
uid_t ruid, euid, suid;
@@ -524,7 +528,7 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
}
#endif
-@@ -7746,14 +7691,13 @@ static PyObject*
+@@ -10445,14 +10386,13 @@ static PyObject*
posix_getresgid (PyObject *self, PyObject *noargs)
{
uid_t rgid, egid, sgid;
@@ -544,9 +548,9 @@ diff -up Python-3.2.3/Modules/posixmodule.c.uid-gid-overflows Python-3.2.3/Modul
}
#endif
-diff -up Python-3.2.3/Modules/pwdmodule.c.uid-gid-overflows Python-3.2.3/Modules/pwdmodule.c
---- Python-3.2.3/Modules/pwdmodule.c.uid-gid-overflows 2012-04-11 02:54:07.000000000 -0400
-+++ Python-3.2.3/Modules/pwdmodule.c 2012-06-18 17:20:18.362775294 -0400
+diff -up Python-3.3.0b1/Modules/pwdmodule.c.uid-gid-overflows Python-3.3.0b1/Modules/pwdmodule.c
+--- Python-3.3.0b1/Modules/pwdmodule.c.uid-gid-overflows 2012-06-26 16:19:54.000000000 -0400
++++ Python-3.3.0b1/Modules/pwdmodule.c 2012-07-20 14:21:46.861688675 -0400
@@ -74,8 +74,8 @@ mkpwent(struct passwd *p)
#else
SETS(setIndex++, p->pw_passwd);
@@ -576,9 +580,9 @@ diff -up Python-3.2.3/Modules/pwdmodule.c.uid-gid-overflows Python-3.2.3/Modules
return NULL;
}
return mkpwent(p);
-diff -up Python-3.2.3/Python/getargs.c.uid-gid-overflows Python-3.2.3/Python/getargs.c
---- Python-3.2.3/Python/getargs.c.uid-gid-overflows 2012-04-11 02:54:08.000000000 -0400
-+++ Python-3.2.3/Python/getargs.c 2012-06-18 17:20:18.363775282 -0400
+diff -up Python-3.3.0b1/Python/getargs.c.uid-gid-overflows Python-3.3.0b1/Python/getargs.c
+--- Python-3.3.0b1/Python/getargs.c.uid-gid-overflows 2012-06-26 16:19:57.000000000 -0400
++++ Python-3.3.0b1/Python/getargs.c 2012-07-20 14:21:46.861688675 -0400
@@ -4,6 +4,7 @@
#include "Python.h"
@@ -587,7 +591,7 @@ diff -up Python-3.2.3/Python/getargs.c.uid-gid-overflows Python-3.2.3/Python/get
#ifdef __cplusplus
-@@ -1789,6 +1790,102 @@ _PyArg_NoKeywords(const char *funcname,
+@@ -1807,6 +1808,102 @@ _PyArg_NoKeywords(const char *funcname,
funcname);
return 0;
}
diff --git a/05000-autotool-intermediates.patch b/05000-autotool-intermediates.patch
index 4a265a0..6cddbf7 100644
--- a/05000-autotool-intermediates.patch
+++ b/05000-autotool-intermediates.patch
@@ -1,16 +1,184 @@
diff -up ./configure.autotool-intermediates ./configure
---- ./configure.autotool-intermediates 2011-07-11 11:50:06.910425999 -0400
-+++ ./configure 2011-07-11 11:50:13.492426001 -0400
-@@ -619,6 +619,8 @@ TRUE
- MACHDEP_OBJS
- DYNLOADFILE
- DLINCLDIR
-+DTRACEHDRS
-+DTRACEOBJS
- THREADOBJ
- LDLAST
- USE_THREAD_MODULE
-@@ -764,8 +766,11 @@ with_thread
+--- ./configure.autotool-intermediates 2012-07-20 14:09:54.811590526 -0400
++++ ./configure 2012-07-20 14:10:00.525519093 -0400
+@@ -1,11 +1,13 @@
+ #! /bin/sh
+ # Guess values for system-dependent variables and create Makefiles.
+-# Generated by GNU Autoconf 2.69 for python 3.3.
++# Generated by GNU Autoconf 2.68 for python 3.3.
+ #
+ # Report bugs to <http://bugs.python.org/>.
+ #
+ #
+-# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
++# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
++# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
++# Foundation, Inc.
+ #
+ #
+ # This configure script is free software; the Free Software Foundation
+@@ -134,31 +136,6 @@ export LANGUAGE
+ # CDPATH.
+ (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+
+-# Use a proper internal environment variable to ensure we don't fall
+- # into an infinite loop, continuously re-executing ourselves.
+- if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then
+- _as_can_reexec=no; export _as_can_reexec;
+- # We cannot yet assume a decent shell, so we have to provide a
+-# neutralization value for shells without unset; and this also
+-# works around shells that cannot unset nonexistent variables.
+-# Preserve -v and -x to the replacement shell.
+-BASH_ENV=/dev/null
+-ENV=/dev/null
+-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+-case $- in # ((((
+- *v*x* | *x*v* ) as_opts=-vx ;;
+- *v* ) as_opts=-v ;;
+- *x* ) as_opts=-x ;;
+- * ) as_opts= ;;
+-esac
+-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+-# Admittedly, this is quite paranoid, since all the known shells bail
+-# out after a failed `exec'.
+-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+-as_fn_exit 255
+- fi
+- # We don't want this to propagate to other subprocesses.
+- { _as_can_reexec=; unset _as_can_reexec;}
+ if test "x$CONFIG_SHELL" = x; then
+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
+ emulate sh
+@@ -192,8 +169,7 @@ if ( set x; as_fn_ret_success y && test
+ else
+ exitcode=1; echo positional parameters were not saved.
+ fi
+-test x\$exitcode = x0 || exit 1
+-test -x / || exit 1"
++test x\$exitcode = x0 || exit 1"
+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
+@@ -238,25 +214,21 @@ IFS=$as_save_IFS
+
+
+ if test "x$CONFIG_SHELL" != x; then :
+- export CONFIG_SHELL
+- # We cannot yet assume a decent shell, so we have to provide a
+-# neutralization value for shells without unset; and this also
+-# works around shells that cannot unset nonexistent variables.
+-# Preserve -v and -x to the replacement shell.
+-BASH_ENV=/dev/null
+-ENV=/dev/null
+-(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
+-case $- in # ((((
+- *v*x* | *x*v* ) as_opts=-vx ;;
+- *v* ) as_opts=-v ;;
+- *x* ) as_opts=-x ;;
+- * ) as_opts= ;;
+-esac
+-exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"}
+-# Admittedly, this is quite paranoid, since all the known shells bail
+-# out after a failed `exec'.
+-$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2
+-exit 255
++ # We cannot yet assume a decent shell, so we have to provide a
++ # neutralization value for shells without unset; and this also
++ # works around shells that cannot unset nonexistent variables.
++ # Preserve -v and -x to the replacement shell.
++ BASH_ENV=/dev/null
++ ENV=/dev/null
++ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
++ export CONFIG_SHELL
++ case $- in # ((((
++ *v*x* | *x*v* ) as_opts=-vx ;;
++ *v* ) as_opts=-v ;;
++ *x* ) as_opts=-x ;;
++ * ) as_opts= ;;
++ esac
++ exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
+ fi
+
+ if test x$as_have_required = xno; then :
+@@ -359,14 +331,6 @@ $as_echo X"$as_dir" |
+
+
+ } # as_fn_mkdir_p
+-
+-# as_fn_executable_p FILE
+-# -----------------------
+-# Test if FILE is an executable regular file.
+-as_fn_executable_p ()
+-{
+- test -f "$1" && test -x "$1"
+-} # as_fn_executable_p
+ # as_fn_append VAR VALUE
+ # ----------------------
+ # Append the text in VALUE to the end of the definition contained in VAR. Take
+@@ -488,10 +452,6 @@ as_cr_alnum=$as_cr_Letters$as_cr_digits
+ chmod +x "$as_me.lineno" ||
+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
+
+- # If we had to re-execute with $CONFIG_SHELL, we're ensured to have
+- # already done that, so ensure we don't try to do so again and fall
+- # in an infinite loop. This has already happened in practice.
+- _as_can_reexec=no; export _as_can_reexec
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+@@ -526,16 +486,16 @@ if (echo >conf$$.file) 2>/dev/null; then
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+- # In both cases, we have to default to `cp -pR'.
++ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+- as_ln_s='cp -pR'
++ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+- as_ln_s='cp -pR'
++ as_ln_s='cp -p'
+ fi
+ else
+- as_ln_s='cp -pR'
++ as_ln_s='cp -p'
+ fi
+ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+ rmdir conf$$.dir 2>/dev/null
+@@ -547,8 +507,28 @@ else
+ as_mkdir_p=false
+ fi
+
+-as_test_x='test -x'
+-as_executable_p=as_fn_executable_p
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
++else
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in #(
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
++fi
++as_executable_p=$as_test_x
+
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -793,6 +773,8 @@ with_thread
enable_ipv6
with_doc_strings
with_tsc
@@ -18,21 +186,17 @@ diff -up ./configure.autotool-intermediates ./configure
+with_call_profile
with_pymalloc
with_valgrind
-+with_dtrace
- with_fpectl
- with_libm
- with_libc
-@@ -781,7 +786,8 @@ CFLAGS
- LDFLAGS
- LIBS
- CPPFLAGS
--CPP'
-+CPP
-+CPPFLAGS'
-
-
- # Initialize some variables set by options.
-@@ -1437,8 +1443,11 @@ Optional Packages:
+ with_systemtap
+@@ -1266,6 +1248,8 @@ target=$target_alias
+ if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
++ $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host.
++ If a cross compiler is detected then cross compile mode will be used" >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+@@ -1469,6 +1453,8 @@ Optional Packages:
deprecated; use --with(out)-threads
--with(out)-doc-strings disable/enable documentation strings
--with(out)-tsc enable/disable timestamp counter profile
@@ -40,11 +204,328 @@ diff -up ./configure.autotool-intermediates ./configure
+ --with(out)-call-profile enable/disable statistics on function call invocation
--with(out)-pymalloc disable/enable specialized mallocs
--with-valgrind Enable Valgrind support
-+ --with(out)-dtrace disable/enable dtrace support
- --with-fpectl enable SIGFPE catching
- --with-libm=STRING math library
- --with-libc=STRING C library
-@@ -9284,6 +9293,50 @@ $as_echo "no" >&6; }
+ --with(out)-systemtap disable/enable SystemTap support
+@@ -1556,9 +1542,9 @@ test -n "$ac_init_help" && exit $ac_stat
+ if $ac_init_version; then
+ cat <<\_ACEOF
+ python configure 3.3
+-generated by GNU Autoconf 2.69
++generated by GNU Autoconf 2.68
+
+-Copyright (C) 2012 Free Software Foundation, Inc.
++Copyright (C) 2010 Free Software Foundation, Inc.
+ This configure script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it.
+ _ACEOF
+@@ -1634,7 +1620,7 @@ $as_echo "$ac_try_echo"; } >&5
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext && {
+ test "$cross_compiling" = yes ||
+- test -x conftest$ac_exeext
++ $as_test_x conftest$ac_exeext
+ }; then :
+ ac_retval=0
+ else
+@@ -1932,8 +1918,7 @@ int
+ main ()
+ {
+ static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)];
+-test_array [0] = 0;
+-return test_array [0];
++test_array [0] = 0
+
+ ;
+ return 0;
+@@ -1987,8 +1972,7 @@ int
+ main ()
+ {
+ static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))];
+-test_array [0] = 0;
+-return test_array [0];
++test_array [0] = 0
+
+ ;
+ return 0;
+@@ -2004,8 +1988,7 @@ main ()
+ {
+ static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1)
+ < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))];
+-test_array [0] = 0;
+-return test_array [0];
++test_array [0] = 0
+
+ ;
+ return 0;
+@@ -2055,8 +2038,7 @@ int
+ main ()
+ {
+ static int test_array [1 - 2 * !(($2) >= 0)];
+-test_array [0] = 0;
+-return test_array [0];
++test_array [0] = 0
+
+ ;
+ return 0;
+@@ -2072,8 +2054,7 @@ int
+ main ()
+ {
+ static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+-test_array [0] = 0;
+-return test_array [0];
++test_array [0] = 0
+
+ ;
+ return 0;
+@@ -2099,8 +2080,7 @@ int
+ main ()
+ {
+ static int test_array [1 - 2 * !(($2) < 0)];
+-test_array [0] = 0;
+-return test_array [0];
++test_array [0] = 0
+
+ ;
+ return 0;
+@@ -2116,8 +2096,7 @@ int
+ main ()
+ {
+ static int test_array [1 - 2 * !(($2) >= $ac_mid)];
+-test_array [0] = 0;
+-return test_array [0];
++test_array [0] = 0
+
+ ;
+ return 0;
+@@ -2151,8 +2130,7 @@ int
+ main ()
+ {
+ static int test_array [1 - 2 * !(($2) <= $ac_mid)];
+-test_array [0] = 0;
+-return test_array [0];
++test_array [0] = 0
+
+ ;
+ return 0;
+@@ -2395,7 +2373,7 @@ This file contains any messages produced
+ running configure, to aid debugging if configure makes a mistake.
+
+ It was created by python $as_me 3.3, which was
+-generated by GNU Autoconf 2.69. Invocation command line was
++generated by GNU Autoconf 2.68. Invocation command line was
+
+ $ $0 $@
+
+@@ -2765,7 +2743,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_HAS_HG="found"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -3508,7 +3486,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -3548,7 +3526,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="gcc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -3601,7 +3579,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="${ac_tool_prefix}cc"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -3642,7 +3620,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+ ac_prog_rejected=yes
+ continue
+@@ -3700,7 +3678,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -3744,7 +3722,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CC="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -4190,7 +4168,8 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_
+ /* end confdefs.h. */
+ #include <stdarg.h>
+ #include <stdio.h>
+-struct stat;
++#include <sys/types.h>
++#include <sys/stat.h>
+ /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */
+ struct buf { int x; };
+ FILE * (*rcsopen) (struct buf *, struct stat *, int);
+@@ -4329,7 +4308,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_CXX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -4370,7 +4349,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_CXX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -4411,7 +4390,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_CXX="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -4460,7 +4439,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CXX="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -4691,7 +4670,7 @@ do
+ for ac_prog in grep ggrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+- as_fn_executable_p "$ac_path_GREP" || continue
++ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue
+ # Check for GNU ac_path_GREP and select it if it is found.
+ # Check for GNU $ac_path_GREP
+ case `"$ac_path_GREP" --version 2>&1` in
+@@ -4757,7 +4736,7 @@ do
+ for ac_prog in egrep; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+- as_fn_executable_p "$ac_path_EGREP" || continue
++ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue
+ # Check for GNU ac_path_EGREP and select it if it is found.
+ # Check for GNU $ac_path_EGREP
+ case `"$ac_path_EGREP" --version 2>&1` in
+@@ -4964,8 +4943,8 @@ else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+-# define __EXTENSIONS__ 1
+- $ac_includes_default
++# define __EXTENSIONS__ 1
++ $ac_includes_default
+ int
+ main ()
+ {
+@@ -5359,7 +5338,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -5399,7 +5378,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_RANLIB="ranlib"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -5453,7 +5432,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_AR="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -5504,7 +5483,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_HAS_PYTHON="found"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -5577,7 +5556,7 @@ case $as_dir/ in #((
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then
+ if test $ac_prog = install &&
+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then
+ # AIX install. It has an incompatible calling convention.
+@@ -5646,7 +5625,7 @@ do
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
++ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+@@ -8538,7 +8517,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -8581,7 +8560,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -9591,6 +9570,50 @@ $as_echo "no" >&6; }
fi
@@ -95,72 +576,155 @@ diff -up ./configure.autotool-intermediates ./configure
# Check for Python-specific malloc support
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-pymalloc" >&5
$as_echo_n "checking for --with-pymalloc... " >&6; }
-@@ -9336,6 +9389,46 @@ fi
- OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
+@@ -10208,7 +10231,7 @@ do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
++ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_TRUE="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+@@ -11645,8 +11668,7 @@ int
+ main ()
+ {
+ static int test_array [1 - 2 * !(((char) -1) < 0)];
+-test_array [0] = 0;
+-return test_array [0];
++test_array [0] = 0
+
+ ;
+ return 0;
+@@ -11677,11 +11699,11 @@ else
+ int
+ main ()
+ {
+-
++/* FIXME: Include the comments suggested by Paul. */
+ #ifndef __cplusplus
+- /* Ultrix mips cc rejects this sort of thing. */
++ /* Ultrix mips cc rejects this. */
+ typedef int charset[2];
+- const charset cs = { 0, 0 };
++ const charset cs;
+ /* SunOS 4.1.1 cc rejects this. */
+ char const *const *pcpcc;
+ char **ppc;
+@@ -11698,9 +11720,8 @@ main ()
+ ++pcpcc;
+ ppc = (char**) pcpcc;
+ pcpcc = (char const *const *) ppc;
+- { /* SCO 3.2v4 cc rejects this sort of thing. */
+- char tx;
+- char *t = &tx;
++ { /* SCO 3.2v4 cc rejects this. */
++ char *t;
+ char const *s = 0 ? (char *) 0 : (char const *) 0;
+
+ *t++ = 0;
+@@ -11716,10 +11737,10 @@ main ()
+ iptr p = 0;
+ ++p;
+ }
+- { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying
++ { /* AIX XL C 1.02.0.0 rejects this saying
+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */
+- struct s { int j; const int *ap[3]; } bx;
+- struct s *b = &bx; b->j = 5;
++ struct s { int j; const int *ap[3]; };
++ struct s *b; b->j = 5;
+ }
+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */
+ const int foo = 10;
+@@ -15008,16 +15029,16 @@ if (echo >conf$$.file) 2>/dev/null; then
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+- # In both cases, we have to default to `cp -pR'.
++ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+- as_ln_s='cp -pR'
++ as_ln_s='cp -p'
+ elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+ else
+- as_ln_s='cp -pR'
++ as_ln_s='cp -p'
+ fi
+ else
+- as_ln_s='cp -pR'
++ as_ln_s='cp -p'
+ fi
+ rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+ rmdir conf$$.dir 2>/dev/null
+@@ -15077,16 +15098,28 @@ else
+ as_mkdir_p=false
fi
-+# Check for dtrace support
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-dtrace" >&5
-+$as_echo_n "checking for --with-dtrace... " >&6; }
-+
-+# Check whether --with-dtrace was given.
-+if test "${with_dtrace+set}" = set; then :
-+ withval=$with_dtrace;
-+fi
-+
-+
-+if test ! -z "$with_dtrace"
-+then
-+ if dtrace -G -o /dev/null -s $srcdir/Include/pydtrace.d 2>/dev/null
-+ then
-+
-+$as_echo "#define WITH_DTRACE 1" >>confdefs.h
-+
-+ with_dtrace="Sun"
-+ DTRACEOBJS="Python/dtrace.o"
-+ DTRADEHDRS=""
-+ elif dtrace -h -o /dev/null -s $srcdir/Include/pydtrace.d
-+ then
-+
-+$as_echo "#define WITH_DTRACE 1" >>confdefs.h
-+
-+ with_dtrace="Apple"
-+ DTRACEOBJS=""
-+ DTRADEHDRS="pydtrace.h"
-+ else
-+ with_dtrace="no"
-+ fi
+-
+-# as_fn_executable_p FILE
+-# -----------------------
+-# Test if FILE is an executable regular file.
+-as_fn_executable_p ()
+-{
+- test -f "$1" && test -x "$1"
+-} # as_fn_executable_p
+-as_test_x='test -x'
+-as_executable_p=as_fn_executable_p
++if test -x / >/dev/null 2>&1; then
++ as_test_x='test -x'
+else
-+ with_dtrace="no"
++ if ls -dL / >/dev/null 2>&1; then
++ as_ls_L_option=L
++ else
++ as_ls_L_option=
++ fi
++ as_test_x='
++ eval sh -c '\''
++ if test -d "$1"; then
++ test -d "$1/.";
++ else
++ case $1 in #(
++ -*)set "./$1";;
++ esac;
++ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
++ ???[sx]*):;;*)false;;esac;fi
++ '\'' sh
++ '
+fi
-+
-+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_dtrace" >&5
-+$as_echo "$with_dtrace" >&6; }
-+
-+
-+
- # -I${DLINCLDIR} is added to the compile rule for importdl.o
++as_executable_p=$as_test_x
- DLINCLDIR=.
-diff -up ./pyconfig.h.in.autotool-intermediates ./pyconfig.h.in
---- ./pyconfig.h.in.autotool-intermediates 2011-07-11 11:50:06.896426002 -0400
-+++ ./pyconfig.h.in 2011-07-11 11:50:13.965426001 -0400
-@@ -12,15 +12,15 @@
- support for AIX C++ shared extension modules. */
- #undef AIX_GENUINE_CPLUSPLUS
-
--/* Define if you have the Mach cthreads package */
--#undef C_THREADS
--
- /* Define to keep records on function call invocation */
- #undef CALL_PROFILE
+ # Sed expression to map a string onto a valid CPP name.
+ as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+@@ -15108,7 +15141,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_wri
+ # values after options handling.
+ ac_log="
+ This file was extended by python $as_me 3.3, which was
+-generated by GNU Autoconf 2.69. Invocation command line was
++generated by GNU Autoconf 2.68. Invocation command line was
- /* Define to keep records of the number of instances of each type */
- #undef COUNT_ALLOCS
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+@@ -15170,10 +15203,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_writ
+ ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
+ ac_cs_version="\\
+ python config.status 3.3
+-configured by $0, generated by GNU Autoconf 2.69,
++configured by $0, generated by GNU Autoconf 2.68,
+ with options \\"\$ac_cs_config\\"
-+/* Define if you have the Mach cthreads package */
-+#undef C_THREADS
-+
- /* Define if C doubles are 64-bit IEEE 754 binary format, stored in ARM
- mixed-endian order (byte order 45670123) */
- #undef DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754
+-Copyright (C) 2012 Free Software Foundation, Inc.
++Copyright (C) 2010 Free Software Foundation, Inc.
+ This config.status script is free software; the Free Software Foundation
+ gives unlimited permission to copy, distribute and modify it."
+
+@@ -15263,7 +15296,7 @@ fi
+ _ACEOF
+ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
+ if \$ac_cs_recheck; then
+- set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
++ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+ shift
+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6
+ CONFIG_SHELL='$SHELL'
+diff -up ./pyconfig.h.in.autotool-intermediates ./pyconfig.h.in
diff --git a/python-3.2.3-lib64.patch b/python-3.3.0b1-lib64.patch
similarity index 73%
rename from python-3.2.3-lib64.patch
rename to python-3.3.0b1-lib64.patch
index 5c3cf13..110ed0d 100644
--- a/python-3.2.3-lib64.patch
+++ b/python-3.3.0b1-lib64.patch
@@ -1,6 +1,6 @@
-diff -up Python-3.2.3/Lib/distutils/command/install.py.lib64 Python-3.2.3/Lib/distutils/command/install.py
---- Python-3.2.3/Lib/distutils/command/install.py.lib64 2012-04-11 02:54:02.000000000 -0400
-+++ Python-3.2.3/Lib/distutils/command/install.py 2012-04-11 19:01:19.727107020 -0400
+diff -up Python-3.3.0b1/Lib/distutils/command/install.py.lib64 Python-3.3.0b1/Lib/distutils/command/install.py
+--- Python-3.3.0b1/Lib/distutils/command/install.py.lib64 2012-06-26 16:19:41.000000000 -0400
++++ Python-3.3.0b1/Lib/distutils/command/install.py 2012-07-20 13:09:38.760797382 -0400
@@ -45,14 +45,14 @@ else:
INSTALL_SCHEMES = {
'unix_prefix': {
@@ -18,11 +18,11 @@ diff -up Python-3.2.3/Lib/distutils/command/install.py.lib64 Python-3.2.3/Lib/di
'headers': '$base/include/python/$dist_name',
'scripts': '$base/bin',
'data' : '$base',
-diff -up Python-3.2.3/Lib/distutils/sysconfig.py.lib64 Python-3.2.3/Lib/distutils/sysconfig.py
---- Python-3.2.3/Lib/distutils/sysconfig.py.lib64 2012-04-11 02:54:02.000000000 -0400
-+++ Python-3.2.3/Lib/distutils/sysconfig.py 2012-04-11 19:01:19.727107020 -0400
-@@ -122,8 +122,12 @@ def get_python_lib(plat_specific=0, stan
- prefix = plat_specific and EXEC_PREFIX or PREFIX
+diff -up Python-3.3.0b1/Lib/distutils/sysconfig.py.lib64 Python-3.3.0b1/Lib/distutils/sysconfig.py
+--- Python-3.3.0b1/Lib/distutils/sysconfig.py.lib64 2012-06-26 16:19:41.000000000 -0400
++++ Python-3.3.0b1/Lib/distutils/sysconfig.py 2012-07-20 13:12:48.017431348 -0400
+@@ -138,8 +138,12 @@ def get_python_lib(plat_specific=0, stan
+ prefix = plat_specific and EXEC_PREFIX or PREFIX
if os.name == "posix":
+ if plat_specific or standard_lib:
@@ -35,10 +35,10 @@ diff -up Python-3.2.3/Lib/distutils/sysconfig.py.lib64 Python-3.2.3/Lib/distutil
if standard_lib:
return libpython
else:
-diff -up Python-3.2.3/Lib/site.py.lib64 Python-3.2.3/Lib/site.py
---- Python-3.2.3/Lib/site.py.lib64 2012-04-11 02:54:03.000000000 -0400
-+++ Python-3.2.3/Lib/site.py 2012-04-11 19:01:19.728107008 -0400
-@@ -285,12 +285,16 @@ def getsitepackages():
+diff -up Python-3.3.0b1/Lib/site.py.lib64 Python-3.3.0b1/Lib/site.py
+--- Python-3.3.0b1/Lib/site.py.lib64 2012-06-26 16:19:45.000000000 -0400
++++ Python-3.3.0b1/Lib/site.py 2012-07-20 13:09:38.762797357 -0400
+@@ -303,12 +303,16 @@ def getsitepackages(prefixes=None):
if sys.platform in ('os2emx', 'riscos'):
sitepackages.append(os.path.join(prefix, "Lib", "site-packages"))
elif os.sep == '/':
@@ -55,25 +55,25 @@ diff -up Python-3.2.3/Lib/site.py.lib64 Python-3.2.3/Lib/site.py
sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
if sys.platform == "darwin":
# for framework builds *only* we add the standard Apple
-diff -up Python-3.2.3/Lib/sysconfig.py.lib64 Python-3.2.3/Lib/sysconfig.py
---- Python-3.2.3/Lib/sysconfig.py.lib64 2012-04-11 02:54:03.000000000 -0400
-+++ Python-3.2.3/Lib/sysconfig.py 2012-04-11 19:01:19.728107008 -0400
+diff -up Python-3.3.0b1/Lib/sysconfig.py.lib64 Python-3.3.0b1/Lib/sysconfig.py
+--- Python-3.3.0b1/Lib/sysconfig.py.lib64 2012-06-26 16:19:45.000000000 -0400
++++ Python-3.3.0b1/Lib/sysconfig.py 2012-07-20 13:14:59.721784816 -0400
@@ -21,10 +21,10 @@ __all__ = [
_INSTALL_SCHEMES = {
'posix_prefix': {
-- 'stdlib': '{base}/lib/python{py_version_short}',
+- 'stdlib': '{installed_base}/lib/python{py_version_short}',
- 'platstdlib': '{platbase}/lib/python{py_version_short}',
-+ 'stdlib': '{base}/lib64/python{py_version_short}',
++ 'stdlib': '{installed_base}/lib64/python{py_version_short}',
+ 'platstdlib': '{platbase}/lib64/python{py_version_short}',
'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',
'include':
- '{base}/include/python{py_version_short}{abiflags}',
+ '{installed_base}/include/python{py_version_short}{abiflags}',
'platinclude':
@@ -81,10 +81,10 @@ _INSTALL_SCHEMES = {
- 'data' : '{userbase}',
+ 'data': '{userbase}',
},
'posix_user': {
- 'stdlib': '{userbase}/lib/python{py_version_short}',
@@ -85,11 +85,11 @@ diff -up Python-3.2.3/Lib/sysconfig.py.lib64 Python-3.2.3/Lib/sysconfig.py
+ 'platlib': '{userbase}/lib64/python{py_version_short}/site-packages',
'include': '{userbase}/include/python{py_version_short}',
'scripts': '{userbase}/bin',
- 'data' : '{userbase}',
-diff -up Python-3.2.3/Lib/test/test_site.py.lib64 Python-3.2.3/Lib/test/test_site.py
---- Python-3.2.3/Lib/test/test_site.py.lib64 2012-04-11 02:54:05.000000000 -0400
-+++ Python-3.2.3/Lib/test/test_site.py 2012-04-11 19:02:01.413585869 -0400
-@@ -236,12 +236,15 @@ class HelperFunctionsTests(unittest.Test
+ 'data': '{userbase}',
+diff -up Python-3.3.0b1/Lib/test/test_site.py.lib64 Python-3.3.0b1/Lib/test/test_site.py
+--- Python-3.3.0b1/Lib/test/test_site.py.lib64 2012-06-26 16:19:48.000000000 -0400
++++ Python-3.3.0b1/Lib/test/test_site.py 2012-07-20 13:09:38.764797333 -0400
+@@ -239,12 +239,15 @@ class HelperFunctionsTests(unittest.Test
self.assertEqual(dirs[2], wanted)
elif os.sep == '/':
# OS X non-framwework builds, Linux, FreeBSD, etc
@@ -108,10 +108,10 @@ diff -up Python-3.2.3/Lib/test/test_site.py.lib64 Python-3.2.3/Lib/test/test_sit
else:
# other platforms
self.assertEqual(len(dirs), 2)
-diff -up Python-3.2.3/Makefile.pre.in.lib64 Python-3.2.3/Makefile.pre.in
---- Python-3.2.3/Makefile.pre.in.lib64 2012-04-11 19:01:19.722107084 -0400
-+++ Python-3.2.3/Makefile.pre.in 2012-04-11 19:01:19.729106996 -0400
-@@ -106,7 +106,7 @@ LIBDIR= @libdir@
+diff -up Python-3.3.0b1/Makefile.pre.in.lib64 Python-3.3.0b1/Makefile.pre.in
+--- Python-3.3.0b1/Makefile.pre.in.lib64 2012-07-20 13:09:38.742797608 -0400
++++ Python-3.3.0b1/Makefile.pre.in 2012-07-20 13:09:38.765797321 -0400
+@@ -107,7 +107,7 @@ LIBDIR= @libdir@
MANDIR= @mandir@
INCLUDEDIR= @includedir@
CONFINCLUDEDIR= $(exec_prefix)/include
@@ -120,9 +120,9 @@ diff -up Python-3.2.3/Makefile.pre.in.lib64 Python-3.2.3/Makefile.pre.in
ABIFLAGS= @ABIFLAGS@
# Detailed destination directories
-diff -up Python-3.2.3/Modules/getpath.c.lib64 Python-3.2.3/Modules/getpath.c
---- Python-3.2.3/Modules/getpath.c.lib64 2012-04-11 02:54:07.000000000 -0400
-+++ Python-3.2.3/Modules/getpath.c 2012-04-11 19:01:19.729106996 -0400
+diff -up Python-3.3.0b1/Modules/getpath.c.lib64 Python-3.3.0b1/Modules/getpath.c
+--- Python-3.3.0b1/Modules/getpath.c.lib64 2012-06-26 16:19:54.000000000 -0400
++++ Python-3.3.0b1/Modules/getpath.c 2012-07-20 13:09:38.766797308 -0400
@@ -122,8 +122,8 @@
#endif
@@ -143,7 +143,7 @@ diff -up Python-3.2.3/Modules/getpath.c.lib64 Python-3.2.3/Modules/getpath.c
static void
reduce(wchar_t *dir)
-@@ -583,7 +583,7 @@ calculate_path(void)
+@@ -669,7 +669,7 @@ calculate_path(void)
}
else
wcsncpy(zip_path, _prefix, MAXPATHLEN);
@@ -152,7 +152,7 @@ diff -up Python-3.2.3/Modules/getpath.c.lib64 Python-3.2.3/Modules/getpath.c
bufsz = wcslen(zip_path); /* Replace "00" with version */
zip_path[bufsz - 6] = VERSION[0];
zip_path[bufsz - 5] = VERSION[2];
-@@ -593,7 +593,7 @@ calculate_path(void)
+@@ -679,7 +679,7 @@ calculate_path(void)
fprintf(stderr,
"Could not find platform dependent libraries <exec_prefix>\n");
wcsncpy(exec_prefix, _exec_prefix, MAXPATHLEN);
@@ -161,10 +161,10 @@ diff -up Python-3.2.3/Modules/getpath.c.lib64 Python-3.2.3/Modules/getpath.c
}
/* If we found EXEC_PREFIX do *not* reduce it! (Yet.) */
-diff -up Python-3.2.3/setup.py.lib64 Python-3.2.3/setup.py
---- Python-3.2.3/setup.py.lib64 2012-04-11 02:54:08.000000000 -0400
-+++ Python-3.2.3/setup.py 2012-04-11 19:01:19.730106984 -0400
-@@ -396,7 +396,7 @@ class PyBuildExt(build_ext):
+diff -up Python-3.3.0b1/setup.py.lib64 Python-3.3.0b1/setup.py
+--- Python-3.3.0b1/setup.py.lib64 2012-06-26 16:19:58.000000000 -0400
++++ Python-3.3.0b1/setup.py 2012-07-20 13:09:38.767797295 -0400
+@@ -393,7 +393,7 @@ class PyBuildExt(build_ext):
# Ensure that /usr/local is always used, but the local build
# directories (i.e. '.' and 'Include') must be first. See issue
# 10520.
@@ -173,7 +173,7 @@ diff -up Python-3.2.3/setup.py.lib64 Python-3.2.3/setup.py
add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
self.add_multiarch_paths()
-@@ -643,11 +643,11 @@ class PyBuildExt(build_ext):
+@@ -652,11 +652,11 @@ class PyBuildExt(build_ext):
elif curses_library:
readline_libs.append(curses_library)
elif self.compiler.find_library_file(lib_dirs +
@@ -187,7 +187,7 @@ diff -up Python-3.2.3/setup.py.lib64 Python-3.2.3/setup.py
extra_link_args=readline_extra_link_args,
libraries=readline_libs) )
else:
-@@ -684,8 +684,8 @@ class PyBuildExt(build_ext):
+@@ -693,8 +693,8 @@ class PyBuildExt(build_ext):
if krb5_h:
ssl_incs += krb5_h
ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
diff --git a/python3.spec b/python3.spec
index fd1f504..5867aae 100644
--- a/python3.spec
+++ b/python3.spec
@@ -2,10 +2,11 @@
# Conditionals and other variables controlling the build
# ======================================================
-%global pybasever 3.2
+%global pybasever 3.3
+%global alphatag b1
# pybasever without the dot:
-%global pyshortver 32
+%global pyshortver 33
%global pylibdir %{_libdir}/python%{pybasever}
%global dynload_dir %{pylibdir}/lib-dynload
@@ -14,9 +15,13 @@
# for PEP 3149:
# http://www.python.org/dev/peps/pep-3149/
+# ("configure.in" became "configure.ac" in Python 3.3 onwards, and in
+# backports)
+
# ABIFLAGS, LDVERSION and SOABI are in the upstream Makefile
-%global ABIFLAGS_optimized mu
-%global ABIFLAGS_debug dmu
+# With Python 3.3, we lose the "u" suffix due to PEP 393
+%global ABIFLAGS_optimized m
+%global ABIFLAGS_debug dm
%global LDVERSION_optimized %{pybasever}%{ABIFLAGS_optimized}
%global LDVERSION_debug %{pybasever}%{ABIFLAGS_debug}
@@ -31,9 +36,9 @@
# For example,
# foo/bar.py
# now has bytecode at:
-# foo/__pycache__/bar.cpython-32.pyc
-# foo/__pycache__/bar.cpython-32.pyo
-%global bytecode_suffixes .cpython-32.py?
+# foo/__pycache__/bar.cpython-33.pyc
+# foo/__pycache__/bar.cpython-33.pyo
+%global bytecode_suffixes .cpython-33.py?
# Python's configure script defines SOVERSION, and this is used in the Makefile
# to determine INSTSONAME, the name of the libpython DSO:
@@ -121,8 +126,8 @@
# ==================
Summary: Version 3 of the Python programming language aka Python 3000
Name: python3
-Version: %{pybasever}.3
-Release: 10%{?dist}
+Version: %{pybasever}.0
+Release: 0.1.%{alphatag}%{?dist}
License: Python
Group: Development/Languages
@@ -182,7 +187,7 @@ BuildRequires: zlib-devel
# Source code and patches
# =======================
-Source: http://www.python.org/ftp/python/%{version}/Python-%{version}.tar.xz
+Source: http://www.python.org/ftp/python/%{version}/Python-%{version}%{alphatag}.tar.xz
# Avoid having various bogus auto-generated Provides lines for the various
# python c modules' SONAMEs:
@@ -219,17 +224,14 @@ Patch1: Python-3.1.1-rpath.patch
# The four TestMIMEAudio tests fail due to "audiotest.au" not being packaged.
# It's simplest to remove them:
-Patch3: python-3.2b2-remove-mimeaudio-tests.patch
+Patch3: 00003-remove-mimeaudio-tests.patch
# 00055 #
# Systemtap support: add statically-defined probe points
-# Patch based on upstream bug: http://bugs.python.org/issue4111
-# fixed up by mjw and wcohen for 2.6.2, then fixed up by dmalcolm for 2.6.4
-# then rewritten by mjw (attachment 390110 of rhbz 545179); ported to 3.1.1 by
-# dmalcolm
+# Patch sent upstream as http://bugs.python.org/issue14776
Patch55: 00055-systemtap.patch
-Patch102: python-3.2.3-lib64.patch
+Patch102: python-3.3.0b1-lib64.patch
# 00104 #
# Only used when "%{_lib}" == "lib64"
@@ -387,9 +389,9 @@ Patch146: 00146-hashlib-fips.patch
# 00147 #
# Add a sys._debugmallocstats() function
-# Based on patch 202 from RHEL 5's python.spec, with updates from rhbz#737198
# Sent upstream as http://bugs.python.org/issue14785
-Patch147: 00147-add-debug-malloc-stats.patch
+# Upstream as of Python 3.3.0
+# Patch147: 00147-add-debug-malloc-stats.patch
# 00148 #
# Upstream as of Python 3.2.3:
@@ -594,7 +596,7 @@ can load its own extensions.
# ======================================================
%prep
-%setup -q -n Python-%{version}
+%setup -q -n Python-%{version}%{alphatag}
chmod +x %{SOURCE1}
%if 0%{?with_systemtap}
@@ -671,7 +673,7 @@ done
# 00144: not for python3
# 00145: not for python3
%patch146 -p1
-%patch147 -p1
+# 00147: upstream as of Python 3.3.0
# 00148: upstream as of Python 3.2.3
# 00149: upstream as of Python 3.2.3
%ifarch ppc %{power64}
@@ -765,10 +767,8 @@ BuildPython() {
--with-dbmliborder=gdbm:ndbm:bdb \
--with-system-expat \
--with-system-ffi \
- --with-wide-unicode \
%if 0%{?with_systemtap}
- --with-dtrace \
- --with-tapset-install-dir=%{tapsetdir} \
+ --with-systemtap \
%endif
%if 0%{?with_valgrind}
--with-valgrind \
@@ -919,8 +919,8 @@ install -d -m 0755 %{buildroot}/usr/lib/python%{pybasever}/site-packages/__pycac
%endif
# ABIFLAGS, LDVERSION and SOABI are in the upstream Makefile
-%global ABIFLAGS_optimized mu
-%global ABIFLAGS_debug dmu
+%global ABIFLAGS_optimized m
+%global ABIFLAGS_debug dm
%global LDVERSION_optimized %{pybasever}%{ABIFLAGS_optimized}
%global LDVERSION_debug %{pybasever}%{ABIFLAGS_debug}
@@ -1160,7 +1160,9 @@ rm -fr %{buildroot}
%{_bindir}/pydoc*
%{_bindir}/python3
%{_bindir}/python%{pybasever}
-%{_bindir}/python%{pybasever}mu
+%{_bindir}/python%{pybasever}m
+%{_bindir}/pyvenv
+%{_bindir}/pyvenv-3.3
%{_mandir}/*/*
%files libs
@@ -1168,19 +1170,21 @@ rm -fr %{buildroot}
%doc LICENSE README
%dir %{pylibdir}
%dir %{dynload_dir}
-%{dynload_dir}/Python-%{version}-py%{pybasever}.egg-info
%{dynload_dir}/_bisect.%{SOABI_optimized}.so
+%{dynload_dir}/_bz2.%{SOABI_optimized}.so
%{dynload_dir}/_codecs_cn.%{SOABI_optimized}.so
%{dynload_dir}/_codecs_hk.%{SOABI_optimized}.so
%{dynload_dir}/_codecs_iso2022.%{SOABI_optimized}.so
%{dynload_dir}/_codecs_jp.%{SOABI_optimized}.so
%{dynload_dir}/_codecs_kr.%{SOABI_optimized}.so
%{dynload_dir}/_codecs_tw.%{SOABI_optimized}.so
+%{dynload_dir}/_crypt.%{SOABI_optimized}.so
%{dynload_dir}/_csv.%{SOABI_optimized}.so
%{dynload_dir}/_ctypes.%{SOABI_optimized}.so
%{dynload_dir}/_curses.%{SOABI_optimized}.so
%{dynload_dir}/_curses_panel.%{SOABI_optimized}.so
%{dynload_dir}/_dbm.%{SOABI_optimized}.so
+%{dynload_dir}/_decimal.%{SOABI_optimized}.so
%{dynload_dir}/_elementtree.%{SOABI_optimized}.so
%if %{with_gdbm}
%{dynload_dir}/_gdbm.%{SOABI_optimized}.so
@@ -1189,6 +1193,7 @@ rm -fr %{buildroot}
%{dynload_dir}/_heapq.%{SOABI_optimized}.so
%{dynload_dir}/_json.%{SOABI_optimized}.so
%{dynload_dir}/_lsprof.%{SOABI_optimized}.so
+%{dynload_dir}/_lzma.%{SOABI_optimized}.so
%{dynload_dir}/_multibytecodec.%{SOABI_optimized}.so
%{dynload_dir}/_multiprocessing.%{SOABI_optimized}.so
%{dynload_dir}/_pickle.%{SOABI_optimized}.so
@@ -1202,9 +1207,7 @@ rm -fr %{buildroot}
%{dynload_dir}/atexit.%{SOABI_optimized}.so
%{dynload_dir}/audioop.%{SOABI_optimized}.so
%{dynload_dir}/binascii.%{SOABI_optimized}.so
-%{dynload_dir}/bz2.%{SOABI_optimized}.so
%{dynload_dir}/cmath.%{SOABI_optimized}.so
-%{dynload_dir}/crypt.%{SOABI_optimized}.so
%{dynload_dir}/_datetime.%{SOABI_optimized}.so
%{dynload_dir}/fcntl.%{SOABI_optimized}.so
%{dynload_dir}/grp.%{SOABI_optimized}.so
@@ -1231,7 +1234,11 @@ rm -fr %{buildroot}
%{pylibdir}/*.py
%dir %{pylibdir}/__pycache__/
%{pylibdir}/__pycache__/*%{bytecode_suffixes}
-%{pylibdir}/wsgiref.egg-info
+
+%dir %{pylibdir}/collections/
+%dir %{pylibdir}/collections/__pycache__/
+%{pylibdir}/collections/*.py
+%{pylibdir}/collections/__pycache__/*%{bytecode_suffixes}
%dir %{pylibdir}/concurrent/
%dir %{pylibdir}/concurrent/__pycache__/
@@ -1268,6 +1275,7 @@ rm -fr %{buildroot}
%{pylibdir}/email/*.py
%{pylibdir}/email/__pycache__/*%{bytecode_suffixes}
%{pylibdir}/email/mime
+%doc %{pylibdir}/email/architecture.rst
%{pylibdir}/encodings
%{pylibdir}/html
@@ -1288,7 +1296,7 @@ rm -fr %{buildroot}
%exclude %{pylibdir}/lib2to3/tests
%{pylibdir}/logging
%{pylibdir}/multiprocessing
-%{pylibdir}/plat-linux2
+%{pylibdir}/plat-linux
%{pylibdir}/pydoc_data
%dir %{pylibdir}/sqlite3/
@@ -1312,6 +1320,13 @@ rm -fr %{buildroot}
%{pylibdir}/unittest/__pycache__/*%{bytecode_suffixes}
%{pylibdir}/urllib
+
+%dir %{pylibdir}/venv/
+%dir %{pylibdir}/venv/__pycache__/
+%{pylibdir}/venv/*.py
+%{pylibdir}/venv/__pycache__/*%{bytecode_suffixes}
+%{pylibdir}/venv/scripts
+
%{pylibdir}/wsgiref
%{pylibdir}/xml
%{pylibdir}/xmlrpc
@@ -1380,11 +1395,11 @@ rm -fr %{buildroot}
%defattr(-, root, root)
%{pylibdir}/ctypes/test
%{pylibdir}/distutils/tests
-%{pylibdir}/email/test
%{pylibdir}/importlib/test
%{pylibdir}/sqlite3/test
%{pylibdir}/test
%{dynload_dir}/_ctypes_test.%{SOABI_optimized}.so
+%{dynload_dir}/_testbuffer.%{SOABI_optimized}.so
%{dynload_dir}/_testcapi.%{SOABI_optimized}.so
%{pylibdir}/lib2to3/tests
%{pylibdir}/tkinter/test
@@ -1408,17 +1423,20 @@ rm -fr %{buildroot}
# Analog of the -libs subpackage's files:
# ...with debug builds of the built-in "extension" modules:
%{dynload_dir}/_bisect.%{SOABI_debug}.so
+%{dynload_dir}/_bz2.%{SOABI_debug}.so
%{dynload_dir}/_codecs_cn.%{SOABI_debug}.so
%{dynload_dir}/_codecs_hk.%{SOABI_debug}.so
%{dynload_dir}/_codecs_iso2022.%{SOABI_debug}.so
%{dynload_dir}/_codecs_jp.%{SOABI_debug}.so
%{dynload_dir}/_codecs_kr.%{SOABI_debug}.so
%{dynload_dir}/_codecs_tw.%{SOABI_debug}.so
+%{dynload_dir}/_crypt.%{SOABI_debug}.so
%{dynload_dir}/_csv.%{SOABI_debug}.so
%{dynload_dir}/_ctypes.%{SOABI_debug}.so
%{dynload_dir}/_curses.%{SOABI_debug}.so
%{dynload_dir}/_curses_panel.%{SOABI_debug}.so
%{dynload_dir}/_dbm.%{SOABI_debug}.so
+%{dynload_dir}/_decimal.%{SOABI_debug}.so
%{dynload_dir}/_elementtree.%{SOABI_debug}.so
%if %{with_gdbm}
%{dynload_dir}/_gdbm.%{SOABI_debug}.so
@@ -1427,6 +1445,7 @@ rm -fr %{buildroot}
%{dynload_dir}/_heapq.%{SOABI_debug}.so
%{dynload_dir}/_json.%{SOABI_debug}.so
%{dynload_dir}/_lsprof.%{SOABI_debug}.so
+%{dynload_dir}/_lzma.%{SOABI_debug}.so
%{dynload_dir}/_multibytecodec.%{SOABI_debug}.so
%{dynload_dir}/_multiprocessing.%{SOABI_debug}.so
%{dynload_dir}/_pickle.%{SOABI_debug}.so
@@ -1440,9 +1459,7 @@ rm -fr %{buildroot}
%{dynload_dir}/atexit.%{SOABI_debug}.so
%{dynload_dir}/audioop.%{SOABI_debug}.so
%{dynload_dir}/binascii.%{SOABI_debug}.so
-%{dynload_dir}/bz2.%{SOABI_debug}.so
%{dynload_dir}/cmath.%{SOABI_debug}.so
-%{dynload_dir}/crypt.%{SOABI_debug}.so
%{dynload_dir}/_datetime.%{SOABI_debug}.so
%{dynload_dir}/fcntl.%{SOABI_debug}.so
%{dynload_dir}/grp.%{SOABI_debug}.so
@@ -1487,6 +1504,7 @@ rm -fr %{buildroot}
# Analog of the -test subpackage's files:
%{dynload_dir}/_ctypes_test.%{SOABI_debug}.so
+%{dynload_dir}/_testbuffer.%{SOABI_debug}.so
%{dynload_dir}/_testcapi.%{SOABI_debug}.so
%endif # with_debug_build
@@ -1510,6 +1528,18 @@ rm -fr %{buildroot}
# ======================================================
%changelog
+* Fri Jul 20 2012 David Malcolm <dmalcolm at redhat.com> - 3.3.0-0.1.b1
+- 3.2 -> 3.3: https://fedoraproject.org/wiki/Features/Python_3.3
+- 3.3.0b1: refresh patches 3, 55, 102, 111, 113, 114, 134, 157; drop upstream
+patch 147; regenenerate autotools patch; drop "--with-wide-unicode" from
+configure (PEP 393); "plat-linux2" -> "plat-linux" (upstream issue 12326);
+"bz2" -> "_bz2" and "crypt" -> "_crypt"; egg-info files are no longer shipped
+for stdlib (upstream issues 10645 and 12218); email/test moved to
+test/test_email; add /usr/bin/pyvenv[-3.3] and venv module (PEP 405); add
+_decimal and _lzma modules; make collections modules explicit in payload again
+(upstream issue 11085); add _testbuffer module to tests subpackage (added in
+upstream commit 3f9b3b6f7ff0)
+
* Fri Jun 22 2012 David Malcolm <dmalcolm at redhat.com> - 3.2.3-10
- use macro for power64 (rhbz#834653)
diff --git a/sources b/sources
index 9d0aae5..b2e8d32 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-187564726f2c1473d301c586acc24847 Python-3.2.3.tar.xz
+710047668636097f7557ba45953fce1a Python-3.3.0b1.tar.xz
More information about the scm-commits
mailing list