1 diff -dur Python-3.5.0.orig/Include/pylifecycle.h Python-3.5.0/Include/pylifecycle.h
2 --- Python-3.5.0.orig/Include/pylifecycle.h 2015-09-13 13:41:20.000000000 +0200
3 +++ Python-3.5.0/Include/pylifecycle.h 2015-12-03 17:31:03.874280444 +0100
5 /* In their own files */
6 PyAPI_FUNC(const char *) Py_GetVersion(void);
7 PyAPI_FUNC(const char *) Py_GetPlatform(void);
8 +PyAPI_FUNC(const char *) Py_GetArch(void);
9 +PyAPI_FUNC(const char *) Py_GetLib(void);
10 PyAPI_FUNC(const char *) Py_GetCopyright(void);
11 PyAPI_FUNC(const char *) Py_GetCompiler(void);
12 PyAPI_FUNC(const char *) Py_GetBuildInfo(void);
13 diff -dur Python-3.5.0.orig/Lib/distutils/command/install.py Python-3.5.0/Lib/distutils/command/install.py
14 --- Python-3.5.0.orig/Lib/distutils/command/install.py 2015-09-13 13:41:20.000000000 +0200
15 +++ Python-3.5.0/Lib/distutils/command/install.py 2015-12-03 17:31:03.874280444 +0100
17 from site import USER_SITE
23 'purelib': '$base/Lib/site-packages',
24 'platlib': '$base/Lib/site-packages',
29 - 'purelib': '$base/lib/python$py_version_short/site-packages',
30 - 'platlib': '$platbase/lib/python$py_version_short/site-packages',
31 + 'purelib': '$base/'+libname+'/python$py_version_short/site-packages',
32 + 'platlib': '$platbase/'+libname+'/python$py_version_short/site-packages',
33 'headers': '$base/include/python$py_version_short$abiflags/$dist_name',
34 'scripts': '$base/bin',
38 - 'purelib': '$base/lib/python',
39 - 'platlib': '$base/lib/python',
40 + 'purelib': '$base/'+libname+'/python',
41 + 'platlib': '$base/'+libname+'/python',
42 'headers': '$base/include/python/$dist_name',
43 'scripts': '$base/bin',
45 diff -dur Python-3.5.0.orig/Lib/distutils/sysconfig.py Python-3.5.0/Lib/distutils/sysconfig.py
46 --- Python-3.5.0.orig/Lib/distutils/sysconfig.py 2015-09-13 13:41:21.000000000 +0200
47 +++ Python-3.5.0/Lib/distutils/sysconfig.py 2015-12-03 17:31:03.874280444 +0100
49 prefix = plat_specific and EXEC_PREFIX or PREFIX
51 if os.name == "posix":
52 + if plat_specific or standard_lib or prefix != "/usr":
56 libpython = os.path.join(prefix,
57 - "lib", "python" + get_python_version())
58 + lib, "python" + get_python_version())
62 diff -dur Python-3.5.0.orig/Lib/distutils/tests/test_install.py Python-3.5.0/Lib/distutils/tests/test_install.py
63 --- Python-3.5.0.orig/Lib/distutils/tests/test_install.py 2015-09-13 13:41:21.000000000 +0200
64 +++ Python-3.5.0/Lib/distutils/tests/test_install.py 2015-12-03 17:31:03.874280444 +0100
66 expected = os.path.normpath(expected)
67 self.assertEqual(got, expected)
69 - libdir = os.path.join(destination, "lib", "python")
70 + libdir = os.path.join(destination, sys.lib, "python")
71 check_path(cmd.install_lib, libdir)
72 check_path(cmd.install_platlib, libdir)
73 check_path(cmd.install_purelib, libdir)
74 diff -dur Python-3.5.0.orig/Lib/site.py Python-3.5.0/Lib/site.py
75 --- Python-3.5.0.orig/Lib/site.py 2015-09-13 13:41:21.000000000 +0200
76 +++ Python-3.5.0/Lib/site.py 2015-12-03 17:31:03.874280444 +0100
77 @@ -334,12 +334,14 @@ def getsitepackages(prefixes=None):
81 - sitepackages.append(os.path.join(prefix, "lib",
82 + sitepackages.append(os.path.join(prefix, sys.lib,
83 "python%d.%d" % sys.version_info[:2],
85 + sitepackages.append(os.path.join(prefix, sys.lib, "site-python"))
86 + sitepackages.append(os.path.join(prefix, "share", "python" + sys.version[:3], "site-packages"))
88 sitepackages.append(prefix)
89 - sitepackages.append(os.path.join(prefix, "lib", "site-packages"))
90 + sitepackages.append(os.path.join(prefix, sys.lib, "site-packages"))
93 def addsitepackages(known_paths, prefixes=None):
94 diff -dur Python-3.5.0.orig/Lib/sysconfig.py Python-3.5.0/Lib/sysconfig.py
95 --- Python-3.5.0.orig/Lib/sysconfig.py 2015-09-13 13:41:21.000000000 +0200
96 +++ Python-3.5.0/Lib/sysconfig.py 2015-12-03 17:31:51.974741432 +0100
101 - 'stdlib': '{installed_base}/lib/python{py_version_short}',
102 - 'platstdlib': '{platbase}/lib/python{py_version_short}',
103 - 'purelib': '{base}/lib/python{py_version_short}/site-packages',
104 - 'platlib': '{platbase}/lib/python{py_version_short}/site-packages',
105 + 'stdlib': '{installed_base}/' + sys.lib + '/python{py_version_short}',
106 + 'platstdlib': '{platbase}/' + sys.lib + '/python{py_version_short}',
107 + 'purelib': '{base}/' + sys.lib + '/python{py_version_short}/site-packages',
108 + 'platlib': '{platbase}/' + sys.lib + '/python{py_version_short}/site-packages',
110 '{installed_base}/include/python{py_version_short}{abiflags}',
116 - 'stdlib': '{installed_base}/lib/python',
117 - 'platstdlib': '{base}/lib/python',
118 - 'purelib': '{base}/lib/python',
119 - 'platlib': '{base}/lib/python',
120 + 'stdlib': '{installed_base}/' + sys.lib + '/python',
121 + 'platstdlib': '{base}/' + sys.lib + '/python',
122 + 'purelib': '{base}/' + sys.lib + '/python',
123 + 'platlib': '{base}/' + sys.lib + '/python',
124 'include': '{installed_base}/include/python',
125 'platinclude': '{installed_base}/include/python',
126 'scripts': '{base}/bin',
128 'data': '{userbase}',
131 - 'stdlib': '{userbase}/lib/python{py_version_short}',
132 - 'platstdlib': '{userbase}/lib/python{py_version_short}',
133 - 'purelib': '{userbase}/lib/python{py_version_short}/site-packages',
134 - 'platlib': '{userbase}/lib/python{py_version_short}/site-packages',
135 + 'stdlib': '{userbase}/' + sys.lib + '/python{py_version_short}',
136 + 'platstdlib': '{userbase}/' + sys.lib + '/python{py_version_short}',
137 + 'purelib': '{userbase}/' + sys.lib + '/python{py_version_short}/site-packages',
138 + 'platlib': '{userbase}/' + sys.lib + '/python{py_version_short}/site-packages',
139 'include': '{userbase}/include/python{py_version_short}',
140 'scripts': '{userbase}/bin',
141 'data': '{userbase}',
144 inc_dir = _sys_home or _PROJECT_BASE
146 - inc_dir = get_path('platinclude')
147 + if hasattr(sys, 'abiflags'):
148 + config_dir_name = 'config-%s%s' % (_PY_VERSION_SHORT, sys.abiflags)
150 + config_dir_name = 'config'
151 + inc_dir = os.path.join(get_path('stdlib'), config_dir_name)
152 return os.path.join(inc_dir, 'pyconfig.h')
155 diff -dur Python-3.5.0.orig/Makefile.pre.in Python-3.5.0/Makefile.pre.in
156 --- Python-3.5.0.orig/Makefile.pre.in 2015-09-13 13:41:23.000000000 +0200
157 +++ Python-3.5.0/Makefile.pre.in 2015-12-03 17:31:03.874280444 +0100
160 # Machine-dependent subdirectories
165 # Multiarch directory (may be empty)
166 MULTIARCH= @MULTIARCH@
169 INCLUDEDIR= @includedir@
170 CONFINCLUDEDIR= $(exec_prefix)/include
171 -SCRIPTDIR= $(prefix)/lib
172 +SCRIPTDIR= $(prefix)/$(LIB)
175 # Detailed destination directories
177 Python/compile.o Python/symtable.o Python/ast.o: $(GRAMMAR_H) $(AST_H)
179 Python/getplatform.o: $(srcdir)/Python/getplatform.c
180 - $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c
181 + $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -DARCH='"$(ARCH)"' -DLIB='"$(LIB)"' -o $@ $(srcdir)/Python/getplatform.c
183 Python/importdl.o: $(srcdir)/Python/importdl.c
184 $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c
185 @@ -1470,9 +1470,9 @@ libainstall: @DEF_MAKE_RULE@ python-conf
186 @if test -d $(LIBRARY); then :; else \
187 if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \
188 if test "$(SHLIB_SUFFIX)" = .dll; then \
189 - $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \
190 + $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBDIR) ; \
192 - $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \
193 + $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBDIR)/$(LIBRARY) ; \
196 echo Skip install of $(LIBRARY) - use make frameworkinstall; \
197 diff -dur Python-3.5.0.orig/Modules/getpath.c Python-3.5.0/Modules/getpath.c
198 --- Python-3.5.0.orig/Modules/getpath.c 2015-09-13 13:41:24.000000000 +0200
199 +++ Python-3.5.0/Modules/getpath.c 2015-12-03 17:31:03.874280444 +0100
205 +#if defined(__x86_64__) || defined(__aarch64__) || (defined(__sparc__) && defined(__arch64__)) || defined(__powerpc64__) || defined(__s390x__)
206 +#if defined(__ILP32__)
207 +#define LIB_PYTHON "libx32/python"
209 +#define LIB_PYTHON "lib64/python"
212 +#define LIB_PYTHON "lib/python"
216 #if !defined(PREFIX) || !defined(EXEC_PREFIX) || !defined(VERSION) || !defined(VPATH)
217 #error "PREFIX, EXEC_PREFIX, VERSION, and VPATH must be constant defined"
218 @@ -1078,7 +1078,7 @@ calculate_zip_path(PyCalculatePath *calc
219 return PATHLEN_ERR();
222 - status = joinpath(zip_path, L"lib/python00.zip", zip_path_len);
223 + status = joinpath(zip_path, L"" LIB_PYTHON "00.zip", zip_path_len);
224 if (_PyStatus_EXCEPTION(status)) {
227 @@ -878,7 +878,7 @@ calculate_init(PyCalculatePath *calculat
228 if (!calculate->prefix) {
229 return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
231 - calculate->lib_python = Py_DecodeLocale("lib/python" VERSION, &len);
232 + calculate->lib_python = Py_DecodeLocale(LIB_PYTHON VERSION, &len);
233 if (!calculate->lib_python) {
234 return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
236 diff -dur Python-3.5.0.orig/Python/getplatform.c Python-3.5.0/Python/getplatform.c
237 --- Python-3.5.0.orig/Python/getplatform.c 2015-09-13 13:41:26.000000000 +0200
238 +++ Python-3.5.0/Python/getplatform.c 2015-12-03 17:31:03.874280444 +0100
245 +#define ARCH "unknown"
263 diff -dur Python-3.5.0.orig/Python/sysmodule.c Python-3.5.0/Python/sysmodule.c
264 --- Python-3.5.0.orig/Python/sysmodule.c 2015-09-13 13:41:26.000000000 +0200
265 +++ Python-3.5.0/Python/sysmodule.c 2015-12-03 17:31:03.874280444 +0100
266 @@ -2307,6 +2307,10 @@ _PySys_BeginInit(PyObject **sysmod)
267 PyUnicode_FromString(Py_GetCopyright()));
268 SET_SYS_FROM_STRING("platform",
269 PyUnicode_FromString(Py_GetPlatform()));
270 + SET_SYS_FROM_STRING("arch",
271 + PyUnicode_FromString(Py_GetArch()));
272 + SET_SYS_FROM_STRING("lib",
273 + PyUnicode_FromString(Py_GetLib()));
274 SET_SYS_FROM_STRING("maxsize",
275 PyLong_FromSsize_t(PY_SSIZE_T_MAX));
276 SET_SYS_FROM_STRING("float_info",
277 diff -dur Python-3.5.0.orig/configure.ac Python-3.5.0/configure.ac
278 --- Python-3.5.0.orig/configure.ac 2015-12-03 17:30:32.777292009 +0100
279 +++ Python-3.5.0/configure.ac 2015-12-03 17:31:03.877613811 +0100
285 +AC_MSG_CHECKING(ARCH)
290 +AC_MSG_RESULT($ARCH)
293 +AC_MSG_CHECKING(LIB)
294 +case $ac_sys_system in
296 + # Test if the compiler is 64bit
297 + echo 'int i;' > conftest.$ac_ext
298 + python_cv_cc_64bit_output=no
299 + if AC_TRY_EVAL(ac_compile); then
300 + case `/usr/bin/file conftest.$ac_objext` in
302 + python_cv_cc_64bit_output=yes
310 +case $ARCH:$python_cv_cc_64bit_output in
311 +powerpc64:yes | s390x:yes | sparc64:yes | x86_64:yes | aarch64:yes)
324 MULTIARCH=$($CC --print-multiarch 2>/dev/null)
326 @@ -4640,9 +4640,9 @@ AC_MSG_RESULT($LDVERSION)
327 dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
328 AC_SUBST(PY_ENABLE_SHARED)
329 if test x$PLATFORM_TRIPLET = x; then
330 - LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
331 + LIBPL='$(LIBDIR)/python'"${VERSION}/config-${LDVERSION}"
333 - LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
334 + LIBPL='$(LIBDIR)/python'"${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
338 diff -dur Python-3.5.0.orig/setup.py Python-3.5.0/setup.py
339 --- Python-3.5.0.orig/setup.py 2015-09-13 13:41:26.000000000 +0200
340 +++ Python-3.5.0/setup.py 2015-12-03 17:31:03.877613811 +0100
341 @@ -569,7 +569,7 @@ class PyBuildExt(build_ext):
342 add_dir_to_list(self.compiler.include_dirs,
343 sysconfig.get_config_var("INCLUDEDIR"))
345 - system_lib_dirs = ['/lib64', '/usr/lib64', '/lib', '/usr/lib']
346 + system_lib_dirs = ['/' + sys.lib, '/usr/' + sys.lib]
347 system_include_dirs = ['/usr/include']
348 # lib_dirs and inc_dirs are used to search for files;
349 # if a file is found in one of those directories, it can
350 @@ -953,11 +953,11 @@ class PyBuildExt(build_ext):
352 readline_libs.append(curses_library)
353 elif self.compiler.find_library_file(self.lib_dirs +
354 - ['/usr/lib/termcap'],
355 + ['/usr/' + sys.lib + '/termcap'],
357 readline_libs.append('termcap')
358 self.add(Extension('readline', ['readline.c'],
359 - library_dirs=['/usr/lib/termcap'],
360 + library_dirs=['/usr/' + sys.lib + '/termcap'],
361 extra_link_args=readline_extra_link_args,
362 libraries=readline_libs))
365 --- Python-3.8.0/Lib/test/test_embed.py~ 2019-10-14 15:34:47.000000000 +0200
366 +++ Python-3.8.0/Lib/test/test_embed.py 2019-10-15 11:53:55.299065729 +0200
367 @@ -1071,11 +1071,11 @@ class InitConfigTests(EmbeddingTestsMixi
369 ver = sys.version_info
371 - os.path.join(prefix, 'lib',
372 + os.path.join(prefix, sys.lib,
373 f'python{ver.major}{ver.minor}.zip'),
374 - os.path.join(prefix, 'lib',
375 + os.path.join(prefix, sys.lib,
376 f'python{ver.major}.{ver.minor}'),
377 - os.path.join(exec_prefix, 'lib',
378 + os.path.join(exec_prefix, sys.lib,
379 f'python{ver.major}.{ver.minor}', 'lib-dynload'),