commit
1e3b8fac07
|
@ -1,7 +1,18 @@
|
|||
diff -up Python-3.1.1/Lib/distutils/unixccompiler.py.rpath Python-3.1.1/Lib/distutils/unixccompiler.py
|
||||
--- Python-3.1.1/Lib/distutils/unixccompiler.py.rpath 2009-09-04 17:29:34.000000000 -0400
|
||||
+++ Python-3.1.1/Lib/distutils/unixccompiler.py 2009-09-04 17:49:54.000000000 -0400
|
||||
@@ -141,6 +141,15 @@ class UnixCCompiler(CCompiler):
|
||||
From 8a93e612de3f9f1e1c04ca2b31f207a2ce611fe1 Mon Sep 17 00:00:00 2001
|
||||
From: David Malcolm <dmalcolm@redhat.com>
|
||||
Date: Wed, 13 Jan 2010 21:25:18 +0000
|
||||
Subject: [PATCH] 00001: Fixup distutils/unixccompiler.py to remove standard
|
||||
library path from rpath Was Patch0 in ivazquez' python3000 specfile
|
||||
|
||||
---
|
||||
Lib/distutils/unixccompiler.py | 9 +++++++++
|
||||
1 file changed, 9 insertions(+)
|
||||
|
||||
diff --git a/Lib/distutils/unixccompiler.py b/Lib/distutils/unixccompiler.py
|
||||
index d10a78da31..4df4b67810 100644
|
||||
--- a/Lib/distutils/unixccompiler.py
|
||||
+++ b/Lib/distutils/unixccompiler.py
|
||||
@@ -82,6 +82,15 @@ class UnixCCompiler(CCompiler):
|
||||
if sys.platform == "cygwin":
|
||||
exe_extension = ".exe"
|
||||
|
||||
|
@ -17,3 +28,6 @@ diff -up Python-3.1.1/Lib/distutils/unixccompiler.py.rpath Python-3.1.1/Lib/dist
|
|||
def preprocess(self, source, output_file=None, macros=None,
|
||||
include_dirs=None, extra_preargs=None, extra_postargs=None):
|
||||
fixed_args = self._fix_compile_args(None, macros, include_dirs)
|
||||
--
|
||||
2.21.0
|
||||
|
||||
|
|
|
@ -1,5 +1,39 @@
|
|||
From ee7b218babbed91c283445021a99d4b28fc12b2f Mon Sep 17 00:00:00 2001
|
||||
From: David Malcolm <dmalcolm@redhat.com>
|
||||
Date: Wed, 13 Jan 2010 21:25:18 +0000
|
||||
Subject: [PATCH] 00102: Change the various install paths to use /usr/lib64/
|
||||
instead or /usr/lib/
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Only used when "%{_lib}" == "lib64".
|
||||
|
||||
Co-authored-by: David Malcolm <dmalcolm@redhat.com>
|
||||
Co-authored-by: Thomas Spura <tomspur@fedoraproject.org>
|
||||
Co-authored-by: Slavek Kabrda <bkabrda@redhat.com>
|
||||
Co-authored-by: Matej Stuchlik <mstuchli@redhat.com>
|
||||
Co-authored-by: Tomas Orsava <torsava@redhat.com>
|
||||
Co-authored-by: Charalampos Stratakis <cstratak@redhat.com>
|
||||
Co-authored-by: Petr Viktorin <pviktori@redhat.com>
|
||||
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
|
||||
Co-authored-by: Iryna Shcherbina <shcherbina.iryna@gmail.com>
|
||||
---
|
||||
Lib/distutils/command/install.py | 4 ++--
|
||||
Lib/distutils/sysconfig.py | 6 +++++-
|
||||
Lib/distutils/tests/test_install.py | 3 ++-
|
||||
Lib/site.py | 4 ++++
|
||||
Lib/sysconfig.py | 12 ++++++------
|
||||
Lib/test/test_site.py | 4 ++--
|
||||
Makefile.pre.in | 2 +-
|
||||
Modules/getpath.c | 6 +++---
|
||||
configure | 4 ++--
|
||||
configure.ac | 4 ++--
|
||||
setup.py | 6 +++---
|
||||
11 files changed, 32 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
|
||||
index 0258d3d..4b969bf 100644
|
||||
index c625c95bf7..ae4f915669 100644
|
||||
--- a/Lib/distutils/command/install.py
|
||||
+++ b/Lib/distutils/command/install.py
|
||||
@@ -30,14 +30,14 @@ WINDOWS_SCHEME = {
|
||||
|
@ -20,10 +54,10 @@ index 0258d3d..4b969bf 100644
|
|||
'scripts': '$base/bin',
|
||||
'data' : '$base',
|
||||
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
|
||||
index e07a6c8..554740d 100644
|
||||
index b51629eb94..9a4892a737 100644
|
||||
--- a/Lib/distutils/sysconfig.py
|
||||
+++ b/Lib/distutils/sysconfig.py
|
||||
@@ -129,8 +129,12 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
|
||||
@@ -146,8 +146,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":
|
||||
|
@ -38,7 +72,7 @@ index e07a6c8..554740d 100644
|
|||
return libpython
|
||||
else:
|
||||
diff --git a/Lib/distutils/tests/test_install.py b/Lib/distutils/tests/test_install.py
|
||||
index 287ab19..d4c05e0 100644
|
||||
index 287ab1989e..d4c05e0ab1 100644
|
||||
--- a/Lib/distutils/tests/test_install.py
|
||||
+++ b/Lib/distutils/tests/test_install.py
|
||||
@@ -57,8 +57,9 @@ class InstallTestCase(support.TempdirManager,
|
||||
|
@ -53,10 +87,10 @@ index 287ab19..d4c05e0 100644
|
|||
check_path(cmd.install_headers,
|
||||
os.path.join(destination, "include", "python", "foopkg"))
|
||||
diff --git a/Lib/site.py b/Lib/site.py
|
||||
index 7dc1b04..85016b4 100644
|
||||
index a065ab0b5d..22d53fa562 100644
|
||||
--- a/Lib/site.py
|
||||
+++ b/Lib/site.py
|
||||
@@ -334,11 +334,15 @@ def getsitepackages(prefixes=None):
|
||||
@@ -335,11 +335,15 @@ def getsitepackages(prefixes=None):
|
||||
seen.add(prefix)
|
||||
|
||||
if os.sep == '/':
|
||||
|
@ -73,7 +107,7 @@ index 7dc1b04..85016b4 100644
|
|||
return sitepackages
|
||||
|
||||
diff --git a/Lib/sysconfig.py b/Lib/sysconfig.py
|
||||
index 9ee4d31..53c8606 100644
|
||||
index e76e6927cb..0cfbea54b9 100644
|
||||
--- a/Lib/sysconfig.py
|
||||
+++ b/Lib/sysconfig.py
|
||||
@@ -20,10 +20,10 @@ __all__ = [
|
||||
|
@ -105,10 +139,10 @@ index 9ee4d31..53c8606 100644
|
|||
'scripts': '{userbase}/bin',
|
||||
'data': '{userbase}',
|
||||
diff --git a/Lib/test/test_site.py b/Lib/test/test_site.py
|
||||
index 266adf0..e8513b6 100644
|
||||
index 41c4229919..543c88432a 100644
|
||||
--- a/Lib/test/test_site.py
|
||||
+++ b/Lib/test/test_site.py
|
||||
@@ -275,8 +275,8 @@ class HelperFunctionsTests(unittest.TestCase):
|
||||
@@ -266,8 +266,8 @@ class HelperFunctionsTests(unittest.TestCase):
|
||||
dirs = site.getsitepackages()
|
||||
if os.sep == '/':
|
||||
# OS X, Linux, FreeBSD, etc
|
||||
|
@ -120,10 +154,10 @@ index 266adf0..e8513b6 100644
|
|||
'site-packages')
|
||||
self.assertEqual(dirs[0], wanted)
|
||||
diff --git a/Makefile.pre.in b/Makefile.pre.in
|
||||
index 59ba9d4..5780ed8 100644
|
||||
index 6a9f4b5270..61d650882f 100644
|
||||
--- a/Makefile.pre.in
|
||||
+++ b/Makefile.pre.in
|
||||
@@ -133,7 +133,7 @@ LIBDIR= @libdir@
|
||||
@@ -143,7 +143,7 @@ LIBDIR= @libdir@
|
||||
MANDIR= @mandir@
|
||||
INCLUDEDIR= @includedir@
|
||||
CONFINCLUDEDIR= $(exec_prefix)/include
|
||||
|
@ -133,28 +167,28 @@ index 59ba9d4..5780ed8 100644
|
|||
|
||||
# Detailed destination directories
|
||||
diff --git a/Modules/getpath.c b/Modules/getpath.c
|
||||
index 85e737b..2a1fc79 100644
|
||||
index 5f80738188..73d7913441 100644
|
||||
--- a/Modules/getpath.c
|
||||
+++ b/Modules/getpath.c
|
||||
@@ -500,7 +500,7 @@ calculate_exec_prefix(const _PyCoreConfig *core_config,
|
||||
"Could not find platform dependent libraries <exec_prefix>\n");
|
||||
@@ -689,7 +689,7 @@ calculate_exec_prefix(const PyConfig *config,
|
||||
if (safe_wcscpy(exec_prefix, calculate->exec_prefix, exec_prefix_len) < 0) {
|
||||
return PATHLEN_ERR();
|
||||
}
|
||||
- status = joinpath(exec_prefix, L"lib/lib-dynload", exec_prefix_len);
|
||||
+ status = joinpath(exec_prefix, L"lib64/lib-dynload", exec_prefix_len);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
return status;
|
||||
}
|
||||
@@ -1016,7 +1016,7 @@ calculate_zip_path(PyCalculatePath *calculate, const wchar_t *prefix)
|
||||
return PATHLEN_ERR();
|
||||
}
|
||||
wcsncpy(exec_prefix, calculate->exec_prefix, MAXPATHLEN);
|
||||
- joinpath(exec_prefix, L"lib/lib-dynload");
|
||||
+ joinpath(exec_prefix, L"lib64/lib-dynload");
|
||||
}
|
||||
/* If we found EXEC_PREFIX do *not* reduce it! (Yet.) */
|
||||
}
|
||||
@@ -742,7 +742,7 @@ calculate_zip_path(PyCalculatePath *calculate, const wchar_t *prefix)
|
||||
else {
|
||||
wcsncpy(calculate->zip_path, calculate->prefix, MAXPATHLEN);
|
||||
- status = joinpath(calculate->zip_path, L"lib/python00.zip", zip_path_len);
|
||||
+ status = joinpath(calculate->zip_path, L"lib64/python00.zip", zip_path_len);
|
||||
if (_PyStatus_EXCEPTION(status)) {
|
||||
return status;
|
||||
}
|
||||
- joinpath(calculate->zip_path, L"lib/python00.zip");
|
||||
+ joinpath(calculate->zip_path, L"lib64/python00.zip");
|
||||
|
||||
/* Replace "00" with version */
|
||||
size_t bufsz = wcslen(calculate->zip_path);
|
||||
@@ -867,7 +867,7 @@ calculate_init(PyCalculatePath *calculate,
|
||||
@@ -1145,7 +1145,7 @@ calculate_init(PyCalculatePath *calculate,
|
||||
if (!calculate->prefix) {
|
||||
return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
|
||||
}
|
||||
|
@ -163,30 +197,65 @@ index 85e737b..2a1fc79 100644
|
|||
if (!calculate->lib_python) {
|
||||
return DECODE_LOCALE_ERR("EXEC_PREFIX define", len);
|
||||
}
|
||||
diff --git a/configure b/configure
|
||||
index cb5f130d38..b30b4008f2 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -15195,9 +15195,9 @@ fi
|
||||
|
||||
|
||||
if test x$PLATFORM_TRIPLET = x; then
|
||||
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
|
||||
+ LIBPL='$(prefix)'"/lib64/python${VERSION}/config-${LDVERSION}"
|
||||
else
|
||||
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
|
||||
+ LIBPL='$(prefix)'"/lib64/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
|
||||
fi
|
||||
|
||||
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index b31ed242f1..42d17bc0ad 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -4663,9 +4663,9 @@ fi
|
||||
dnl define LIBPL after ABIFLAGS and LDVERSION is defined.
|
||||
AC_SUBST(PY_ENABLE_SHARED)
|
||||
if test x$PLATFORM_TRIPLET = x; then
|
||||
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}"
|
||||
+ LIBPL='$(prefix)'"/lib64/python${VERSION}/config-${LDVERSION}"
|
||||
else
|
||||
- LIBPL='$(prefix)'"/lib/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
|
||||
+ LIBPL='$(prefix)'"/lib64/python${VERSION}/config-${LDVERSION}-${PLATFORM_TRIPLET}"
|
||||
fi
|
||||
AC_SUBST(LIBPL)
|
||||
|
||||
diff --git a/setup.py b/setup.py
|
||||
index f1933f7..450cd8a 100644
|
||||
index 6cbbec9e12..a5092861cf 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -531,7 +531,7 @@ class PyBuildExt(build_ext):
|
||||
@@ -648,7 +648,7 @@ class PyBuildExt(build_ext):
|
||||
# directories (i.e. '.' and 'Include') must be first. See issue
|
||||
# 10520.
|
||||
if not cross_compiling:
|
||||
if not CROSS_COMPILING:
|
||||
- add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib')
|
||||
+ add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib64')
|
||||
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:
|
||||
@@ -830,11 +830,11 @@ class PyBuildExt(build_ext):
|
||||
if CROSS_COMPILING:
|
||||
@@ -944,11 +944,11 @@ class PyBuildExt(build_ext):
|
||||
elif curses_library:
|
||||
readline_libs.append(curses_library)
|
||||
elif self.compiler.find_library_file(lib_dirs +
|
||||
elif self.compiler.find_library_file(self.lib_dirs +
|
||||
- ['/usr/lib/termcap'],
|
||||
+ ['/usr/lib64/termcap'],
|
||||
'termcap'):
|
||||
readline_libs.append('termcap')
|
||||
exts.append( Extension('readline', ['readline.c'],
|
||||
- library_dirs=['/usr/lib/termcap'],
|
||||
+ library_dirs=['/usr/lib64/termcap'],
|
||||
extra_link_args=readline_extra_link_args,
|
||||
libraries=readline_libs) )
|
||||
self.add(Extension('readline', ['readline.c'],
|
||||
- library_dirs=['/usr/lib/termcap'],
|
||||
+ library_dirs=['/usr/lib64/termcap'],
|
||||
extra_link_args=readline_extra_link_args,
|
||||
libraries=readline_libs))
|
||||
else:
|
||||
--
|
||||
2.21.0
|
||||
|
||||
|
|
|
@ -1,17 +1,39 @@
|
|||
From 65208ffdf868d06e6e16eeb12e3f47205a738ed3 Mon Sep 17 00:00:00 2001
|
||||
From: David Malcolm <dmalcolm@redhat.com>
|
||||
Date: Mon, 18 Jan 2010 17:59:07 +0000
|
||||
Subject: [PATCH] 00111: Don't try to build a libpythonMAJOR.MINOR.a
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Downstream only: not appropriate for upstream.
|
||||
|
||||
See https://bugzilla.redhat.com/show_bug.cgi?id=556092
|
||||
|
||||
Co-authored-by: David Malcolm <dmalcolm@redhat.com>
|
||||
Co-authored-by: Bohuslav Kabrda <bkabrda@redhat.com>
|
||||
Co-authored-by: Matej Stuchlik <mstuchli@redhat.com>
|
||||
Co-authored-by: Robert Kuska <rkuska@redhat.com>
|
||||
Co-authored-by: Charalampos Stratakis <cstratak@redhat.com>
|
||||
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
|
||||
---
|
||||
Makefile.pre.in | 21 ++-------------------
|
||||
1 file changed, 2 insertions(+), 19 deletions(-)
|
||||
|
||||
diff --git a/Makefile.pre.in b/Makefile.pre.in
|
||||
index 0db0dd0..bd8f769 100644
|
||||
index 61d650882f..3f5be819c4 100644
|
||||
--- a/Makefile.pre.in
|
||||
+++ b/Makefile.pre.in
|
||||
@@ -574,7 +574,7 @@ clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
|
||||
@@ -561,7 +561,7 @@ clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
|
||||
$(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --srcdir $(srcdir)
|
||||
|
||||
# Build the interpreter
|
||||
-$(BUILDPYTHON): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
|
||||
+$(BUILDPYTHON): Programs/python.o $(LDLIBRARY) $(PY3LIBRARY)
|
||||
$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
|
||||
$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS)
|
||||
|
||||
platform: $(BUILDPYTHON) pybuilddir.txt
|
||||
@@ -622,12 +622,6 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o
|
||||
@@ -609,12 +609,6 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o
|
||||
_TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \
|
||||
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
|
||||
|
||||
|
@ -21,19 +43,19 @@ index 0db0dd0..bd8f769 100644
|
|||
- -rm -f $@
|
||||
- $(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS)
|
||||
-
|
||||
libpython$(LDVERSION).so: $(LIBRARY_OBJS)
|
||||
libpython$(LDVERSION).so: $(LIBRARY_OBJS) $(DTRACE_OBJS)
|
||||
if test $(INSTSONAME) != $(LDLIBRARY); then \
|
||||
$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
|
||||
@@ -715,7 +709,7 @@ Modules/Setup: $(srcdir)/Modules/Setup.dist
|
||||
echo "-----------------------------------------------"; \
|
||||
fi
|
||||
$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \
|
||||
@@ -692,7 +686,7 @@ Makefile Modules/config.c: Makefile.pre \
|
||||
@echo "The Makefile was updated, you may need to re-run make."
|
||||
|
||||
|
||||
-Programs/_testembed: Programs/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
|
||||
+Programs/_testembed: Programs/_testembed.o $(LDLIBRARY) $(PY3LIBRARY)
|
||||
$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
|
||||
$(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS)
|
||||
|
||||
############################################################################
|
||||
@@ -1483,17 +1477,6 @@ libainstall: @DEF_MAKE_RULE@ python-config
|
||||
@@ -1552,17 +1546,6 @@ libainstall: @DEF_MAKE_RULE@ python-config
|
||||
else true; \
|
||||
fi; \
|
||||
done
|
||||
|
@ -51,3 +73,6 @@ index 0db0dd0..bd8f769 100644
|
|||
$(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c
|
||||
$(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o
|
||||
$(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in
|
||||
--
|
||||
2.21.0
|
||||
|
||||
|
|
|
@ -1,15 +0,0 @@
|
|||
diff -up Python-3.2.3/Lib/ctypes/__init__.py.rhbz814391 Python-3.2.3/Lib/ctypes/__init__.py
|
||||
--- Python-3.2.3/Lib/ctypes/__init__.py.rhbz814391 2012-04-20 15:12:49.017867692 -0400
|
||||
+++ Python-3.2.3/Lib/ctypes/__init__.py 2012-04-20 15:15:09.501111408 -0400
|
||||
@@ -275,11 +275,6 @@ def _reset_cache():
|
||||
# _SimpleCData.c_char_p_from_param
|
||||
POINTER(c_char).from_param = c_char_p.from_param
|
||||
_pointer_type_cache[None] = c_void_p
|
||||
- # XXX for whatever reasons, creating the first instance of a callback
|
||||
- # function is needed for the unittests on Win64 to succeed. This MAY
|
||||
- # be a compiler bug, since the problem occurs only when _ctypes is
|
||||
- # compiled with the MS SDK compiler. Or an uninitialized variable?
|
||||
- CFUNCTYPE(c_int)(lambda: None)
|
||||
|
||||
def create_unicode_buffer(init, size=None):
|
||||
"""create_unicode_buffer(aString) -> character array
|
|
@ -1,311 +0,0 @@
|
|||
diff --git a/Include/object.h b/Include/object.h
|
||||
index c772dea..5729797 100644
|
||||
--- a/Include/object.h
|
||||
+++ b/Include/object.h
|
||||
@@ -1098,6 +1098,49 @@ PyAPI_FUNC(void)
|
||||
_PyObject_DebugTypeStats(FILE *out);
|
||||
#endif /* ifndef Py_LIMITED_API */
|
||||
|
||||
+/*
|
||||
+ Define a pair of assertion macros.
|
||||
+
|
||||
+ These work like the regular C assert(), in that they will abort the
|
||||
+ process with a message on stderr if the given condition fails to hold,
|
||||
+ but compile away to nothing if NDEBUG is defined.
|
||||
+
|
||||
+ However, before aborting, Python will also try to call _PyObject_Dump() on
|
||||
+ the given object. This may be of use when investigating bugs in which a
|
||||
+ particular object is corrupt (e.g. buggy a tp_visit method in an extension
|
||||
+ module breaking the garbage collector), to help locate the broken objects.
|
||||
+
|
||||
+ The WITH_MSG variant allows you to supply an additional message that Python
|
||||
+ will attempt to print to stderr, after the object dump.
|
||||
+*/
|
||||
+#ifdef NDEBUG
|
||||
+/* No debugging: compile away the assertions: */
|
||||
+#define PyObject_ASSERT_WITH_MSG(obj, expr, msg) ((void)0)
|
||||
+#else
|
||||
+/* With debugging: generate checks: */
|
||||
+#define PyObject_ASSERT_WITH_MSG(obj, expr, msg) \
|
||||
+ ((expr) \
|
||||
+ ? (void)(0) \
|
||||
+ : _PyObject_AssertFailed((obj), \
|
||||
+ (msg), \
|
||||
+ (__STRING(expr)), \
|
||||
+ (__FILE__), \
|
||||
+ (__LINE__), \
|
||||
+ (__PRETTY_FUNCTION__)))
|
||||
+#endif
|
||||
+
|
||||
+#define PyObject_ASSERT(obj, expr) \
|
||||
+ PyObject_ASSERT_WITH_MSG(obj, expr, NULL)
|
||||
+
|
||||
+/*
|
||||
+ Declare and define the entrypoint even when NDEBUG is defined, to avoid
|
||||
+ causing compiler/linker errors when building extensions without NDEBUG
|
||||
+ against a Python built with NDEBUG defined
|
||||
+*/
|
||||
+PyAPI_FUNC(void) _PyObject_AssertFailed(PyObject *, const char *,
|
||||
+ const char *, const char *, int,
|
||||
+ const char *);
|
||||
+
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
diff --git a/Lib/test/test_gc.py b/Lib/test/test_gc.py
|
||||
index 8d806db..dc8bb16 100644
|
||||
--- a/Lib/test/test_gc.py
|
||||
+++ b/Lib/test/test_gc.py
|
||||
@@ -1,10 +1,12 @@
|
||||
import unittest
|
||||
from test.support import (verbose, refcount_test, run_unittest,
|
||||
strip_python_stderr, cpython_only, start_threads,
|
||||
- temp_dir, requires_type_collecting, TESTFN, unlink)
|
||||
+ temp_dir, requires_type_collecting, TESTFN, unlink,
|
||||
+ import_module)
|
||||
from test.support.script_helper import assert_python_ok, make_script
|
||||
|
||||
import sys
|
||||
+import sysconfig
|
||||
import time
|
||||
import gc
|
||||
import weakref
|
||||
@@ -46,6 +48,8 @@ class GC_Detector(object):
|
||||
# gc collects it.
|
||||
self.wr = weakref.ref(C1055820(666), it_happened)
|
||||
|
||||
+BUILD_WITH_NDEBUG = ('-DNDEBUG' in sysconfig.get_config_vars()['PY_CFLAGS'])
|
||||
+
|
||||
@with_tp_del
|
||||
class Uncollectable(object):
|
||||
"""Create a reference cycle with multiple __del__ methods.
|
||||
@@ -878,6 +882,50 @@ class GCCallbackTests(unittest.TestCase):
|
||||
self.assertEqual(len(gc.garbage), 0)
|
||||
|
||||
|
||||
+ @unittest.skipIf(BUILD_WITH_NDEBUG,
|
||||
+ 'built with -NDEBUG')
|
||||
+ def test_refcount_errors(self):
|
||||
+ self.preclean()
|
||||
+ # Verify the "handling" of objects with broken refcounts
|
||||
+ import_module("ctypes") #skip if not supported
|
||||
+
|
||||
+ import subprocess
|
||||
+ code = '''if 1:
|
||||
+ a = []
|
||||
+ b = [a]
|
||||
+
|
||||
+ # Simulate the refcount of "a" being too low (compared to the
|
||||
+ # references held on it by live data), but keeping it above zero
|
||||
+ # (to avoid deallocating it):
|
||||
+ import ctypes
|
||||
+ ctypes.pythonapi.Py_DecRef(ctypes.py_object(a))
|
||||
+
|
||||
+ # The garbage collector should now have a fatal error when it reaches
|
||||
+ # the broken object:
|
||||
+ import gc
|
||||
+ gc.collect()
|
||||
+ '''
|
||||
+ p = subprocess.Popen([sys.executable, "-c", code],
|
||||
+ stdout=subprocess.PIPE,
|
||||
+ stderr=subprocess.PIPE)
|
||||
+ stdout, stderr = p.communicate()
|
||||
+ p.stdout.close()
|
||||
+ p.stderr.close()
|
||||
+ # Verify that stderr has a useful error message:
|
||||
+ self.assertRegex(stderr,
|
||||
+ b'Modules/gcmodule.c:[0-9]+: visit_decref: Assertion "\(\(gc\)->gc.gc_refs >> \(1\)\) != 0" failed.')
|
||||
+ self.assertRegex(stderr,
|
||||
+ b'refcount was too small')
|
||||
+ self.assertRegex(stderr,
|
||||
+ b'object : \[\]')
|
||||
+ self.assertRegex(stderr,
|
||||
+ b'type : list')
|
||||
+ self.assertRegex(stderr,
|
||||
+ b'refcount: 1')
|
||||
+ self.assertRegex(stderr,
|
||||
+ b'address : 0x[0-9a-f]+')
|
||||
+
|
||||
+
|
||||
class GCTogglingTests(unittest.TestCase):
|
||||
def setUp(self):
|
||||
gc.enable()
|
||||
diff --git a/Modules/gcmodule.c b/Modules/gcmodule.c
|
||||
index 4d701cb..388dd78 100644
|
||||
--- a/Modules/gcmodule.c
|
||||
+++ b/Modules/gcmodule.c
|
||||
@@ -239,7 +239,8 @@ update_refs(PyGC_Head *containers)
|
||||
{
|
||||
PyGC_Head *gc = containers->gc.gc_next;
|
||||
for (; gc != containers; gc = gc->gc.gc_next) {
|
||||
- assert(_PyGCHead_REFS(gc) == GC_REACHABLE);
|
||||
+ PyObject_ASSERT(FROM_GC(gc),
|
||||
+ _PyGCHead_REFS(gc) == GC_REACHABLE);
|
||||
_PyGCHead_SET_REFS(gc, Py_REFCNT(FROM_GC(gc)));
|
||||
/* Python's cyclic gc should never see an incoming refcount
|
||||
* of 0: if something decref'ed to 0, it should have been
|
||||
@@ -259,7 +260,8 @@ update_refs(PyGC_Head *containers)
|
||||
* so serious that maybe this should be a release-build
|
||||
* check instead of an assert?
|
||||
*/
|
||||
- assert(_PyGCHead_REFS(gc) != 0);
|
||||
+ PyObject_ASSERT(FROM_GC(gc),
|
||||
+ _PyGCHead_REFS(gc) != 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -274,7 +276,9 @@ visit_decref(PyObject *op, void *data)
|
||||
* generation being collected, which can be recognized
|
||||
* because only they have positive gc_refs.
|
||||
*/
|
||||
- assert(_PyGCHead_REFS(gc) != 0); /* else refcount was too small */
|
||||
+ PyObject_ASSERT_WITH_MSG(FROM_GC(gc),
|
||||
+ _PyGCHead_REFS(gc) != 0,
|
||||
+ "refcount was too small"); /* else refcount was too small */
|
||||
if (_PyGCHead_REFS(gc) > 0)
|
||||
_PyGCHead_DECREF(gc);
|
||||
}
|
||||
@@ -334,9 +338,10 @@ visit_reachable(PyObject *op, PyGC_Head *reachable)
|
||||
* If gc_refs == GC_UNTRACKED, it must be ignored.
|
||||
*/
|
||||
else {
|
||||
- assert(gc_refs > 0
|
||||
- || gc_refs == GC_REACHABLE
|
||||
- || gc_refs == GC_UNTRACKED);
|
||||
+ PyObject_ASSERT(FROM_GC(gc),
|
||||
+ gc_refs > 0
|
||||
+ || gc_refs == GC_REACHABLE
|
||||
+ || gc_refs == GC_UNTRACKED);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
@@ -378,7 +383,7 @@ move_unreachable(PyGC_Head *young, PyGC_Head *unreachable)
|
||||
*/
|
||||
PyObject *op = FROM_GC(gc);
|
||||
traverseproc traverse = Py_TYPE(op)->tp_traverse;
|
||||
- assert(_PyGCHead_REFS(gc) > 0);
|
||||
+ PyObject_ASSERT(op, _PyGCHead_REFS(gc) > 0);
|
||||
_PyGCHead_SET_REFS(gc, GC_REACHABLE);
|
||||
(void) traverse(op,
|
||||
(visitproc)visit_reachable,
|
||||
@@ -441,7 +446,7 @@ move_legacy_finalizers(PyGC_Head *unreachable, PyGC_Head *finalizers)
|
||||
for (gc = unreachable->gc.gc_next; gc != unreachable; gc = next) {
|
||||
PyObject *op = FROM_GC(gc);
|
||||
|
||||
- assert(IS_TENTATIVELY_UNREACHABLE(op));
|
||||
+ PyObject_ASSERT(op, IS_TENTATIVELY_UNREACHABLE(op));
|
||||
next = gc->gc.gc_next;
|
||||
|
||||
if (has_legacy_finalizer(op)) {
|
||||
@@ -517,7 +522,7 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old)
|
||||
PyWeakReference **wrlist;
|
||||
|
||||
op = FROM_GC(gc);
|
||||
- assert(IS_TENTATIVELY_UNREACHABLE(op));
|
||||
+ PyObject_ASSERT(op, IS_TENTATIVELY_UNREACHABLE(op));
|
||||
next = gc->gc.gc_next;
|
||||
|
||||
if (! PyType_SUPPORTS_WEAKREFS(Py_TYPE(op)))
|
||||
@@ -538,9 +543,9 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old)
|
||||
* the callback pointer intact. Obscure: it also
|
||||
* changes *wrlist.
|
||||
*/
|
||||
- assert(wr->wr_object == op);
|
||||
+ PyObject_ASSERT(wr->wr_object, wr->wr_object == op);
|
||||
_PyWeakref_ClearRef(wr);
|
||||
- assert(wr->wr_object == Py_None);
|
||||
+ PyObject_ASSERT(wr->wr_object, wr->wr_object == Py_None);
|
||||
if (wr->wr_callback == NULL)
|
||||
continue; /* no callback */
|
||||
|
||||
@@ -574,7 +579,7 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old)
|
||||
*/
|
||||
if (IS_TENTATIVELY_UNREACHABLE(wr))
|
||||
continue;
|
||||
- assert(IS_REACHABLE(wr));
|
||||
+ PyObject_ASSERT(op, IS_REACHABLE(wr));
|
||||
|
||||
/* Create a new reference so that wr can't go away
|
||||
* before we can process it again.
|
||||
@@ -583,7 +588,8 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old)
|
||||
|
||||
/* Move wr to wrcb_to_call, for the next pass. */
|
||||
wrasgc = AS_GC(wr);
|
||||
- assert(wrasgc != next); /* wrasgc is reachable, but
|
||||
+ PyObject_ASSERT(op, wrasgc != next);
|
||||
+ /* wrasgc is reachable, but
|
||||
next isn't, so they can't
|
||||
be the same */
|
||||
gc_list_move(wrasgc, &wrcb_to_call);
|
||||
@@ -599,11 +605,11 @@ handle_weakrefs(PyGC_Head *unreachable, PyGC_Head *old)
|
||||
|
||||
gc = wrcb_to_call.gc.gc_next;
|
||||
op = FROM_GC(gc);
|
||||
- assert(IS_REACHABLE(op));
|
||||
- assert(PyWeakref_Check(op));
|
||||
+ PyObject_ASSERT(op, IS_REACHABLE(op));
|
||||
+ PyObject_ASSERT(op, PyWeakref_Check(op));
|
||||
wr = (PyWeakReference *)op;
|
||||
callback = wr->wr_callback;
|
||||
- assert(callback != NULL);
|
||||
+ PyObject_ASSERT(op, callback != NULL);
|
||||
|
||||
/* copy-paste of weakrefobject.c's handle_callback() */
|
||||
temp = PyObject_CallFunctionObjArgs(callback, wr, NULL);
|
||||
@@ -717,12 +723,14 @@ check_garbage(PyGC_Head *collectable)
|
||||
for (gc = collectable->gc.gc_next; gc != collectable;
|
||||
gc = gc->gc.gc_next) {
|
||||
_PyGCHead_SET_REFS(gc, Py_REFCNT(FROM_GC(gc)));
|
||||
- assert(_PyGCHead_REFS(gc) != 0);
|
||||
+ PyObject_ASSERT(FROM_GC(gc),
|
||||
+ _PyGCHead_REFS(gc) != 0);
|
||||
}
|
||||
subtract_refs(collectable);
|
||||
for (gc = collectable->gc.gc_next; gc != collectable;
|
||||
gc = gc->gc.gc_next) {
|
||||
- assert(_PyGCHead_REFS(gc) >= 0);
|
||||
+ PyObject_ASSERT(FROM_GC(gc),
|
||||
+ _PyGCHead_REFS(gc) >= 0);
|
||||
if (_PyGCHead_REFS(gc) != 0)
|
||||
return -1;
|
||||
}
|
||||
diff --git a/Objects/object.c b/Objects/object.c
|
||||
index 220aa90..f6c7161 100644
|
||||
--- a/Objects/object.c
|
||||
+++ b/Objects/object.c
|
||||
@@ -2177,6 +2177,35 @@ _PyTrash_thread_destroy_chain(void)
|
||||
--tstate->trash_delete_nesting;
|
||||
}
|
||||
|
||||
+PyAPI_FUNC(void)
|
||||
+_PyObject_AssertFailed(PyObject *obj, const char *msg, const char *expr,
|
||||
+ const char *file, int line, const char *function)
|
||||
+{
|
||||
+ fprintf(stderr,
|
||||
+ "%s:%d: %s: Assertion \"%s\" failed.\n",
|
||||
+ file, line, function, expr);
|
||||
+ if (msg) {
|
||||
+ fprintf(stderr, "%s\n", msg);
|
||||
+ }
|
||||
+
|
||||
+ fflush(stderr);
|
||||
+
|
||||
+ if (obj) {
|
||||
+ /* This might succeed or fail, but we're about to abort, so at least
|
||||
+ try to provide any extra info we can: */
|
||||
+ _PyObject_Dump(obj);
|
||||
+ }
|
||||
+ else {
|
||||
+ fprintf(stderr, "NULL object\n");
|
||||
+ }
|
||||
+
|
||||
+ fflush(stdout);
|
||||
+ fflush(stderr);
|
||||
+
|
||||
+ /* Terminate the process: */
|
||||
+ abort();
|
||||
+}
|
||||
+
|
||||
#ifndef Py_TRACE_REFS
|
||||
/* For Py_LIMITED_API, we need an out-of-line version of _Py_Dealloc.
|
||||
Define this here, so we can undefine the macro. */
|
|
@ -1,30 +0,0 @@
|
|||
diff -r 39b9b05c3085 Lib/distutils/sysconfig.py
|
||||
--- a/Lib/distutils/sysconfig.py Wed Apr 10 00:27:23 2013 +0200
|
||||
+++ b/Lib/distutils/sysconfig.py Wed Apr 10 10:14:18 2013 +0200
|
||||
@@ -362,7 +362,10 @@
|
||||
done[n] = item = ""
|
||||
if found:
|
||||
after = value[m.end():]
|
||||
- value = value[:m.start()] + item + after
|
||||
+ value = value[:m.start()]
|
||||
+ if item.strip() not in value:
|
||||
+ value += item
|
||||
+ value += after
|
||||
if "$" in after:
|
||||
notdone[name] = value
|
||||
else:
|
||||
diff -r 39b9b05c3085 Lib/sysconfig.py
|
||||
--- a/Lib/sysconfig.py Wed Apr 10 00:27:23 2013 +0200
|
||||
+++ b/Lib/sysconfig.py Wed Apr 10 10:14:18 2013 +0200
|
||||
@@ -296,7 +296,10 @@
|
||||
|
||||
if found:
|
||||
after = value[m.end():]
|
||||
- value = value[:m.start()] + item + after
|
||||
+ value = value[:m.start()]
|
||||
+ if item.strip() not in value:
|
||||
+ value += item
|
||||
+ value += after
|
||||
if "$" in after:
|
||||
notdone[name] = value
|
||||
else:
|
|
@ -1,5 +1,15 @@
|
|||
From 327e040bd14b6bd05314b24e59ffcdb2179f9757 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
|
||||
Date: Wed, 15 Aug 2018 15:36:29 +0200
|
||||
Subject: [PATCH] 00189: Instead of bundled wheels, use our RPM packaged wheels
|
||||
|
||||
We keep them in /usr/share/python-wheels
|
||||
---
|
||||
Lib/ensurepip/__init__.py | 26 +++++++++++++++++---------
|
||||
1 file changed, 17 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py
|
||||
index 4748ba4..fc02255 100644
|
||||
index 63de20e288..4d17e413db 100644
|
||||
--- a/Lib/ensurepip/__init__.py
|
||||
+++ b/Lib/ensurepip/__init__.py
|
||||
@@ -1,16 +1,27 @@
|
||||
|
@ -16,9 +26,9 @@ index 4748ba4..fc02255 100644
|
|||
|
||||
+_WHEEL_DIR = "/usr/share/python-wheels/"
|
||||
|
||||
-_SETUPTOOLS_VERSION = "40.8.0"
|
||||
-_SETUPTOOLS_VERSION = "41.0.1"
|
||||
|
||||
-_PIP_VERSION = "19.0.3"
|
||||
-_PIP_VERSION = "19.2.1"
|
||||
+def _get_most_recent_wheel_version(pkg):
|
||||
+ prefix = os.path.join(_WHEEL_DIR, "{}-".format(pkg))
|
||||
+ suffix = "-py2.py3-none-any.whl"
|
||||
|
@ -33,7 +43,7 @@ index 4748ba4..fc02255 100644
|
|||
|
||||
_PROJECTS = [
|
||||
("setuptools", _SETUPTOOLS_VERSION),
|
||||
@@ -94,12 +105,9 @@ def _bootstrap(*, root=None, upgrade=False, user=False,
|
||||
@@ -96,12 +107,9 @@ def _bootstrap(*, root=None, upgrade=False, user=False,
|
||||
additional_paths = []
|
||||
for project, version in _PROJECTS:
|
||||
wheel_name = "{}-{}-py2.py3-none-any.whl".format(project, version)
|
||||
|
@ -49,3 +59,6 @@ index 4748ba4..fc02255 100644
|
|||
|
||||
additional_paths.append(os.path.join(tmpdir, wheel_name))
|
||||
|
||||
--
|
||||
2.21.0
|
||||
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
diff -up Python-3.5.0/Makefile.pre.in.lib Python-3.5.0/Makefile.pre.in
|
||||
--- Python-3.5.0/Makefile.pre.in.lib 2015-09-21 15:39:47.928286620 +0200
|
||||
+++ Python-3.5.0/Makefile.pre.in 2015-09-21 15:42:58.004042762 +0200
|
||||
@@ -1340,7 +1340,7 @@ inclinstall:
|
||||
|
||||
# Install the library and miscellaneous stuff needed for extending/embedding
|
||||
# This goes into $(exec_prefix)
|
||||
-LIBPL= @LIBPL@
|
||||
+LIBPL= $(LIBDEST)/config-$(LDVERSION)-$(MULTIARCH)
|
||||
|
||||
# pkgconfig directory
|
||||
LIBPC= $(LIBDIR)/pkgconfig
|
|
@ -1,11 +1,26 @@
|
|||
From 27348866d660c1344a1f78a6337436443e1ed19c Mon Sep 17 00:00:00 2001
|
||||
From: Michal Cyprian <m.cyprian@gmail.com>
|
||||
Date: Mon, 26 Jun 2017 16:32:56 +0200
|
||||
Subject: [PATCH] 00251: Change user install location
|
||||
|
||||
Set values of prefix and exec_prefix in distutils install command
|
||||
to /usr/local if executable is /usr/bin/python* and RPM build
|
||||
is not detected to make pip and distutils install into separate location.
|
||||
|
||||
Fedora Change: https://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe
|
||||
---
|
||||
Lib/distutils/command/install.py | 15 +++++++++++++--
|
||||
Lib/site.py | 9 ++++++++-
|
||||
2 files changed, 21 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
|
||||
index 0258d3d..4ebf50a 100644
|
||||
index ae4f915669..0e4fd5b74a 100644
|
||||
--- a/Lib/distutils/command/install.py
|
||||
+++ b/Lib/distutils/command/install.py
|
||||
@@ -418,8 +418,19 @@ class install(Command):
|
||||
raise DistutilsOptionError(
|
||||
"must not supply exec-prefix without prefix")
|
||||
|
||||
|
||||
- self.prefix = os.path.normpath(sys.prefix)
|
||||
- self.exec_prefix = os.path.normpath(sys.exec_prefix)
|
||||
+ # self.prefix is set to sys.prefix + /local/
|
||||
|
@ -21,16 +36,16 @@ index 0258d3d..4ebf50a 100644
|
|||
+
|
||||
+ self.prefix = os.path.normpath(sys.prefix) + addition
|
||||
+ self.exec_prefix = os.path.normpath(sys.exec_prefix) + addition
|
||||
|
||||
|
||||
else:
|
||||
if self.exec_prefix is None:
|
||||
diff --git a/Lib/site.py b/Lib/site.py
|
||||
index 0fc9200..c95202e 100644
|
||||
index 22d53fa562..9513526109 100644
|
||||
--- a/Lib/site.py
|
||||
+++ b/Lib/site.py
|
||||
@@ -322,7 +322,14 @@ def getsitepackages(prefixes=None):
|
||||
@@ -348,7 +348,14 @@ def getsitepackages(prefixes=None):
|
||||
return sitepackages
|
||||
|
||||
|
||||
def addsitepackages(known_paths, prefixes=None):
|
||||
- """Add site-packages to sys.path"""
|
||||
+ """Add site-packages to sys.path
|
||||
|
@ -44,3 +59,6 @@ index 0fc9200..c95202e 100644
|
|||
for sitedir in getsitepackages(prefixes):
|
||||
if os.path.isdir(sitedir):
|
||||
addsitedir(sitedir, known_paths)
|
||||
--
|
||||
2.21.0
|
||||
|
||||
|
|
|
@ -1,16 +1,22 @@
|
|||
From 3b0d3a25576e74c2ac1eb25136ae811bdbdd7c6c Mon Sep 17 00:00:00 2001
|
||||
From: Tomas Orsava <torsava@redhat.com>
|
||||
Date: Thu, 14 Feb 2019 16:08:57 +0100
|
||||
Subject: [PATCH] Upstream uses Debian-style architecture naming. Change to
|
||||
match Fedora / RHEL
|
||||
From c827bec294a7fb9481a55c1f7d78e80007e38816 Mon Sep 17 00:00:00 2001
|
||||
From: Petr Viktorin <pviktori@redhat.com>
|
||||
Date: Mon, 28 Aug 2017 17:16:46 +0200
|
||||
Subject: [PATCH] 00274: Upstream uses Debian-style architecture naming, change
|
||||
to match Fedora
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Co-authored-by: Petr Viktorin <pviktori@redhat.com>
|
||||
Co-authored-by: Miro Hrončok <miro@hroncok.cz>
|
||||
Co-authored-by: Tomas Orsava <torsava@redhat.com>
|
||||
---
|
||||
config.sub | 2 +-
|
||||
configure.ac | 16 ++++++++--------
|
||||
2 files changed, 9 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/config.sub b/config.sub
|
||||
index 40ea5df..932128b 100755
|
||||
index ba37cf99e2..52a9ec6662 100755
|
||||
--- a/config.sub
|
||||
+++ b/config.sub
|
||||
@@ -1045,7 +1045,7 @@ case $basic_machine in
|
||||
|
@ -23,10 +29,10 @@ index 40ea5df..932128b 100755
|
|||
ppc64le | powerpc64little)
|
||||
basic_machine=powerpc64le-unknown
|
||||
diff --git a/configure.ac b/configure.ac
|
||||
index a075ce3..b7f2ee3 100644
|
||||
index 42d17bc0ad..637a99f159 100644
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -788,9 +788,9 @@ cat >> conftest.c <<EOF
|
||||
@@ -741,9 +741,9 @@ cat >> conftest.c <<EOF
|
||||
alpha-linux-gnu
|
||||
# elif defined(__ARM_EABI__) && defined(__ARM_PCS_VFP)
|
||||
# if defined(__ARMEL__)
|
||||
|
@ -38,7 +44,7 @@ index a075ce3..b7f2ee3 100644
|
|||
# endif
|
||||
# elif defined(__ARM_EABI__) && !defined(__ARM_PCS_VFP)
|
||||
# if defined(__ARMEL__)
|
||||
@@ -810,7 +810,7 @@ cat >> conftest.c <<EOF
|
||||
@@ -783,7 +783,7 @@ cat >> conftest.c <<EOF
|
||||
# elif _MIPS_SIM == _ABIN32
|
||||
mips64el-linux-gnuabin32
|
||||
# elif _MIPS_SIM == _ABI64
|
||||
|
@ -47,7 +53,7 @@ index a075ce3..b7f2ee3 100644
|
|||
# else
|
||||
# error unknown platform triplet
|
||||
# endif
|
||||
@@ -820,22 +820,22 @@ cat >> conftest.c <<EOF
|
||||
@@ -793,22 +793,22 @@ cat >> conftest.c <<EOF
|
||||
# elif _MIPS_SIM == _ABIN32
|
||||
mips64-linux-gnuabin32
|
||||
# elif _MIPS_SIM == _ABI64
|
||||
|
@ -76,5 +82,5 @@ index a075ce3..b7f2ee3 100644
|
|||
s390x-linux-gnu
|
||||
# elif defined(__s390__)
|
||||
--
|
||||
2.20.1
|
||||
2.21.0
|
||||
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
diff --git a/Lib/distutils/command/bdist_wininst.py b/Lib/distutils/command/bdist_wininst.py
|
||||
index 0871a4f..8796b68 100644
|
||||
--- a/Lib/distutils/command/bdist_wininst.py
|
||||
+++ b/Lib/distutils/command/bdist_wininst.py
|
||||
@@ -12,6 +12,8 @@ from distutils.sysconfig import get_python_version
|
||||
from distutils import log
|
||||
|
||||
class bdist_wininst(Command):
|
||||
+ # Marker for tests that we have the unsupported bdist_wininst
|
||||
+ _unsupported = True
|
||||
|
||||
description = "create an executable installer for MS Windows"
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
From 746a45acd333174c3174230833b45f537bd92889 Mon Sep 17 00:00:00 2001
|
||||
From 1df081ef9044c6b30fd75d591b6999eb62c48d9b Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
|
||||
Date: Thu, 11 Jul 2019 13:44:13 +0200
|
||||
Subject: [PATCH] 00328: Restore pyc to TIMESTAMP invalidation mode as default
|
||||
|
|
|
@ -72,7 +72,9 @@ addFilter(r'read-error /usr/lib(64)?/pkgconfig/python-3\.\ddm\.pc \[Errno 2\]')
|
|||
addFilter(r'macro-in-comment %\{_pyconfig(32|64)_h\}')
|
||||
|
||||
# Python modules don't need to be linked against libc
|
||||
# Since 3.8 they are no longer linked against libpython3.8.so.1.0
|
||||
addFilter(r'E: library-not-linked-against-libc /usr/lib(64)?/python3.\d/lib-dynload/')
|
||||
addFilter(r'E: shared-lib-without-dependency-information /usr/lib(64)?/python3.\d/lib-dynload/')
|
||||
|
||||
# SPELLING ERRORS
|
||||
addFilter(r'spelling-error .* en_US (bytecode|pyc|filename|tkinter|namespaces|pytest) ')
|
||||
|
|
163
python3.spec
163
python3.spec
|
@ -2,10 +2,10 @@
|
|||
# Top-level metadata
|
||||
# ==================
|
||||
|
||||
%global pybasever 3.7
|
||||
%global pybasever 3.8
|
||||
|
||||
# pybasever without the dot:
|
||||
%global pyshortver 37
|
||||
%global pyshortver 38
|
||||
|
||||
Name: python3
|
||||
Summary: Interpreter of the Python programming language
|
||||
|
@ -13,11 +13,11 @@ URL: https://www.python.org/
|
|||
|
||||
# WARNING When rebasing to a new Python version,
|
||||
# remember to update the python3-docs package as well
|
||||
%global general_version %{pybasever}.4
|
||||
#global prerel ...
|
||||
%global general_version %{pybasever}.0
|
||||
%global prerel b3
|
||||
%global upstream_version %{general_version}%{?prerel}
|
||||
Version: %{general_version}%{?prerel:~%{prerel}}
|
||||
Release: 5%{?dist}
|
||||
Release: 1%{?dist}
|
||||
License: Python
|
||||
|
||||
|
||||
|
@ -36,6 +36,17 @@ License: Python
|
|||
# WARNING: This does not change the package name and summary above
|
||||
%bcond_with flatpackage
|
||||
|
||||
# When bootstrapping python3, we need to build setuptools.
|
||||
# but setuptools BR python3-devel and that brings in python3-rpm-generators;
|
||||
# python3-rpm-generators needs python3-setuptools, so we cannot have it yet.
|
||||
#
|
||||
# Procedure: https://fedoraproject.org/wiki/SIGs/Python/UpgradingPython
|
||||
#
|
||||
# IMPORTANT: When bootstrapping, it's very likely the wheels for pip and
|
||||
# setuptools are not available. Turn off the rpmwheels bcond until
|
||||
# the two packages are built with wheels to get around the issue.
|
||||
%bcond_with bootstrap
|
||||
|
||||
# Whether to use RPM build wheels from the python-{pip,setuptools}-wheel package
|
||||
# Uses upstream bundled prebuilt wheels otherwise
|
||||
%bcond_without rpmwheels
|
||||
|
@ -77,10 +88,6 @@ License: Python
|
|||
%endif
|
||||
|
||||
|
||||
# Notes from bootstraping Python 3.7:
|
||||
# https://fedoraproject.org/wiki/SIGs/Python/UpgradingPython
|
||||
|
||||
|
||||
# =====================
|
||||
# General global macros
|
||||
# =====================
|
||||
|
@ -90,8 +97,8 @@ License: Python
|
|||
|
||||
# ABIFLAGS, LDVERSION and SOABI are in the upstream configure.ac
|
||||
# See PEP 3149 for some background: http://www.python.org/dev/peps/pep-3149/
|
||||
%global ABIFLAGS_optimized m
|
||||
%global ABIFLAGS_debug dm
|
||||
%global ABIFLAGS_optimized %{nil}
|
||||
%global ABIFLAGS_debug d
|
||||
|
||||
%global LDVERSION_optimized %{pybasever}%{ABIFLAGS_optimized}
|
||||
%global LDVERSION_debug %{pybasever}%{ABIFLAGS_debug}
|
||||
|
@ -126,12 +133,6 @@ License: Python
|
|||
# on files that test invalid syntax.
|
||||
%undefine py_auto_byte_compile
|
||||
|
||||
# Don't let RPM set SOURCE_DATE_EPOCH based on the latest %%changelog date
|
||||
# It breaks tests with: can't find '__main__' module in .../test_zip.zip
|
||||
# Reported at https://bugs.python.org/issue34022
|
||||
# Tracked at https://bugzilla.redhat.com/show_bug.cgi?id=1724753
|
||||
%global source_date_epoch_from_changelog 0
|
||||
|
||||
# For multilib support, files that are different between 32- and 64-bit arches
|
||||
# need different filenames. Use "64" or "32" according to the word size.
|
||||
# Currently, the best way to determine an architecture's word size happens to
|
||||
|
@ -205,6 +206,10 @@ BuildRequires: python-setuptools-wheel
|
|||
BuildRequires: python-pip-wheel
|
||||
%endif
|
||||
|
||||
%if %{without bootstrap}
|
||||
# for make regen-all and distutils.tests.test_bdist_rpm
|
||||
BuildRequires: python%{pyshortver}
|
||||
%endif
|
||||
|
||||
# =======================
|
||||
# Source code and patches
|
||||
|
@ -241,40 +246,11 @@ Patch102: 00102-lib64.patch
|
|||
# Downstream only: not appropriate for upstream
|
||||
Patch111: 00111-no-static-lib.patch
|
||||
|
||||
# 00155 #
|
||||
# Avoid allocating thunks in ctypes unless absolutely necessary, to avoid
|
||||
# generating SELinux denials on "import ctypes" and "import uuid" when
|
||||
# embedding Python within httpd
|
||||
# See https://bugzilla.redhat.com/show_bug.cgi?id=814391
|
||||
Patch155: 00155-avoid-ctypes-thunks.patch
|
||||
|
||||
|
||||
# 00170 #
|
||||
# In debug builds, try to print repr() when a C-level assert fails in the
|
||||
# garbage collector (typically indicating a reference-counting error
|
||||
# somewhere else e.g in an extension module)
|
||||
# The new macros/functions within gcmodule.c are hidden to avoid exposing
|
||||
# them within the extension API.
|
||||
# Sent upstream: http://bugs.python.org/issue9263
|
||||
# See https://bugzilla.redhat.com/show_bug.cgi?id=614680
|
||||
Patch170: 00170-gc-assertions.patch
|
||||
|
||||
# 00178 #
|
||||
# Don't duplicate various FLAGS in sysconfig values
|
||||
# http://bugs.python.org/issue17679
|
||||
# Does not affect python2 AFAICS (different sysconfig values initialization)
|
||||
Patch178: 00178-dont-duplicate-flags-in-sysconfig.patch
|
||||
|
||||
# 00189 #
|
||||
# Instead of bundled wheels, use our RPM packaged wheels from
|
||||
# /usr/share/python-wheels
|
||||
Patch189: 00189-use-rpm-wheels.patch
|
||||
|
||||
# 00205 #
|
||||
# LIBPL variable in makefile takes LIBPL from configure.ac
|
||||
# but the LIBPL variable defined there doesn't respect libdir macro
|
||||
Patch205: 00205-make-libpl-respect-lib64.patch
|
||||
|
||||
# 00251
|
||||
# Set values of prefix and exec_prefix in distutils install command
|
||||
# to /usr/local if executable is /usr/bin/python* and RPM build
|
||||
|
@ -286,11 +262,6 @@ Patch251: 00251-change-user-install-location.patch
|
|||
# Upstream uses Debian-style architecture naming. Change to match Fedora.
|
||||
Patch274: 00274-fix-arch-names.patch
|
||||
|
||||
# 00316 #
|
||||
# We remove the exe files from distutil's bdist_wininst
|
||||
# So we mark the command as unsupported - and the tests are skipped
|
||||
Patch316: 00316-mark-bdist_wininst-unsupported.patch
|
||||
|
||||
# 00328 #
|
||||
# Restore pyc to TIMESTAMP invalidation mode as default in rpmbubild
|
||||
# See https://src.fedoraproject.org/rpms/redhat-rpm-config/pull-request/57#comment-27426
|
||||
|
@ -304,6 +275,10 @@ Patch328: 00328-pyc-timestamp-invalidation-mode.patch
|
|||
# More information, and a patch number catalog, is at:
|
||||
#
|
||||
# https://fedoraproject.org/wiki/SIGs/Python/PythonPatches
|
||||
#
|
||||
# The patches are stored and rebased at:
|
||||
#
|
||||
# https://github.com/fedora-python/cpython
|
||||
|
||||
|
||||
# ==========================================
|
||||
|
@ -404,8 +379,8 @@ Summary: Python runtime libraries
|
|||
Requires: python-setuptools-wheel
|
||||
Requires: python-pip-wheel
|
||||
%else
|
||||
Provides: bundled(python3-pip) = 19.0.3
|
||||
Provides: bundled(python3-setuptools) = 40.8.0
|
||||
Provides: bundled(python3-pip) = 19.2.1
|
||||
Provides: bundled(python3-setuptools) = 41.0.1
|
||||
%endif
|
||||
|
||||
%{?python_provide:%python_provide python3-libs}
|
||||
|
@ -440,13 +415,12 @@ Summary: Libraries and header files needed for Python development
|
|||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||
BuildRequires: python-rpm-macros
|
||||
|
||||
# The RPM related dependencies bring nothing to a non-RPM Python developer
|
||||
# But we want them when packages BuildRequire python3-devel
|
||||
Requires: (python-rpm-macros if rpm-build)
|
||||
Requires: (python3-rpm-macros if rpm-build)
|
||||
Requires: (python3-rpm-generators if rpm-build)
|
||||
|
||||
%if %{without bootstrap}
|
||||
# This is not "API" (packages that need setuptools should still BuildRequire it)
|
||||
# However some packages apparently can build both with and without setuptools
|
||||
# producing egg-info as file or directory (depending on setuptools presence).
|
||||
|
@ -456,6 +430,9 @@ Requires: (python3-rpm-generators if rpm-build)
|
|||
# See https://fedoraproject.org/wiki/Packaging:Directory_Replacement
|
||||
Requires: (python3-setuptools if rpm-build)
|
||||
|
||||
Requires: (python3-rpm-generators if rpm-build)
|
||||
%endif
|
||||
|
||||
%{?python_provide:%python_provide python3-devel}
|
||||
|
||||
Provides: %{name}-2to3 = %{version}-%{release}
|
||||
|
@ -559,15 +536,13 @@ extension modules.
|
|||
This version uses more memory and will be slower than the regular Python build,
|
||||
but is useful for tracking down reference-counting issues and other bugs.
|
||||
|
||||
The bytecode format is unchanged, so that .pyc files are compatible between
|
||||
this and the standard version of Python, but the debugging features mean that
|
||||
C/C++ extension modules are ABI-incompatible and must be built for each version
|
||||
separately.
|
||||
|
||||
The debug build shares installation directories with the standard Python
|
||||
runtime, so that .py and .pyc files can be shared.
|
||||
Compiled extension modules use a special ABI flag ("d") in the filename,
|
||||
so extensions for both versions can co-exist in the same directory.
|
||||
runtime. Python modules -- source (.py), bytecode (.pyc), and C-API extensions
|
||||
(.cpython*.so) -- are compatible between this and the standard version
|
||||
of Python.
|
||||
|
||||
The debug runtime additionally supports debug builds of C-API extensions
|
||||
(with the "d" ABI flag) for debugging issues in those extensions.
|
||||
%endif # with debug_build
|
||||
|
||||
%else # with flatpackage
|
||||
|
@ -581,8 +556,8 @@ so extensions for both versions can co-exist in the same directory.
|
|||
Requires: python-setuptools-wheel
|
||||
Requires: python-pip-wheel
|
||||
%else
|
||||
Provides: bundled(python3-pip) = 19.0.3
|
||||
Provides: bundled(python3-setuptools) = 40.8.0
|
||||
Provides: bundled(python3-pip) = 19.2.1
|
||||
Provides: bundled(python3-setuptools) = 41.0.1
|
||||
%endif
|
||||
|
||||
# The description for the flat package
|
||||
|
@ -619,19 +594,14 @@ rm -r Modules/expat
|
|||
%patch102 -p1
|
||||
%endif
|
||||
%patch111 -p1
|
||||
%patch155 -p1
|
||||
%patch170 -p1
|
||||
%patch178 -p1
|
||||
|
||||
%if %{with rpmwheels}
|
||||
%patch189 -p1
|
||||
rm Lib/ensurepip/_bundled/*.whl
|
||||
%endif
|
||||
|
||||
%patch205 -p1
|
||||
%patch251 -p1
|
||||
%patch274 -p1
|
||||
%patch316 -p1
|
||||
%patch328 -p1
|
||||
|
||||
|
||||
|
@ -719,8 +689,14 @@ BuildPython() {
|
|||
$ExtraConfigArgs \
|
||||
%{nil}
|
||||
|
||||
%if %{without bootstrap}
|
||||
# Regenerate generated files (needs python3)
|
||||
%make_build regen-all PYTHON_FOR_REGEN="python%{pybasever}"
|
||||
%endif
|
||||
|
||||
|
||||
# Invoke the build
|
||||
make EXTRA_CFLAGS="$CFLAGS $MoreCFlags" %{?_smp_mflags}
|
||||
%make_build EXTRA_CFLAGS="$CFLAGS $MoreCFlags"
|
||||
|
||||
popd
|
||||
echo FINISHED: BUILD OF PYTHON FOR CONFIGURATION: $ConfName
|
||||
|
@ -956,9 +932,6 @@ ln -s \
|
|||
# See https://bugzilla.redhat.com/show_bug.cgi?id=1111275
|
||||
mv %{buildroot}%{_bindir}/2to3-%{pybasever} %{buildroot}%{_bindir}/2to3
|
||||
|
||||
# make man python3.Xm work https://bugzilla.redhat.com/show_bug.cgi?id=1612241
|
||||
ln -s ./python%{pybasever}.1 %{buildroot}%{_mandir}/man1/python%{pybasever}m.1
|
||||
|
||||
%if %{with flatpackage}
|
||||
# Remove stuff that would conflict with python3 package
|
||||
rm %{buildroot}%{_bindir}/python3
|
||||
|
@ -968,11 +941,11 @@ rm %{buildroot}%{_bindir}/pygettext3.py
|
|||
rm %{buildroot}%{_bindir}/msgfmt3.py
|
||||
rm %{buildroot}%{_bindir}/idle3
|
||||
rm %{buildroot}%{_bindir}/python3-*
|
||||
rm %{buildroot}%{_bindir}/pyvenv
|
||||
rm %{buildroot}%{_bindir}/2to3
|
||||
rm %{buildroot}%{_libdir}/libpython3.so
|
||||
rm %{buildroot}%{_mandir}/man1/python3.1*
|
||||
rm %{buildroot}%{_libdir}/pkgconfig/python3.pc
|
||||
rm %{buildroot}%{_libdir}/pkgconfig/python3-embed.pc
|
||||
%else
|
||||
# Link the unversioned stuff
|
||||
# https://fedoraproject.org/wiki/Changes/Python_means_Python3
|
||||
|
@ -1044,17 +1017,19 @@ CheckPython() {
|
|||
LD_LIBRARY_PATH=$ConfDir $ConfDir/python -m test.pythoninfo
|
||||
|
||||
# Run the upstream test suite
|
||||
# test_gdb skipped on armv7hl:
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1196181
|
||||
# test_gdb skipped on s390x:
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1678277
|
||||
# test_gdb skipped everywhere:
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1734327
|
||||
# test_distutils
|
||||
# distutils.tests.test_bdist_rpm tests fail when bootstraping the Python
|
||||
# package: rpmbuild requires /usr/bin/pythonX.Y to be installed
|
||||
LD_LIBRARY_PATH=$ConfDir $ConfDir/python -m test.regrtest \
|
||||
-wW --slowest -j0 \
|
||||
%if %{with bootstrap}
|
||||
-x test_distutils \
|
||||
-x test_bdist_rpm \
|
||||
%ifarch %{arm} s390x
|
||||
-x test_gdb \
|
||||
%endif
|
||||
-x test_gdb \
|
||||
%ifarch %{mips64}
|
||||
-x test_ctypes \
|
||||
%endif
|
||||
|
@ -1080,14 +1055,12 @@ CheckPython optimized
|
|||
%if %{without flatpackage}
|
||||
%{_bindir}/pydoc*
|
||||
%{_bindir}/python3
|
||||
%{_bindir}/pyvenv
|
||||
%else
|
||||
%{_bindir}/pydoc%{pybasever}
|
||||
%endif
|
||||
|
||||
%{_bindir}/python%{pybasever}
|
||||
%{_bindir}/python%{pybasever}m
|
||||
%{_bindir}/pyvenv-%{pybasever}
|
||||
%{_bindir}/python%{LDVERSION_optimized}
|
||||
%{_mandir}/*/*3*
|
||||
|
||||
|
||||
|
@ -1209,6 +1182,7 @@ CheckPython optimized
|
|||
%{dynload_dir}/nis.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/ossaudiodev.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/parser.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/_posixshmem.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/pyexpat.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/readline.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/resource.%{SOABI_optimized}.so
|
||||
|
@ -1216,10 +1190,10 @@ CheckPython optimized
|
|||
%{dynload_dir}/spwd.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/syslog.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/termios.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/_testmultiphase.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/unicodedata.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/_uuid.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/xxlimited.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/_xxsubinterpreters.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/zlib.%{SOABI_optimized}.so
|
||||
|
||||
%dir %{pylibdir}/site-packages/
|
||||
|
@ -1271,6 +1245,11 @@ CheckPython optimized
|
|||
%{pylibdir}/importlib/*.py
|
||||
%{pylibdir}/importlib/__pycache__/*%{bytecode_suffixes}
|
||||
|
||||
%dir %{pylibdir}/importlib/metadata/
|
||||
%dir %{pylibdir}/importlib/metadata/__pycache__/
|
||||
%{pylibdir}/importlib/metadata/*.py
|
||||
%{pylibdir}/importlib/metadata/__pycache__/*%{bytecode_suffixes}
|
||||
|
||||
%dir %{pylibdir}/json/
|
||||
%dir %{pylibdir}/json/__pycache__/
|
||||
%{pylibdir}/json/*.py
|
||||
|
@ -1324,6 +1303,7 @@ CheckPython optimized
|
|||
%endif
|
||||
%{_includedir}/python%{LDVERSION_optimized}/*.h
|
||||
%{_includedir}/python%{LDVERSION_optimized}/internal/
|
||||
%{_includedir}/python%{LDVERSION_optimized}/cpython/
|
||||
%doc Misc/README.valgrind Misc/valgrind-python.supp Misc/gdbinit
|
||||
|
||||
%if %{without flatpackage}
|
||||
|
@ -1331,6 +1311,7 @@ CheckPython optimized
|
|||
%{_bindir}/python-config
|
||||
%{_libdir}/pkgconfig/python3.pc
|
||||
%{_libdir}/pkgconfig/python.pc
|
||||
%{_libdir}/pkgconfig/python3-embed.pc
|
||||
%{_bindir}/pathfix.py
|
||||
%{_bindir}/pygettext3.py
|
||||
%{_bindir}/pygettext.py
|
||||
|
@ -1346,7 +1327,9 @@ CheckPython optimized
|
|||
%{_bindir}/python%{LDVERSION_optimized}-*-config
|
||||
%{_libdir}/libpython%{LDVERSION_optimized}.so
|
||||
%{_libdir}/pkgconfig/python-%{LDVERSION_optimized}.pc
|
||||
%{_libdir}/pkgconfig/python-%{LDVERSION_optimized}-embed.pc
|
||||
%{_libdir}/pkgconfig/python-%{pybasever}.pc
|
||||
%{_libdir}/pkgconfig/python-%{pybasever}-embed.pc
|
||||
|
||||
|
||||
%if %{without flatpackage}
|
||||
|
@ -1395,6 +1378,8 @@ CheckPython optimized
|
|||
%{dynload_dir}/_testbuffer.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/_testcapi.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/_testimportmultiple.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/_testinternalcapi.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/_testmultiphase.%{SOABI_optimized}.so
|
||||
%{dynload_dir}/_xxtestfuzz.%{SOABI_optimized}.so
|
||||
%{pylibdir}/lib2to3/tests
|
||||
%{pylibdir}/tkinter/test
|
||||
|
@ -1475,6 +1460,7 @@ CheckPython optimized
|
|||
%{dynload_dir}/nis.%{SOABI_debug}.so
|
||||
%{dynload_dir}/ossaudiodev.%{SOABI_debug}.so
|
||||
%{dynload_dir}/parser.%{SOABI_debug}.so
|
||||
%{dynload_dir}/_posixshmem.%{SOABI_debug}.so
|
||||
%{dynload_dir}/pyexpat.%{SOABI_debug}.so
|
||||
%{dynload_dir}/readline.%{SOABI_debug}.so
|
||||
%{dynload_dir}/resource.%{SOABI_debug}.so
|
||||
|
@ -1482,9 +1468,9 @@ CheckPython optimized
|
|||
%{dynload_dir}/spwd.%{SOABI_debug}.so
|
||||
%{dynload_dir}/syslog.%{SOABI_debug}.so
|
||||
%{dynload_dir}/termios.%{SOABI_debug}.so
|
||||
%{dynload_dir}/_testmultiphase.%{SOABI_debug}.so
|
||||
%{dynload_dir}/unicodedata.%{SOABI_debug}.so
|
||||
%{dynload_dir}/_uuid.%{SOABI_debug}.so
|
||||
%{dynload_dir}/_xxsubinterpreters.%{SOABI_debug}.so
|
||||
%{dynload_dir}/_xxtestfuzz.%{SOABI_debug}.so
|
||||
%{dynload_dir}/zlib.%{SOABI_debug}.so
|
||||
|
||||
|
@ -1502,6 +1488,7 @@ CheckPython optimized
|
|||
%{_libdir}/libpython%{LDVERSION_debug}.so
|
||||
%{_libdir}/libpython%{LDVERSION_debug}.so.1.0
|
||||
%{_libdir}/pkgconfig/python-%{LDVERSION_debug}.pc
|
||||
%{_libdir}/pkgconfig/python-%{LDVERSION_debug}-embed.pc
|
||||
|
||||
# Analog of the -tools subpackage's files:
|
||||
# None for now; we could build precanned versions that have the appropriate
|
||||
|
@ -1515,6 +1502,8 @@ CheckPython optimized
|
|||
%{dynload_dir}/_testbuffer.%{SOABI_debug}.so
|
||||
%{dynload_dir}/_testcapi.%{SOABI_debug}.so
|
||||
%{dynload_dir}/_testimportmultiple.%{SOABI_debug}.so
|
||||
%{dynload_dir}/_testinternalcapi.%{SOABI_debug}.so
|
||||
%{dynload_dir}/_testmultiphase.%{SOABI_debug}.so
|
||||
|
||||
%endif # with debug_build
|
||||
|
||||
|
@ -1539,6 +1528,9 @@ CheckPython optimized
|
|||
# ======================================================
|
||||
|
||||
%changelog
|
||||
* Tue Aug 13 2019 Miro Hrončok <mhroncok@redhat.com> - 3.8.0~b3-1
|
||||
- Update to 3.8.0b3
|
||||
|
||||
* Sun Aug 11 2019 Miro Hrončok <mhroncok@redhat.com> - 3.7.4-5
|
||||
- Conditionalize python3-devel runtime dependencies on RPM packages and setuptools
|
||||
|
||||
|
@ -2777,4 +2769,3 @@ ivazquez's specfile
|
|||
|
||||
* Thu Sep 24 2009 Andrew McNabb <amcnabb@mcnabbs.org> 3.1.1-1
|
||||
- Initial package for Python 3.
|
||||
|
||||
|
|
2
sources
2
sources
|
@ -1 +1 @@
|
|||
SHA512 (Python-3.7.4.tar.xz) = 71f64668c259f3ed07bd4aa239dbba6cc1b6b0a84d50bbff160664845d7986f757e4d65fca327e62a2d12ba593742ca83a22f7cb6093aff8715ec916c2ba9416
|
||||
SHA512 (Python-3.8.0b3.tar.xz) = 5b29e580514704150b397850b5bf5f3e4b98a45d9a9f8ac0364bef51caac74862f9f349b5d3d1bbcdcc5b48b2722f1a9e5e0a9837bf44360fe74a396e915ae35
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
tests:
|
||||
- smoke:
|
||||
dir: python/smoke
|
||||
run: VERSION=3.7 ./venv.sh
|
||||
run: VERSION=3.8 ./venv.sh
|
||||
- selftest:
|
||||
dir: python/selftest
|
||||
run: VERSION=3.7 X="-x test_wsgiref" ./parallel.sh
|
||||
run: VERSION=3.8 X="-x test_wsgiref" ./parallel.sh
|
||||
- debugtest:
|
||||
dir: python/selftest
|
||||
run: VERSION=3.7 PYTHON=python3-debug X="-x test_wsgiref" ./parallel.sh
|
||||
run: VERSION=3.8 PYTHON=python3-debug X="-x test_wsgiref" ./parallel.sh
|
||||
required_packages:
|
||||
- gcc # for extension building in venv and selftest
|
||||
- gdb # for test_gdb
|
||||
|
|
Loading…
Reference in New Issue