PSARC 2014/183 Python 2.7.6 s11-update
authorJohn Beck <John.Beck@Oracle.COM>
Sat, 04 Oct 2014 14:50:43 -0700
branchs11-update
changeset 3367 ed5024e47b53
parent 3366 dba288608e69
child 3368 006337635e91
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/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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/Makefile	Sat Oct 04 14:50:43 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	Sat Oct 04 14:50:43 2014 -0700
@@ -0,0 +1,5 @@
+#ifdef _LP64
+#include <python2.7/pyconfig-64.h>
+#else
+#include <python2.7/pyconfig-32.h>
+#endif
--- a/components/python/python27/patches/00-bits.patch	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/00-bits.patch	Sat Oct 04 14:50:43 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/)
-@@ -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 */
-@@ -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)
-@@ -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
-@@ -1517,7 +1552,7 @@
- fi
- 
- AC_CHECK_TYPES(uintptr_t, 
--   [AC_CHECK_SIZEOF(uintptr_t, 4)], 
-+   [],
-    [], [#ifdef HAVE_STDINT_H
-         #include <stdint.h>
-         #endif
-@@ -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
-@@ -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"
-@@ -1906,12 +1941,6 @@
+@@ -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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/01-ext-stdio.patch	Sat Oct 04 14:50:43 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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/02-setup.patch	Sat Oct 04 14:50:43 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
-@@ -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
+@@ -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
-@@ -657,6 +657,13 @@
+@@ -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,
-@@ -677,6 +684,7 @@
- 
+@@ -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 = [
-@@ -1443,9 +1451,14 @@
+                               '/usr/local/ssl/include',
+@@ -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')
-@@ -1896,7 +1909,8 @@
+@@ -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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/03-vendor-packages.patch	Sat Oct 04 14:50:43 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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/04-solaris-64-bit.patch	Sat Oct 04 14:50:43 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
-@@ -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
+@@ -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 :
-@@ -677,7 +681,14 @@
+@@ -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
-@@ -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
+@@ -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)
-@@ -1214,11 +1265,10 @@
+@@ -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;
  
-@@ -1437,7 +1487,6 @@
+@@ -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
           */
-@@ -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)
-@@ -1486,14 +1538,13 @@
+@@ -1562,21 +1614,20 @@
                      fp = NULL;
                  }
              }
@@ -138,7 +142,6 @@
          /* don't need/want the module name snapshot anymore */
          if (saved_buf)
          {
-@@ -1500,7 +1551,7 @@
              free(saved_buf);
              saved_buf = NULL;
          }
--- a/components/python/python27/patches/05-dtrace.patch	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/05-dtrace.patch	Sat Oct 04 14:50:43 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
-@@ -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
+@@ -218,6 +218,7 @@
  # Used of signalmodule.o is not available
  SIGNAL_OBJS=	@SIGNAL_OBJS@
  
@@ -8,7 +17,7 @@
  
  ##########################################################################
  # Grammar
-@@ -298,6 +299,7 @@
+@@ -341,6 +342,7 @@
  		Python/formatter_unicode.o \
  		Python/formatter_string.o \
  		Python/$(DYNLOADFILE) \
@@ -16,7 +25,7 @@
  		$(LIBOBJS) \
  		$(MACHDEP_OBJS) \
  		$(THREADOBJ)
-@@ -599,6 +601,18 @@
+@@ -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
-@@ -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
+@@ -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)
-@@ -671,7 +676,56 @@
+@@ -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 *
-@@ -682,9 +736,84 @@
+@@ -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
-@@ -909,6 +1038,11 @@
+@@ -916,6 +1045,11 @@
          }
      }
  
@@ -224,7 +231,7 @@
      co = f->f_code;
      names = co->co_names;
      consts = co->co_consts;
-@@ -2659,6 +2793,9 @@
+@@ -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
-@@ -2700,6 +2837,9 @@
+@@ -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);
-@@ -3000,6 +3140,10 @@
+@@ -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
+@@ -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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/06-ucred.patch	Sat Oct 04 14:50:43 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
-@@ -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
+@@ -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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/07-dlpi.patch	Sat Oct 04 14:50:43 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
-@@ -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
+@@ -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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/08-encoding-alias.patch	Sat Oct 04 14:50:43 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
-@@ -217,6 +218,7 @@
+@@ -222,6 +223,7 @@
      'u_jis'              : 'euc_jp',
  
      # euc_kr codec
@@ -17,7 +19,7 @@
      'euckr'              : 'euc_kr',
      'korean'             : 'euc_kr',
      'ksc5601'            : 'euc_kr',
-@@ -457,6 +459,7 @@
+@@ -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',
-@@ -476,6 +479,7 @@
+@@ -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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/09-rbac.patch	Sat Oct 04 14:50:43 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
-@@ -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
+@@ -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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/10-cflags.patch	Sat Oct 04 14:50:43 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
-@@ -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
+@@ -1083,7 +1083,7 @@
  	;;
  
      *)
@@ -8,13 +10,4 @@
 +	OPT=""
  	;;
      esac
- 
-@@ -1110,6 +1110,8 @@
- 	# environment?
-         Darwin*)
- 	    ;;
-+	SunOS*)
-+	    ;;
-         *)
- 	    BASECFLAGS="$BASECFLAGS -OPT:Olimit=0"
- 	    ;;
+ fi
--- a/components/python/python27/patches/10-closerange.patch	Fri Oct 03 14:30:07 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
-@@ -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	Sat Oct 04 14:50:43 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
+@@ -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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/12-studio-profile.patch	Sat Oct 04 14:50:43 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
-@@ -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
+@@ -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
-@@ -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
-@@ -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
-@@ -1173,7 +1179,7 @@
+@@ -1298,7 +1307,7 @@
  	-rm -f Lib/lib2to3/*Grammar*.pickle
  
  profile-removal:
--- a/components/python/python27/patches/13-pic-compile.patch	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/13-pic-compile.patch	Sat Oct 04 14:50:43 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
-@@ -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
+@@ -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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/14-py_db.patch	Sat Oct 04 14:50:43 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
-@@ -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
+@@ -407,7 +407,7 @@
  
  # Default target
  all:		build_all
@@ -10,7 +12,7 @@
  
  # Compile a binary with gcc profile guided optimization.
  profile-opt:
-@@ -709,6 +709,19 @@
+@@ -778,6 +778,19 @@
  
  $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
  
@@ -30,7 +32,7 @@
  
  ######################################################################
  
-@@ -773,7 +786,7 @@
+@@ -842,7 +855,7 @@
  		$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
  
  # Install everything
@@ -38,10 +40,7 @@
 +install:	@FRAMEWORKINSTALLFIRST@ altinstall bininstall maninstall @FRAMEWORKINSTALLLAST@ install-py_db
  
  # Install almost everything without disturbing previous versions
- altinstall:	@FRAMEWORKALTINSTALLFIRST@ 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:	@FRAMEWORKALTINSTALLFIRST@ 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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/patches/15-get_wch.patch	Sat Oct 04 14:50:43 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;
-@@ -1570,6 +1601,7 @@
+@@ -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	Fri Oct 03 14:30:07 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
-@@ -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
-@@ -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()))
-@@ -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()
-@@ -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(
-@@ -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
-@@ -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 */
- 
-@@ -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);
-@@ -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	Sat Oct 04 14:50:43 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
+@@ -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);
+@@ -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
+@@ -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
+@@ -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);
+@@ -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
+@@ -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	Fri Oct 03 14:30:07 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
-@@ -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	Sat Oct 04 14:50:43 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
+@@ -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	Sat Oct 04 14:50:43 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
+@@ -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
+@@ -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	Fri Oct 03 14:30:07 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
-@@ -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	Sat Oct 04 14:50:43 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
+@@ -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')
+ 
+@@ -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')
+@@ -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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/python-27-tests.p5m	Sat Oct 04 14:50:43 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/tests@$(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	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/python-27.p5m	Sat Oct 04 14:50:43 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/python-27@$(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,35 +1023,11 @@
 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
--- a/components/python/python27/tkinter-27.p5m	Fri Oct 03 14:30:07 2014 -0700
+++ b/components/python/python27/tkinter-27.p5m	Sat Oct 04 14:50:43 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/tkinter-27@$(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