PSARC 2014/183 Python 2.7.6 s11u2-sru
authorJohn Beck <John.Beck@Oracle.COM>
Mon, 06 Oct 2014 13:15:36 -0700
branchs11u2-sru
changeset 3379 e99da14b537a
parent 3375 3724eda7445e
child 3380 ab1cb904871a
PSARC 2014/183 Python 2.7.6 18251953 update Python 2.7 line to version 2.7.6 19004605 update Python 2.7 line to version 2.7.7 19308541 update Python 2.7 line to version 2.7.8 19284990 python 2.7.7 segfaults while under memory stress 17431625 64-bit python should use long rather than int for os.sysconf() return value 19164544 Python 2.7 test_tcl fails 19030238 Python 2.7 test_sysconfig fails - no module named _osx_support 19030198 Python 2.7 tests fail - import name error 19032456 more Python 2.7 tests failing with import errors 19022543 Python 2.7 test_lib2to3 fails
components/python/python27/Makefile
components/python/python27/files/pyconfig.h
components/python/python27/old-manifest-27.p5m
components/python/python27/patches/00-bits.patch
components/python/python27/patches/01-ext-stdio.patch
components/python/python27/patches/02-setup.patch
components/python/python27/patches/03-vendor-packages.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-CVE-2013-4238.py27.patch
components/python/python27/patches/16-ossaudiodev.patch
components/python/python27/patches/17-recvfrom_into.patch
components/python/python27/patches/18-osconf-long.patch
components/python/python27/patches/20-bsddb-harmful.patch
components/python/python27/patches/20-ctypes-util-find-library.patch
components/python/python27/patches/21-test_tcl.patch
components/python/python27/python-27-tests.p5m
components/python/python27/python-27.p5m
components/python/python27/tkinter-27.p5m
--- a/components/python/python27/Makefile	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/Makefile	Mon Oct 06 13:15:36 2014 -0700
@@ -26,20 +26,27 @@
 PATH=/usr/bin:/usr/gnu/bin:/usr/sbin
 
 COMPONENT_NAME=		Python
-COMPONENT_VERSION=	2.7.3
+COMPONENT_VERSION=	2.7.8
 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:edde10a0cb7d14e2735e682882d5b287028d1485c456758154c19573db68075a
 COMPONENT_ARCHIVE_URL=	$(COMPONENT_PROJECT_URL)ftp/python/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
 COMPONENT_BUGDB=	utility/python
 
+TPNO=			18461
+
 include $(WS_TOP)/make-rules/prep.mk
 include $(WS_TOP)/make-rules/configure.mk
 include $(WS_TOP)/make-rules/ips.mk
 include $(WS_TOP)/make-rules/lint-libraries.mk
 
+# Need to preserve timestamp for Grammar files.  If the pickle files are older, 
+# Python will try to rebuild them.  
+PKGSEND_PUBLISH_OPTIONS += -T \*Grammar\*.txt
+PKGSEND_PUBLISH_OPTIONS += -T \*Grammar\*.pickle
+
 # We patch auto* files, so regenerate headers and configure
 COMPONENT_PREP_ACTION = \
 	(cd $(@D) ; autoheader ; autoconf)
@@ -91,8 +98,6 @@
 CONFIGURE_OPTIONS  +=		--with-system-ffi
 CONFIGURE_OPTIONS  +=		--without-gcc
 CONFIGURE_OPTIONS  +=		--enable-ipv6
-CONFIGURE_OPTIONS  +=		ac_cv_opt_olimit_ok=no
-CONFIGURE_OPTIONS  +=		ac_cv_olimit_ok=no
 CONFIGURE_OPTIONS  +=		CPPFLAGS="$(CPPFLAGS)"
 CONFIGURE_OPTIONS  +=		LDFLAGS="$(LDFLAGS)"
 CONFIGURE_OPTIONS  +=		CFLAGS="$(CFLAGS)"
@@ -102,27 +107,41 @@
 COMPONENT_BUILD_ENV  +=		DFLAGS="-$(BITS)"
 COMPONENT_BUILD_ENV  +=		XPROFILE_DIR="$(XPROFILE_DIR)"
 
-# patches/00-bits.patch removes some AC_CHECK_SIZEOF tests in order to
-# generate a pyconfig.h that is both 32 and 64 bit compatible.  We add this
-# back to the environment so that configure can still work.  configure.in and
-# pyconfig.h.in should probably be rewhacked to do this more cleanly in the
-# future.
-CONFIGURE_OPTIONS.32  +=	ac_cv_sizeof_long=4
-CONFIGURE_OPTIONS.64  +=	ac_cv_sizeof_long=8
-
 # 64 bit shared objects need to go in a 64-bit directory
 COMPONENT_INSTALL_ARGS.64 += DESTSHARED=$(CONFIGURE_PREFIX)/lib/python2.7/lib-dynload
 
-# common targets
-build:		$(BUILD_32_and_64)
+# Setup pyconfig.h file to support 32 & 64 bit.
+# If the /usr/lib/python2.7/lib2to3/*.pickle files are older than the related
+# *.txt files in the same directory, it will rebuild them anytime you try to
+# build a Python module.  So here we also touch the pickle files to avoid this.
+#
+COMPONENT_POST_INSTALL_ACTION= \
+            (cd $(PROTOUSRDIR) ;  \
+             $(MV) include/python2.7/pyconfig.h include/python2.7/pyconfig-$(BITS).h ; \
+             $(TOUCH) lib/python2.7/lib2to3/*.pickle)
 
-$(INSTALL_32):	$(INSTALL_64)
+ASLR_MODE = $(ASLR_ENABLE)
 
+# common targets
+$(INSTALL_32):  $(INSTALL_64)
+build:		$(BUILD_32_and_64)
 install:	$(INSTALL_32_and_64)
 
+# Using "-uall,-network" ensures all tests are run except the network tests.
+# The network tests contain many expected failures when run behind a firewall.
+# The "-v" ensures verbose mode.  You can set TESTOPTS_PYTHON_TEST to a
+# particular test if you want to run just one test.  For example, run gmake with
+# "-k" so it continues and does both 32-bit and 64-bit tests, even if there is a
+# failure, like this:
+# $ TESTOPTS_PYTHON_TEST=test_sys gmake -k test
+# Note that when a test succeeds, the builds/*/.tested file gets created.  You
+# may need to remove these files, or run "gmake clobber" or "gmake clean"
+# between tests.
+#
+COMPONENT_TEST_ENV = EXTRATESTOPTS="-v -uall,-network $(TESTOPTS_PYTHON_TEST)"
 COMPONENT_TEST_TARGETS = test
 
-test:	$(TEST_32_and_64)
+test:				$(TEST_32_and_64)
 
 BUILD_PKG_DEPENDENCIES =	$(BUILD_TOOLS)
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python27/files/pyconfig.h	Mon Oct 06 13:15:36 2014 -0700
@@ -0,0 +1,5 @@
+#ifdef _LP64
+#include <python2.7/pyconfig-64.h>
+#else
+#include <python2.7/pyconfig-32.h>
+#endif
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python27/old-manifest-27.p5m	Mon Oct 06 13:15:36 2014 -0700
@@ -0,0 +1,27 @@
+#
+# CDDL HEADER START
+#
+# The contents of this file are subject to the terms of the
+# Common Development and Distribution License (the "License").
+# You may not use this file except in compliance with the License.
+#
+# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+# or http://www.opensolaris.org/os/licensing.
+# See the License for the specific language governing permissions
+# and limitations under the License.
+#
+# When distributing Covered Code, include this CDDL HEADER in each
+# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+# If applicable, add the following below this CDDL HEADER, with the
+# fields enclosed by brackets "[]" replaced with your own identifying
+# information: Portions Copyright [yyyy] [name of copyright owner]
+#
+# CDDL HEADER END
+#
+# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
+#
+
+set name=pkg.fmri value=pkg:/library/python-2/[email protected],5.11-0.175.2.3.0.5.0
+set name=pkg.renamed value=true
+set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
+depend fmri=library/python/tkinter-27 type=require
--- a/components/python/python27/patches/00-bits.patch	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/00-bits.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,8 +1,9 @@
 #
 # This patch makes the pyconfig.h header file 32/64 bit friendly.
+# As it is Solaris-specific, it is not suitable for upstream.
 #
---- 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.8/configure.ac.~1~	2014-06-29 19:05:48.000000000 -0700
++++ Python-2.7.8/configure.ac	2014-07-17 20:31:45.866247571 -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,132 +13,7 @@
  
  AC_REVISION($Revision$)
  AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
[email protected]@ -35,6 +35,41 @@
- #define Py_PYCONFIG_H
- ])
- AH_BOTTOM([
-+
-+#include <sys/isa_defs.h>
-+
-+/*
-+ * Python originally defined these statically, which prevents a 32-64 python
-+ * from working at all.
-+ */
-+
-+#define SIZEOF_SHORT 2
-+#define SIZEOF_INT 4
-+#define SIZEOF_LONG_LONG 8
-+#define SIZEOF_FPOS_T 8
-+#define SIZEOF_OFF_T 8
-+#define SIZEOF_PTHREAD_T 4
-+
-+#ifdef _LP64
-+#define SIZEOF_LONG 8
-+#define SIZEOF_UINTPTR_T 8
-+#define SIZEOF_VOID_P 8
-+#define SIZEOF_TIME_T 8
-+#define SIZEOF_SIZE_T 8
-+#define SIZEOF_LONG_DOUBLE 16
-+#else
-+#define SIZEOF_LONG 4
-+#define SIZEOF_UINTPTR_T 4
-+#define SIZEOF_VOID_P 4
-+#define SIZEOF_TIME_T 4
-+#define SIZEOF_SIZE_T 4
-+#if defined(__i386)
-+#define SIZEOF_LONG_DOUBLE 12
-+#else
-+#define SIZEOF_LONG_DOUBLE 16
-+#endif
-+#endif
-+
- /* Define the macros needed if on a UnixWare 7.x system. */
- #if defined(__USLC__) && defined(__SCO_VERSION__)
- #define STRICT_SYSV_CURSES /* Don't use ncurses extensions */
[email protected]@ -1474,13 +1509,13 @@
- # Sizes of various common basic types
- # ANSI C requires sizeof(char) == 1, so no need to check it
- AC_CHECK_SIZEOF(int, 4)
--AC_CHECK_SIZEOF(long, 4)
--AC_CHECK_SIZEOF(void *, 4)
-+dnl AC_CHECK_SIZEOF(long, 4)
-+dnl AC_CHECK_SIZEOF(void *, 4)
- AC_CHECK_SIZEOF(short, 2)
- AC_CHECK_SIZEOF(float, 4)
- AC_CHECK_SIZEOF(double, 8)
- AC_CHECK_SIZEOF(fpos_t, 4)
--AC_CHECK_SIZEOF(size_t, 4)
-+dnl AC_CHECK_SIZEOF(size_t, 4)
- AC_CHECK_SIZEOF(pid_t, 4)
- 
- AC_MSG_CHECKING(for long long support)
[email protected]@ -1501,9 +1536,9 @@
-   have_long_double=yes
- ],[])
- AC_MSG_RESULT($have_long_double)
--if test "$have_long_double" = yes ; then
--AC_CHECK_SIZEOF(long double, 12)
--fi
-+dnl if test "$have_long_double" = yes ; then
-+dnl AC_CHECK_SIZEOF(long double, 12)
-+dnl fi
- 
- AC_MSG_CHECKING(for _Bool support)
- have_c99_bool=no
[email protected]@ -1517,7 +1552,7 @@
- fi
- 
- AC_CHECK_TYPES(uintptr_t, 
--   [AC_CHECK_SIZEOF(uintptr_t, 4)], 
-+   [],
-    [], [#ifdef HAVE_STDINT_H
-         #include <stdint.h>
-         #endif
[email protected]@ -1534,8 +1569,8 @@
- AC_MSG_CHECKING(whether to enable large file support)
- if test "$have_long_long" = yes
- then
--if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
--	"$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
-+dnl if test "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \
-+dnl	"$ac_cv_sizeof_long_long" -ge "$ac_cv_sizeof_off_t"; then
-   AC_DEFINE(HAVE_LARGEFILE_SUPPORT, 1, 
-   [Defined to enable large file support when an off_t is bigger than a long
-    and long long is available and at least as big as an off_t. You may need
[email protected]@ -1542,21 +1577,21 @@
-    to add some flags for configuration and compilation to enable this mode.
-    (For Solaris and Linux, the necessary defines are already defined.)])
-   AC_MSG_RESULT(yes)
-+dnl else
-+dnl   AC_MSG_RESULT(no)
-+dnl fi
- else
-   AC_MSG_RESULT(no)
- fi
--else
--  AC_MSG_RESULT(no)
--fi
- 
--AC_CHECK_SIZEOF(time_t, [], [
--#ifdef HAVE_SYS_TYPES_H
--#include <sys/types.h>
--#endif
--#ifdef HAVE_TIME_H
--#include <time.h>
--#endif
--])
-+dnl AC_CHECK_SIZEOF(time_t, [], [
-+dnl #ifdef HAVE_SYS_TYPES_H
-+dnl #include <sys/types.h>
-+dnl #endif
-+dnl #ifdef HAVE_TIME_H
-+dnl #include <time.h>
-+dnl #endif
-+dnl ])
- 
- # if have pthread_t then define SIZEOF_PTHREAD_T
- ac_save_cc="$CC"
[email protected]@ -1906,12 +1941,6 @@
[email protected]@ -2092,12 +2092,6 @@
  if test -z "$CCSHARED"
  then
  	case $ac_sys_system/$ac_sys_release in
--- a/components/python/python27/patches/01-ext-stdio.patch	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/01-ext-stdio.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,3 +1,6 @@
+This patch provides extended file stdio support.
+As it is Solaris-specific, it is not suitable for upstream.
+
 --- Python-2.7.1/Modules/python.c.orig	Tue Jun 21 21:35:45 2011
 +++ Python-2.7.1/Modules/python.c	Tue Jun 21 21:39:29 2011
 @@ -6,6 +6,13 @@
--- a/components/python/python27/patches/02-setup.patch	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/02-setup.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,22 +1,27 @@
---- 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 @@
+This patch modifies the setup script to support Solaris.
+As it is Solaris-specific, it is not suitable for upstream.
+
+--- Python-2.7.8/setup.py.~1~	2014-06-29 19:05:48.000000000 -0700
++++ Python-2.7.8/setup.py	2014-07-17 20:37:57.419011542 -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]@ -763,6 +763,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,20 +30,21 @@
              exts.append( Extension('readline', ['readline.c'],
                                     library_dirs=['/usr/lib/termcap'],
                                     extra_link_args=readline_extra_link_args,
[email protected]@ -677,6 +684,7 @@
- 
[email protected]@ -784,7 +791,7 @@
          # socket(2)
-         exts.append( Extension('_socket', ['socketmodule.c'],
-+                               libraries = ['socket', 'nsl'],
-                                depends = ['socketmodule.h']) )
+         exts.append( Extension('_socket', ['socketmodule.c', 'timemodule.c'],
+                                depends=['socketmodule.h'],
+-                               libraries=math_libs) )
++                               libraries=math_libs + ['socket', 'nsl']) )
          # Detect SSL support for the socket module (via _ssl)
          search_for_ssl_incs_in = [
[email protected]@ -1443,9 +1451,14 @@
+                               '/usr/local/ssl/include',
[email protected]@ -1585,9 +1592,14 @@
                  sysconfig.get_config_var('POSIX_SEMAPHORES_NOT_ENABLED')):
                  multiprocessing_srcs.append('_multiprocessing/semaphore.c')
  
 +	multiproc_libs = []
-+	if platform == 'sunos5':
++	if host_platform == 'sunos5':
 +	    multiproc_libs = [ "xnet" ]
 +
          if sysconfig.get_config_var('WITH_THREAD'):
@@ -48,7 +54,7 @@
                                      include_dirs=["Modules/_multiprocessing"]))
          else:
              missing.append('_multiprocessing')
[email protected]@ -1896,7 +1909,8 @@
[email protected]@ -2081,7 +2088,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 +62,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/03-vendor-packages.patch	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/03-vendor-packages.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,4 +1,6 @@
-diff --git Python-2.7.1/Lib/site-packages/vendor-packages.pth Python2.7.1/Lib/site-packages/vendor-packages.pth
+This patch makes Python support the vendor-packages directory.
+As it is Solaris-specific, it is not suitable for upstream.
+
 --- /dev/null   Sat Feb 12 00:21:26 2011
 +++ Python-2.7.1/Lib/site-packages/vendor-packages.pth  Sat Feb 12 00:47:05 2011
 @@ -0,0 +1,1 @@
--- a/components/python/python27/patches/04-solaris-64-bit.patch	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/04-solaris-64-bit.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,6 +1,11 @@
---- 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 @@
+This patch ensures that 64-bit shared objects are in a subdirectory named
+"64".  Note that changes to the Lib/distutils/tests/test_build.py and
+Lib/distutils/tests/test_install.py avoid running tests that fail due to
+this patch.  As this is Solaris-specific, it is not suitable for upstream.
+
+--- 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 +16,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 +32,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 +92,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 +105,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 +125,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 +142,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	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/05-dtrace.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,6 +1,15 @@
---- 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 @@
+This patch adds Python dtrace support.  Note it is necessary to modify
+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.
+The patch comes from upstream:
+http://www.jcea.es/artic/python_dtrace-2_7_7_af8ecf2352e1.txt
+http://www.jcea.es/artic/python_dtrace.htm
+Follow http://bugs.python.org/issue13405 for plans to get it
+integrated into the main tree.
+
+--- 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]
  
@@ -8,7 +17,7 @@
  
  ##########################################################################
  # Grammar
[email protected]@ -298,6 +299,7 @@
[email protected]@ -341,6 +342,7 @@
  		Python/formatter_unicode.o \
  		Python/formatter_string.o \
  		Python/$(DYNLOADFILE) \
@@ -16,7 +25,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)
  
@@ -35,8 +44,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. */
@@ -45,10 +54,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;
@@ -56,8 +64,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.8/Python/ceval.c.~1~	2014-06-29 19:05:46.000000000 -0700
++++ Python-2.7.8/Python/ceval.c	2014-07-17 20:39:49.843868592 -0700
 @@ -19,6 +19,11 @@
  
  #include <ctype.h>
@@ -70,7 +78,7 @@
  #ifndef WITH_TSC
  
  #define READ_TIMESTAMP(var)
[email protected]@ -671,7 +676,56 @@
[email protected]@ -678,6 +683,55 @@
                        NULL);
  }
  
@@ -85,7 +93,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);
 +
 +	/*
@@ -123,11 +131,10 @@
 +#define	dtrace_entry()
 +#define	dtrace_return()
 +#endif
-+
+ 
  /* Interpreter main loop */
  
- PyObject *
[email protected]@ -682,9 +736,84 @@
[email protected]@ -689,9 +743,84 @@
      return PyEval_EvalFrameEx(f, 0);
  }
  
@@ -161,9 +168,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;
@@ -195,9 +202,9 @@
 +
 +#else /* __amd64 || __sparc */
 +
-+PyObject *
-+PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
-+{
+ PyObject *
+ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
+ {
 +
 +#endif /* __amd64 || __sparc */
 +
@@ -212,7 +219,7 @@
  #ifdef DXPAIRS
      int lastopcode = 0;
  #endif
[email protected]@ -909,6 +1038,11 @@
[email protected]@ -916,6 +1045,11 @@
          }
      }
  
@@ -224,7 +231,7 @@
      co = f->f_code;
      names = co->co_names;
      consts = co->co_consts;
[email protected]@ -2659,6 +2793,9 @@
[email protected]@ -2673,6 +2807,9 @@
              PyObject **sp;
              PCALL(PCALL_ALL);
              sp = stack_pointer;
@@ -234,7 +241,7 @@
  #ifdef WITH_TSC
              x = call_function(&sp, oparg, &intr0, &intr1);
  #else
[email protected]@ -2700,6 +2837,9 @@
[email protected]@ -2714,6 +2851,9 @@
              } else
                  Py_INCREF(func);
              sp = stack_pointer;
@@ -244,7 +251,7 @@
              READ_TIMESTAMP(intr0);
              x = ext_do_call(func, &sp, flags, na, nk);
              READ_TIMESTAMP(intr1);
[email protected]@ -3000,6 +3140,10 @@
[email protected]@ -3014,6 +3154,10 @@
  
      /* pop frame */
  exit_eval_frame:
@@ -255,8 +262,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 @@
@@ -414,3 +419,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.7/Lib/test/test_sys.py.~1~	2014-05-31 11:58:39.000000000 -0700
++++ Python-2.7.7/Lib/test/test_sys.py	2014-06-02 10:44:39.318709539 -0700
[email protected]@ -594,7 +594,7 @@
+         nfrees = len(x.f_code.co_freevars)
+         extras = x.f_code.co_stacksize + x.f_code.co_nlocals +\
+                  ncells + nfrees - 1
+-        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('9P'))
--- a/components/python/python27/patches/06-ucred.patch	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/06-ucred.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,5 +1,6 @@
-diff --git Python-2.6.4/Modules/ucred.c Python-2.6.4/Modules/ucred.c
-new file mode 100644
+This patch provides Python ucred support.  It may be contributed upstream at
+some point, but the suitability (or lack thereof) has not yet been determined.
+
 --- /dev/null
 +++ Python-2.6.4/Modules/ucred.c
 @@ -0,0 +1,390 @@
@@ -393,10 +394,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.8/setup.py.~2~	2014-07-17 20:41:55.688200021 -0700
++++ Python-2.7.8/setup.py	2014-07-17 20:41:55.733063564 -0700
[email protected]@ -1542,6 +1542,13 @@
          else:
              missing.append('dl')
  
@@ -410,12 +410,10 @@
          # Thomas Heller's _ctypes module
          self.detect_ctypes(inc_dirs, lib_dirs)
  
-diff --git Python-2.6.4/Lib/test/ucredtext.py Python-2.6.4/Lib/test/ucredtext.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 @@
-+#!/usr/bin/python2.6
++#!/usr/bin/python2.7
 +
 +import ucred
 +import os
--- a/components/python/python27/patches/07-dlpi.patch	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/07-dlpi.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,5 +1,6 @@
-diff --git Python-2.6.4/Modules/dlpimodule.c Python-2.6.4/Modules/dlpimodule.c
-new file mode 100644
+This patch provides Python dlpi support.  It may be contributed upstream at
+some point, but the suitability (or lack thereof) has not yet been determined.
+
 --- /dev/null
 +++ Python-2.6.4/Modules/dlpimodule.c
 @@ -0,0 +1,1205 @@
@@ -1208,10 +1209,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.8/setup.py.~3~	2014-07-17 20:43:48.715101356 -0700
++++ Python-2.7.8/setup.py	2014-07-17 20:43:48.731874294 -0700
[email protected]@ -1549,6 +1549,12 @@
              exts.append( Extension('ucred', ['ucred.c'],
                                     libraries = ['tsol']) )
  
@@ -1224,12 +1224,10 @@
          # 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 @@
-+#!/usr/bin/python2.6
++#!/usr/bin/python2.7
 +
 +import dlpi
 +import sys
--- a/components/python/python27/patches/08-encoding-alias.patch	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/08-encoding-alias.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,6 +1,8 @@
-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
+Add missing encoding aliases.  It may be contributed upstream at some point,
+but the suitability (or lack thereof) has not yet been determined.
+
+--- 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 +11,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 +19,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 +27,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	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/09-rbac.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,5 +1,6 @@
-diff --git Python-2.6.4/Modules/authattr.c Python-2.6.4/Modules/authattr.c
-new file mode 100644
+This patch provides Python RBAC support.  It may be contributed upstream at
+some point, but the suitability (or lack thereof) has not yet been determined.
+
 --- /dev/null
 +++ Python-2.6.4/Modules/authattr.c
 @@ -0,0 +1,261 @@
@@ -1252,10 +1253,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.8/setup.py.~4~	2014-07-17 20:44:54.016102084 -0700
++++ Python-2.7.8/setup.py	2014-07-17 20:44:54.040843123 -0700
[email protected]@ -1555,6 +1555,22 @@
              exts.append( Extension('dlpi', ['dlpimodule.c'],
                                     libraries = ['dlpi']) )
  
@@ -1278,12 +1278,10 @@
          # Thomas Heller's _ctypes module
          self.detect_ctypes(inc_dirs, lib_dirs)
  
-diff --git Python-2.6.4/Lib/test/privrbac.py Python-2.6.4/Lib/test/privrbac.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 @@
-+#!/usr/bin/python2.6
++#!/usr/bin/python2.7
 +#
 +# CDDL HEADER START
 +#
--- a/components/python/python27/patches/10-cflags.patch	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/10-cflags.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,6 +1,8 @@
---- 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 @@
+This patch is Solaris-specific and thus not suitable for upstream.
+
+--- 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 +10,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	Wed Oct 08 05:29:12 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	Mon Oct 06 13:15:36 2014 -0700
@@ -0,0 +1,43 @@
+This patch uses fdwalk(3c) to close file descriptors; as that function is not
+widely implemented, this is unsuitable for upstream.
+
+--- Python-2.7.7/Modules/posixmodule.c.~1~	2014-05-31 11:58:40.000000000 -0700
++++ Python-2.7.7/Modules/posixmodule.c	2014-06-02 10:49:30.052826955 -0700
[email protected]@ -6607,16 +6607,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	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/12-studio-profile.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -2,10 +2,11 @@
 Studio instead of gcc.  The unfortunate repetition of options seen below
 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 @@
+compilation.  As it is Solaris-specific, it is not suitable for upstream.
+
+--- Python-2.7.8/Makefile.pre.in.~2~	2014-07-17 20:46:10.626664937 -0700
++++ Python-2.7.8/Makefile.pre.in	2014-07-17 20:46:10.736821411 -0700
[email protected]@ -413,28 +413,37 @@
  profile-opt:
  	@echo "Building with support for profile generation:"
  	$(MAKE) clean
@@ -16,7 +17,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 +27,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 +49,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]@ -1298,7 +1307,7 @@
  	-rm -f Lib/lib2to3/*Grammar*.pickle
  
  profile-removal:
--- a/components/python/python27/patches/13-pic-compile.patch	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/13-pic-compile.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,8 +1,10 @@
---- 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']
+This patch is a Solaris-specific hack; it will not be submitted upstream.
+
+--- 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	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/14-py_db.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,7 +1,9 @@
-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 @@
+This patch adds Python debugger support.  It may be contributed upstream at
+some point, but the suitability (or lack thereof) has not yet been determined.
+
+--- Python-2.7.7/Makefile.pre.in.~3~	2014-06-02 10:54:32.421086337 -0700
++++ Python-2.7.7/Makefile.pre.in	2014-06-02 10:54:32.438134113 -0700
[email protected]@ -407,7 +407,7 @@
  
  # Default target
  all:		build_all
@@ -10,7 +12,7 @@
  
  # Compile a binary with gcc profile guided optimization.
  profile-opt:
[email protected]@ -709,6 +709,19 @@
[email protected]@ -778,6 +778,19 @@
  
  $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
  
@@ -30,7 +32,7 @@
  
  ######################################################################
  
[email protected]@ -773,7 +786,7 @@
[email protected]@ -842,7 +855,7 @@
  		$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
  
  # Install everything
@@ -38,10 +40,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	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/patches/15-get_wch.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -1,5 +1,9 @@
---- 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
+This patch adds wget_wch support to the curses module.  It may be contributed
+upstream at some point, but the suitability (or lack thereof) has not yet
+been determined.
+
+--- 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 +42,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-CVE-2013-4238.py27.patch	Wed Oct 08 05:29:12 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 */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python27/patches/16-ossaudiodev.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -0,0 +1,62 @@
+This patch is needed to make Python understand it can build the OSS plugin.  
+Some OSS ioctls are not supported on Solaris, so they are ifdef'f out.  As
+the patch is Solaris-specific, it is not suitable for upstream.
+
+--- Python-2.7.7/Modules/ossaudiodev.c.~1~	2014-05-31 11:58:40.000000000 -0700
++++ Python-2.7.7/Modules/ossaudiodev.c	2014-06-02 10:58:12.132478970 -0700
[email protected]@ -1037,6 +1037,7 @@
+     _EXPORT_INT(m, SOUND_MIXER_MONITOR);
+ #endif
+ 
++#ifndef __sun
+     /* Expose all the ioctl numbers for masochists who like to do this
+        stuff directly. */
+     _EXPORT_INT(m, SNDCTL_COPR_HALT);
[email protected]@ -1049,6 +1050,7 @@
+     _EXPORT_INT(m, SNDCTL_COPR_SENDMSG);
+     _EXPORT_INT(m, SNDCTL_COPR_WCODE);
+     _EXPORT_INT(m, SNDCTL_COPR_WDATA);
++#endif
+ #ifdef SNDCTL_DSP_BIND_CHANNEL
+     _EXPORT_INT(m, SNDCTL_DSP_BIND_CHANNEL);
+ #endif
[email protected]@ -1070,8 +1072,12 @@
+     _EXPORT_INT(m, SNDCTL_DSP_GETSPDIF);
+ #endif
+     _EXPORT_INT(m, SNDCTL_DSP_GETTRIGGER);
++#ifdef SNDCTL_DSP_MAPINBUF
+     _EXPORT_INT(m, SNDCTL_DSP_MAPINBUF);
++#endif
++#ifdef SNDCTL_DSP_MAPOUTBUF
+     _EXPORT_INT(m, SNDCTL_DSP_MAPOUTBUF);
++#endif
+     _EXPORT_INT(m, SNDCTL_DSP_NONBLOCK);
+     _EXPORT_INT(m, SNDCTL_DSP_POST);
+ #ifdef SNDCTL_DSP_PROFILE
[email protected]@ -1091,6 +1097,7 @@
+     _EXPORT_INT(m, SNDCTL_DSP_STEREO);
+     _EXPORT_INT(m, SNDCTL_DSP_SUBDIVIDE);
+     _EXPORT_INT(m, SNDCTL_DSP_SYNC);
++#ifndef __sun
+     _EXPORT_INT(m, SNDCTL_FM_4OP_ENABLE);
+     _EXPORT_INT(m, SNDCTL_FM_LOAD_INSTR);
+     _EXPORT_INT(m, SNDCTL_MIDI_INFO);
[email protected]@ -1132,4 +1139,5 @@
+     _EXPORT_INT(m, SNDCTL_TMR_STOP);
+     _EXPORT_INT(m, SNDCTL_TMR_TEMPO);
+     _EXPORT_INT(m, SNDCTL_TMR_TIMEBASE);
++#endif
+ }
+--- Python-2.7.8/setup.py.~5~	2014-07-17 20:47:50.251398063 -0700
++++ Python-2.7.8/setup.py	2014-07-17 20:47:50.359537973 -0700
[email protected]@ -1638,8 +1638,8 @@
+         else:
+             missing.append('linuxaudiodev')
+ 
+-        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-recvfrom_into.patch	Wed Oct 08 05:29:12 2014 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,18 +0,0 @@
-# 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 @@
-         recvlen = buflen;
-     }
- 
-+    /* Check if the buffer is large enough */
-+    if (buflen < recvlen) {
-+        PyErr_SetString(PyExc_ValueError,
-+                        "buffer too small for requested bytes");
-+        goto error;
-+    }
-+
-     readlen = sock_recvfrom_guts(s, buf.buf, recvlen, flags, &addr);
-     if (readlen < 0) {
-         /* Return an error */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python27/patches/18-osconf-long.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -0,0 +1,14 @@
+# 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.7/Modules/posixmodule.c.~2~	2014-06-02 11:01:10.919544709 -0700
++++ Python-2.7.7/Modules/posixmodule.c	2014-06-02 11:01:11.009553336 -0700
[email protected]@ -8499,7 +8499,7 @@
+     int name;
+ 
+     if (PyArg_ParseTuple(args, "O&:sysconf", conv_sysconf_confname, &name)) {
+-        int value;
++        long value;
+ 
+         errno = 0;
+         value = sysconf(name);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python27/patches/20-bsddb-harmful.patch	Mon Oct 06 13:15:36 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.7/Makefile.pre.in.~4~	2014-06-02 11:08:40.909703116 -0700
++++ Python-2.7.7/Makefile.pre.in	2014-06-02 11:08:40.977964319 -0700
[email protected]@ -975,7 +975,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 \
+--- Python-2.7.8/setup.py.~6~	2014-07-17 20:49:23.834928506 -0700
++++ Python-2.7.8/setup.py	2014-07-17 20:49:23.872603149 -0700
[email protected]@ -1067,7 +1067,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	Wed Oct 08 05:29:12 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):
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/python/python27/patches/21-test_tcl.patch	Mon Oct 06 13:15:36 2014 -0700
@@ -0,0 +1,35 @@
+This patch comes from upstream: http://bugs.python.org/issue21881
+
+--- Python-2.7.8/Lib/test/test_tcl.py.~1~	2014-06-29 19:05:37.000000000 -0700
++++ Python-2.7.8/Lib/test/test_tcl.py	2014-07-17 20:50:53.804037105 -0700
[email protected]@ -420,10 +420,9 @@
+             self.assertEqual(passValue(float('inf')), float('inf'))
+             self.assertEqual(passValue(-float('inf')), -float('inf'))
+         else:
+-            f = float(passValue(float('nan')))
+-            self.assertNotEqual(f, f)
+             self.assertEqual(float(passValue(float('inf'))), float('inf'))
+             self.assertEqual(float(passValue(-float('inf'))), -float('inf'))
++            # XXX NaN representation can be not parsable by float()
+         self.assertEqual(passValue((1, '2', (3.4,))),
+                          (1, '2', (3.4,)) if self.wantobjects else '1 2 3.4')
+ 
[email protected]@ -448,9 +447,6 @@
+             expected = float(expected)
+             self.assertAlmostEqual(float(actual), expected,
+                                    delta=abs(expected) * 1e-10)
+-        def nan_eq(actual, expected):
+-            actual = float(actual)
+-            self.assertNotEqual(actual, actual)
+ 
+         check(True, '1')
+         check(False, '0')
[email protected]@ -474,7 +470,7 @@
+             check(f, f, eq=float_eq)
+         check(float('inf'), 'Inf', eq=float_eq)
+         check(-float('inf'), '-Inf', eq=float_eq)
+-        check(float('nan'), 'NaN', eq=nan_eq)
++        # XXX NaN representation can be not parsable by float()
+         check((), '')
+         check((1, (2,), (3, 4), '5 6', ()), '1 2 {3 4} {5 6} {}')
+ 
--- a/components/python/python27/python-27-tests.p5m	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/python-27-tests.p5m	Mon Oct 06 13:15:36 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.
@@ -29,80 +29,22 @@
 set name=pkg.fmri \
     value=pkg:/runtime/python-27/[email protected]$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 set name=pkg.summary value="The Python tests"
+# This package name has known conflicts with other packages in the WOS
+set name=pkg.linted.pkglint.manifest004 value=true
 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=$(TPNO)
 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)
-
-# pkgdepend doesn't like python 2.7 yet
-<transform file path=.+\.py$ -> \
-    default pkg.depend.bypass-generate .* >
-
-license python27.license license="PSFv2"
-
-dir path=usr
-dir path=usr/lib
-dir path=usr/lib/python2.7
-dir path=usr/lib/python2.7/bsddb/test
-dir path=usr/lib/python2.7/ctypes/test
-dir path=usr/lib/python2.7/distutils/tests
-dir path=usr/lib/python2.7/email/test
-dir path=usr/lib/python2.7/email/test/data
-dir path=usr/lib/python2.7/idlelib
-dir path=usr/lib/python2.7/json/tests
-dir path=usr/lib/python2.7/lib-dynload
-dir path=usr/lib/python2.7/lib-dynload/64
-dir path=usr/lib/python2.7/lib-tk/test
-dir path=usr/lib/python2.7/lib-tk/test/test_tkinter
-dir path=usr/lib/python2.7/lib-tk/test/test_ttk
-dir path=usr/lib/python2.7/lib2to3/tests
-dir path=usr/lib/python2.7/lib2to3/tests/data
-dir path=usr/lib/python2.7/lib2to3/tests/data/fixers
-dir path=usr/lib/python2.7/lib2to3/tests/data/fixers/myfixes
-dir path=usr/lib/python2.7/sqlite3/test
-dir path=usr/lib/python2.7/test
-dir path=usr/lib/python2.7/test/cjkencodings
-dir path=usr/lib/python2.7/test/data
-dir path=usr/lib/python2.7/test/decimaltestdata
-dir path=usr/lib/python2.7/test/subprocessdata
-dir path=usr/lib/python2.7/test/tracedmodules
-dir path=usr/lib/python2.7/test/xmltestdata
-
-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
@@ -117,7 +59,6 @@
 file path=usr/lib/python2.7/ctypes/test/test_cfuncs.py
 file path=usr/lib/python2.7/ctypes/test/test_checkretval.py
 file path=usr/lib/python2.7/ctypes/test/test_delattr.py
-file path=usr/lib/python2.7/ctypes/test/test_errcheck.py
 file path=usr/lib/python2.7/ctypes/test/test_errno.py
 file path=usr/lib/python2.7/ctypes/test/test_find.py
 file path=usr/lib/python2.7/ctypes/test/test_frombuffer.py
@@ -125,7 +66,6 @@
 file path=usr/lib/python2.7/ctypes/test/test_functions.py
 file path=usr/lib/python2.7/ctypes/test/test_incomplete.py
 file path=usr/lib/python2.7/ctypes/test/test_init.py
-file path=usr/lib/python2.7/ctypes/test/test_integers.py
 file path=usr/lib/python2.7/ctypes/test/test_internals.py
 file path=usr/lib/python2.7/ctypes/test/test_keeprefs.py
 file path=usr/lib/python2.7/ctypes/test/test_libc.py
@@ -156,6 +96,7 @@
 file path=usr/lib/python2.7/ctypes/test/test_values.py
 file path=usr/lib/python2.7/ctypes/test/test_varsize_struct.py
 file path=usr/lib/python2.7/ctypes/test/test_win32.py
+file path=usr/lib/python2.7/ctypes/test/test_wintypes.py
 file path=usr/lib/python2.7/distutils/tests/Setup.sample
 file path=usr/lib/python2.7/distutils/tests/__init__.py
 file path=usr/lib/python2.7/distutils/tests/setuptools_build_ext.py
@@ -256,6 +197,27 @@
 file path=usr/lib/python2.7/email/test/test_email_codecs_renamed.py
 file path=usr/lib/python2.7/email/test/test_email_renamed.py
 file path=usr/lib/python2.7/email/test/test_email_torture.py
+file path=usr/lib/python2.7/idlelib/idle_test/README.txt
+file path=usr/lib/python2.7/idlelib/idle_test/__init__.py
+file path=usr/lib/python2.7/idlelib/idle_test/htest.py
+file path=usr/lib/python2.7/idlelib/idle_test/mock_idle.py
+file path=usr/lib/python2.7/idlelib/idle_test/mock_tk.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_autocomplete.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_autoexpand.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_calltips.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_config_name.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_delegator.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_formatparagraph.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_grep.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_hyperparser.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_idlehistory.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_parenmatch.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_pathbrowser.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_rstrip.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_searchengine.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_text.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_textview.py
+file path=usr/lib/python2.7/idlelib/idle_test/test_warning.py
 file path=usr/lib/python2.7/idlelib/testcode.py
 file path=usr/lib/python2.7/json/tests/__init__.py
 file path=usr/lib/python2.7/json/tests/test_check_circular.py
@@ -273,6 +235,7 @@
 file path=usr/lib/python2.7/json/tests/test_scanstring.py
 file path=usr/lib/python2.7/json/tests/test_separators.py
 file path=usr/lib/python2.7/json/tests/test_speedups.py
+file path=usr/lib/python2.7/json/tests/test_tool.py
 file path=usr/lib/python2.7/json/tests/test_unicode.py
 file path=usr/lib/python2.7/lib-dynload/64/_ctypes_test.so
 file path=usr/lib/python2.7/lib-dynload/64/_testcapi.so
@@ -281,19 +244,25 @@
 file path=usr/lib/python2.7/lib-tk/test/README
 file path=usr/lib/python2.7/lib-tk/test/runtktests.py
 file path=usr/lib/python2.7/lib-tk/test/test_tkinter/__init__.py
+file path=usr/lib/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.py
+file path=usr/lib/python2.7/lib-tk/test/test_tkinter/test_images.py
 file path=usr/lib/python2.7/lib-tk/test/test_tkinter/test_loadtk.py
 file path=usr/lib/python2.7/lib-tk/test/test_tkinter/test_text.py
+file path=usr/lib/python2.7/lib-tk/test/test_tkinter/test_variables.py
+file path=usr/lib/python2.7/lib-tk/test/test_tkinter/test_widgets.py
 file path=usr/lib/python2.7/lib-tk/test/test_ttk/__init__.py
 file path=usr/lib/python2.7/lib-tk/test/test_ttk/support.py
 file path=usr/lib/python2.7/lib-tk/test/test_ttk/test_extensions.py
 file path=usr/lib/python2.7/lib-tk/test/test_ttk/test_functions.py
 file path=usr/lib/python2.7/lib-tk/test/test_ttk/test_style.py
 file path=usr/lib/python2.7/lib-tk/test/test_ttk/test_widgets.py
+file path=usr/lib/python2.7/lib-tk/test/widget_tests.py
 file path=usr/lib/python2.7/lib2to3/tests/__init__.py
 file path=usr/lib/python2.7/lib2to3/tests/data/README
 file path=usr/lib/python2.7/lib2to3/tests/data/bom.py
 file path=usr/lib/python2.7/lib2to3/tests/data/crlf.py
 file path=usr/lib/python2.7/lib2to3/tests/data/different_encoding.py
+file path=usr/lib/python2.7/lib2to3/tests/data/false_encoding.py
 file path=usr/lib/python2.7/lib2to3/tests/data/fixers/bad_order.py
 file path=usr/lib/python2.7/lib2to3/tests/data/fixers/myfixes/__init__.py
 file path=usr/lib/python2.7/lib2to3/tests/data/fixers/myfixes/fix_explicit.py
@@ -306,7 +275,8 @@
 file path=usr/lib/python2.7/lib2to3/tests/data/infinite_recursion.py
 file path=usr/lib/python2.7/lib2to3/tests/data/py2_test_grammar.py
 file path=usr/lib/python2.7/lib2to3/tests/data/py3_test_grammar.py
-file path=usr/lib/python2.7/lib2to3/tests/pytree_idempotency.py
+file path=usr/lib/python2.7/lib2to3/tests/pytree_idempotency.py \
+    pkg.depend.bypass-generate=.*
 file path=usr/lib/python2.7/lib2to3/tests/support.py
 file path=usr/lib/python2.7/lib2to3/tests/test_all_fixers.py
 file path=usr/lib/python2.7/lib2to3/tests/test_fixers.py
@@ -328,10 +298,25 @@
 file path=usr/lib/python2.7/test/185test.db
 file path=usr/lib/python2.7/test/Sine-1000Hz-300ms.aif
 file path=usr/lib/python2.7/test/__init__.py
+file path=usr/lib/python2.7/test/audiodata/pluck-pcm16.aiff
+file path=usr/lib/python2.7/test/audiodata/pluck-pcm16.au
+file path=usr/lib/python2.7/test/audiodata/pluck-pcm16.wav
+file path=usr/lib/python2.7/test/audiodata/pluck-pcm24.aiff
+file path=usr/lib/python2.7/test/audiodata/pluck-pcm24.wav
+file path=usr/lib/python2.7/test/audiodata/pluck-pcm32.aiff
+file path=usr/lib/python2.7/test/audiodata/pluck-pcm32.au
+file path=usr/lib/python2.7/test/audiodata/pluck-pcm32.wav
+file path=usr/lib/python2.7/test/audiodata/pluck-pcm8.aiff
+file path=usr/lib/python2.7/test/audiodata/pluck-pcm8.au
+file path=usr/lib/python2.7/test/audiodata/pluck-pcm8.wav
+file path=usr/lib/python2.7/test/audiodata/pluck-ulaw.aifc
+file path=usr/lib/python2.7/test/audiodata/pluck-ulaw.au
 file path=usr/lib/python2.7/test/audiotest.au
+file path=usr/lib/python2.7/test/audiotests.py
 file path=usr/lib/python2.7/test/autotest.py
 file path=usr/lib/python2.7/test/bad_coding.py
 file path=usr/lib/python2.7/test/bad_coding2.py
+file path=usr/lib/python2.7/test/bad_coding3.py
 file path=usr/lib/python2.7/test/badcert.pem
 file path=usr/lib/python2.7/test/badkey.pem
 file path=usr/lib/python2.7/test/badsyntax_future3.py
@@ -344,10 +329,9 @@
 file path=usr/lib/python2.7/test/badsyntax_nocaret.py
 file path=usr/lib/python2.7/test/buffer_tests.py
 file path=usr/lib/python2.7/test/cfgparser.1
-file usr/bin/check_offset \
-    path=usr/lib/python2.7/test/check_offset mode=0555
-file usr/bin/$(MACH64)/check_offset \
-    path=usr/lib/python2.7/test/check_offset64 mode=0555
+file usr/bin/check_offset path=usr/lib/python2.7/test/check_offset mode=0555
+file usr/bin/$(MACH64)/check_offset path=usr/lib/python2.7/test/check_offset64 \
+    mode=0555
 file path=usr/lib/python2.7/test/check_soundcard.vbs
 file path=usr/lib/python2.7/test/cjkencodings/big5-utf8.txt
 file path=usr/lib/python2.7/test/cjkencodings/big5.txt
@@ -537,6 +521,17 @@
 file path=usr/lib/python2.7/test/greyrgb.uue
 file path=usr/lib/python2.7/test/https_svn_python_org_root.pem
 file path=usr/lib/python2.7/test/ieee754.txt
+file path=usr/lib/python2.7/test/imghdrdata/python.bmp
+file path=usr/lib/python2.7/test/imghdrdata/python.gif
+file path=usr/lib/python2.7/test/imghdrdata/python.jpg
+file path=usr/lib/python2.7/test/imghdrdata/python.pbm
+file path=usr/lib/python2.7/test/imghdrdata/python.pgm
+file path=usr/lib/python2.7/test/imghdrdata/python.png
+file path=usr/lib/python2.7/test/imghdrdata/python.ppm
+file path=usr/lib/python2.7/test/imghdrdata/python.ras
+file path=usr/lib/python2.7/test/imghdrdata/python.sgi
+file path=usr/lib/python2.7/test/imghdrdata/python.tiff
+file path=usr/lib/python2.7/test/imghdrdata/python.xbm
 file path=usr/lib/python2.7/test/infinite_reload.py
 file path=usr/lib/python2.7/test/inspect_fodder.py
 file path=usr/lib/python2.7/test/inspect_fodder2.py
@@ -545,6 +540,7 @@
 file path=usr/lib/python2.7/test/lock_tests.py
 file path=usr/lib/python2.7/test/mapping_tests.py
 file path=usr/lib/python2.7/test/math_testcases.txt
+file path=usr/lib/python2.7/test/mp_fork_bomb.py
 file path=usr/lib/python2.7/test/nokia.pem
 file path=usr/lib/python2.7/test/nullbytecert.pem
 file path=usr/lib/python2.7/test/nullcert.pem
@@ -564,21 +560,23 @@
 file path=usr/lib/python2.7/test/relimport.py
 file path=usr/lib/python2.7/test/reperf.py
 file path=usr/lib/python2.7/test/sample_doctest.py
+file path=usr/lib/python2.7/test/sample_doctest_no_docstrings.py
+file path=usr/lib/python2.7/test/sample_doctest_no_doctests.py
 file path=usr/lib/python2.7/test/script_helper.py
 file path=usr/lib/python2.7/test/seq_tests.py
 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/symlink_support.py
 file path=usr/lib/python2.7/test/test_MimeWriter.py
 file path=usr/lib/python2.7/test/test_SimpleHTTPServer.py
 file path=usr/lib/python2.7/test/test_StringIO.py
 file path=usr/lib/python2.7/test/test___all__.py
 file path=usr/lib/python2.7/test/test___future__.py
 file path=usr/lib/python2.7/test/test__locale.py
+file path=usr/lib/python2.7/test/test__osx_support.py
 file path=usr/lib/python2.7/test/test_abc.py
 file path=usr/lib/python2.7/test/test_abstract_numbers.py
 file path=usr/lib/python2.7/test/test_aepack.py
@@ -703,6 +701,7 @@
 file path=usr/lib/python2.7/test/test_fcntl.py
 file path=usr/lib/python2.7/test/test_file.py
 file path=usr/lib/python2.7/test/test_file2k.py
+file path=usr/lib/python2.7/test/test_file_eintr.py
 file path=usr/lib/python2.7/test/test_filecmp.py
 file path=usr/lib/python2.7/test/test_fileinput.py
 file path=usr/lib/python2.7/test/test_fileio.py
@@ -748,9 +747,11 @@
 file path=usr/lib/python2.7/test/test_htmlparser.py
 file path=usr/lib/python2.7/test/test_httplib.py
 file path=usr/lib/python2.7/test/test_httpservers.py
-file path=usr/lib/python2.7/test/test_imageop.py
+file path=usr/lib/python2.7/test/test_idle.py
+file path=usr/lib/python2.7/test/test_imageop.py pkg.depend.bypass-generate=.*
 file path=usr/lib/python2.7/test/test_imaplib.py
 file path=usr/lib/python2.7/test/test_imgfile.py
+file path=usr/lib/python2.7/test/test_imghdr.py
 file path=usr/lib/python2.7/test/test_imp.py
 file path=usr/lib/python2.7/test/test_import.py
 file path=usr/lib/python2.7/test/test_importhooks.py
@@ -780,6 +781,7 @@
 file path=usr/lib/python2.7/test/test_macos.py
 file path=usr/lib/python2.7/test/test_macostools.py
 file path=usr/lib/python2.7/test/test_macpath.py
+file path=usr/lib/python2.7/test/test_macurl2path.py
 file path=usr/lib/python2.7/test/test_mailbox.py
 file path=usr/lib/python2.7/test/test_marshal.py
 file path=usr/lib/python2.7/test/test_math.py
@@ -797,12 +799,14 @@
 file path=usr/lib/python2.7/test/test_multibytecodec.py
 file path=usr/lib/python2.7/test/test_multibytecodec_support.py
 file path=usr/lib/python2.7/test/test_multifile.py
-file path=usr/lib/python2.7/test/test_multiprocessing.py
+file path=usr/lib/python2.7/test/test_multiprocessing.py \
+    pkg.depend.bypass-generate=.*
 file path=usr/lib/python2.7/test/test_mutants.py
 file path=usr/lib/python2.7/test/test_mutex.py
 file path=usr/lib/python2.7/test/test_netrc.py
 file path=usr/lib/python2.7/test/test_new.py
 file path=usr/lib/python2.7/test/test_nis.py
+file path=usr/lib/python2.7/test/test_nntplib.py
 file path=usr/lib/python2.7/test/test_normalization.py
 file path=usr/lib/python2.7/test/test_ntpath.py
 file path=usr/lib/python2.7/test/test_old_mailbox.py
@@ -842,8 +846,8 @@
 file path=usr/lib/python2.7/test/test_pstats.py
 file path=usr/lib/python2.7/test/test_pty.py
 file path=usr/lib/python2.7/test/test_pwd.py
+file path=usr/lib/python2.7/test/test_py3kwarn.py
 file path=usr/lib/python2.7/test/test_py_compile.py
-file path=usr/lib/python2.7/test/test_py3kwarn.py
 file path=usr/lib/python2.7/test/test_pyclbr.py
 file path=usr/lib/python2.7/test/test_pydoc.py
 file path=usr/lib/python2.7/test/test_pyexpat.py
@@ -880,9 +884,11 @@
 file path=usr/lib/python2.7/test/test_socketserver.py
 file path=usr/lib/python2.7/test/test_softspace.py
 file path=usr/lib/python2.7/test/test_sort.py
+file path=usr/lib/python2.7/test/test_spwd.py
 file path=usr/lib/python2.7/test/test_sqlite.py
 file path=usr/lib/python2.7/test/test_ssl.py
 file path=usr/lib/python2.7/test/test_startfile.py
+file path=usr/lib/python2.7/test/test_stat.py
 file path=usr/lib/python2.7/test/test_str.py
 file path=usr/lib/python2.7/test/test_strftime.py
 file path=usr/lib/python2.7/test/test_string.py
@@ -894,6 +900,7 @@
 file path=usr/lib/python2.7/test/test_structmembers.py
 file path=usr/lib/python2.7/test/test_structseq.py
 file path=usr/lib/python2.7/test/test_subprocess.py
+file path=usr/lib/python2.7/test/test_sunau.py
 file path=usr/lib/python2.7/test/test_sunaudiodev.py
 file path=usr/lib/python2.7/test/test_sundry.py
 file path=usr/lib/python2.7/test/test_support.py
@@ -992,3 +999,5 @@
 file path=usr/lib/python2.7/test/xmltestdata/test.xml.out
 file path=usr/lib/python2.7/test/xmltests.py
 file path=usr/lib/python2.7/test/zipdir.zip
+#
+license python27.license license=PSFv2
--- a/components/python/python27/python-27.p5m	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/python-27.p5m	Mon Oct 06 13:15:36 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.
 #
 
 <transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
@@ -26,92 +26,47 @@
     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=$(TPNO)
 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)
-
-# pkgdepend doesn't like python 2.7 yet
-<transform file path=.+\.py$ -> \
-    default pkg.depend.bypass-generate .* >
-
-license python27.license license=PSFv2
-
-dir path=usr
-dir path=usr/bin
-dir path=usr/bin/$(MACH32)
-dir path=usr/bin/$(MACH64)
-dir path=usr/include
-dir path=usr/include/python2.7
-dir path=usr/lib
-dir path=usr/lib/$(MACH64)
-dir path=usr/lib/$(MACH64)/pkgconfig
+#file path=usr/bin/smtpd.py
+#file path=usr/bin/$(MACH64)/smtpd.py
+#
+file usr/bin/python2.7 path=usr/bin/$(MACH32)/isapython2.7
+link path=usr/bin/$(MACH32)/python2.7 target=isapython2.7
+file usr/bin/$(MACH64)/python2.7 path=usr/bin/$(MACH64)/isapython2.7
+link path=usr/bin/$(MACH64)/python target=python2.7 mediator=python \
+    mediator-version=2.7
+link path=usr/bin/$(MACH64)/python-config target=python2.7-config \
+    mediator=python mediator-version=2.7
+link path=usr/bin/$(MACH64)/python2.7 target=isapython2.7
+#
+file path=usr/bin/$(MACH64)/python2.7-config
+link path=usr/bin/2to3 target=2to3-2.7 mediator=python mediator-version=2.7
+#
 #dir path=usr/lib/$(MACH64)/python2.7
 #dir path=usr/lib/$(MACH64)/python2.7/config
-dir path=usr/lib/pkgconfig
-dir path=usr/lib/python2.7
-dir path=usr/lib/python2.7/bsddb
-dir path=usr/lib/python2.7/compiler
-dir path=usr/lib/python2.7/config
-dir path=usr/lib/python2.7/ctypes
-dir path=usr/lib/python2.7/ctypes/macholib
-dir path=usr/lib/python2.7/curses
-dir path=usr/lib/python2.7/distutils
-dir path=usr/lib/python2.7/distutils/command
-dir path=usr/lib/python2.7/email
-dir path=usr/lib/python2.7/email/mime
-dir path=usr/lib/python2.7/encodings
-dir path=usr/lib/python2.7/hotshot
-dir path=usr/lib/python2.7/idlelib
-dir path=usr/lib/python2.7/idlelib/Icons
-dir path=usr/lib/python2.7/importlib
-dir path=usr/lib/python2.7/json
-dir path=usr/lib/python2.7/lib-dynload
-dir path=usr/lib/python2.7/lib-dynload/64
-dir path=usr/lib/python2.7/lib2to3
-dir path=usr/lib/python2.7/lib2to3/fixes
-dir path=usr/lib/python2.7/lib2to3/pgen2
-dir path=usr/lib/python2.7/logging
-dir path=usr/lib/python2.7/multiprocessing
-dir path=usr/lib/python2.7/multiprocessing/dummy
-dir path=usr/lib/python2.7/plat-sunos5
-dir path=usr/lib/python2.7/pydoc_data
-dir path=usr/lib/python2.7/site-packages
-dir path=usr/lib/python2.7/sqlite3
-dir path=usr/lib/python2.7/unittest
-dir path=usr/lib/python2.7/unittest/test
-dir path=usr/lib/python2.7/vendor-packages
-dir path=usr/lib/python2.7/vendor-packages/64
-dir path=usr/lib/python2.7/wsgiref
-dir path=usr/lib/python2.7/xml
-dir path=usr/lib/python2.7/xml/dom
-dir path=usr/lib/python2.7/xml/etree
-dir path=usr/lib/python2.7/xml/parsers
-dir path=usr/lib/python2.7/xml/sax
-dir path=usr/share
-dir path=usr/share/man
-dir path=usr/share/man/man1
-
-file usr/bin/2to3 path=usr/bin/2to3-2.7 pkg.depend.bypass-generate=.*
-file usr/bin/idle path=usr/bin/idle-2.7 pkg.depend.bypass-generate=.*
-file usr/bin/pydoc path=usr/bin/pydoc-2.7 pkg.depend.bypass-generate=.*
-#file path=usr/bin/smtpd.py pkg.depend.bypass-generate=.* pkg.tmp.autopyc=false
-#file path=usr/bin/$(MACH64)/smtpd.py pkg.depend.bypass-generate=.* pkg.tmp.autopyc=false
-
-file usr/bin/python2.7           path=usr/bin/$(MACH32)/isapython2.7
-file usr/bin/$(MACH64)/python2.7 path=usr/bin/$(MACH64)/isapython2.7
-
-file path=usr/bin/$(MACH64)/python2.7-config pkg.depend.bypass-generate=.*
-file path=usr/bin/python2.7-config pkg.depend.bypass-generate=.*
+#
+file usr/bin/2to3 path=usr/bin/2to3-2.7
+link path=usr/bin/idle target=idle-2.7 mediator=python mediator-version=2.7
+file usr/bin/idle path=usr/bin/idle-2.7
+hardlink path=usr/bin/isapython2.7 target=../lib/isaexec
+link path=usr/bin/pydoc target=pydoc-2.7 mediator=python mediator-version=2.7
+file usr/bin/pydoc path=usr/bin/pydoc-2.7
+link path=usr/bin/python target=python2.7 mediator=python mediator-version=2.7
+link path=usr/bin/python-config target=python2.7-config mediator=python \
+    mediator-version=2.7
+link path=usr/bin/python2.7 target=$(MACH32)/isapython2.7
+file path=usr/bin/python2.7-config
 file path=usr/include/python2.7/Python-ast.h
 file path=usr/include/python2.7/Python.h
 file path=usr/include/python2.7/abstract.h
@@ -171,7 +126,9 @@
 file path=usr/include/python2.7/py_curses.h
 file path=usr/include/python2.7/pyarena.h
 file path=usr/include/python2.7/pycapsule.h
-file path=usr/include/python2.7/pyconfig.h
+file path=usr/include/python2.7/pyconfig-32.h
+file path=usr/include/python2.7/pyconfig-64.h
+file files/pyconfig.h path=usr/include/python2.7/pyconfig.h
 file path=usr/include/python2.7/pyctype.h
 file path=usr/include/python2.7/pydebug.h
 file path=usr/include/python2.7/pyerrors.h
@@ -204,10 +161,15 @@
 file path=usr/include/python2.7/unicodeobject.h
 file path=usr/include/python2.7/warnings.h
 file path=usr/include/python2.7/weakrefobject.h
+link path=usr/lib/$(MACH64)/libpython2.7.so target=libpython2.7.so.1.0
 file path=usr/lib/$(MACH64)/libpython2.7.so.1.0
+link path=usr/lib/$(MACH64)/libpython2.7_db.so target=libpython2.7_db.so.1.0
 file path=usr/lib/$(MACH64)/libpython2.7_db.so.1.0
 file $(MACH64)/llib-lpython27.ln path=usr/lib/$(MACH64)/llib-lpython2.7.ln
 file path=usr/lib/$(MACH64)/pkgconfig/python-2.7.pc
+link path=usr/lib/$(MACH64)/pkgconfig/python.pc target=python-2.7.pc \
+    mediator=python mediator-version=2.7
+link path=usr/lib/libpython2.7.so target=libpython2.7.so.1.0
 #file path=usr/lib/$(MACH64)/python2.7/config/Makefile
 #file path=usr/lib/$(MACH64)/python2.7/config/Setup
 #file path=usr/lib/$(MACH64)/python2.7/config/Setup.config
@@ -218,10 +180,13 @@
 #file path=usr/lib/$(MACH64)/python2.7/config/makesetup mode=0555
 #file path=usr/lib/$(MACH64)/python2.7/config/python.o
 file path=usr/lib/libpython2.7.so.1.0
+link path=usr/lib/libpython2.7_db.so target=libpython2.7_db.so.1.0
 file path=usr/lib/libpython2.7_db.so.1.0
 file llib-lpython27 path=usr/lib/llib-lpython2.7
 file $(MACH32)/llib-lpython27.ln path=usr/lib/llib-lpython2.7.ln
 file path=usr/lib/pkgconfig/python-2.7.pc
+link path=usr/lib/pkgconfig/python.pc target=python-2.7.pc mediator=python \
+    mediator-version=2.7
 file path=usr/lib/python2.7/BaseHTTPServer.py
 file path=usr/lib/python2.7/Bastion.py
 file path=usr/lib/python2.7/CGIHTTPServer.py
@@ -244,8 +209,10 @@
 file path=usr/lib/python2.7/__future__.py
 file path=usr/lib/python2.7/__phello__.foo.py
 file path=usr/lib/python2.7/_abcoll.py
+file path=usr/lib/python2.7/_osx_support.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
@@ -262,14 +229,7 @@
 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
+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
 file path=usr/lib/python2.7/cgitb.py
@@ -580,6 +540,13 @@
 file path=usr/lib/python2.7/idlelib/IOBinding.py
 file path=usr/lib/python2.7/idlelib/Icons/folder.gif
 file path=usr/lib/python2.7/idlelib/Icons/idle.icns
+file path=usr/lib/python2.7/idlelib/Icons/idle.ico
+file path=usr/lib/python2.7/idlelib/Icons/idle_16.gif
+file path=usr/lib/python2.7/idlelib/Icons/idle_16.png
+file path=usr/lib/python2.7/idlelib/Icons/idle_32.gif
+file path=usr/lib/python2.7/idlelib/Icons/idle_32.png
+file path=usr/lib/python2.7/idlelib/Icons/idle_48.gif
+file path=usr/lib/python2.7/idlelib/Icons/idle_48.png
 file path=usr/lib/python2.7/idlelib/Icons/minusnode.gif
 file path=usr/lib/python2.7/idlelib/Icons/openfolder.gif
 file path=usr/lib/python2.7/idlelib/Icons/plusnode.gif
@@ -650,7 +617,6 @@
 file path=usr/lib/python2.7/json/scanner.py
 file path=usr/lib/python2.7/json/tool.py
 file path=usr/lib/python2.7/keyword.py
-file path=usr/lib/python2.7/lib-dynload/Python-$(COMPONENT_VERSION)-py2.7.egg-info
 file path=usr/lib/python2.7/lib-dynload/64/_bisect.so
 file path=usr/lib/python2.7/lib-dynload/64/_codecs_cn.so
 file path=usr/lib/python2.7/lib-dynload/64/_codecs_hk.so
@@ -699,6 +665,7 @@
 file path=usr/lib/python2.7/lib-dynload/64/mmap.so
 file path=usr/lib/python2.7/lib-dynload/64/nis.so
 file path=usr/lib/python2.7/lib-dynload/64/operator.so
+file path=usr/lib/python2.7/lib-dynload/64/ossaudiodev.so
 file path=usr/lib/python2.7/lib-dynload/64/parser.so
 file path=usr/lib/python2.7/lib-dynload/64/privileges.so
 file path=usr/lib/python2.7/lib-dynload/64/pyexpat.so
@@ -715,6 +682,7 @@
 file path=usr/lib/python2.7/lib-dynload/64/ucred.so
 file path=usr/lib/python2.7/lib-dynload/64/unicodedata.so
 file path=usr/lib/python2.7/lib-dynload/64/zlib.so
+file path=usr/lib/python2.7/lib-dynload/Python-$(COMPONENT_VERSION)-py2.7.egg-info
 file path=usr/lib/python2.7/lib-dynload/_bisect.so
 file path=usr/lib/python2.7/lib-dynload/_codecs_cn.so
 file path=usr/lib/python2.7/lib-dynload/_codecs_hk.so
@@ -765,6 +733,7 @@
 file path=usr/lib/python2.7/lib-dynload/mmap.so
 file path=usr/lib/python2.7/lib-dynload/nis.so
 file path=usr/lib/python2.7/lib-dynload/operator.so
+file path=usr/lib/python2.7/lib-dynload/ossaudiodev.so
 file path=usr/lib/python2.7/lib-dynload/parser.so
 file path=usr/lib/python2.7/lib-dynload/privileges.so
 file path=usr/lib/python2.7/lib-dynload/pyexpat.so
@@ -781,10 +750,10 @@
 file path=usr/lib/python2.7/lib-dynload/ucred.so
 file path=usr/lib/python2.7/lib-dynload/unicodedata.so
 file path=usr/lib/python2.7/lib-dynload/zlib.so
+file path=usr/lib/python2.7/lib2to3/Grammar$(COMPONENT_VERSION).final.0.pickle
 file path=usr/lib/python2.7/lib2to3/Grammar.txt
-file path=usr/lib/python2.7/lib2to3/Grammar$(COMPONENT_VERSION).final.0.pickle
+file path=usr/lib/python2.7/lib2to3/PatternGrammar$(COMPONENT_VERSION).final.0.pickle
 file path=usr/lib/python2.7/lib2to3/PatternGrammar.txt
-file path=usr/lib/python2.7/lib2to3/PatternGrammar$(COMPONENT_VERSION).final.0.pickle
 file path=usr/lib/python2.7/lib2to3/__init__.py
 file path=usr/lib/python2.7/lib2to3/__main__.py
 file path=usr/lib/python2.7/lib2to3/btm_matcher.py
@@ -900,7 +869,7 @@
 file path=usr/lib/python2.7/os.py
 file path=usr/lib/python2.7/os2emxpath.py
 file path=usr/lib/python2.7/pdb.doc
-file path=usr/lib/python2.7/pdb.py
+file path=usr/lib/python2.7/pdb.py pkg.depend.bypass-generate=.*
 file path=usr/lib/python2.7/pickle.py
 file path=usr/lib/python2.7/pickletools.py
 file path=usr/lib/python2.7/pipes.py
@@ -912,14 +881,14 @@
 file path=usr/lib/python2.7/plat-sunos5/SUNAUDIODEV.py
 file path=usr/lib/python2.7/plat-sunos5/TYPES.py
 file path=usr/lib/python2.7/plat-sunos5/regen mode=0555
-file path=usr/lib/python2.7/platform.py
+file path=usr/lib/python2.7/platform.py pkg.depend.bypass-generate=.*
 file path=usr/lib/python2.7/plistlib.py
 file path=usr/lib/python2.7/popen2.py
 file path=usr/lib/python2.7/poplib.py
 file path=usr/lib/python2.7/posixfile.py
 file path=usr/lib/python2.7/posixpath.py
 file path=usr/lib/python2.7/pprint.py
-file path=usr/lib/python2.7/profile.py
+file path=usr/lib/python2.7/profile.py pkg.depend.bypass-generate=.*
 file path=usr/lib/python2.7/pstats.py
 file path=usr/lib/python2.7/pty.py
 file path=usr/lib/python2.7/py_compile.py
@@ -946,7 +915,7 @@
 file path=usr/lib/python2.7/site-packages/README
 file path=usr/lib/python2.7/site-packages/vendor-packages.pth
 file path=usr/lib/python2.7/site.py
-file path=usr/lib/python2.7/smtpd.py
+file path=usr/lib/python2.7/smtpd.py pkg.depend.bypass-generate=.*
 file path=usr/lib/python2.7/smtplib.py
 file path=usr/lib/python2.7/sndhdr.py
 file path=usr/lib/python2.7/socket.py
@@ -981,7 +950,7 @@
 file path=usr/lib/python2.7/toaiff.py
 file path=usr/lib/python2.7/token.py
 file path=usr/lib/python2.7/tokenize.py
-file path=usr/lib/python2.7/trace.py
+file path=usr/lib/python2.7/trace.py pkg.depend.bypass-generate=.*
 file path=usr/lib/python2.7/traceback.py
 file path=usr/lib/python2.7/tty.py
 file path=usr/lib/python2.7/types.py
@@ -1054,38 +1023,14 @@
 file path=usr/lib/python2.7/xmllib.py
 file path=usr/lib/python2.7/xmlrpclib.py
 file path=usr/lib/python2.7/zipfile.py
+link path=usr/share/man/man1/python.1 target=python2.7.1 mediator=python \
+    mediator-version=2.7
 file path=usr/share/man/man1/python2.7.1
-
-hardlink path=usr/bin/isapython2.7 target=../lib/isaexec
-
-link path=usr/bin/$(MACH32)/python2.7 target=isapython2.7
-link path=usr/bin/$(MACH64)/python2.7 target=isapython2.7
-link path=usr/bin/python2.7 target=$(MACH32)/isapython2.7
-link path=usr/lib/$(MACH64)/libpython2.7.so target=libpython2.7.so.1.0
-link path=usr/lib/$(MACH64)/libpython2.7_db.so target=libpython2.7_db.so.1.0
-link path=usr/lib/libpython2.7.so target=libpython2.7.so.1.0
-link path=usr/lib/libpython2.7_db.so target=libpython2.7_db.so.1.0
-
-link path=usr/bin/2to3 target=2to3-2.7 mediator=python mediator-version=2.7 \
-    pkg.linted.pkglint.dupaction010.1=true
-link path=usr/bin/idle target=idle-2.7 mediator=python mediator-version=2.7 \
-    pkg.linted.pkglint.dupaction010.1=true
-link path=usr/bin/pydoc target=pydoc-2.7 mediator=python mediator-version=2.7 \
-    pkg.linted.pkglint.dupaction010.1=true
-link path=usr/bin/python target=python2.7 mediator=python mediator-version=2.7 \
-    pkg.linted.pkglint.dupaction010.2=true
-link path=usr/bin/python-config target=python2.7-config mediator=python mediator-version=2.7 \
-    pkg.linted.pkglint.dupaction010.2=true
-link path=usr/bin/$(MACH64)/python target=python2.7 mediator=python mediator-version=2.7 \
-    pkg.linted.pkglint.dupaction010.2=true
-link path=usr/bin/$(MACH64)/python-config target=python2.7-config mediator=python mediator-version=2.7 \
-    pkg.linted.pkglint.dupaction010.2=true
-link path=usr/lib/pkgconfig/python.pc target=python-2.7.pc mediator=python mediator-version=2.7
-link path=usr/lib/$(MACH64)/pkgconfig/python.pc target=python-2.7.pc mediator=python mediator-version=2.7
-link path=usr/share/man/man1/python.1 target=python2.7.1 mediator=python mediator-version=2.7
+#
+license python27.license license=PSFv2
 
 # This optionally brings in the python tk support if tk is installed
-depend type=conditional fmri=library/python-2/tkinter-27 predicate=runtime/tk-8
+depend type=conditional fmri=library/python/tkinter-27 predicate=runtime/tk-8
 
 # If 2.6 is installed, bump it up to the current version to avoid conflicts.
 depend type=optional fmri=runtime/[email protected],$(BUILD_VERSION)
--- a/components/python/python27/tkinter-27.p5m	Wed Oct 08 05:29:12 2014 -0700
+++ b/components/python/python27/tkinter-27.p5m	Mon Oct 06 13:15:36 2014 -0700
@@ -18,34 +18,27 @@
 #
 # 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.
 #
 
 set name=pkg.fmri \
-    value=pkg:/library/python-2/[email protected]$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
+    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=$(TPNO)
 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)
 
-#pkgdepend doesn't like python 2.7 yet
-<transform file path=.+\.py$ -> \
-    default pkg.depend.bypass-generate .* >
-
 license python27.license license=PSFv2
 
-dir path=usr
-dir path=usr/lib
-dir path=usr/lib/python2.7
-dir path=usr/lib/python2.7/lib-dynload
-dir path=usr/lib/python2.7/lib-dynload/64
-dir path=usr/lib/python2.7/lib-tk
 file path=usr/lib/python2.7/lib-dynload/64/_tkinter.so
 file path=usr/lib/python2.7/lib-dynload/_tkinter.so
 file path=usr/lib/python2.7/lib-tk/Canvas.py
@@ -66,3 +59,6 @@
 file path=usr/lib/python2.7/lib-tk/tkSimpleDialog.py
 file path=usr/lib/python2.7/lib-tk/ttk.py
 file path=usr/lib/python2.7/lib-tk/turtle.py
+
+# force the rename with an optional dependency on the old name
+depend type=optional fmri=library/python-2/[email protected],5.11-0.175.2.3.0.5.0