25293039 Upgrade Python 2.7 line to 2.7.13
authorJohn Beck <John.Beck@Oracle.COM>
Tue, 20 Dec 2016 13:25:44 -0800
changeset 7516 09c933391a1b
parent 7513 0a979060f73b
child 7517 42ae3923b8fe
25293039 Upgrade Python 2.7 line to 2.7.13
components/python/python27/Makefile
components/python/python27/patches/00-bits.patch
components/python/python27/patches/04-solaris-64-bit.patch
components/python/python27/patches/05-dtrace.patch
components/python/python27/patches/10-cflags.patch
components/python/python27/patches/11-closerange.patch
components/python/python27/patches/12-studio-profile.patch
components/python/python27/patches/14-py_db.patch
components/python/python27/patches/15-get_wch.patch
components/python/python27/patches/18-osconf-long.patch
components/python/python27/patches/20-bsddb-harmful.patch
components/python/python27/patches/21-disable-sslv3.patch
components/python/python27/patches/22-default-lib-path.patch
components/python/python27/patches/26-sslv2.patch
components/python/python27/patches/30-expat.patch
components/python/python27/python-27-tests.p5m
components/python/python27/python-27.p5m
components/python/python27/python27.license
--- a/components/python/python27/Makefile	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/Makefile	Tue Dec 20 13:25:44 2016 -0800
@@ -27,17 +27,17 @@
 PATH=/usr/bin:/usr/gnu/bin:/usr/sbin
 
 COMPONENT_NAME=		Python
-COMPONENT_VERSION=	2.7.12
-COMPONENT_PROJECT_URL=	http://python.org/
+COMPONENT_VERSION=	2.7.13
+COMPONENT_PROJECT_URL=	https://python.org/
 COMPONENT_SRC=		$(COMPONENT_NAME)-$(COMPONENT_VERSION)
 COMPONENT_ARCHIVE=	$(COMPONENT_SRC).tar.xz
 COMPONENT_ARCHIVE_HASH=	\
-    sha256:d7837121dd5652a05fef807c361909d255d173280c4e1a4ded94d73d80a1f978
+    sha256:35d543986882f78261f97787fd3e06274bfa6df29fac9b4a94f73930ff98f731
 COMPONENT_ARCHIVE_URL=	$(COMPONENT_PROJECT_URL)ftp/python/$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
 COMPONENT_SIG_URL=	$(COMPONENT_ARCHIVE_URL).asc
 COMPONENT_BUGDB=	utility/python
 
-TPNO=			29996
+TPNO=			33100
 
 include $(WS_MAKE_RULES)/prep.mk
 include $(WS_MAKE_RULES)/configure.mk
--- a/components/python/python27/patches/00-bits.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/00-bits.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -2,8 +2,8 @@
 # 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.10/configure.ac.~1~	2015-05-10 10:17:06 -0800
-+++ Python-2.7.10/configure.ac	2015-05-18 14:25:00 -0800
+--- Python-2.7.13/configure.ac.~1~	2016-12-17 12:05:07.000000000 +0000
++++ Python-2.7.13/configure.ac	2016-12-19 08:14:37.701742813 +0000
 @@ -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,8 +12,8 @@
 +AC_PREREQ(2.68)
  
  AC_REVISION($Revision$)
- AC_INIT(python, PYTHON_VERSION, http://bugs.python.org/)
-@@ -2207,12 +2207,6 @@
+ AC_INIT(python, PYTHON_VERSION, https://bugs.python.org/)
+@@ -2273,12 +2273,6 @@
  if test -z "$CCSHARED"
  then
  	case $ac_sys_system/$ac_sys_release in
--- a/components/python/python27/patches/04-solaris-64-bit.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/04-solaris-64-bit.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -5,7 +5,7 @@
 
 --- 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
-@@ -636,6 +636,10 @@
+@@ -637,6 +637,10 @@
          filename = self.get_ext_filename(ext_name)
          filename = os.path.split(filename)[-1]
  
@@ -16,7 +16,7 @@
          if not self.inplace:
              # no further work needed
              # returning :
-@@ -676,7 +680,14 @@
+@@ -677,7 +681,14 @@
          so_ext = get_config_var('SO')
          if os.name == 'nt' and self.debug:
              return os.path.join(*ext_path) + '_d' + so_ext
--- a/components/python/python27/patches/05-dtrace.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/05-dtrace.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -9,7 +9,7 @@
 
 --- Python-2.7.12/Makefile.pre.in.~1~	2016-06-25 14:49:31.000000000 -0700
 +++ Python-2.7.12/Makefile.pre.in	2016-07-07 13:45:26.859336399 -0700
-@@ -233,6 +233,7 @@
+@@ -232,6 +232,7 @@
  # Used of signalmodule.o is not available
  SIGNAL_OBJS=	@SIGNAL_OBJS@
  
@@ -17,7 +17,7 @@
  
  ##########################################################################
  # Grammar
-@@ -366,6 +367,7 @@
+@@ -365,6 +366,7 @@
  		Python/formatter_unicode.o \
  		Python/formatter_string.o \
  		Python/$(DYNLOADFILE) \
@@ -25,7 +25,7 @@
  		$(LIBOBJS) \
  		$(MACHDEP_OBJS) \
  		$(THREADOBJ)
-@@ -763,6 +765,18 @@
+@@ -751,6 +753,18 @@
  Python/formatter_string.o: $(srcdir)/Python/formatter_string.c \
  				$(STRINGLIB_HEADERS)
  
@@ -231,7 +231,7 @@
      co = f->f_code;
      names = co->co_names;
      consts = co->co_consts;
-@@ -2981,6 +3115,9 @@
+@@ -2983,6 +3117,9 @@
              PyObject **sp;
              PCALL(PCALL_ALL);
              sp = stack_pointer;
@@ -241,7 +241,7 @@
  #ifdef WITH_TSC
              x = call_function(&sp, oparg, &intr0, &intr1);
  #else
-@@ -3022,6 +3159,9 @@
+@@ -3024,6 +3161,9 @@
              } else
                  Py_INCREF(func);
              sp = stack_pointer;
@@ -251,7 +251,7 @@
              READ_TIMESTAMP(intr0);
              x = ext_do_call(func, &sp, flags, na, nk);
              READ_TIMESTAMP(intr1);
-@@ -3331,6 +3471,10 @@
+@@ -3333,6 +3473,10 @@
  
      /* pop frame */
  exit_eval_frame:
--- a/components/python/python27/patches/10-cflags.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/10-cflags.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -2,7 +2,7 @@
 
 --- Python-2.7.10/configure.ac.~2~	2015-05-10 10:17:06 -0800
 +++ Python-2.7.10/configure.ac	2015-05-18 14:42:30 -0800
-@@ -1106,7 +1106,7 @@
+@@ -1095,7 +1095,7 @@
  	;;
  
      *)
--- a/components/python/python27/patches/11-closerange.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/11-closerange.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -3,7 +3,7 @@
 
 --- Python-2.7.10/Modules/posixmodule.c.~1~	2015-05-10 10:17:06 -0700
 +++ Python-2.7.10/Modules/posixmodule.c	2015-05-18 14:43:36 -0700
-@@ -6661,16 +6661,34 @@
+@@ -6642,16 +6642,34 @@
  "closerange(fd_low, fd_high)\n\n\
  Closes all file descriptors in [fd_low, fd_high), ignoring errors.");
  
--- a/components/python/python27/patches/12-studio-profile.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/12-studio-profile.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -4,9 +4,9 @@
 that the profiling options be used at all steps of the build -- not just
 compilation.  As it is Solaris-specific, it is not suitable for upstream.
 
---- Python-2.7.12/Makefile.pre.in.~2~	2016-07-07 13:54:04.997344705 -0700
-+++ Python-2.7.12/Makefile.pre.in	2016-07-07 14:06:13.325835947 -0700
-@@ -212,7 +212,7 @@
+--- Python-2.7.13/Makefile.pre.in.~2~	2016-12-19 08:31:05.720179529 +0000
++++ Python-2.7.13/Makefile.pre.in	2016-12-19 08:31:05.804725502 +0000
+@@ -211,7 +211,7 @@
  # The task to run while instrument when building the profile-opt target
  # We exclude unittests with -x that take a rediculious amount of time to
  # run in the instrumented training build or do not provide much value.
@@ -15,12 +15,12 @@
  
  # report files for gcov / lcov coverage report
  COVERAGE_INFO=	$(abs_builddir)/coverage.info
-@@ -455,24 +455,33 @@
+@@ -454,24 +454,33 @@
  	$(MAKE) profile-removal
  
  build_all_generate_profile:
--	$(MAKE) all CFLAGS="$(CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"
-+	$(MAKE) all CC="$(CC) -xprofile=collect:$(XPROFILE_DIR)" \
+-	$(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) $(PGO_PROF_GEN_FLAG) @LTOFLAGS@" LIBS="$(LIBS)"
++	$(MAKE) @DEF_MAKE_RULE@ CC="$(CC) -xprofile=collect:$(XPROFILE_DIR)" \
 +            CFLAGS="$(CFLAGS) -xprofile=collect:$(XPROFILE_DIR)" \
 +            LDFLAGS="$(LDFLAGS) -xprofile=collect:$(XPROFILE_DIR)" \
 +            BLDSHARED="$(BLDSHARED) -xprofile=collect:$(XPROFILE_DIR)"
@@ -34,8 +34,8 @@
  	$(LLVM_PROF_MERGER)
  
  build_all_use_profile:
--	$(MAKE) all CFLAGS="$(CFLAGS) $(PGO_PROF_USE_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) @LTOFLAGS@"
-+	$(MAKE) all CC="$(CC) -xprofile=use:$(XPROFILE_DIR)" \
+-	$(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) $(PGO_PROF_USE_FLAG) @LTOFLAGS@" LDFLAGS="$(LDFLAGS) @LTOFLAGS@"
++	$(MAKE) @DEF_MAKE_RULE@ CC="$(CC) -xprofile=use:$(XPROFILE_DIR)" \
 +            CFLAGS="$(CFLAGS) -xprofile=use:$(XPROFILE_DIR)" \
 +            LDFLAGS="$(LDFLAGS) -xprofile=use:$(XPROFILE_DIR)" \
 +            BLDSHARED="$(BLDSHARED) -xprofile=use:$(XPROFILE_DIR)"
@@ -45,16 +45,16 @@
  coverage:
  	@echo "Building with support for coverage checking:"
  	$(MAKE) clean profile-removal
--	$(MAKE) all CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"
-+	$(MAKE) all CC="$(CC) -xprofile=tcov" \
+-	$(MAKE) @DEF_MAKE_RULE@ CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov"
++	$(MAKE) @DEF_MAKE_RULE@ CC="$(CC) -xprofile=tcov" \
 +            CFLAGS="$(CFLAGS) -xO1 -xprofile=tcov" \
 +            LDFLAGS="$(LDFLAGS) -xprofile=tcov" \
 +            BLDSHARED="$(BLDSHARED) -xprofile=tcov"
  
  coverage-lcov:
  	@echo "Creating Coverage HTML report with LCOV:"
-@@ -1422,9 +1431,7 @@
- 	-rm -rf build
+@@ -1410,9 +1419,7 @@
+ 	-find build -type f -a ! -name '*.gc??' -exec rm -f {} ';'
  
  profile-removal:
 -	find . -name '*.gc??' -exec rm -f {} ';'
--- a/components/python/python27/patches/14-py_db.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/14-py_db.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -3,16 +3,16 @@
 
 --- Python-2.7.12/Makefile.pre.in.~3~	2016-07-07 14:07:55.545052752 -0700
 +++ Python-2.7.12/Makefile.pre.in	2016-07-07 14:07:55.569639679 -0700
-@@ -432,7 +432,7 @@
+@@ -431,7 +431,7 @@
  
  # Default target
- all:		build_all
+ all:		@DEF_MAKE_ALL_RULE@
 -build_all:	$(BUILDPYTHON) oldsharedmods sharedmods gdbhooks
 +build_all:	$(BUILDPYTHON) oldsharedmods sharedmods gdbhooks build-py_db
  
  # Compile a binary with profile guided optimization.
  profile-opt:
-@@ -877,6 +877,15 @@
+@@ -865,6 +865,15 @@
  
  $(LIBRARY_OBJS) $(MODOBJS) Modules/python.o: $(PYTHON_HEADERS)
  
@@ -28,7 +28,7 @@
  
  ######################################################################
  
-@@ -941,7 +950,7 @@
+@@ -929,7 +938,7 @@
  		$(TESTPYTHON) $(TESTPROG) $(MEMTESTOPTS)
  
  # Install everything
--- a/components/python/python27/patches/15-get_wch.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/15-get_wch.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -42,7 +42,7 @@
  PyCursesWindow_GetKey(PyCursesWindowObject *self, PyObject *args)
  {
      int x, y;
-@@ -1572,6 +1603,7 @@
+@@ -1588,6 +1619,7 @@
      {"getbegyx",        (PyCFunction)PyCursesWindow_getbegyx, METH_NOARGS},
      {"getbkgd",         (PyCFunction)PyCursesWindow_GetBkgd, METH_NOARGS},
      {"getch",           (PyCFunction)PyCursesWindow_GetCh, METH_VARARGS},
--- a/components/python/python27/patches/18-osconf-long.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/18-osconf-long.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -3,7 +3,7 @@
 
 --- Python-2.7.10/Modules/posixmodule.c.~2~	2015-05-10 10:17:06 -0700
 +++ Python-2.7.10/Modules/posixmodule.c	2015-05-18 14:47:21 -0700
-@@ -8555,7 +8555,7 @@
+@@ -8538,7 +8538,7 @@
      int name;
  
      if (PyArg_ParseTuple(args, "O&:sysconf", conv_sysconf_confname, &name)) {
--- a/components/python/python27/patches/20-bsddb-harmful.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/20-bsddb-harmful.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -5,7 +5,7 @@
 
 --- Python-2.7.9/Makefile.pre.in.~4~	2014-12-11 09:33:27.006970089 -0800
 +++ Python-2.7.9/Makefile.pre.in	2014-12-11 09:33:27.077073582 -0800
-@@ -1094,7 +1094,7 @@
+@@ -1082,7 +1082,7 @@
  		ensurepip ensurepip/_bundled \
  		json json/tests \
  		sqlite3 sqlite3/test \
--- a/components/python/python27/patches/21-disable-sslv3.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/21-disable-sslv3.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -3,7 +3,7 @@
 
 --- Python-2.7.10/Lib/test/test_ssl.py.~1~	2015-05-10 10:17:04 -0800
 +++ Python-2.7.10/Lib/test/test_ssl.py	2015-05-18 14:53:04 -0800
-@@ -2290,7 +2290,7 @@
+@@ -2315,7 +2315,7 @@
                  sys.stdout.write("\n")
              if hasattr(ssl, 'PROTOCOL_SSLv2'):
                  try:
--- a/components/python/python27/patches/22-default-lib-path.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/22-default-lib-path.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -1,28 +1,44 @@
 This patch was developed in-house.  It has been submitted upstream:
 http://bugs.python.org/issue23287
 
---- Python-2.7.12/Lib/ctypes/util.py.~1~	2016-06-25 14:49:30.000000000 -0700
-+++ Python-2.7.12/Lib/ctypes/util.py	2016-07-07 14:25:48.212744320 -0700
-@@ -176,23 +176,11 @@
+--- Python-2.7.13/Lib/ctypes/util.py.~1~	2016-12-17 12:05:05.000000000 +0000
++++ Python-2.7.13/Lib/ctypes/util.py	2016-12-19 08:44:16.426321564 +0000
+@@ -188,39 +188,15 @@
  
      elif sys.platform == "sunos5":
  
 -        def _findLib_crle(name, is64):
 -            if not os.path.exists('/usr/bin/crle'):
 -                return None
--
 +        def _findLib_path(name, is64):
+ 
+             env = dict(os.environ)
+             env['LC_ALL'] = 'C'
+ 
              if is64:
--                cmd = 'env LC_ALL=C /usr/bin/crle -64 2>/dev/null'
+-                args = ('/usr/bin/crle', '-64')
 +                paths = "/lib/64:/usr/lib/64"
              else:
--                cmd = 'env LC_ALL=C /usr/bin/crle 2>/dev/null'
+-                args = ('/usr/bin/crle',)
 -
 -            paths = None
--            for line in os.popen(cmd).readlines():
--                line = line.strip()
--                if line.startswith('Default Library Path (ELF):'):
--                    paths = line.split()[4]
+-            null = open(os.devnull, 'wb')
+-            try:
+-                with null:
+-                    proc = subprocess.Popen(args,
+-                                            stdout=subprocess.PIPE,
+-                                            stderr=null,
+-                                            env=env)
+-            except OSError:  # E.g. bad executable
+-                return None
+-            try:
+-                for line in proc.stdout:
+-                    line = line.strip()
+-                    if line.startswith(b'Default Library Path (ELF):'):
+-                        paths = line.split()[4]
+-            finally:
+-                proc.stdout.close()
+-                proc.wait()
 -
 -            if not paths:
 -                return None
@@ -30,7 +46,7 @@
  
              for dir in paths.split(":"):
                  libfile = os.path.join(dir, "lib%s.so" % name)
-@@ -202,7 +190,7 @@
+@@ -230,7 +206,7 @@
              return None
  
          def find_library(name, is64 = False):
--- a/components/python/python27/patches/26-sslv2.patch	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/patches/26-sslv2.patch	Tue Dec 20 13:25:44 2016 -0800
@@ -1,8 +1,8 @@
 This patch comes from in-house, to deal with SSLv2 no longer being supported.
 As it is Solaris-specific, it will not be passed upstream.
 
---- Python-2.7.10/Lib/test/test_ssl.py.orig	2015-07-24 14:34:42.067600359 -0700
-+++ Python-2.7.10/Lib/test/test_ssl.py	2015-08-03 11:48:02.934532909 -0700
+--- Python-2.7.13/Lib/test/test_ssl.py.~2~	2016-12-19 08:44:58.900357184 +0000
++++ Python-2.7.13/Lib/test/test_ssl.py	2016-12-19 08:44:58.942536627 +0000
 @@ -25,6 +25,9 @@
  ssl = support.import_module("ssl")
  
@@ -11,5 +11,5 @@
 +    delattr(ssl, 'PROTOCOL_SSLv2')
 +    PROTOCOLS.remove(0)
  HOST = support.HOST
- 
- def data_file(*name):
+ IS_LIBRESSL = ssl.OPENSSL_VERSION.startswith('LibreSSL')
+ IS_OPENSSL_1_1 = not IS_LIBRESSL and ssl.OPENSSL_VERSION_INFO >= (1, 1, 0)
--- a/components/python/python27/patches/30-expat.patch	Fri Dec 09 17:25:56 2016 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-This patch comes from upstream:
-
-http://bugs.python.org/issue27369
-
---- a/Lib/test/test_pyexpat.py
-+++ b/Lib/test/test_pyexpat.py
-@@ -610,11 +610,9 @@ class MalformedInputText(unittest.TestCa
-     def test2(self):
-         xml = "<?xml version\xc2\x85='1.0'?>\r\n"
-         parser = expat.ParserCreate()
--        try:
-+        err_pattern = r'XML declaration not well-formed: line 1, column \d+'
-+        with self.assertRaisesRegexp(expat.ExpatError, err_pattern):
-             parser.Parse(xml, True)
--            self.fail()
--        except expat.ExpatError as e:
--            self.assertEqual(str(e), 'XML declaration not well-formed: line 1, column 14')
- 
- class ForeignDTDTests(unittest.TestCase):
-     """
--- a/components/python/python27/python-27-tests.p5m	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/python-27-tests.p5m	Tue Dec 20 13:25:44 2016 -0800
@@ -305,6 +305,7 @@
 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/_mock_backport.py
+file path=usr/lib/python2.7/test/allsans.pem
 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
@@ -341,7 +342,6 @@
 file path=usr/lib/python2.7/test/capath/99d0fa06.0
 file path=usr/lib/python2.7/test/capath/ce7b8643.0
 file path=usr/lib/python2.7/test/cfgparser.1
-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
 file path=usr/lib/python2.7/test/cjkencodings/big5hkscs-utf8.txt
@@ -588,6 +588,7 @@
 file path=usr/lib/python2.7/test/ssl_key.passwd.pem
 file path=usr/lib/python2.7/test/ssl_key.pem
 file path=usr/lib/python2.7/test/ssl_servers.py
+file path=usr/lib/python2.7/test/ssltests.py
 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
--- a/components/python/python27/python-27.p5m	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/python-27.p5m	Tue Dec 20 13:25:44 2016 -0800
@@ -493,8 +493,8 @@
 file path=usr/lib/python2.7/encodings/zlib_codec.py
 file path=usr/lib/python2.7/ensurepip/__init__.py
 file path=usr/lib/python2.7/ensurepip/__main__.py
-file path=usr/lib/python2.7/ensurepip/_bundled/pip-8.1.1-py2.py3-none-any.whl
-file path=usr/lib/python2.7/ensurepip/_bundled/setuptools-20.10.1-py2.py3-none-any.whl
+file path=usr/lib/python2.7/ensurepip/_bundled/pip-9.0.1-py2.py3-none-any.whl
+file path=usr/lib/python2.7/ensurepip/_bundled/setuptools-28.8.0-py2.py3-none-any.whl
 file path=usr/lib/python2.7/ensurepip/_uninstall.py
 file path=usr/lib/python2.7/filecmp.py
 file path=usr/lib/python2.7/fileinput.py
@@ -771,7 +771,6 @@
 file path=usr/lib/python2.7/lib2to3/fixes/fix_asserts.py
 file path=usr/lib/python2.7/lib2to3/fixes/fix_basestring.py
 file path=usr/lib/python2.7/lib2to3/fixes/fix_buffer.py
-file path=usr/lib/python2.7/lib2to3/fixes/fix_callable.py
 file path=usr/lib/python2.7/lib2to3/fixes/fix_dict.py
 file path=usr/lib/python2.7/lib2to3/fixes/fix_except.py
 file path=usr/lib/python2.7/lib2to3/fixes/fix_exec.py
--- a/components/python/python27/python27.license	Fri Dec 09 17:25:56 2016 +0100
+++ b/components/python/python27/python27.license	Tue Dec 20 13:25:44 2016 -0800
@@ -17,8 +17,9 @@
 distribute, and otherwise use Python alone or in any derivative version,
 provided, however, that PSF's License Agreement and PSF's notice of copyright,
 i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-2011, 2012, 2013, 2014, 2015 Python Software Foundation; All Rights Reserved"
-are retained in Python alone or in any derivative version prepared by Licensee.
+2011, 2012, 2013, 2014, 2015, 2016 Python Software Foundation; All Rights
+Reserved" are retained in Python alone or in any derivative version prepared by
+Licensee.
 
 3. In the event Licensee prepares a derivative work that is based on
 or incorporates Python or any part thereof, and wants to make