[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