mbox

python3: Update to version 3.6.0

Message ID 20170113123500.2602-1-stefan.schantl@ipfire.org
State Accepted
Headers

Message

Stefan Schantl Jan. 13, 2017, 11:35 p.m. UTC
  This is a major update to the latest stable version of the
Python 3 series.

Fixes #11086.

Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
---
 ...-3.4.3-lib64.patch => python-3.6.0-lib64.patch} | 118 ++++++++++-----------
 python3/python3.nm                                 |  40 +++----
 2 files changed, 77 insertions(+), 81 deletions(-)
 rename python3/{python-3.4.3-lib64.patch => python-3.6.0-lib64.patch} (67%)
  

Comments

Michael Tremer Jan. 17, 2017, 3:46 a.m. UTC | #1
Hello,

this will be a difficult one to merge since various modules depend on this and
need to be rebuilt. At the moment nothing required for the buildsystem is
depending on Python 3 AFAIK which makes it rather easy to build this version.

However, when Pakfire is ported to Python 3, this will be a huge problem.

Any thoughts how we could come up with a good transition method?

-Michael

On Fri, 2017-01-13 at 13:35 +0100, Stefan Schantl wrote:
> This is a major update to the latest stable version of the
> Python 3 series.
> 
> Fixes #11086.
> 
> Signed-off-by: Stefan Schantl <stefan.schantl@ipfire.org>
> ---
>  ...-3.4.3-lib64.patch => python-3.6.0-lib64.patch} | 118 ++++++++++--------
> ---
>  python3/python3.nm                                 |  40 +++----
>  2 files changed, 77 insertions(+), 81 deletions(-)
>  rename python3/{python-3.4.3-lib64.patch => python-3.6.0-lib64.patch} (67%)
> 
> diff --git a/python3/python-3.4.3-lib64.patch b/python3/python-3.6.0-
> lib64.patch
> similarity index 67%
> rename from python3/python-3.4.3-lib64.patch
> rename to python3/python-3.6.0-lib64.patch
> index db5fd95..8e9ae4e 100644
> --- a/python3/python-3.4.3-lib64.patch
> +++ b/python3/python-3.6.0-lib64.patch
> @@ -1,6 +1,8 @@
> ---- Python-3.4.0b1/Lib/distutils/command/install.py.lib64     2013-11-24
> 21:36:54.000000000 +0100
> -+++ Python-3.4.0b1/Lib/distutils/command/install.py     2013-11-27
> 11:10:43.821150774 +0100
> -@@ -45,14 +45,14 @@ else:
> +diff --git a/Lib/distutils/command/install.py
> b/Lib/distutils/command/install.py
> +index 9474e9c..c0ce4c6 100644
> +--- a/Lib/distutils/command/install.py
> ++++ b/Lib/distutils/command/install.py
> +@@ -30,14 +30,14 @@ WINDOWS_SCHEME = {
>   INSTALL_SCHEMES = {
>       'unix_prefix': {
>           'purelib': '$base/lib/python$py_version_short/site-packages',
> @@ -17,9 +19,11 @@
>           'headers': '$base/include/python/$dist_name',
>           'scripts': '$base/bin',
>           'data'   : '$base',
> ---- Python-3.4.0b1/Lib/distutils/sysconfig.py.lib64	2013-11-24
> 21:36:54.000000000 +0100
> -+++ Python-3.4.0b1/Lib/distutils/sysconfig.py	2013-11-27
> 11:10:43.821150774 +0100
> -@@ -141,8 +141,12 @@
> +diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
> +index 026cca7..6d3e077 100644
> +--- a/Lib/distutils/sysconfig.py
> ++++ b/Lib/distutils/sysconfig.py
> +@@ -132,8 +132,12 @@ def get_python_lib(plat_specific=0, standard_lib=0,
> prefix=None):
>               prefix = plat_specific and EXEC_PREFIX or PREFIX
>   
>       if os.name == "posix":
> @@ -33,9 +37,11 @@
>           if standard_lib:
>               return libpython
>           else:
> ---- Python-3.4.0b1/Lib/site.py.lib64	2013-11-24 21:36:54.000000000
> +0100
> -+++ Python-3.4.0b1/Lib/site.py	2013-11-27 11:10:43.822150773 +0100
> -@@ -304,12 +304,16 @@
> +diff --git a/Lib/site.py b/Lib/site.py
> +index a84e3bb..ba0d3ea 100644
> +--- a/Lib/site.py
> ++++ b/Lib/site.py
> +@@ -303,11 +303,15 @@ def getsitepackages(prefixes=None):
>           seen.add(prefix)
>   
>           if os.sep == '/':
> @@ -43,18 +49,19 @@
>  +                                        "python" + sys.version[:3],
>  +                                        "site-packages"))
>               sitepackages.append(os.path.join(prefix, "lib",
> -                                         "python" + sys.version[:3],
> +                                         "python%d.%d" %
> sys.version_info[:2],
>                                           "site-packages"))
> -             sitepackages.append(os.path.join(prefix, "lib", "site-python"))
>           else:
>               sitepackages.append(prefix)
>  +            sitepackages.append(os.path.join(prefix, "lib64", "site-
> packages"))
>               sitepackages.append(os.path.join(prefix, "lib", "site-
> packages"))
>           if sys.platform == "darwin":
>               # for framework builds *only* we add the standard Apple
> ---- Python-3.4.0b1/Lib/sysconfig.py.lib64	2013-11-24
> 21:36:54.000000000 +0100
> -+++ Python-3.4.0b1/Lib/sysconfig.py	2013-11-27 11:10:43.822150773
> +0100
> -@@ -20,10 +20,10 @@
> +diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
> +index b9bbfe5..2a5f29c 100644
> +--- a/Lib/sysconfig.py
> ++++ b/Lib/sysconfig.py
> +@@ -20,10 +20,10 @@ __all__ = [
>   
>   _INSTALL_SCHEMES = {
>       'posix_prefix': {
> @@ -68,7 +75,7 @@
>           'include':
>               '{installed_base}/include/python{py_version_short}{abiflags}',
>           'platinclude':
> -@@ -61,10 +61,10 @@
> +@@ -61,10 +61,10 @@ _INSTALL_SCHEMES = {
>           'data': '{userbase}',
>           },
>       'posix_user': {
> @@ -82,30 +89,26 @@
>           'include': '{userbase}/include/python{py_version_short}',
>           'scripts': '{userbase}/bin',
>           'data': '{userbase}',
> ---- Python-3.4.0b1/Lib/test/test_site.py.lib64	2013-11-24
> 21:36:55.000000000 +0100
> -+++ Python-3.4.0b1/Lib/test/test_site.py	2013-11-27 11:10:43.822150773
> +0100
> -@@ -244,12 +244,15 @@
> -             self.assertEqual(dirs[2], wanted)
> +diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
> +index f698927..bc977b5 100644
> +--- a/Lib/test/test_site.py
> ++++ b/Lib/test/test_site.py
> +@@ -248,8 +248,8 @@ class HelperFunctionsTests(unittest.TestCase):
> +             self.assertEqual(dirs[1], wanted)
>           elif os.sep == '/':
>               # OS X non-framwework builds, Linux, FreeBSD, etc
> --            self.assertEqual(len(dirs), 2)
> --            wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
> -+            self.assertEqual(len(dirs), 3)
> -+            wanted = os.path.join('xoxo', 'lib64', 'python' +
> sys.version[:3],
> +-            self.assertEqual(len(dirs), 1)
> +-            wanted = os.path.join('xoxo', 'lib',
> ++            self.assertEqual(len(dirs), 2)
> ++            wanted = os.path.join('xoxo', 'lib64',
> +                                   'python%d.%d' % sys.version_info[:2],
>                                     'site-packages')
>               self.assertEqual(dirs[0], wanted)
> --            wanted = os.path.join('xoxo', 'lib', 'site-python')
> -+            wanted = os.path.join('xoxo', 'lib', 'python' + sys.version[:3],
> -+                                  'site-packages')
> -             self.assertEqual(dirs[1], wanted)
> -+            wanted = os.path.join('xoxo', 'lib', 'site-python')
> -+            self.assertEqual(dirs[2], wanted)
> -         else:
> -             # other platforms
> -             self.assertEqual(len(dirs), 2)
> ---- Python-3.4.0b1/Makefile.pre.in.lib64	2013-11-27 11:10:43.814150786
> +0100
> -+++ Python-3.4.0b1/Makefile.pre.in	2013-11-27 11:10:43.823150771 +0100
> -@@ -115,7 +115,7 @@
> +diff --git a/Makefile.pre.in b/Makefile.pre.in
> +index 8fa7934..a693917 100644
> +--- a/Makefile.pre.in
> ++++ b/Makefile.pre.in
> +@@ -126,7 +126,7 @@ LIBDIR=		@libdir@
>   MANDIR=		@mandir@
>   INCLUDEDIR=	@includedir@
>   CONFINCLUDEDIR=	$(exec_prefix)/include
> @@ -114,29 +117,20 @@
>   ABIFLAGS=	@ABIFLAGS@
>   
>   # Detailed destination directories
> ---- Python-3.4.0b1/Modules/getpath.c.lib64	2013-11-24
> 21:36:56.000000000 +0100
> -+++ Python-3.4.0b1/Modules/getpath.c	2013-11-27 11:17:33.619449704
> +0100
> -@@ -122,8 +122,8 @@
> - #endif
> - 
> - #ifndef PYTHONPATH
> --#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \
> --              EXEC_PREFIX "/lib/python" VERSION "/lib-dynload"
> -+#define PYTHONPATH PREFIX "/lib64/python" VERSION ":" \
> -+              EXEC_PREFIX "/lib64/python" VERSION "/lib-dynload"
> - #endif
> - 
> - #ifndef LANDMARK
> -@@ -498,7 +498,7 @@
> -     _pythonpath = _Py_char2wchar(PYTHONPATH, NULL);
> -     _prefix = _Py_char2wchar(PREFIX, NULL);
> -     _exec_prefix = _Py_char2wchar(EXEC_PREFIX, NULL);
> --    lib_python = _Py_char2wchar("lib/python" VERSION, NULL);
> -+    lib_python = _Py_char2wchar("lib64/python" VERSION, NULL);
> +diff --git a/Modules/getpath.c b/Modules/getpath.c
> +index 65b47a3..eaa756c 100644
> +--- a/Modules/getpath.c
> ++++ b/Modules/getpath.c
> +@@ -494,7 +494,7 @@ calculate_path(void)
> +     _pythonpath = Py_DecodeLocale(PYTHONPATH, NULL);
> +     _prefix = Py_DecodeLocale(PREFIX, NULL);
> +     _exec_prefix = Py_DecodeLocale(EXEC_PREFIX, NULL);
> +-    lib_python = Py_DecodeLocale("lib/python" VERSION, NULL);
> ++    lib_python = Py_DecodeLocale("lib64/python" VERSION, NULL);
>   
>       if (!_pythonpath || !_prefix || !_exec_prefix || !lib_python) {
>           Py_FatalError(
> -@@ -687,7 +687,7 @@
> +@@ -683,7 +683,7 @@ calculate_path(void)
>       }
>       else
>           wcsncpy(zip_path, _prefix, MAXPATHLEN);
> @@ -145,7 +139,7 @@
>       bufsz = wcslen(zip_path);   /* Replace "00" with version */
>       zip_path[bufsz - 6] = VERSION[0];
>       zip_path[bufsz - 5] = VERSION[2];
> -@@ -699,7 +699,7 @@
> +@@ -695,7 +695,7 @@ calculate_path(void)
>               fprintf(stderr,
>                   "Could not find platform dependent libraries
> <exec_prefix>\n");
>           wcsncpy(exec_prefix, _exec_prefix, MAXPATHLEN);
> @@ -154,9 +148,11 @@
>       }
>       /* If we found EXEC_PREFIX do *not* reduce it!  (Yet.) */
>   
> ---- Python-3.4.0b1/setup.py.lib64	2013-11-24 21:36:56.000000000 +0100
> -+++ Python-3.4.0b1/setup.py	2013-11-27 11:10:43.824150769 +0100
> -@@ -441,7 +441,7 @@
> +diff --git a/setup.py b/setup.py
> +index 0f2dfc4..da37896 100644
> +--- a/setup.py
> ++++ b/setup.py
> +@@ -492,7 +492,7 @@ class PyBuildExt(build_ext):
>           # directories (i.e. '.' and 'Include') must be first.  See issue
>           # 10520.
>           if not cross_compiling:
> @@ -165,7 +161,7 @@
>               add_dir_to_list(self.compiler.include_dirs,
> '/usr/local/include')
>           # only change this for cross builds for 3.3, issues on Mageia
>           if cross_compiling:
> -@@ -718,11 +718,11 @@
> +@@ -780,11 +780,11 @@ class PyBuildExt(build_ext):
>               elif curses_library:
>                   readline_libs.append(curses_library)
>               elif self.compiler.find_library_file(lib_dirs +
> @@ -179,7 +175,7 @@
>                                      extra_link_args=readline_extra_link_args,
>                                      libraries=readline_libs) )
>           else:
> -@@ -759,8 +759,8 @@
> +@@ -821,8 +821,8 @@ class PyBuildExt(build_ext):
>               if krb5_h:
>                   ssl_incs += krb5_h
>           ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
> diff --git a/python3/python3.nm b/python3/python3.nm
> index 26343d5..cc26941 100644
> --- a/python3/python3.nm
> +++ b/python3/python3.nm
> @@ -4,9 +4,9 @@
>  #############################################################################
> ##
>  
>  name       = python3
> -major_ver  = 3.4
> -version    = %{major_ver}.3
> -release    = 2
> +major_ver  = 3.6
> +version    = %{major_ver}.0
> +release    = 1
>  thisapp    = Python-%{version}
>  
>  groups     = Development/Languages
> @@ -63,7 +63,7 @@ build
>  
>  	prepare_cmds
>  		if [ "%{lib}" = "lib64" ]; then
> -			patch -Np1 -i %{DIR_SOURCE}/python-3.4.3-lib64.patch
> +			patch -Np1 -i %{DIR_SOURCE}/python-3.6.0-lib64.patch
>  		fi
>  
>  		# Remove embedded copies of expat and libffi
> @@ -86,24 +86,24 @@ build
>  		--enable-shared \
>  		--without-ensurepip
>  
> -	#test
> -	#	LD_LIBRARY_PATH=$(pwd) $(pwd)/python \
> -	#		-m test.regrtest \
> -	#		--verbose \
> -	#		--findleaks \
> -	#		-x test_distutils \
> -	#		-x test_faulthandler \
> -	#		-x test_gdb \
> -	#		-x test_email \
> -	#		-x test_subprocess \
> -	#		-x test_float \
> -	#		-x test_cmath \
> -	#		-x test_asynchat \
> -	#		-x test_asyncore
> -	#
> +	test
> +		LD_LIBRARY_PATH=$(pwd) $(pwd)/python \
> +			-m test.regrtest \
> +			--verbose \
> +			--findleaks \
> +			-x test_distutils \
> +			-x test_faulthandler \
> +			-x test_gdb \
> +			-x test_email \
> +			-x test_subprocess \
> +			-x test_float \
> +			-x test_cmath \
> +			-x test_asynchat \
> +			-x test_asyncore
> +	
>  	#	# test_subprocess won't work on grsecurity-enabled kernels
>  	#	# test_float and test_cmath do not work on armv5tel (soft
> FPU)
> -	#end
> +	end
>  
>  	install_cmds
>  		install -d -m 0755 %{BUILDROOT}%{pylibdir}/site-
> packages/__pycache__