PSARC 2014/183 Python 2.7.6
authorJohn Beck <John.Beck@Oracle.COM>
Thu, 22 May 2014 14:36:47 -0700
changeset 1914 00e8dbcb9b1e
parent 1913 bf893655bc39
child 1915 c02f96475fe6
PSARC 2014/183 Python 2.7.6 18251953 update Python 2.7 line to version 2.7.6
components/python/python27/Makefile
components/python/python27/patches/00-bits.patch
components/python/python27/patches/02-setup.patch
components/python/python27/patches/04-solaris-64-bit.patch
components/python/python27/patches/05-dtrace.patch
components/python/python27/patches/06-ucred.patch
components/python/python27/patches/07-dlpi.patch
components/python/python27/patches/08-encoding-alias.patch
components/python/python27/patches/09-rbac.patch
components/python/python27/patches/10-cflags.patch
components/python/python27/patches/10-closerange.patch
components/python/python27/patches/11-closerange.patch
components/python/python27/patches/12-studio-profile.patch
components/python/python27/patches/13-pic-compile.patch
components/python/python27/patches/14-py_db.patch
components/python/python27/patches/15-get_wch.patch
components/python/python27/patches/16-ossaudiodev.patch
components/python/python27/patches/17-CVE-2013-4238.py27.patch
components/python/python27/patches/18-osconf-long.patch
components/python/python27/patches/19-recvfrom_into.patch
components/python/python27/patches/20-bsddb-harmful.patch
components/python/python27/patches/20-ctypes-util-find-library.patch
components/python/python27/python-27-tests.p5m
components/python/python27/python-27.p5m
components/python/python27/tkinter-27.p5m
components/python/zope-interface/resolve.deps
--- a/components/python/python27/Makefile	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/Makefile	Thu May 22 14:36:47 2014 -0700
@@ -18,7 +18,7 @@
 #
 # CDDL HEADER END
 #
-# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
 
 #
 include ../../../make-rules/shared-macros.mk
@@ -26,12 +26,12 @@
 PATH=/usr/bin:/usr/gnu/bin:/usr/sbin
 
 COMPONENT_NAME=		Python
-COMPONENT_VERSION=	2.7.3
+COMPONENT_VERSION=	2.7.6
 COMPONENT_PROJECT_URL=	http://python.org/
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
-COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.bz2
+COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.xz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:726457e11cb153adc3f428aaf1901fc561a374c30e5e7da6742c0742a338663c
+    sha256:1fd68e81f8bf7386ff239b7faee9ba387129d2cf34eab13350bd8503a0bff6a1
 COMPONENT_ARCHIVE_URL=	$(COMPONENT_PROJECT_URL)ftp/python/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
 COMPONENT_BUGDB=	utility/python
 
--- a/components/python/python27/patches/00-bits.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/00-bits.patch	Thu May 22 14:36:47 2014 -0700
@@ -1,8 +1,8 @@
 #
 # This patch makes the pyconfig.h header file 32/64 bit friendly.
 #
---- Python-2.7.1/configure.in.orig	Tue Jul 12 14:46:56 2011
-+++ Python-2.7.1/configure.in	Tue Jul 12 14:47:05 2011
+--- Python-2.7.6/configure.ac.~1~	2013-11-09 23:36:41.000000000 -0800
++++ Python-2.7.6/configure.ac	2014-05-14 11:47:47.888887846 -0700
 @@ -5,7 +5,7 @@
  # Set VERSION so we only need to edit in one place (i.e., here)
  m4_define(PYTHON_VERSION, 2.7)
@@ -12,7 +12,7 @@
  
  AC_REVISION($Revision$)
  AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
[email protected]@ -1906,12 +1941,6 @@
[email protected]@ -2086,12 +2086,6 @@
  if test -z "$CCSHARED"
  then
  	case $ac_sys_system/$ac_sys_release in
--- a/components/python/python27/patches/02-setup.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/02-setup.patch	Thu May 22 14:36:47 2014 -0700
@@ -1,22 +1,24 @@
---- Python-2.7.1/setup.py.~1~	Sun Oct 31 11:40:21 2010
-+++ Python-2.7.1/setup.py	Fri Jul 15 15:04:56 2011
[email protected]@ -369,8 +369,8 @@
+--- Python-2.7.6/setup.py.~1~	2013-11-09 23:36:41.000000000 -0800
++++ Python-2.7.6/setup.py	2014-05-14 12:46:04.859407465 -0700
[email protected]@ -437,9 +437,9 @@
  
      def detect_modules(self):
          # Ensure that /usr/local is always used
--        add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
--        add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
-+        #add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
-+        #add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+-        if not cross_compiling:
+-            add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
+-            add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
++        # if not cross_compiling:
++        #   add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
++        #   add_dir_to_list(self.compiler.include_dirs, '/usr/local/include')
+         if cross_compiling:
+             self.add_gcc_paths()
          self.add_multiarch_paths()
- 
-         # Add paths specified in the environment variables LDFLAGS and
[email protected]@ -657,6 +657,13 @@
[email protected]@ -761,6 +761,13 @@
                                                       ['/usr/lib/termcap'],
                                                       'termcap'):
                  readline_libs.append('termcap')
 +
-+	    if platform == 'sunos5':
++	    if host_platform == 'sunos5':
 +		# insert '-zrecord' before the readline libraries that we
 +		# want to link with to avoid rl_insert() elimination
 +		readline_extra_link_args = ('-Wl,-zrecord','-lreadline','-lncurses')
@@ -25,30 +27,7 @@
              exts.append( Extension('readline', ['readline.c'],
                                     library_dirs=['/usr/lib/termcap'],
                                     extra_link_args=readline_extra_link_args,
[email protected]@ -677,6 +684,7 @@
- 
-         # socket(2)
-         exts.append( Extension('_socket', ['socketmodule.c'],
-+                               libraries = ['socket', 'nsl'],
-                                depends = ['socketmodule.h']) )
-         # Detect SSL support for the socket module (via _ssl)
-         search_for_ssl_incs_in = [
[email protected]@ -1443,9 +1451,14 @@
-                 sysconfig.get_config_var('POSIX_SEMAPHORES_NOT_ENABLED')):
-                 multiprocessing_srcs.append('_multiprocessing/semaphore.c')
- 
-+	multiproc_libs = []
-+	if platform == 'sunos5':
-+	    multiproc_libs = [ "xnet" ]
-+
-         if sysconfig.get_config_var('WITH_THREAD'):
-             exts.append ( Extension('_multiprocessing', multiprocessing_srcs,
-                                     define_macros=macros.items(),
-+                                    libraries=multiproc_libs,
-                                     include_dirs=["Modules/_multiprocessing"]))
-         else:
-             missing.append('_multiprocessing')
[email protected]@ -1896,7 +1909,8 @@
[email protected]@ -2075,7 +2082,8 @@
              # this option. If you want to compile ctypes with the Sun
              # compiler, please research a proper solution, instead of
              # finding some -z option for the Sun compiler.
@@ -56,5 +35,5 @@
 +            #extra_link_args.append('-mimpure-text')
 +            pass
  
-         elif sys.platform.startswith('hp-ux'):
+         elif host_platform.startswith('hp-ux'):
              extra_link_args.append('-fPIC')
--- a/components/python/python27/patches/04-solaris-64-bit.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/04-solaris-64-bit.patch	Thu May 22 14:36:47 2014 -0700
@@ -1,6 +1,6 @@
---- Python-2.7.1/Lib/distutils/command/build_ext.py.orig	Fri Jul 15 15:32:28 2011
-+++ Python-2.7.1/Lib/distutils/command/build_ext.py	Fri Jul 15 15:37:00 2011
[email protected]@ -637,6 +637,10 @@
+--- Python-2.7.6/Lib/distutils/command/build_ext.py.~1~	2013-11-09 23:36:40.000000000 -0800
++++ Python-2.7.6/Lib/distutils/command/build_ext.py	2014-05-14 12:47:04.342901439 -0700
[email protected]@ -634,6 +634,10 @@
          filename = self.get_ext_filename(ext_name)
          filename = os.path.split(filename)[-1]
  
@@ -11,7 +11,7 @@
          if not self.inplace:
              # no further work needed
              # returning :
[email protected]@ -677,7 +681,14 @@
[email protected]@ -674,7 +678,14 @@
          so_ext = get_config_var('SO')
          if os.name == 'nt' and self.debug:
              return os.path.join(*ext_path) + '_d' + so_ext
@@ -27,9 +27,9 @@
  
      def get_export_symbols (self, ext):
          """Return the list of symbols that a shared extension has to
---- Python-2.7.1/Python/import.c.orig	Fri Jul 15 15:41:33 2011
-+++ Python-2.7.1/Python/import.c	Fri Jul 15 15:46:55 2011
[email protected]@ -1197,6 +1197,57 @@
+--- Python-2.7.6/Python/import.c.~1~	2013-11-09 23:36:41.000000000 -0800
++++ Python-2.7.6/Python/import.c	2014-05-14 12:53:34.233016586 -0700
[email protected]@ -1288,6 +1288,57 @@
  static int find_init_module(char *); /* Forward */
  static struct filedescr importhookdescr = {"", "", IMP_HOOK};
  
@@ -87,10 +87,10 @@
  static struct filedescr *
  find_module(char *fullname, char *subname, PyObject *path, char *buf,
              size_t buflen, FILE **p_fp, PyObject **p_loader)
[email protected]@ -1214,11 +1265,10 @@
[email protected]@ -1302,11 +1353,10 @@
      static struct filedescr fd_builtin = {"", "", C_BUILTIN};
      static struct filedescr fd_package = {"", "", PKG_DIRECTORY};
-     char name[MAXPATHLEN+1];
+     char *name;
 -#if defined(PYOS_OS2)
      size_t saved_len;
      size_t saved_namelen;
@@ -100,15 +100,14 @@
      if (p_loader != NULL)
          *p_loader = NULL;
  
[email protected]@ -1437,7 +1487,6 @@
[email protected]@ -1513,15 +1563,17 @@
+                 }
+             }
          }
- #endif
- #endif
 -#if defined(PYOS_OS2)
          /* take a snapshot of the module spec for restoration
           * after the 8 character DLL hackery
           */
[email protected]@ -1444,8 +1493,11 @@
          saved_buf = strdup(buf);
          saved_len = len;
          saved_namelen = namelen;
@@ -121,7 +120,7 @@
  #if defined(PYOS_OS2) && defined(HAVE_DYNAMIC_LOADING)
              /* OS/2 limits DLLs to 8 character names (w/o
                 extension)
[email protected]@ -1486,14 +1538,13 @@
[email protected]@ -1562,21 +1614,20 @@
                      fp = NULL;
                  }
              }
@@ -138,7 +137,6 @@
          /* don't need/want the module name snapshot anymore */
          if (saved_buf)
          {
[email protected]@ -1500,7 +1551,7 @@
              free(saved_buf);
              saved_buf = NULL;
          }
--- a/components/python/python27/patches/05-dtrace.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/05-dtrace.patch	Thu May 22 14:36:47 2014 -0700
@@ -2,9 +2,9 @@
 test_sys.py to add an integer to the frameobject structure size since this
 patch adds "int f_calllineno" to the structure, so this test does not fail.
 
---- Python-2.7.1/Makefile.pre.in.~1~	Thu Oct 14 06:37:30 2010
-+++ Python-2.7.1/Makefile.pre.in	Mon Jul 18 14:53:46 2011
[email protected]@ -198,6 +198,7 @@
+--- Python-2.7.6/Makefile.pre.in.~1~	2013-11-09 23:36:41.000000000 -0800
++++ Python-2.7.6/Makefile.pre.in	2014-05-14 12:54:43.824219677 -0700
[email protected]@ -218,6 +218,7 @@
  # Used of signalmodule.o is not available
  SIGNAL_OBJS=	@[email protected]
  
@@ -12,7 +12,7 @@
  
  ##########################################################################
  # Grammar
[email protected]@ -298,6 +299,7 @@
[email protected]@ -341,6 +342,7 @@
  		Python/formatter_unicode.o \
  		Python/formatter_string.o \
  		Python/$(DYNLOADFILE) \
@@ -20,7 +20,7 @@
  		$(LIBOBJS) \
  		$(MACHDEP_OBJS) \
  		$(THREADOBJ)
[email protected]@ -599,6 +601,18 @@
[email protected]@ -664,6 +666,18 @@
  Python/formatter_string.o: $(srcdir)/Python/formatter_string.c \
  				$(STRINGLIB_HEADERS)
  
@@ -39,8 +39,8 @@
  ############################################################################
  # Header files
  
---- Python-2.7.1/Include/frameobject.h.~1~	Fri May  8 17:23:21 2009
-+++ Python-2.7.1/Include/frameobject.h	Mon Jul 18 14:53:46 2011
+--- Python-2.7.6/Include/frameobject.h.~1~	2013-11-09 23:36:39.000000000 -0800
++++ Python-2.7.6/Include/frameobject.h	2014-05-14 13:03:19.938777249 -0700
 @@ -44,6 +44,7 @@
         PyCode_Addr2Line to calculate the line from the current
         bytecode index. */
@@ -49,10 +49,9 @@
      int f_iblock;		/* index in f_blockstack */
      PyTryBlock f_blockstack[CO_MAXBLOCKS]; /* for try and loop blocks */
      PyObject *f_localsplus[1];	/* locals+stack, dynamically sized */
-
---- Python-2.7.1/Objects/frameobject.c.~1~	Sun May  9 09:46:46 2010
-+++ Python-2.7.1/Objects/frameobject.c	Mon Jul 18 15:03:52 2011
[email protected]@ -736,6 +736,7 @@
+--- Python-2.7.6/Objects/frameobject.c.~1~	2013-11-09 23:36:41.000000000 -0800
++++ Python-2.7.6/Objects/frameobject.c	2014-05-14 12:56:06.970076859 -0700
[email protected]@ -738,6 +738,7 @@
      f->f_tstate = tstate;
  
      f->f_lasti = -1;
@@ -60,8 +59,8 @@
      f->f_lineno = code->co_firstlineno;
      f->f_iblock = 0;
  
---- Python-2.7.1/Python/ceval.c.~1~	Fri Sep 24 22:27:12 2010
-+++ Python-2.7.1/Python/ceval.c	Mon Jul 18 15:15:35 2011
+--- Python-2.7.6/Python/ceval.c.~1~	2013-11-09 23:36:41.000000000 -0800
++++ Python-2.7.6/Python/ceval.c	2014-05-14 13:04:01.334853206 -0700
 @@ -19,6 +19,11 @@
  
  #include <ctype.h>
@@ -74,7 +73,7 @@
  #ifndef WITH_TSC
  
  #define READ_TIMESTAMP(var)
[email protected]@ -671,7 +676,56 @@
[email protected]@ -672,6 +677,55 @@
                        NULL);
  }
  
@@ -89,7 +88,7 @@
 +	filename = PyString_AsString(f->f_code->co_filename);
 +	fname = PyString_AsString(f->f_code->co_name);
 +	lineno = PyCode_Addr2Line(f->f_code, f->f_lasti);
- 
++
 +	PYTHON_FUNCTION_ENTRY((char *)filename, (char *)fname, lineno);
 +
 +	/*
@@ -127,11 +126,10 @@
 +#define	dtrace_entry()
 +#define	dtrace_return()
 +#endif
-+
+ 
  /* Interpreter main loop */
  
- PyObject *
[email protected]@ -682,9 +736,84 @@
[email protected]@ -683,9 +737,84 @@
      return PyEval_EvalFrameEx(f, 0);
  }
  
@@ -165,9 +163,9 @@
 +
 +
 +
- PyObject *
- PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
- {
++PyObject *
++PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
++{
 +	volatile PyObject *f2;
 +	f2 = PyEval_EvalFrameExReal(0, 0, 0, 0, 0, 0, f, throwflag);
 +	return (PyObject *)f2;
@@ -199,9 +197,9 @@
 +
 +#else /* __amd64 || __sparc */
 +
-+PyObject *
-+PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
-+{
+ PyObject *
+ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
+ {
 +
 +#endif /* __amd64 || __sparc */
 +
@@ -216,7 +214,7 @@
  #ifdef DXPAIRS
      int lastopcode = 0;
  #endif
[email protected]@ -909,6 +1038,11 @@
[email protected]@ -910,6 +1039,11 @@
          }
      }
  
@@ -228,7 +226,7 @@
      co = f->f_code;
      names = co->co_names;
      consts = co->co_consts;
[email protected]@ -2659,6 +2793,9 @@
[email protected]@ -2660,6 +2794,9 @@
              PyObject **sp;
              PCALL(PCALL_ALL);
              sp = stack_pointer;
@@ -238,7 +236,7 @@
  #ifdef WITH_TSC
              x = call_function(&sp, oparg, &intr0, &intr1);
  #else
[email protected]@ -2700,6 +2837,9 @@
[email protected]@ -2701,6 +2838,9 @@
              } else
                  Py_INCREF(func);
              sp = stack_pointer;
@@ -248,7 +246,7 @@
              READ_TIMESTAMP(intr0);
              x = ext_do_call(func, &sp, flags, na, nk);
              READ_TIMESTAMP(intr1);
[email protected]@ -3000,6 +3140,10 @@
[email protected]@ -3001,6 +3141,10 @@
  
      /* pop frame */
  exit_eval_frame:
@@ -259,8 +257,6 @@
      Py_LeaveRecursiveCall();
      tstate->frame = f->f_back;
  
-diff --git Python-2.6.4/Python/phelper.d Python-2.6.4/Python/phelper.d
-new file mode 100644
 --- /dev/null
 +++ Python-2.6.4/Python/phelper.d
 @@ -0,0 +1,139 @@
@@ -418,14 +414,14 @@
 +#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
---- Python-2.7.3/Lib/test/test_sys.py-orig	2012-12-13 06:50:00.472682534 -0800
-+++ Python-2.7.3/Lib/test/test_sys.py	2012-12-13 06:50:20.099858756 -0800
[email protected]@ -645,7 +645,7 @@ class SizeofTest(unittest.TestCase):
+--- Python-2.7.6/Lib/test/test_sys.py.~1~	2013-11-09 23:36:40.000000000 -0800
++++ Python-2.7.6/Lib/test/test_sys.py	2014-05-14 13:07:05.332748121 -0700
[email protected]@ -612,7 +612,7 @@
          nfrees = len(x.f_code.co_freevars)
          extras = x.f_code.co_stacksize + x.f_code.co_nlocals +\
                   ncells + nfrees - 1
--        check(x, size(vh + '12P3i' + CO_MAXBLOCKS*'3i' + 'P' + extras*'P'))
-+        check(x, size(vh + '12P4i' + CO_MAXBLOCKS*'3i' + 'P' + extras*'P'))
+-        check(x, vsize('12P3i' + CO_MAXBLOCKS*'3i' + 'P' + extras*'P'))
++        check(x, vsize('12P4i' + CO_MAXBLOCKS*'3i' + 'P' + extras*'P'))
          # function
          def func(): pass
-         check(func, size(h + '9P'))
+         check(func, size('9P'))
--- a/components/python/python27/patches/06-ucred.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/06-ucred.patch	Thu May 22 14:36:47 2014 -0700
@@ -395,10 +395,9 @@
 +
 +	PyModule_AddObject(m, "ucred", (PyObject *)&pyucred_type);
 +}
-diff --git Python-2.6.4/setup.py Python-2.6.4/setup.py
---- Python-2.6.4/setup.py
-+++ Python-2.6.4/setup.py
[email protected]@ -1277,6 +1277,13 @@
+--- Python-2.7.6/setup.py.~2~	2014-05-14 13:07:52.803164982 -0700
++++ Python-2.7.6/setup.py	2014-05-14 13:07:52.917214713 -0700
[email protected]@ -1536,6 +1536,13 @@
          else:
              missing.append('dl')
  
@@ -412,8 +411,6 @@
          # Thomas Heller's _ctypes module
          self.detect_ctypes(inc_dirs, lib_dirs)
  
-diff --git Python-2.6.4/Lib/test/ucredtest.py Python-2.6.4/Lib/test/ucredtest.py
-new file mode 100644
 --- /dev/null	2011-02-12 03:14:16.000000000 -0600
 +++ Python-2.6.4/Lib/test/ucredtest.py	2011-01-20 13:52:42.945657919 -0600
 @@ -0,0 +1,45 @@
--- a/components/python/python27/patches/07-dlpi.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/07-dlpi.patch	Thu May 22 14:36:47 2014 -0700
@@ -1210,10 +1210,9 @@
 +	PyModule_AddIntConstant(mod, "IDLE", DL_IDLE);
 +	PyModule_AddIntConstant(mod, "SYSERR", DL_SYSERR);
 +}
-diff --git Python-2.6.4/setup.py Python-2.6.4/setup.py
---- Python-2.6.4/setup.py
-+++ Python-2.6.4/setup.py
[email protected]@ -1284,6 +1284,12 @@
+--- Python-2.7.6/setup.py.~3~	2014-05-14 13:10:30.979598710 -0700
++++ Python-2.7.6/setup.py	2014-05-14 13:10:31.006864446 -0700
[email protected]@ -1543,6 +1543,12 @@
              exts.append( Extension('ucred', ['ucred.c'],
                                     libraries = ['tsol']) )
  
@@ -1226,8 +1225,6 @@
          # Thomas Heller's _ctypes module
          self.detect_ctypes(inc_dirs, lib_dirs)
  
-diff --git Python-2.6.4/lib/test/dlpitest.py Python-2.6.4/Lib/test/dlpitest.py
-new file mode 100644
 --- /dev/null	2011-02-12 03:13:26.000000000 -0600
 +++ Python-2.6.4/Lib/test/dlpitest.py	2011-01-20 13:52:42.895865414 -0600
 @@ -0,0 +1,96 @@
--- a/components/python/python27/patches/08-encoding-alias.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/08-encoding-alias.patch	Thu May 22 14:36:47 2014 -0700
@@ -1,6 +1,5 @@
-diff --git Python-2.6.4/Lib/encodings/aliases.py Python-2.6.4/Lib/encodings/aliases.py
---- Python-2.6.4/Lib/encodings/aliases.py
-+++ Python-2.6.4/Lib/encodings/aliases.py
+--- Python-2.7.6/Lib/encodings/aliases.py.~1~	2013-11-09 23:36:40.000000000 -0800
++++ Python-2.7.6/Lib/encodings/aliases.py	2014-05-14 13:12:20.046910463 -0700
 @@ -73,6 +73,7 @@
  
      # cp1251 codec
@@ -9,7 +8,7 @@
      'windows_1251'       : 'cp1251',
  
      # cp1252 codec
[email protected]@ -217,6 +218,7 @@
[email protected]@ -222,6 +223,7 @@
      'u_jis'              : 'euc_jp',
  
      # euc_kr codec
@@ -17,7 +16,7 @@
      'euckr'              : 'euc_kr',
      'korean'             : 'euc_kr',
      'ksc5601'            : 'euc_kr',
[email protected]@ -457,6 +459,7 @@
[email protected]@ -462,6 +464,7 @@
      'shiftjis'           : 'shift_jis',
      'sjis'               : 'shift_jis',
      's_jis'              : 'shift_jis',
@@ -25,7 +24,7 @@
  
      # shift_jis_2004 codec
      'shiftjis2004'       : 'shift_jis_2004',
[email protected]@ -476,6 +479,7 @@
[email protected]@ -481,6 +484,7 @@
      'tis_620_0'          : 'tis_620',
      'tis_620_2529_0'     : 'tis_620',
      'tis_620_2529_1'     : 'tis_620',
--- a/components/python/python27/patches/09-rbac.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/09-rbac.patch	Thu May 22 14:36:47 2014 -0700
@@ -1254,10 +1254,9 @@
 +	0,                         /* tp_alloc */
 +	Userattr_new,                 /* tp_new */
 +};
-diff --git Python-2.6.4/setup.py Python-2.6.4/setup.py
---- Python-2.6.4/setup.py
-+++ Python-2.6.4/setup.py
[email protected]@ -1290,6 +1290,22 @@
+--- Python-2.7.6/setup.py.~4~	2014-05-14 13:16:33.749494047 -0700
++++ Python-2.7.6/setup.py	2014-05-14 13:16:33.803607449 -0700
[email protected]@ -1549,6 +1549,22 @@
              exts.append( Extension('dlpi', ['dlpimodule.c'],
                                     libraries = ['dlpi']) )
  
@@ -1280,8 +1279,6 @@
          # Thomas Heller's _ctypes module
          self.detect_ctypes(inc_dirs, lib_dirs)
  
-diff --git Python-2.6.4/Lib/test/privrbactest.py Python-2.6.4/Lib/test/privrbactest.py
-new file mode 100644
 --- /dev/null	2011-02-12 03:13:57.000000000 -0600
 +++ Python-2.6.4/Lib/test/privrbactest.py	2011-01-20 13:52:42.862305331 -0600
 @@ -0,0 +1,289 @@
--- a/components/python/python27/patches/10-cflags.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/10-cflags.patch	Thu May 22 14:36:47 2014 -0700
@@ -1,6 +1,6 @@
---- Python-2.6.4/configure.in.orig	Fri Nov  4 12:03:26 2011
-+++ Python-2.6.4/configure.in	Fri Nov  4 12:04:05 2011
[email protected]@ -919,7 +919,7 @@
+--- Python-2.7.6/configure.ac.~2~	2014-05-14 13:20:24.767295632 -0700
++++ Python-2.7.6/configure.ac	2014-05-14 13:20:25.052695991 -0700
[email protected]@ -1083,7 +1083,7 @@
  	;;
  
      *)
@@ -8,13 +8,4 @@
 +	OPT=""
  	;;
      esac
- 
[email protected]@ -1110,6 +1110,8 @@
- 	# environment?
-         Darwin*)
- 	    ;;
-+	SunOS*)
-+	    ;;
-         *)
- 	    BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
- 	    ;;
+ fi
--- a/components/python/python27/patches/10-closerange.patch	Tue May 20 21:56:15 2014 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
---- Python-2.7.1/Modules/posixmodule.c	Fri Nov 26 09:35:50 2010
-+++ Python-2.7.1/Modules/posixmodule.c	Fri Nov  4 09:41:24 2011
[email protected]@ -6442,16 +6442,34 @@
- "closerange(fd_low, fd_high)\n\n\
- Closes all file descriptors in [fd_low, fd_high), ignoring errors.");
- 
-+static int
-+close_func(void *lohi, int fd)
-+{
-+    int lo = ((int *)lohi)[0];
-+    int hi = ((int *)lohi)[1];
-+
-+    if (fd >= hi)
-+        return (1);
-+    else if (fd >= lo)
-+        close(fd);
-+
-+    return (0);
-+}
-+
- static PyObject *
- posix_closerange(PyObject *self, PyObject *args)
- {
-     int fd_from, fd_to, i;
-+    int lohi[2];
-+
-     if (!PyArg_ParseTuple(args, "ii:closerange", &fd_from, &fd_to))
-         return NULL;
-     Py_BEGIN_ALLOW_THREADS
--    for (i = fd_from; i < fd_to; i++)
--        if (_PyVerify_fd(i))
--            close(i);
-+
-+    lohi[0] = fd_from;
-+    lohi[1] = fd_to;
-+    fdwalk(close_func, lohi);
-+
-     Py_END_ALLOW_THREADS
-     Py_RETURN_NONE;
- }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python27/patches/11-closerange.patch	Thu May 22 14:36:47 2014 -0700
@@ -0,0 +1,40 @@
+--- Python-2.7.6/Modules/posixmodule.c.~1~	2013-11-09 23:36:41.000000000 -0800
++++ Python-2.7.6/Modules/posixmodule.c	2014-05-14 13:22:52.461187524 -0700
[email protected]@ -6603,16 +6603,34 @@
+ "closerange(fd_low, fd_high)\n\n\
+ Closes all file descriptors in [fd_low, fd_high), ignoring errors.");
+ 
++static int
++close_func(void *lohi, int fd)
++{
++    int lo = ((int *)lohi)[0];
++    int hi = ((int *)lohi)[1];
++
++    if (fd >= hi)
++        return (1);
++    else if (fd >= lo)
++        close(fd);
++
++    return (0);
++}
++
+ static PyObject *
+ posix_closerange(PyObject *self, PyObject *args)
+ {
+     int fd_from, fd_to, i;
++    int lohi[2];
++
+     if (!PyArg_ParseTuple(args, "ii:closerange", &fd_from, &fd_to))
+         return NULL;
+     Py_BEGIN_ALLOW_THREADS
+-    for (i = fd_from; i < fd_to; i++)
+-        if (_PyVerify_fd(i))
+-            close(i);
++
++    lohi[0] = fd_from;
++    lohi[1] = fd_to;
++    fdwalk(close_func, lohi);
++
+     Py_END_ALLOW_THREADS
+     Py_RETURN_NONE;
+ }
--- a/components/python/python27/patches/12-studio-profile.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/12-studio-profile.patch	Thu May 22 14:36:47 2014 -0700
@@ -3,9 +3,9 @@
 is a workaround for build peculiarities and to meet Studio's requirement
 that the profiling options be used at all steps of the build -- not just
 compilation.
---- Python-2.6.4/Makefile.pre.in.orig	Thu Nov  3 15:14:03 2011
-+++ Python-2.6.4/Makefile.pre.in	Thu Nov  3 15:14:11 2011
[email protected]@ -360,9 +360,9 @@
+--- Python-2.7.6/Makefile.pre.in.~2~	2014-05-14 13:29:26.322546831 -0700
++++ Python-2.7.6/Makefile.pre.in	2014-05-14 13:32:23.601766216 -0700
[email protected]@ -413,28 +413,37 @@
  profile-opt:
  	@echo "Building with support for profile generation:"
  	$(MAKE) clean
@@ -16,7 +16,6 @@
  	$(MAKE) run_profile_task
  	@echo "Rebuilding with profile guided optimizations:"
  	$(MAKE) clean
[email protected]@ -369,18 +369,27 @@
  	$(MAKE) build_all_use_profile
  
  build_all_generate_profile:
@@ -27,6 +26,7 @@
 +	    BLDSHARED="$(BLDSHARED) -xprofile=collect:$(XPROFILE_DIR)"
  
  run_profile_task:
+ 	: # FIXME: can't run for a cross build
 -	./$(BUILDPYTHON) $(PROFILE_TASK)
 +	LD_LIBRARY_PATH=. ./$(BUILDPYTHON) $(PROFILE_TASK)
  
@@ -48,19 +48,7 @@
  
  
  # Build the interpreter
[email protected]@ -395,10 +404,7 @@
- 
- # Build the shared modules
- sharedmods: $(BUILDPYTHON)
--	@case $$MAKEFLAGS in \
--	*s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \
--	*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \
--	esac
-+	$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build
- 
- # Build static library
- # avoid long command lines, same as LIBRARY_OBJS
[email protected]@ -1173,7 +1179,7 @@
[email protected]@ -1293,7 +1302,7 @@
  	-rm -f Lib/lib2to3/*Grammar*.pickle
  
  profile-removal:
--- a/components/python/python27/patches/13-pic-compile.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/13-pic-compile.patch	Thu May 22 14:36:47 2014 -0700
@@ -1,8 +1,8 @@
---- Python-2.7.1/Lib/distutils/sysconfig.py.orig	2012-03-26 09:24:18.614278009 -0700
-+++ Python-2.7.1/Lib/distutils/sysconfig.py	2012-03-27 09:58:03.446132438 -0700
[email protected]@ -173,6 +173,15 @@
-             cflags = cflags + ' ' + os.environ['CPPFLAGS']
-             ldshared = ldshared + ' ' + os.environ['CPPFLAGS']
+--- Python-2.7.6/Lib/distutils/sysconfig.py.~1~	2013-11-09 23:36:40.000000000 -0800
++++ Python-2.7.6/Lib/distutils/sysconfig.py	2014-05-14 13:33:21.453593946 -0700
[email protected]@ -208,6 +208,15 @@
+         else:
+             archiver = ar + ' ' + ar_flags
  
 +        # Force PIC compilation. Determine if GNU compiler or otherwise
 +        # and set the PIC flag(s) accordingly. Defaults to Studio compiler.
--- a/components/python/python27/patches/14-py_db.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/14-py_db.patch	Thu May 22 14:36:47 2014 -0700
@@ -1,7 +1,6 @@
-diff --git Python-2.7.1/Makefile.pre.in.orig Python-2.7.1/Makefile.pre.in
---- Python-2.7.1/Makefile.pre.in.orig   Sun Feb 13 19:37:16 2011
-+++ Python-2.7.1/Makefile.pre.in        Sun Feb 13 20:55:04 2011
[email protected]@ -364,7 +364,7 @@
+--- Python-2.7.6/Makefile.pre.in.~3~	2014-05-14 13:34:20.432313485 -0700
++++ Python-2.7.6/Makefile.pre.in	2014-05-14 13:34:20.480920940 -0700
[email protected]@ -407,7 +407,7 @@
  
  # Default target
  all:		build_all
@@ -10,7 +9,7 @@
  
  # Compile a binary with gcc profile guided optimization.
  profile-opt:
[email protected]@ -709,6 +709,19 @@
[email protected]@ -777,6 +777,19 @@
  
  $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
  
@@ -30,7 +29,7 @@
  
  ######################################################################
  
[email protected]@ -773,7 +786,7 @@
[email protected]@ -841,7 +854,7 @@
  		$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
  
  # Install everything
@@ -38,10 +37,7 @@
 +install:	@[email protected] altinstall bininstall maninstall @[email protected] install-py_db
  
  # Install almost everything without disturbing previous versions
- altinstall:	@[email protected] altbininstall libinstall inclinstall libainstall \
-
-diff --git Python-2.7.1/py_db/check_offsets.c Python-2.7.1/py_db/check_offsets.c
-new file mode 100644
+ altinstall:	@[email protected] altbininstall libinstall inclinstall \
 --- /dev/null
 +++ Python-2.7.1/py_db/check_offsets.c
 @@ -0,0 +1,87 @@
--- a/components/python/python27/patches/15-get_wch.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/15-get_wch.patch	Thu May 22 14:36:47 2014 -0700
@@ -1,5 +1,5 @@
---- Python-2.7.3/Modules/_cursesmodule.c.orig	2012-09-27 10:17:54.934886883 -0700
-+++ Python-2.7.3/Modules/_cursesmodule.c	2012-09-27 10:21:19.861160806 -0700
+--- Python-2.7.6/Modules/_cursesmodule.c.~1~	2013-11-09 23:36:41.000000000 -0800
++++ Python-2.7.6/Modules/_cursesmodule.c	2014-05-14 13:36:59.388642793 -0700
 @@ -861,6 +861,37 @@
  }
  
@@ -38,7 +38,7 @@
  PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args)
  {
      int x, y;
[email protected]@ -1570,6 +1601,7 @@
[email protected]@ -1572,6 +1603,7 @@
      {"getbegyx",        (PyCFunction)PyCursesWindow_getbegyx, METH_NOARGS},
      {"getbkgd",         (PyCFunction)PyCursesWindow_GetBkgd, METH_NOARGS},
      {"getch",           (PyCFunction)PyCursesWindow_GetCh, METH_VARARGS},
--- a/components/python/python27/patches/16-ossaudiodev.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/16-ossaudiodev.patch	Thu May 22 14:36:47 2014 -0700
@@ -46,14 +46,16 @@
      _EXPORT_INT(m, SNDCTL_TMR_TIMEBASE);
 +#endif
  }
---- Python-2.7.3/setup.py-orig	2012-12-20 12:26:17.244961277 -0600
-+++ Python-2.7.3/setup.py	2012-12-20 12:27:23.938119947 -0600
[email protected]@ -1509,7 +1509,7 @@ class PyBuildExt(build_ext):
+--- Python-2.7.6/setup.py.~5~	2014-05-14 13:37:59.287142508 -0700
++++ Python-2.7.6/setup.py	2014-05-14 13:40:01.472280298 -0700
[email protected]@ -1632,8 +1632,8 @@
          else:
              missing.append('linuxaudiodev')
  
--        if (platform in ('linux2', 'freebsd4', 'freebsd5', 'freebsd6',
-+        if (platform in ('sunos5', 'linux2', 'freebsd4', 'freebsd5', 'freebsd6',
-                         'freebsd7', 'freebsd8')
-             or platform.startswith("gnukfreebsd")):
+-        if (host_platform in ('linux2', 'freebsd4', 'freebsd5', 'freebsd6',
+-                        'freebsd7', 'freebsd8')
++        if (host_platform in ('sunos5', 'linux2', 'freebsd4', 'freebsd5',
++                        'freebsd6', 'freebsd7', 'freebsd8')
+             or host_platform.startswith("gnukfreebsd")):
              exts.append( Extension('ossaudiodev', ['ossaudiodev.c']) )
+         else:
--- a/components/python/python27/patches/17-CVE-2013-4238.py27.patch	Tue May 20 21:56:15 2014 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,250 +0,0 @@
-# CVE-2013-4238
-# http://bugs.python.org/issue18709
-#
-diff -r 9ddc63c039ba Lib/test/nullbytecert.pem
---- /dev/null	Thu Jan 01 00:00:00 1970 +0000
-+++ b/Lib/test/nullbytecert.pem	Sun Aug 11 18:13:17 2013 +0200
[email protected]@ -0,0 +1,90 @@
-+Certificate:
-+    Data:
-+        Version: 3 (0x2)
-+        Serial Number: 0 (0x0)
-+    Signature Algorithm: sha1WithRSAEncryption
-+        Issuer: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation, OU=Python Core Development, CN=null.python.org\x00example.org/[email protected]
-+        Validity
-+            Not Before: Aug  7 13:11:52 2013 GMT
-+            Not After : Aug  7 13:12:52 2013 GMT
-+        Subject: C=US, ST=Oregon, L=Beaverton, O=Python Software Foundation, OU=Python Core Development, CN=null.python.org\x00example.org/[email protected]
-+        Subject Public Key Info:
-+            Public Key Algorithm: rsaEncryption
-+                Public-Key: (2048 bit)
-+                Modulus:
-+                    00:b5:ea:ed:c9:fb:46:7d:6f:3b:76:80:dd:3a:f3:
-+                    03:94:0b:a7:a6:db:ec:1d:df:ff:23:74:08:9d:97:
-+                    16:3f:a3:a4:7b:3e:1b:0e:96:59:25:03:a7:26:e2:
-+                    88:a9:cf:79:cd:f7:04:56:b0:ab:79:32:6e:59:c1:
-+                    32:30:54:eb:58:a8:cb:91:f0:42:a5:64:27:cb:d4:
-+                    56:31:88:52:ad:cf:bd:7f:f0:06:64:1f:cc:27:b8:
-+                    a3:8b:8c:f3:d8:29:1f:25:0b:f5:46:06:1b:ca:02:
-+                    45:ad:7b:76:0a:9c:bf:bb:b9:ae:0d:16:ab:60:75:
-+                    ae:06:3e:9c:7c:31:dc:92:2f:29:1a:e0:4b:0c:91:
-+                    90:6c:e9:37:c5:90:d7:2a:d7:97:15:a3:80:8f:5d:
-+                    7b:49:8f:54:30:d4:97:2c:1c:5b:37:b5:ab:69:30:
-+                    68:43:d3:33:78:4b:02:60:f5:3c:44:80:a1:8f:e7:
-+                    f0:0f:d1:5e:87:9e:46:cf:62:fc:f9:bf:0c:65:12:
-+                    f1:93:c8:35:79:3f:c8:ec:ec:47:f5:ef:be:44:d5:
-+                    ae:82:1e:2d:9a:9f:98:5a:67:65:e1:74:70:7c:cb:
-+                    d3:c2:ce:0e:45:49:27:dc:e3:2d:d4:fb:48:0e:2f:
-+                    9e:77:b8:14:46:c0:c4:36:ca:02:ae:6a:91:8c:da:
-+                    2f:85
-+                Exponent: 65537 (0x10001)
-+        X509v3 extensions:
-+            X509v3 Basic Constraints: critical
-+                CA:FALSE
-+            X509v3 Subject Key Identifier:
-+                88:5A:55:C0:52:FF:61:CD:52:A3:35:0F:EA:5A:9C:24:38:22:F7:5C
-+            X509v3 Key Usage:
-+                Digital Signature, Non Repudiation, Key Encipherment
-+            X509v3 Subject Alternative Name:
-+                *************************************************************
-+                WARNING: The values for DNS, email and URI are WRONG. OpenSSL
-+                         doesn't print the text after a NULL byte.
-+                *************************************************************
-+                DNS:altnull.python.org, email:[email protected], URI:http://null.python.org, IP Address:192.0.2.1, IP Address:2001:DB8:0:0:0:0:0:1
-+    Signature Algorithm: sha1WithRSAEncryption
-+         ac:4f:45:ef:7d:49:a8:21:70:8e:88:59:3e:d4:36:42:70:f5:
-+         a3:bd:8b:d7:a8:d0:58:f6:31:4a:b1:a4:a6:dd:6f:d9:e8:44:
-+         3c:b6:0a:71:d6:7f:b1:08:61:9d:60:ce:75:cf:77:0c:d2:37:
-+         86:02:8d:5e:5d:f9:0f:71:b4:16:a8:c1:3d:23:1c:f1:11:b3:
-+         56:6e:ca:d0:8d:34:94:e6:87:2a:99:f2:ae:ae:cc:c2:e8:86:
-+         de:08:a8:7f:c5:05:fa:6f:81:a7:82:e6:d0:53:9d:34:f4:ac:
-+         3e:40:fe:89:57:7a:29:a4:91:7e:0b:c6:51:31:e5:10:2f:a4:
-+         60:76:cd:95:51:1a:be:8b:a1:b0:fd:ad:52:bd:d7:1b:87:60:
-+         d2:31:c7:17:c4:18:4f:2d:08:25:a3:a7:4f:b7:92:ca:e2:f5:
-+         25:f1:54:75:81:9d:b3:3d:61:a2:f7:da:ed:e1:c6:6f:2c:60:
-+         1f:d8:6f:c5:92:05:ab:c9:09:62:49:a9:14:ad:55:11:cc:d6:
-+         4a:19:94:99:97:37:1d:81:5f:8b:cf:a3:a8:96:44:51:08:3d:
-+         0b:05:65:12:eb:b6:70:80:88:48:72:4f:c6:c2:da:cf:cd:8e:
-+         5b:ba:97:2f:60:b4:96:56:49:5e:3a:43:76:63:04:be:2a:f6:
-+         c1:ca:a9:94
-+-----BEGIN CERTIFICATE-----
-+MIIE2DCCA8CgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBxTELMAkGA1UEBhMCVVMx
-+DzANBgNVBAgMBk9yZWdvbjESMBAGA1UEBwwJQmVhdmVydG9uMSMwIQYDVQQKDBpQ
-+eXRob24gU29mdHdhcmUgRm91bmRhdGlvbjEgMB4GA1UECwwXUHl0aG9uIENvcmUg
-+RGV2ZWxvcG1lbnQxJDAiBgNVBAMMG251bGwucHl0aG9uLm9yZwBleGFtcGxlLm9y
-+ZzEkMCIGCSqGSIb3DQEJARYVcHl0aG9uLWRldkBweXRob24ub3JnMB4XDTEzMDgw
-+NzEzMTE1MloXDTEzMDgwNzEzMTI1MlowgcUxCzAJBgNVBAYTAlVTMQ8wDQYDVQQI
-+DAZPcmVnb24xEjAQBgNVBAcMCUJlYXZlcnRvbjEjMCEGA1UECgwaUHl0aG9uIFNv
-+ZnR3YXJlIEZvdW5kYXRpb24xIDAeBgNVBAsMF1B5dGhvbiBDb3JlIERldmVsb3Bt
-+ZW50MSQwIgYDVQQDDBtudWxsLnB5dGhvbi5vcmcAZXhhbXBsZS5vcmcxJDAiBgkq
-+hkiG9w0BCQEWFXB5dGhvbi1kZXZAcHl0aG9uLm9yZzCCASIwDQYJKoZIhvcNAQEB
-+BQADggEPADCCAQoCggEBALXq7cn7Rn1vO3aA3TrzA5QLp6bb7B3f/yN0CJ2XFj+j
-+pHs+Gw6WWSUDpybiiKnPec33BFawq3kyblnBMjBU61ioy5HwQqVkJ8vUVjGIUq3P
-+vX/wBmQfzCe4o4uM89gpHyUL9UYGG8oCRa17dgqcv7u5rg0Wq2B1rgY+nHwx3JIv
-+KRrgSwyRkGzpN8WQ1yrXlxWjgI9de0mPVDDUlywcWze1q2kwaEPTM3hLAmD1PESA
-+oY/n8A/RXoeeRs9i/Pm/DGUS8ZPINXk/yOzsR/XvvkTVroIeLZqfmFpnZeF0cHzL
-+08LODkVJJ9zjLdT7SA4vnne4FEbAxDbKAq5qkYzaL4UCAwEAAaOB0DCBzTAMBgNV
-+HRMBAf8EAjAAMB0GA1UdDgQWBBSIWlXAUv9hzVKjNQ/qWpwkOCL3XDALBgNVHQ8E
-+BAMCBeAwgZAGA1UdEQSBiDCBhYIeYWx0bnVsbC5weXRob24ub3JnAGV4YW1wbGUu
-+Y29tgSBudWxsQHB5dGhvbi5vcmcAdXNlckBleGFtcGxlLm9yZ4YpaHR0cDovL251
-+bGwucHl0aG9uLm9yZwBodHRwOi8vZXhhbXBsZS5vcmeHBMAAAgGHECABDbgAAAAA
-+AAAAAAAAAAEwDQYJKoZIhvcNAQEFBQADggEBAKxPRe99SaghcI6IWT7UNkJw9aO9
-+i9eo0Fj2MUqxpKbdb9noRDy2CnHWf7EIYZ1gznXPdwzSN4YCjV5d+Q9xtBaowT0j
-+HPERs1ZuytCNNJTmhyqZ8q6uzMLoht4IqH/FBfpvgaeC5tBTnTT0rD5A/olXeimk
-+kX4LxlEx5RAvpGB2zZVRGr6LobD9rVK91xuHYNIxxxfEGE8tCCWjp0+3ksri9SXx
-+VHWBnbM9YaL32u3hxm8sYB/Yb8WSBavJCWJJqRStVRHM1koZlJmXNx2BX4vPo6iW
-+RFEIPQsFZRLrtnCAiEhyT8bC2s/Njlu6ly9gtJZWSV46Q3ZjBL4q9sHKqZQ=
-+-----END CERTIFICATE-----
-diff -r 9ddc63c039ba Lib/test/test_ssl.py
---- a/Lib/test/test_ssl.py	Sun Aug 11 13:04:50 2013 +0300
-+++ b/Lib/test/test_ssl.py	Sun Aug 11 18:13:17 2013 +0200
[email protected]@ -25,6 +25,7 @@
- HOST = test_support.HOST
- CERTFILE = None
- SVN_PYTHON_ORG_ROOT_CERT = None
-+NULLBYTECERT = None
- 
- def handle_error(prefix):
-     exc_format = ' '.join(traceback.format_exception(*sys.exc_info()))
[email protected]@ -123,6 +124,27 @@
-                           ('DNS', 'projects.forum.nokia.com'))
-                         )
- 
-+    def test_parse_cert_CVE_2013_4073(self):
-+        p = ssl._ssl._test_decode_cert(NULLBYTECERT)
-+        if test_support.verbose:
-+            sys.stdout.write("\n" + pprint.pformat(p) + "\n")
-+        subject = ((('countryName', 'US'),),
-+                   (('stateOrProvinceName', 'Oregon'),),
-+                   (('localityName', 'Beaverton'),),
-+                   (('organizationName', 'Python Software Foundation'),),
-+                   (('organizationalUnitName', 'Python Core Development'),),
-+                   (('commonName', 'null.python.org\x00example.org'),),
-+                   (('emailAddress', '[email protected]'),))
-+        self.assertEqual(p['subject'], subject)
-+        self.assertEqual(p['issuer'], subject)
-+        self.assertEqual(p['subjectAltName'],
-+                         (('DNS', 'altnull.python.org\x00example.com'),
-+                         ('email', '[email protected]\[email protected]'),
-+                         ('URI', 'http://null.python.org\x00http://example.org'),
-+                         ('IP Address', '192.0.2.1'),
-+                         ('IP Address', '2001:DB8:0:0:0:0:0:1\n'))
-+                        )
-+
-     def test_DER_to_PEM(self):
-         with open(SVN_PYTHON_ORG_ROOT_CERT, 'r') as f:
-             pem = f.read()
[email protected]@ -1360,7 +1382,7 @@
- 
- 
- def test_main(verbose=False):
--    global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT, NOKIACERT
-+    global CERTFILE, SVN_PYTHON_ORG_ROOT_CERT, NOKIACERT, NULLBYTECERT
-     CERTFILE = os.path.join(os.path.dirname(__file__) or os.curdir,
-                             "keycert.pem")
-     SVN_PYTHON_ORG_ROOT_CERT = os.path.join(
[email protected]@ -1368,10 +1390,13 @@
-         "https_svn_python_org_root.pem")
-     NOKIACERT = os.path.join(os.path.dirname(__file__) or os.curdir,
-                              "nokia.pem")
-+    NULLBYTECERT = os.path.join(os.path.dirname(__file__) or os.curdir,
-+                                "nullbytecert.pem")
- 
-     if (not os.path.exists(CERTFILE) or
-         not os.path.exists(SVN_PYTHON_ORG_ROOT_CERT) or
--        not os.path.exists(NOKIACERT)):
-+        not os.path.exists(NOKIACERT) or
-+        not os.path.exists(NULLBYTECERT)):
-         raise test_support.TestFailed("Can't read certificate files!")
- 
-     tests = [BasicTests, BasicSocketTests]
-diff -r 9ddc63c039ba Modules/_ssl.c
---- a/Modules/_ssl.c	Sun Aug 11 13:04:50 2013 +0300
-+++ b/Modules/_ssl.c	Sun Aug 11 18:13:17 2013 +0200
[email protected]@ -741,8 +741,13 @@
- 
-             /* get a rendering of each name in the set of names */
- 
-+            int gntype;
-+            ASN1_STRING *as = NULL;
-+
-             name = sk_GENERAL_NAME_value(names, j);
--            if (name->type == GEN_DIRNAME) {
-+            gntype = name-> type;
-+            switch (gntype) {
-+            case GEN_DIRNAME:
- 
-                 /* we special-case DirName as a tuple of tuples of attributes */
- 
[email protected]@ -764,11 +769,61 @@
-                     goto fail;
-                 }
-                 PyTuple_SET_ITEM(t, 1, v);
-+                break;
- 
--            } else {
-+            case GEN_EMAIL:
-+            case GEN_DNS:
-+            case GEN_URI:
-+                /* GENERAL_NAME_print() doesn't handle NUL bytes in ASN1_string
-+                   correctly. */
-+                t = PyTuple_New(2);
-+                if (t == NULL)
-+                    goto fail;
-+                switch (gntype) {
-+                case GEN_EMAIL:
-+                    v = PyUnicode_FromString("email");
-+                    as = name->d.rfc822Name;
-+                    break;
-+                case GEN_DNS:
-+                    v = PyUnicode_FromString("DNS");
-+                    as = name->d.dNSName;
-+                    break;
-+                case GEN_URI:
-+                    v = PyUnicode_FromString("URI");
-+                    as = name->d.uniformResourceIdentifier;
-+                    break;
-+                }
-+                if (v == NULL) {
-+                    Py_DECREF(t);
-+                    goto fail;
-+                }
-+                PyTuple_SET_ITEM(t, 0, v);
-+                v = PyString_FromStringAndSize((char *)ASN1_STRING_data(as),
-+                                               ASN1_STRING_length(as));
-+                if (v == NULL) {
-+                    Py_DECREF(t);
-+                    goto fail;
-+                }
-+                PyTuple_SET_ITEM(t, 1, v);
-+                break;
- 
-+            default:
-                 /* for everything else, we use the OpenSSL print form */
--
-+                switch (gntype) {
-+                    /* check for new general name type */
-+                    case GEN_OTHERNAME:
-+                    case GEN_X400:
-+                    case GEN_EDIPARTY:
-+                    case GEN_IPADD:
-+                    case GEN_RID:
-+                        break;
-+                    default:
-+                        if (PyErr_Warn(PyExc_RuntimeWarning,
-+				       "Unknown general name type") == -1) {
-+                            goto fail;
-+                        }
-+                        break;
-+                }
-                 (void) BIO_reset(biobuf);
-                 GENERAL_NAME_print(biobuf, name);
-                 len = BIO_gets(biobuf, buf, sizeof(buf)-1);
[email protected]@ -794,6 +849,7 @@
-                     goto fail;
-                 }
-                 PyTuple_SET_ITEM(t, 1, v);
-+		break;
-             }
- 
-             /* and add that rendering to the list */
--- a/components/python/python27/patches/18-osconf-long.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/18-osconf-long.patch	Thu May 22 14:36:47 2014 -0700
@@ -1,9 +1,9 @@
 # http://bugs.python.org/issue17964 was fixed in 3.4 but not back-ported so we
 # need this patch for 2.7 .
 
---- Python-2.7.3/Modules/posixmodule.c.orig	2013-09-10 14:48:19.058672610 -0700
-+++ Python-2.7.3/Modules/posixmodule.c	2013-09-10 14:48:49.872618578 -0700
[email protected]@ -8356,7 +8356,7 @@
+--- Python-2.7.6/Modules/posixmodule.c.~2~	2014-05-14 13:45:28.562707441 -0700
++++ Python-2.7.6/Modules/posixmodule.c	2014-05-14 13:45:28.718886370 -0700
[email protected]@ -8469,7 +8469,7 @@
      int name;
  
      if (PyArg_ParseTuple(args, "O&:sysconf", conv_sysconf_confname, &name)) {
--- a/components/python/python27/patches/19-recvfrom_into.patch	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/patches/19-recvfrom_into.patch	Thu May 22 14:36:47 2014 -0700
@@ -1,8 +1,8 @@
 # Fix from upstream: http://bugs.python.org/issue20246
 
---- Python-2.6.8/Modules/socketmodule.c	2012-04-09 16:07:34.000000000 -0700
-+++ Python-2.6.8/Modules/socketmodule.c	2014-02-12 15:27:10.106066138 -0800
[email protected]@ -2677,6 +2677,13 @@
+--- Python-2.7.6/Modules/socketmodule.c.~1~	2013-11-09 23:36:41.000000000 -0800
++++ Python-2.7.6/Modules/socketmodule.c	2014-05-14 13:48:12.538122707 -0700
[email protected]@ -2744,6 +2744,13 @@
          recvlen = buflen;
      }
  
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python27/patches/20-bsddb-harmful.patch	Thu May 22 14:36:47 2014 -0700
@@ -0,0 +1,28 @@
+Prior to 2.7.4, the bsddb module was a no-op, as it did not get built.
+Starting with 2.7.4, the behavior is different, and it causes tests to
+dump core.  So skip it.  The module is removed in Python 3, so this patch
+is not being submitted upstream.
+
+--- Python-2.7.6/Makefile.pre.in.~4~	2014-05-14 16:20:56.889089787 -0700
++++ Python-2.7.6/Makefile.pre.in	2014-05-14 16:21:12.651500578 -0700
[email protected]@ -972,7 +972,7 @@
+ 		email email/mime email/test email/test/data \
+ 		json json/tests \
+ 		sqlite3 sqlite3/test \
+-		logging bsddb bsddb/test csv importlib wsgiref \
++		logging csv importlib wsgiref \
+ 		lib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \
+ 		lib2to3/tests/data lib2to3/tests/data/fixers lib2to3/tests/data/fixers/myfixes \
+ 		ctypes ctypes/test ctypes/macholib idlelib idlelib/Icons \
+--- Python-2.7.6/setup.py.~6~	2014-05-14 17:15:45.315760008 -0700
++++ Python-2.7.6/setup.py	2014-05-14 17:16:27.440642039 -0700
[email protected]@ -1065,7 +1065,8 @@
+                                     db_dirs_to_check + lib_dirs, dblib )
+                     if dblib_file:
+                         dblib_dir = [ os.path.abspath(os.path.dirname(dblib_file)) ]
+-                        raise db_found
++                        # Doesn't work; skip.
++                        # raise db_found
+                     else:
+                         if db_setup_debug: print "db lib: ", dblib, "not found"
+ 
--- a/components/python/python27/patches/20-ctypes-util-find-library.patch	Tue May 20 21:56:15 2014 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,41 +0,0 @@
-This patch comes from upstream: http://bugs.python.org/issue5289
-If we ever upgrade to 2.7.4 or later, it will no longer be needed.
-
---- Python-2.7.3/Lib/ctypes/util.py~
-+++ Python-2.7.3/Lib/ctypes/util.py
[email protected]@ -180,6 +180,35 @@ elif os.name == "posix":
-             res.sort(cmp= lambda x,y: cmp(_num_version(x), _num_version(y)))
-             return res[-1]
- 
-+    elif sys.platform == "sunos5":
-+
-+        def _findLib_crle(name, is64):
-+            if not os.path.exists('/usr/bin/crle'):
-+                return None
-+
-+            if is64:
-+                cmd = 'env LC_ALL=C /usr/bin/crle -64 2>/dev/null'
-+            else:
-+                cmd = 'env LC_ALL=C /usr/bin/crle 2>/dev/null'
-+
-+            for line in os.popen(cmd).readlines():
-+                line = line.strip()
-+                if line.startswith('Default Library Path (ELF):'):
-+                    paths = line.split()[4]
-+
-+            if not paths:
-+                return None
-+
-+            for dir in paths.split(":"):
-+                libfile = os.path.join(dir, "lib%s.so" % name)
-+                if os.path.exists(libfile):
-+                    return libfile
-+
-+            return None
-+
-+        def find_library(name, is64 = False):
-+            return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name))
-+
-     else:
- 
-         def _findSoname_ldconfig(name):
--- a/components/python/python27/python-27-tests.p5m	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/python-27-tests.p5m	Thu May 22 14:36:47 2014 -0700
@@ -18,7 +18,7 @@
 #
 # CDDL HEADER END
 #
-# Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
+# Copyright (c) 2011, 2014, Oracle and/or its affiliates. All rights reserved.
 #
 
 # python doesn't generate .pyc version of these test files.
@@ -30,17 +30,16 @@
     value=pkg:/runtime/python-27/[email protected]$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 set name=pkg.summary value="The Python tests"
 set name=com.oracle.info.description value="test cases for Python 2.7"
-set name=com.oracle.info.tpno value=9104
+set name=com.oracle.info.tpno value=17755
 set name=info.classification \
     value=org.opensolaris.category.2008:Development/Python
 set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
-set name=org.opensolaris.arc-caseid \
-    value=PSARC/2008/514 \
-    value=PSARC/2009/529 \
-    value=PSARC/2011/XXX
+set name=org.opensolaris.arc-caseid value=PSARC/2008/514 value=PSARC/2009/529 \
+    value=PSARC/2014/183
 # PSARC 2008/514 Python interface to dlpi(7P)
 # PSARC 2009/529 Python interface to privileges(5) & rbac(5)
+# PSARC 2014/183 Python 2.7.6
 
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 
@@ -51,31 +50,6 @@
 license python27.license license="PSFv2"
 
 
-file path=usr/lib/python2.7/bsddb/test/__init__.py
-file path=usr/lib/python2.7/bsddb/test/test_all.py
-file path=usr/lib/python2.7/bsddb/test/test_associate.py
-file path=usr/lib/python2.7/bsddb/test/test_basics.py
-file path=usr/lib/python2.7/bsddb/test/test_compare.py
-file path=usr/lib/python2.7/bsddb/test/test_compat.py
-file path=usr/lib/python2.7/bsddb/test/test_cursor_pget_bug.py
-file path=usr/lib/python2.7/bsddb/test/test_db.py
-file path=usr/lib/python2.7/bsddb/test/test_dbenv.py
-file path=usr/lib/python2.7/bsddb/test/test_dbobj.py
-file path=usr/lib/python2.7/bsddb/test/test_dbshelve.py
-file path=usr/lib/python2.7/bsddb/test/test_dbtables.py
-file path=usr/lib/python2.7/bsddb/test/test_distributed_transactions.py
-file path=usr/lib/python2.7/bsddb/test/test_early_close.py
-file path=usr/lib/python2.7/bsddb/test/test_fileid.py
-file path=usr/lib/python2.7/bsddb/test/test_get_none.py
-file path=usr/lib/python2.7/bsddb/test/test_join.py
-file path=usr/lib/python2.7/bsddb/test/test_lock.py
-file path=usr/lib/python2.7/bsddb/test/test_misc.py
-file path=usr/lib/python2.7/bsddb/test/test_pickle.py
-file path=usr/lib/python2.7/bsddb/test/test_queue.py
-file path=usr/lib/python2.7/bsddb/test/test_recno.py
-file path=usr/lib/python2.7/bsddb/test/test_replication.py
-file path=usr/lib/python2.7/bsddb/test/test_sequence.py
-file path=usr/lib/python2.7/bsddb/test/test_thread.py
 file path=usr/lib/python2.7/ctypes/test/__init__.py
 file path=usr/lib/python2.7/ctypes/test/runtests.py
 file path=usr/lib/python2.7/ctypes/test/test_anon.py
@@ -543,8 +517,6 @@
 file path=usr/lib/python2.7/test/sgml_input.html
 file path=usr/lib/python2.7/test/sha256.pem
 file path=usr/lib/python2.7/test/sortperf.py
-file path=usr/lib/python2.7/test/ssl_cert.pem
-file path=usr/lib/python2.7/test/ssl_key.pem
 file path=usr/lib/python2.7/test/string_tests.py
 file path=usr/lib/python2.7/test/subprocessdata/sigchild_ignore.py
 file path=usr/lib/python2.7/test/test_MimeWriter.py
--- a/components/python/python27/python-27.p5m	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/python-27.p5m	Thu May 22 14:36:47 2014 -0700
@@ -26,14 +26,16 @@
     value=pkg:/runtime/[email protected]$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 set name=pkg.summary value="The Python interpreter, libraries and utilities"
 set name=com.oracle.info.description value="Python 2.7"
-set name=com.oracle.info.tpno value=9104
+set name=com.oracle.info.tpno value=17755
 set name=info.classification \
     value=org.opensolaris.category.2008:Development/Python
 set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
-set name=org.opensolaris.arc-caseid value=PSARC/2008/514 value=PSARC/2009/529
+set name=org.opensolaris.arc-caseid value=PSARC/2008/514 value=PSARC/2009/529 \
+    value=PSARC/2014/183
 # PSARC 2008/514 Python interface to dlpi(7P)
 # PSARC 2009/529 Python interface to privileges(5) & rbac(5)
+# PSARC 2014/183 Python 2.7.6
 
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 #file path=usr/bin/smtpd.py
@@ -209,6 +211,7 @@
 file path=usr/lib/python2.7/_abcoll.py
 file path=usr/lib/python2.7/_pyio.py
 file path=usr/lib/python2.7/_strptime.py
+file path=usr/lib/python2.7/_sysconfigdata.py
 file path=usr/lib/python2.7/_threading_local.py
 file path=usr/lib/python2.7/_weakrefset.py
 file path=usr/lib/python2.7/abc.py
@@ -225,13 +228,6 @@
 file path=usr/lib/python2.7/bdb.py
 file path=usr/lib/python2.7/binhex.py
 file path=usr/lib/python2.7/bisect.py
-file path=usr/lib/python2.7/bsddb/__init__.py
-file path=usr/lib/python2.7/bsddb/db.py
-file path=usr/lib/python2.7/bsddb/dbobj.py
-file path=usr/lib/python2.7/bsddb/dbrecio.py
-file path=usr/lib/python2.7/bsddb/dbshelve.py
-file path=usr/lib/python2.7/bsddb/dbtables.py
-file path=usr/lib/python2.7/bsddb/dbutils.py
 file path=usr/lib/python2.7/cProfile.py pkg.depend.bypass-generate=.*
 file path=usr/lib/python2.7/calendar.py
 file path=usr/lib/python2.7/cgi.py
--- a/components/python/python27/tkinter-27.p5m	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/python27/tkinter-27.p5m	Thu May 22 14:36:47 2014 -0700
@@ -25,13 +25,16 @@
     value=pkg:/library/python/[email protected]$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 set name=pkg.summary value="Python 2.7 bindings to tcl/tk"
 set name=com.oracle.info.description value="Python 2.7 bindings for Tcl/Tk"
-set name=com.oracle.info.tpno value=9104
+set name=com.oracle.info.tpno value=17755
 set name=info.classification \
     value=org.opensolaris.category.2008:Development/Python
 set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
-set name=org.opensolaris.arc-caseid \
-    value=PSARC/2011/XXX
+set name=org.opensolaris.arc-caseid value=PSARC/2008/514 value=PSARC/2009/529 \
+    value=PSARC/2014/183
+# PSARC 2008/514 Python interface to dlpi(7P)
+# PSARC 2009/529 Python interface to privileges(5) & rbac(5)
+# PSARC 2014/183 Python 2.7.6
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 
 license python27.license license=PSFv2
--- a/components/python/zope-interface/resolve.deps	Tue May 20 21:56:15 2014 -0700
+++ b/components/python/zope-interface/resolve.deps	Thu May 22 14:36:47 2014 -0700
@@ -1,2 +1,3 @@
 runtime/python-26
 runtime/python-27
+system/library