Compare commits
41 Commits
Author | SHA1 | Date |
---|---|---|
Charalampos Stratakis | 111d8abb6c | |
Miro Hrončok | 8e08331a37 | |
Miro Hrončok | d647195bcb | |
Miro Hrončok | e99f00f29d | |
Miro Hrončok | 66a03df063 | |
Miro Hrončok | 9518239d87 | |
Miro Hrončok | 8b019d678b | |
Miro Hrončok | f21dd01d2a | |
Miro Hrončok | 58a18acd4d | |
Charalampos Stratakis | 22a5417452 | |
Charalampos Stratakis | ffd80345f3 | |
Charalampos Stratakis | f15b8971d4 | |
Charalampos Stratakis | 6e6da4af17 | |
Charalampos Stratakis | 1001aba943 | |
Charalampos Stratakis | ac4ce3facf | |
Miro Hrončok | 8be884894c | |
Iryna Shcherbina | d87ca42573 | |
Michal Cyprian | 09ce861b30 | |
Tomas Orsava | 8db5ee258f | |
Michal Cyprian | 783f35b7f8 | |
Iryna Shcherbina | 16b657d7d6 | |
Tomas Orsava | 8227c33d21 | |
Charalampos Stratakis | b9f2533095 | |
Charalampos Stratakis | 44e2147189 | |
Charalampos Stratakis | 05e1bafe57 | |
Charalampos Stratakis | 8ff39725bf | |
Charalampos Stratakis | 11f038e300 | |
Charalampos Stratakis | fc4e993391 | |
Charalampos Stratakis | 28f0c0c422 | |
Charalampos Stratakis | 8b94f726d7 | |
Charalampos Stratakis | 1d013eb47b | |
Charalampos Stratakis | 63656420a3 | |
Charalampos Stratakis | 368ff01e1e | |
Charalampos Stratakis | e890527e80 | |
Charalampos Stratakis | ec7e3db6a1 | |
Charalampos Stratakis | 8fbcd4d716 | |
Charalampos Stratakis | 5845251a7e | |
Charalampos Stratakis | ccd228fc23 | |
Tomas Orsava | e44cd6a31b | |
Tomas Orsava | 8a619e5ede | |
Tomas Orsava | 5bd040bde9 |
|
@ -96,7 +96,7 @@ index f698927..bc977b5 100644
|
|||
@@ -248,8 +248,8 @@ class HelperFunctionsTests(unittest.TestCase):
|
||||
self.assertEqual(dirs[1], wanted)
|
||||
elif os.sep == '/':
|
||||
# OS X non-framwework builds, Linux, FreeBSD, etc
|
||||
# OS X non-framework builds, Linux, FreeBSD, etc
|
||||
- self.assertEqual(len(dirs), 1)
|
||||
- wanted = os.path.join('xoxo', 'lib',
|
||||
+ self.assertEqual(len(dirs), 2)
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
diff --git a/Makefile.pre.in b/Makefile.pre.in
|
||||
index 70e5927..04c8e3d 100644
|
||||
index 4b093e3..1088435 100644
|
||||
--- a/Makefile.pre.in
|
||||
+++ b/Makefile.pre.in
|
||||
@@ -556,7 +556,7 @@ clinic: $(BUILDPYTHON) $(srcdir)/Modules/_blake2/blake2s_impl.c
|
||||
$(RUNSHARED) $(PYTHON_FOR_BUILD) ./Tools/clinic/clinic.py --make
|
||||
@@ -543,7 +543,7 @@ clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c
|
||||
$(PYTHON_FOR_REGEN) ./Tools/clinic/clinic.py --make
|
||||
|
||||
# Build the interpreter
|
||||
-$(BUILDPYTHON): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY)
|
||||
|
@ -11,7 +11,7 @@ index 70e5927..04c8e3d 100644
|
|||
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
|
||||
|
||||
platform: $(BUILDPYTHON) pybuilddir.txt
|
||||
@@ -601,18 +601,6 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o
|
||||
@@ -588,18 +588,6 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o
|
||||
$(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build
|
||||
|
||||
|
||||
|
@ -30,7 +30,7 @@ index 70e5927..04c8e3d 100644
|
|||
libpython$(LDVERSION).so: $(LIBRARY_OBJS)
|
||||
if test $(INSTSONAME) != $(LDLIBRARY); then \
|
||||
$(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
|
||||
@@ -702,7 +690,7 @@ Modules/Setup: $(srcdir)/Modules/Setup.dist
|
||||
@@ -689,7 +677,7 @@ Modules/Setup: $(srcdir)/Modules/Setup.dist
|
||||
echo "-----------------------------------------------"; \
|
||||
fi
|
||||
|
||||
|
@ -39,7 +39,7 @@ index 70e5927..04c8e3d 100644
|
|||
$(LINKCC) $(PY_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST)
|
||||
|
||||
############################################################################
|
||||
@@ -1382,18 +1370,6 @@ libainstall: all python-config
|
||||
@@ -1425,18 +1413,6 @@ libainstall: @DEF_MAKE_RULE@ python-config
|
||||
else true; \
|
||||
fi; \
|
||||
done
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
diff -r de35eae9048a config.sub
|
||||
--- a/config.sub Wed Apr 24 23:33:20 2013 +0200
|
||||
+++ b/config.sub Thu Apr 25 08:51:00 2013 +0200
|
||||
@@ -1008,7 +1008,7 @@
|
||||
diff --git a/config.sub b/config.sub
|
||||
index 40ea5df..932128b 100755
|
||||
--- a/config.sub
|
||||
+++ b/config.sub
|
||||
@@ -1045,7 +1045,7 @@ case $basic_machine in
|
||||
;;
|
||||
ppc64) basic_machine=powerpc64-unknown
|
||||
;;
|
||||
- ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
+ ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
|
||||
ppc64le | powerpc64little)
|
||||
basic_machine=powerpc64le-unknown
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
--- Python-3.3.2/setup.py.orig 2013-07-01 15:23:24.377711044 +0200
|
||||
+++ Python-3.3.2/setup.py 2013-07-01 15:23:34.094676496 +0200
|
||||
@@ -1882,7 +1882,8 @@
|
||||
if not line:
|
||||
ffi_inc = None
|
||||
break
|
||||
- if line.startswith('#define LIBFFI_H'):
|
||||
+ if line.startswith('#define LIBFFI_H') or \
|
||||
+ line.startswith('#define ffi_wrapper_h'):
|
||||
break
|
||||
ffi_lib = None
|
||||
if ffi_inc is not None:
|
|
@ -1,6 +1,7 @@
|
|||
diff -Nur Python-3.4.1/Lib/ensurepip/__init__.py Python-3.4.1-rewheel/Lib/ensurepip/__init__.py
|
||||
--- Python-3.4.1/Lib/ensurepip/__init__.py 2014-08-21 10:49:30.792695824 +0200
|
||||
+++ Python-3.4.1-rewheel/Lib/ensurepip/__init__.py 2014-08-21 10:10:41.958341726 +0200
|
||||
diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py
|
||||
index d69e09f..5cb12df 100644
|
||||
--- a/Lib/ensurepip/__init__.py
|
||||
+++ b/Lib/ensurepip/__init__.py
|
||||
@@ -1,8 +1,10 @@
|
||||
import os
|
||||
import os.path
|
||||
|
@ -12,16 +13,16 @@ diff -Nur Python-3.4.1/Lib/ensurepip/__init__.py Python-3.4.1-rewheel/Lib/ensure
|
|||
|
||||
|
||||
__all__ = ["version", "bootstrap"]
|
||||
@@ -38,6 +40,8 @@
|
||||
@@ -25,6 +27,8 @@ def _run_pip(args, additional_paths=None):
|
||||
|
||||
# Install the bundled software
|
||||
import pip
|
||||
+ if args[0] in ["install", "list", "wheel"]:
|
||||
+ args.append('--pre')
|
||||
pip.main(args)
|
||||
return pip.main(args)
|
||||
|
||||
|
||||
@@ -87,20 +91,39 @@
|
||||
@@ -88,20 +92,39 @@ def _bootstrap(*, root=None, upgrade=False, user=False,
|
||||
# omit pip and easy_install
|
||||
os.environ["ENSUREPIP_OPTIONS"] = "install"
|
||||
|
||||
|
@ -72,8 +73,8 @@ diff -Nur Python-3.4.1/Lib/ensurepip/__init__.py Python-3.4.1-rewheel/Lib/ensure
|
|||
# Construct the arguments to be passed to the pip command
|
||||
args = ["install", "--no-index", "--find-links", tmpdir]
|
||||
diff -Nur Python-3.4.1/Lib/ensurepip/rewheel/__init__.py Python-3.4.1-rewheel/Lib/ensurepip/rewheel/__init__.py
|
||||
--- Python-3.4.1/Lib/ensurepip/rewheel/__init__.py 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ Python-3.4.1-rewheel/Lib/ensurepip/rewheel/__init__.py 2014-08-21 10:11:22.560320121 +0200
|
||||
--- Python-3.4.1/Lib/ensurepip/rewheel/__init__.py 1970-01-01 01:00:00.000000000 +0100
|
||||
+++ Python-3.4.1-rewheel/Lib/ensurepip/rewheel/__init__.py 2014-08-21 10:11:22.560320121 +0200
|
||||
@@ -0,0 +1,143 @@
|
||||
+import argparse
|
||||
+import codecs
|
||||
|
@ -219,8 +220,8 @@ diff -Nur Python-3.4.1/Lib/ensurepip/rewheel/__init__.py Python-3.4.1-rewheel/Li
|
|||
+ pass # bad RECORD or empty line
|
||||
+ return to_write, to_omit
|
||||
diff -Nur Python-3.4.1/Makefile.pre.in Python-3.4.1-rewheel/Makefile.pre.in
|
||||
--- Python-3.4.1/Makefile.pre.in 2014-08-21 10:49:31.512695040 +0200
|
||||
+++ Python-3.4.1-rewheel/Makefile.pre.in 2014-08-21 10:10:41.961341722 +0200
|
||||
--- Python-3.4.1/Makefile.pre.in 2014-08-21 10:49:31.512695040 +0200
|
||||
+++ Python-3.4.1-rewheel/Makefile.pre.in 2014-08-21 10:10:41.961341722 +0200
|
||||
@@ -1145,7 +1145,7 @@
|
||||
test/test_asyncio \
|
||||
collections concurrent concurrent/futures encodings \
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
Subject: python3.test gdb match addr before builtin
|
||||
From: Michel Normand <normand@linux.vnet.ibm.com>
|
||||
|
||||
For ppc64le archi and python3... and gdb... versions
|
||||
the test_gdb.py need a change of re.match to handle address before the builtin_id word.
|
||||
Of course there is no error if this substring is not present.
|
||||
===
|
||||
...
|
||||
#0 0x00003fffb7dd0898 in builtin_id (self=<module at remote 0x3fffb7901440>, v=<unknown at remote 0x3fffb7f68910>) at /builddir/build/BUILD/Python-3.3.2/Python/bltinmodule.c:966
|
||||
....xxxxxxxxxxxxxxxxxxxxxx <= added regexp
|
||||
===
|
||||
|
||||
Signed-off-by: Michel Normand <normand@linux.vnet.ibm.com>
|
||||
---
|
||||
Lib/test/test_gdb.py | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: Python-3.3.2/Lib/test/test_gdb.py
|
||||
===================================================================
|
||||
--- Python-3.3.2.orig/Lib/test/test_gdb.py
|
||||
+++ Python-3.3.2/Lib/test/test_gdb.py
|
||||
@@ -230,7 +230,7 @@ class DebuggerTests(unittest.TestCase):
|
||||
# gdb can insert additional '\n' and space characters in various places
|
||||
# in its output, depending on the width of the terminal it's connected
|
||||
# to (using its "wrap_here" function)
|
||||
- m = re.match('.*#0\s+builtin_id\s+\(self\=.*,\s+v=\s*(.*?)\)\s+at\s+\S*Python/bltinmodule.c.*',
|
||||
+ m = re.match('.*#0\s+(?: 0x[0-9a-f]+\s+in\s+)?builtin_id\s+\(self\=.*,\s+v=\s*(.*?)\)\s+at\s+\S*Python/bltinmodule.c.*',
|
||||
gdb_output, re.DOTALL)
|
||||
if not m:
|
||||
self.fail('Unexpected gdb output: %r\n%s' % (gdb_output, gdb_output))
|
|
@ -1,12 +0,0 @@
|
|||
diff --git a/Makefile.pre.in b/Makefile.pre.in
|
||||
index 28df0e1..42f811c 100644
|
||||
--- a/Makefile.pre.in
|
||||
+++ b/Makefile.pre.in
|
||||
@@ -867,6 +867,7 @@ Python/frozen.o: Python/importlib.h Python/importlib_external.h
|
||||
# follow our naming conventions. dtrace(1) uses the output filename to generate
|
||||
# an include guard, so we can't use a pipeline to transform its output.
|
||||
Include/pydtrace_probes.h: $(srcdir)/Include/pydtrace.d
|
||||
+ @$(MKDIR_P) Include
|
||||
$(DTRACE) $(DFLAGS) -o $@ -h -s $<
|
||||
: sed in-place edit with POSIX-only tools
|
||||
sed 's/PYTHON_/PyDTrace_/' $@ > $@.tmp
|
|
@ -1,45 +0,0 @@
|
|||
diff --git a/Lib/distutils/cmd.py b/Lib/distutils/cmd.py
|
||||
index c89d5ef..dd61621 100644
|
||||
--- a/Lib/distutils/cmd.py
|
||||
+++ b/Lib/distutils/cmd.py
|
||||
@@ -296,7 +296,8 @@ class Command:
|
||||
finalized command object.
|
||||
"""
|
||||
cmd_obj = self.distribution.get_command_obj(command, create)
|
||||
- cmd_obj.ensure_finalized()
|
||||
+ if cmd_obj is not None:
|
||||
+ cmd_obj.ensure_finalized()
|
||||
return cmd_obj
|
||||
|
||||
# XXX rename to 'get_reinitialized_command()'? (should do the
|
||||
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
|
||||
index 8174192..30ca739 100644
|
||||
--- a/Lib/distutils/command/install.py
|
||||
+++ b/Lib/distutils/command/install.py
|
||||
@@ -122,6 +122,8 @@ class install(Command):
|
||||
"force installation (overwrite any existing files)"),
|
||||
('skip-build', None,
|
||||
"skip rebuilding everything (for testing/debugging)"),
|
||||
+ ('executable=', 'e',
|
||||
+ "specify final destination interpreter path (install.py)"),
|
||||
|
||||
# Where to install documentation (eventually!)
|
||||
#('doc-format=', None, "format of documentation to generate"),
|
||||
@@ -194,6 +196,7 @@ class install(Command):
|
||||
# directory not in sys.path.
|
||||
self.force = 0
|
||||
self.skip_build = 0
|
||||
+ self.executable = None
|
||||
self.warn_dir = 1
|
||||
|
||||
# These are only here as a conduit from the 'build' command to the
|
||||
@@ -365,6 +368,9 @@ class install(Command):
|
||||
('build_base', 'build_base'),
|
||||
('build_lib', 'build_lib'))
|
||||
|
||||
+ if self.executable is None:
|
||||
+ self.executable = os.path.normpath(sys.executable)
|
||||
+
|
||||
# Punt on doc directories for now -- after all, we're punting on
|
||||
# documentation completely!
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
diff --git a/Lib/test/test_socket.py b/Lib/test/test_socket.py
|
||||
index 8992a01..74170f4 100644
|
||||
--- a/Lib/test/test_socket.py
|
||||
+++ b/Lib/test/test_socket.py
|
||||
@@ -5458,6 +5458,7 @@ class LinuxKernelCryptoAPI(unittest.TestCase):
|
||||
self.assertEqual(dec, msg * multiplier)
|
||||
|
||||
@support.requires_linux_version(4, 3) # see test_aes_cbc
|
||||
+ @unittest.skip('Failure on Kernel 4.9+')
|
||||
def test_aead_aes_gcm(self):
|
||||
key = bytes.fromhex('c939cc13397c1d37de6ae0e1cb7c423c')
|
||||
iv = bytes.fromhex('b3d8cc017cbb89b39e0f67e2')
|
|
@ -1,183 +0,0 @@
|
|||
diff --git a/Lib/ensurepip/__init__.py b/Lib/ensurepip/__init__.py
|
||||
index 9f5d151..4dfa8a1 100644
|
||||
--- a/Lib/ensurepip/__init__.py
|
||||
+++ b/Lib/ensurepip/__init__.py
|
||||
@@ -8,13 +8,25 @@ import tempfile
|
||||
__all__ = ["version", "bootstrap"]
|
||||
|
||||
|
||||
-_SETUPTOOLS_VERSION = "28.8.0"
|
||||
+_SETUPTOOLS_VERSION = "34.2.0"
|
||||
|
||||
_PIP_VERSION = "9.0.1"
|
||||
|
||||
+_SIX_VERSION = "1.10.0"
|
||||
+
|
||||
+_APPDIRS_VERSION = "1.4.0"
|
||||
+
|
||||
+_PACKAGING_VERSION = "16.8"
|
||||
+
|
||||
+_PYPARSING_VERSION = "2.1.10"
|
||||
+
|
||||
_PROJECTS = [
|
||||
- ("setuptools", _SETUPTOOLS_VERSION),
|
||||
- ("pip", _PIP_VERSION),
|
||||
+ ("setuptools", _SETUPTOOLS_VERSION),
|
||||
+ ("pip", _PIP_VERSION),
|
||||
+ ("six", _SIX_VERSION),
|
||||
+ ("appdirs", _APPDIRS_VERSION),
|
||||
+ ("packaging", _PACKAGING_VERSION),
|
||||
+ ("pyparsing", _PYPARSING_VERSION)
|
||||
]
|
||||
|
||||
|
||||
diff --git a/Lib/test/test_ensurepip.py b/Lib/test/test_ensurepip.py
|
||||
index 9b04c18..23664c4 100644
|
||||
--- a/Lib/test/test_ensurepip.py
|
||||
+++ b/Lib/test/test_ensurepip.py
|
||||
@@ -40,13 +40,14 @@ class TestBootstrap(EnsurepipMixin, unittest.TestCase):
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
- unittest.mock.ANY, "setuptools", "pip",
|
||||
+ unittest.mock.ANY,
|
||||
+ "setuptools", "pip", "six", "appdirs", "packaging", "pyparsing",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
|
||||
additional_paths = self.run_pip.call_args[0][1]
|
||||
- self.assertEqual(len(additional_paths), 2)
|
||||
+ self.assertEqual(len(additional_paths), 6)
|
||||
|
||||
def test_bootstrapping_with_root(self):
|
||||
ensurepip.bootstrap(root="/foo/bar/")
|
||||
@@ -55,7 +56,7 @@ class TestBootstrap(EnsurepipMixin, unittest.TestCase):
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
unittest.mock.ANY, "--root", "/foo/bar/",
|
||||
- "setuptools", "pip",
|
||||
+ "setuptools", "pip", "six", "appdirs", "packaging", "pyparsing",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
@@ -66,7 +67,8 @@ class TestBootstrap(EnsurepipMixin, unittest.TestCase):
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
- unittest.mock.ANY, "--user", "setuptools", "pip",
|
||||
+ unittest.mock.ANY, "--user",
|
||||
+ "setuptools", "pip", "six", "appdirs", "packaging", "pyparsing",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
@@ -77,7 +79,8 @@ class TestBootstrap(EnsurepipMixin, unittest.TestCase):
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
- unittest.mock.ANY, "--upgrade", "setuptools", "pip",
|
||||
+ unittest.mock.ANY, "--upgrade",
|
||||
+ "setuptools", "pip", "six", "appdirs", "packaging", "pyparsing",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
@@ -88,7 +91,8 @@ class TestBootstrap(EnsurepipMixin, unittest.TestCase):
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
- unittest.mock.ANY, "-v", "setuptools", "pip",
|
||||
+ unittest.mock.ANY, "-v",
|
||||
+ "setuptools", "pip", "six", "appdirs", "packaging", "pyparsing",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
@@ -99,7 +103,8 @@ class TestBootstrap(EnsurepipMixin, unittest.TestCase):
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
- unittest.mock.ANY, "-vv", "setuptools", "pip",
|
||||
+ unittest.mock.ANY, "-vv",
|
||||
+ "setuptools", "pip", "six", "appdirs", "packaging", "pyparsing",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
@@ -110,7 +115,8 @@ class TestBootstrap(EnsurepipMixin, unittest.TestCase):
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
- unittest.mock.ANY, "-vvv", "setuptools", "pip",
|
||||
+ unittest.mock.ANY, "-vvv",
|
||||
+ "setuptools", "pip", "six", "appdirs", "packaging", "pyparsing",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
@@ -186,8 +192,8 @@ class TestUninstall(EnsurepipMixin, unittest.TestCase):
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
- "uninstall", "-y", "--disable-pip-version-check", "pip",
|
||||
- "setuptools",
|
||||
+ "uninstall", "-y", "--disable-pip-version-check",
|
||||
+ "pyparsing", "packaging", "appdirs", "six", "pip", "setuptools",
|
||||
]
|
||||
)
|
||||
|
||||
@@ -197,8 +203,8 @@ class TestUninstall(EnsurepipMixin, unittest.TestCase):
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
- "uninstall", "-y", "--disable-pip-version-check", "-v", "pip",
|
||||
- "setuptools",
|
||||
+ "uninstall", "-y", "--disable-pip-version-check", "-v",
|
||||
+ "pyparsing", "packaging", "appdirs", "six", "pip", "setuptools",
|
||||
]
|
||||
)
|
||||
|
||||
@@ -208,8 +214,8 @@ class TestUninstall(EnsurepipMixin, unittest.TestCase):
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
- "uninstall", "-y", "--disable-pip-version-check", "-vv", "pip",
|
||||
- "setuptools",
|
||||
+ "uninstall", "-y", "--disable-pip-version-check", "-vv",
|
||||
+ "pyparsing", "packaging", "appdirs", "six", "pip", "setuptools",
|
||||
]
|
||||
)
|
||||
|
||||
@@ -220,7 +226,7 @@ class TestUninstall(EnsurepipMixin, unittest.TestCase):
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"uninstall", "-y", "--disable-pip-version-check", "-vvv",
|
||||
- "pip", "setuptools",
|
||||
+ "pyparsing", "packaging", "appdirs", "six", "pip", "setuptools",
|
||||
]
|
||||
)
|
||||
|
||||
@@ -260,13 +266,14 @@ class TestBootstrappingMainFunction(EnsurepipMixin, unittest.TestCase):
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
"install", "--no-index", "--find-links",
|
||||
- unittest.mock.ANY, "setuptools", "pip",
|
||||
+ unittest.mock.ANY,
|
||||
+ "setuptools", "pip", "six", "appdirs", "packaging", "pyparsing",
|
||||
],
|
||||
unittest.mock.ANY,
|
||||
)
|
||||
|
||||
additional_paths = self.run_pip.call_args[0][1]
|
||||
- self.assertEqual(len(additional_paths), 2)
|
||||
+ self.assertEqual(len(additional_paths), 6)
|
||||
|
||||
class TestUninstallationMainFunction(EnsurepipMixin, unittest.TestCase):
|
||||
|
||||
@@ -284,8 +291,8 @@ class TestUninstallationMainFunction(EnsurepipMixin, unittest.TestCase):
|
||||
|
||||
self.run_pip.assert_called_once_with(
|
||||
[
|
||||
- "uninstall", "-y", "--disable-pip-version-check", "pip",
|
||||
- "setuptools",
|
||||
+ "uninstall", "-y", "--disable-pip-version-check", "pyparsing", "packaging",
|
||||
+ "appdirs", "six", "pip", "setuptools",
|
||||
]
|
||||
)
|
||||
|
|
@ -1,104 +0,0 @@
|
|||
diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py
|
||||
index 6c3625d..2a53f3d 100644
|
||||
--- a/Lib/test/test_capi.py
|
||||
+++ b/Lib/test/test_capi.py
|
||||
@@ -385,7 +385,7 @@ class EmbeddingTests(unittest.TestCase):
|
||||
|
||||
def test_subinterps(self):
|
||||
# This is just a "don't crash" test
|
||||
- out, err = self.run_embedded_interpreter()
|
||||
+ out, err = self.run_embedded_interpreter("repeated_init_and_subinterpreters")
|
||||
if support.verbose:
|
||||
print()
|
||||
print(out)
|
||||
diff --git a/Programs/_testembed.c b/Programs/_testembed.c
|
||||
index 3968399..a68d4fa 100644
|
||||
--- a/Programs/_testembed.c
|
||||
+++ b/Programs/_testembed.c
|
||||
@@ -33,7 +33,7 @@ static void print_subinterp(void)
|
||||
);
|
||||
}
|
||||
|
||||
-static void test_repeated_init_and_subinterpreters(void)
|
||||
+static int test_repeated_init_and_subinterpreters(void)
|
||||
{
|
||||
PyThreadState *mainstate, *substate;
|
||||
#ifdef WITH_THREAD
|
||||
@@ -70,6 +70,7 @@ static void test_repeated_init_and_subinterpreters(void)
|
||||
PyEval_RestoreThread(mainstate);
|
||||
Py_Finalize();
|
||||
}
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
/*****************************************************
|
||||
@@ -103,7 +104,7 @@ static void check_stdio_details(const char *encoding, const char * errors)
|
||||
Py_Finalize();
|
||||
}
|
||||
|
||||
-static void test_forced_io_encoding(void)
|
||||
+static int test_forced_io_encoding(void)
|
||||
{
|
||||
/* Check various combinations */
|
||||
printf("--- Use defaults ---\n");
|
||||
@@ -122,19 +123,51 @@ static void test_forced_io_encoding(void)
|
||||
printf("Unexpected success calling Py_SetStandardStreamEncoding");
|
||||
}
|
||||
Py_Finalize();
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
-/* Different embedding tests */
|
||||
-int main(int argc, char *argv[])
|
||||
+/* *********************************************************
|
||||
+ * List of test cases and the function that implements it.
|
||||
+ *
|
||||
+ * Names are compared case-sensitively with the first
|
||||
+ * argument. If no match is found, or no first argument was
|
||||
+ * provided, the names of all test cases are printed and
|
||||
+ * the exit code will be -1.
|
||||
+ *
|
||||
+ * The int returned from test functions is used as the exit
|
||||
+ * code, and test_capi treats all non-zero exit codes as a
|
||||
+ * failed test.
|
||||
+ *********************************************************/
|
||||
+struct TestCase
|
||||
{
|
||||
+ const char *name;
|
||||
+ int (*func)(void);
|
||||
+};
|
||||
+
|
||||
+static struct TestCase TestCases[] = {
|
||||
+ { "forced_io_encoding", test_forced_io_encoding },
|
||||
+ { "repeated_init_and_subinterpreters", test_repeated_init_and_subinterpreters },
|
||||
+ { NULL, NULL }
|
||||
+};
|
||||
|
||||
- /* TODO: Check the argument string to allow for more test cases */
|
||||
+int main(int argc, char *argv[])
|
||||
+{
|
||||
if (argc > 1) {
|
||||
- /* For now: assume "forced_io_encoding */
|
||||
- test_forced_io_encoding();
|
||||
- } else {
|
||||
- /* Run the original embedding test case by default */
|
||||
- test_repeated_init_and_subinterpreters();
|
||||
+ for (struct TestCase *tc = TestCases; tc && tc->name; tc++) {
|
||||
+ if (strcmp(argv[1], tc->name) == 0)
|
||||
+ return (*tc->func)();
|
||||
+ }
|
||||
}
|
||||
- return 0;
|
||||
+
|
||||
+ /* No match found, or no test name provided, so display usage */
|
||||
+ printf("Python " PY_VERSION " _testembed executable for embedded interpreter tests\n"
|
||||
+ "Normally executed via 'EmbeddingTests' in Lib/test/test_capi.py\n\n"
|
||||
+ "Usage: %s TESTNAME\n\nAll available tests:\n", argv[0]);
|
||||
+ for (struct TestCase *tc = TestCases; tc && tc->name; tc++) {
|
||||
+ printf(" %s\n", tc->name);
|
||||
+ }
|
||||
+
|
||||
+ /* Non-zero exit code will cause test_capi.py tests to fail.
|
||||
+ This is intentional. */
|
||||
+ return -1;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -1,12 +0,0 @@
|
|||
diff --git a/Lib/ctypes/test/test_structures.py b/Lib/ctypes/test/test_structures.py
|
||||
index 3eded77..ad7859a 100644
|
||||
--- a/Lib/ctypes/test/test_structures.py
|
||||
+++ b/Lib/ctypes/test/test_structures.py
|
||||
@@ -392,6 +392,7 @@ class StructureTestCase(unittest.TestCase):
|
||||
(1, 0, 0, 0, 0, 0))
|
||||
self.assertRaises(TypeError, lambda: Z(1, 2, 3, 4, 5, 6, 7))
|
||||
|
||||
+ @unittest.skip('Fails on aarch64: http://bugs.python.org/issue29804')
|
||||
def test_pass_by_value(self):
|
||||
# This should mirror the structure in Modules/_ctypes/_ctypes_test.c
|
||||
class X(Structure):
|
|
@ -0,0 +1,106 @@
|
|||
diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst
|
||||
index 847b50140a6..570dc3ed6fe 100644
|
||||
--- a/Doc/whatsnew/3.6.rst
|
||||
+++ b/Doc/whatsnew/3.6.rst
|
||||
@@ -1852,10 +1852,10 @@ Build and C API Changes
|
||||
* The :c:func:`PyUnicode_FSConverter` and :c:func:`PyUnicode_FSDecoder`
|
||||
functions will now accept :term:`path-like objects <path-like object>`.
|
||||
|
||||
-* The ``PyExc_RecursionErrorInst`` singleton that was part of the public API
|
||||
- has been removed as its members being never cleared may cause a segfault
|
||||
- during finalization of the interpreter. Contributed by Xavier de Gaye in
|
||||
- :issue:`22898` and :issue:`30697`.
|
||||
+* The ``PyExc_RecursionErrorInst`` singleton is not used anymore as its members
|
||||
+ being never cleared may cause a segfault during finalization of the
|
||||
+ interpreter. Contributed by Xavier de Gaye in :issue:`22898` and
|
||||
+ :issue:`30697`.
|
||||
|
||||
|
||||
Other Improvements
|
||||
diff --git a/Include/pyerrors.h b/Include/pyerrors.h
|
||||
index c28c1373f82..8c1dbc5047b 100644
|
||||
--- a/Include/pyerrors.h
|
||||
+++ b/Include/pyerrors.h
|
||||
@@ -219,6 +219,8 @@ PyAPI_DATA(PyObject *) PyExc_IOError;
|
||||
PyAPI_DATA(PyObject *) PyExc_WindowsError;
|
||||
#endif
|
||||
|
||||
+PyAPI_DATA(PyObject *) PyExc_RecursionErrorInst;
|
||||
+
|
||||
/* Predefined warning categories */
|
||||
PyAPI_DATA(PyObject *) PyExc_Warning;
|
||||
PyAPI_DATA(PyObject *) PyExc_UserWarning;
|
||||
diff --git a/Misc/NEWS.d/next/C API/2017-12-20-15-23-06.bpo-30697.v9FmgG.rst b/Misc/NEWS.d/next/C API/2017-12-20-15-23-06.bpo-30697.v9FmgG.rst
|
||||
new file mode 100644
|
||||
index 00000000000..28f74ad4f30
|
||||
--- /dev/null
|
||||
+++ b/Misc/NEWS.d/next/C API/2017-12-20-15-23-06.bpo-30697.v9FmgG.rst
|
||||
@@ -0,0 +1 @@
|
||||
+Restore PyExc_RecursionErrorInst in 3.6
|
||||
diff --git a/Objects/exceptions.c b/Objects/exceptions.c
|
||||
index df4899372a5..271e293e325 100644
|
||||
--- a/Objects/exceptions.c
|
||||
+++ b/Objects/exceptions.c
|
||||
@@ -2430,6 +2430,12 @@ SimpleExtendsException(PyExc_Warning, ResourceWarning,
|
||||
|
||||
|
||||
|
||||
+/* Pre-computed RecursionError instance for when recursion depth is reached.
|
||||
+ Meant to be used when normalizing the exception for exceeding the recursion
|
||||
+ depth will cause its own infinite recursion.
|
||||
+*/
|
||||
+PyObject *PyExc_RecursionErrorInst = NULL;
|
||||
+
|
||||
#define PRE_INIT(TYPE) \
|
||||
if (!(_PyExc_ ## TYPE.tp_flags & Py_TPFLAGS_READY)) { \
|
||||
if (PyType_Ready(&_PyExc_ ## TYPE) < 0) \
|
||||
@@ -2691,11 +2697,37 @@ _PyExc_Init(PyObject *bltinmod)
|
||||
ADD_ERRNO(TimeoutError, ETIMEDOUT);
|
||||
|
||||
preallocate_memerrors();
|
||||
+
|
||||
+ if (!PyExc_RecursionErrorInst) {
|
||||
+ PyExc_RecursionErrorInst = BaseException_new(&_PyExc_RecursionError, NULL, NULL);
|
||||
+ if (!PyExc_RecursionErrorInst)
|
||||
+ Py_FatalError("Cannot pre-allocate RecursionError instance for "
|
||||
+ "recursion errors");
|
||||
+ else {
|
||||
+ PyBaseExceptionObject *err_inst =
|
||||
+ (PyBaseExceptionObject *)PyExc_RecursionErrorInst;
|
||||
+ PyObject *args_tuple;
|
||||
+ PyObject *exc_message;
|
||||
+ exc_message = PyUnicode_FromString("maximum recursion depth exceeded");
|
||||
+ if (!exc_message)
|
||||
+ Py_FatalError("cannot allocate argument for RecursionError "
|
||||
+ "pre-allocation");
|
||||
+ args_tuple = PyTuple_Pack(1, exc_message);
|
||||
+ if (!args_tuple)
|
||||
+ Py_FatalError("cannot allocate tuple for RecursionError "
|
||||
+ "pre-allocation");
|
||||
+ Py_DECREF(exc_message);
|
||||
+ if (BaseException_init(err_inst, args_tuple, NULL))
|
||||
+ Py_FatalError("init of pre-allocated RecursionError failed");
|
||||
+ Py_DECREF(args_tuple);
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
|
||||
void
|
||||
_PyExc_Fini(void)
|
||||
{
|
||||
+ Py_CLEAR(PyExc_RecursionErrorInst);
|
||||
free_preallocated_memerrors();
|
||||
Py_CLEAR(errnomap);
|
||||
}
|
||||
diff --git a/PC/python3.def b/PC/python3.def
|
||||
index 4fc4a6814ee..ff70718fc37 100644
|
||||
--- a/PC/python3.def
|
||||
+++ b/PC/python3.def
|
||||
@@ -224,6 +224,7 @@ EXPORTS
|
||||
PyExc_PermissionError=python36.PyExc_PermissionError DATA
|
||||
PyExc_ProcessLookupError=python36.PyExc_ProcessLookupError DATA
|
||||
PyExc_RecursionError=python36.PyExc_RecursionError DATA
|
||||
+ PyExc_RecursionErrorInst=python36.PyExc_RecursionErrorInst DATA
|
||||
PyExc_ReferenceError=python36.PyExc_ReferenceError DATA
|
||||
PyExc_ResourceWarning=python36.PyExc_ResourceWarning DATA
|
||||
PyExc_RuntimeError=python36.PyExc_RuntimeError DATA
|
|
@ -0,0 +1,104 @@
|
|||
From 5affd5c29eb1493cb31ef3cfdde15538ac134689 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
|
||||
Date: Tue, 13 Mar 2018 10:56:43 +0100
|
||||
Subject: [PATCH] bpo-32885: Tools/scripts/pathfix.py: Add -n option for no
|
||||
backup~ (#5772)
|
||||
|
||||
Creating backup files with ~ suffix can be undesirable in some environment,
|
||||
such as when building RPM packages. Instead of requiring the user to remove
|
||||
those files manually, option -n was added, that simply disables this feature.
|
||||
|
||||
-n was selected because 2to3 has the same option with this behavior.
|
||||
---
|
||||
Misc/ACKS | 1 +
|
||||
.../2018-02-20-12-16-47.bpo-32885.dL5x7C.rst | 2 ++
|
||||
Tools/scripts/pathfix.py | 28 +++++++++++++++-------
|
||||
3 files changed, 23 insertions(+), 8 deletions(-)
|
||||
create mode 100644 Misc/NEWS.d/next/Tools-Demos/2018-02-20-12-16-47.bpo-32885.dL5x7C.rst
|
||||
|
||||
diff --git a/Misc/ACKS b/Misc/ACKS
|
||||
index d8179c8b03ab..d752d8a35434 100644
|
||||
--- a/Misc/ACKS
|
||||
+++ b/Misc/ACKS
|
||||
@@ -687,6 +687,7 @@ Ken Howard
|
||||
Brad Howes
|
||||
Mike Hoy
|
||||
Ben Hoyt
|
||||
+Miro Hrončok
|
||||
Chiu-Hsiang Hsu
|
||||
Chih-Hao Huang
|
||||
Christian Hudon
|
||||
diff --git a/Misc/NEWS.d/next/Tools-Demos/2018-02-20-12-16-47.bpo-32885.dL5x7C.rst b/Misc/NEWS.d/next/Tools-Demos/2018-02-20-12-16-47.bpo-32885.dL5x7C.rst
|
||||
new file mode 100644
|
||||
index 000000000000..e003e1d84fd0
|
||||
--- /dev/null
|
||||
+++ b/Misc/NEWS.d/next/Tools-Demos/2018-02-20-12-16-47.bpo-32885.dL5x7C.rst
|
||||
@@ -0,0 +1,2 @@
|
||||
+Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disbale automatic
|
||||
+backup creation (files with ``~`` suffix).
|
||||
diff --git a/Tools/scripts/pathfix.py b/Tools/scripts/pathfix.py
|
||||
index 562bbc737812..c5bf984306a3 100755
|
||||
--- a/Tools/scripts/pathfix.py
|
||||
+++ b/Tools/scripts/pathfix.py
|
||||
@@ -7,8 +7,9 @@
|
||||
# Directories are searched recursively for files whose name looks
|
||||
# like a python module.
|
||||
# Symbolic links are always ignored (except as explicit directory
|
||||
-# arguments). Of course, the original file is kept as a back-up
|
||||
-# (with a "~" attached to its name).
|
||||
+# arguments).
|
||||
+# The original file is kept as a back-up (with a "~" attached to its name),
|
||||
+# -n flag can be used to disable this.
|
||||
#
|
||||
# Undoubtedly you can do this using find and sed or perl, but this is
|
||||
# a nice example of Python code that recurses down a directory tree
|
||||
@@ -31,14 +32,17 @@
|
||||
|
||||
new_interpreter = None
|
||||
preserve_timestamps = False
|
||||
+create_backup = True
|
||||
+
|
||||
|
||||
def main():
|
||||
global new_interpreter
|
||||
global preserve_timestamps
|
||||
- usage = ('usage: %s -i /interpreter -p file-or-directory ...\n' %
|
||||
+ global create_backup
|
||||
+ usage = ('usage: %s -i /interpreter -p -n file-or-directory ...\n' %
|
||||
sys.argv[0])
|
||||
try:
|
||||
- opts, args = getopt.getopt(sys.argv[1:], 'i:p')
|
||||
+ opts, args = getopt.getopt(sys.argv[1:], 'i:pn')
|
||||
except getopt.error as msg:
|
||||
err(str(msg) + '\n')
|
||||
err(usage)
|
||||
@@ -48,6 +52,8 @@ def main():
|
||||
new_interpreter = a.encode()
|
||||
if o == '-p':
|
||||
preserve_timestamps = True
|
||||
+ if o == '-n':
|
||||
+ create_backup = False
|
||||
if not new_interpreter or not new_interpreter.startswith(b'/') or \
|
||||
not args:
|
||||
err('-i option or file-or-directory missing\n')
|
||||
@@ -134,10 +140,16 @@ def fix(filename):
|
||||
except OSError as msg:
|
||||
err('%s: warning: chmod failed (%r)\n' % (tempname, msg))
|
||||
# Then make a backup of the original file as filename~
|
||||
- try:
|
||||
- os.rename(filename, filename + '~')
|
||||
- except OSError as msg:
|
||||
- err('%s: warning: backup failed (%r)\n' % (filename, msg))
|
||||
+ if create_backup:
|
||||
+ try:
|
||||
+ os.rename(filename, filename + '~')
|
||||
+ except OSError as msg:
|
||||
+ err('%s: warning: backup failed (%r)\n' % (filename, msg))
|
||||
+ else:
|
||||
+ try:
|
||||
+ os.remove(filename)
|
||||
+ except OSError as msg:
|
||||
+ err('%s: warning: removing failed (%r)\n' % (filename, msg))
|
||||
# Now move the temp file to the original file
|
||||
try:
|
||||
os.rename(tempname, filename)
|
|
@ -1,15 +1,14 @@
|
|||
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,16 @@ class UnixCCompiler(CCompiler):
|
||||
@@ -141,6 +141,15 @@ class UnixCCompiler(CCompiler):
|
||||
if sys.platform == "cygwin":
|
||||
exe_extension = ".exe"
|
||||
|
||||
+ def _fix_lib_args(self, libraries, library_dirs, runtime_library_dirs):
|
||||
+ """Remove standard library path from rpath"""
|
||||
+ libraries, library_dirs, runtime_library_dirs = super(
|
||||
+ self.__class__, self)._fix_lib_args(libraries, library_dirs,
|
||||
+ runtime_library_dirs)
|
||||
+ libraries, library_dirs, runtime_library_dirs = super()._fix_lib_args(
|
||||
+ libraries, library_dirs, runtime_library_dirs)
|
||||
+ libdir = sysconfig.get_config_var('LIBDIR')
|
||||
+ if runtime_library_dirs and (libdir in runtime_library_dirs):
|
||||
+ runtime_library_dirs.remove(libdir)
|
||||
|
|
|
@ -3,8 +3,23 @@
|
|||
# Python's compile_all module only works on directories, and requires a max
|
||||
# recursion depth
|
||||
|
||||
# Note that the py_byte_compile macro should work for python2 as well
|
||||
# Which unfortunately makes the definition more complicated than it should be
|
||||
# The condition should be reversed once /usr/bin/python is python3!
|
||||
|
||||
%py_byte_compile()\
|
||||
python_binary="%1"\
|
||||
bytecode_compilation_path="%2"\
|
||||
find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -O -c 'import py_compile, sys; [py_compile.compile(f, dfile=f.partition("$RPM_BUILD_ROOT")[2], optimize=opt) for opt in range(2) for f in sys.argv[1:]]' || :\
|
||||
py2_byte_compile () {\
|
||||
python_binary="%1"\
|
||||
bytecode_compilation_path="%2"\
|
||||
find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -c 'import py_compile, sys; [py_compile.compile(f, dfile=f.partition("$RPM_BUILD_ROOT")[2]) for f in sys.argv[1:]]' || :\
|
||||
find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -O -c 'import py_compile, sys; [py_compile.compile(f, dfile=f.partition("$RPM_BUILD_ROOT")[2]) for f in sys.argv[1:]]' || :\
|
||||
}\
|
||||
\
|
||||
py3_byte_compile () {\
|
||||
python_binary="%1"\
|
||||
bytecode_compilation_path="%2"\
|
||||
find $bytecode_compilation_path -type f -a -name "*.py" -print0 | xargs -0 $python_binary -O -c 'import py_compile, sys; [py_compile.compile(f, dfile=f.partition("$RPM_BUILD_ROOT")[2], optimize=opt) for opt in range(2) for f in sys.argv[1:]]' || :\
|
||||
}\
|
||||
\
|
||||
[[ "%1" == *python3* ]] || py2_byte_compile "%1" "%2" && py3_byte_compile "%1" "%2" \
|
||||
%{nil}
|
||||
|
|
|
@ -0,0 +1,64 @@
|
|||
# KNOWN BUGS:
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1489816
|
||||
addFilter(r'crypto-policy-non-compliance-openssl')
|
||||
|
||||
|
||||
# TESTS:
|
||||
addFilter(r'(zero-length|pem-certificate|uncompressed-zip) /usr/lib(64)?/python3.\d/test')
|
||||
|
||||
|
||||
# OTHER DELIBERATES:
|
||||
# chroot function
|
||||
addFilter(r'missing-call-to-chdir-with-chroot')
|
||||
|
||||
# intentionally unversioned and selfobsoleted
|
||||
addFilter(r'unversioned-explicit-obsoletes python')
|
||||
addFilter(r'self-obsoletion python3\d obsoletes python3\d')
|
||||
|
||||
# intentionally hardcoded
|
||||
addFilter(r'hardcoded-library-path in %{_prefix}/lib/(debug/%{_libdir}|python%{pybasever})')
|
||||
|
||||
# we have non binary stuff, python files
|
||||
addFilter(r'only-non-binary-in-usr-lib')
|
||||
|
||||
# some devel files that are deliberately needed
|
||||
addFilter(r'devel-file-in-non-devel-package /usr/include/python3\.\dm/pyconfig-(32|64)\.h')
|
||||
addFilter(r'devel-file-in-non-devel-package /usr/lib64/python3\.\d/distutils/tests/xxmodule\.c')
|
||||
|
||||
|
||||
# SORRY, NOT SORRY:
|
||||
# manual pages
|
||||
addFilter(r'no-manual-page-for-binary (idle|pydoc|pyvenv|2to3|python3-debug|pathfix\.py)')
|
||||
addFilter(r'no-manual-page-for-binary python3.*-config$')
|
||||
addFilter(r'no-manual-page-for-binary python3.\dd?m$')
|
||||
|
||||
# missing documentation from subpackages
|
||||
addFilter(r'^python3\d?-(debug|tkinter|test|idle)\.[^:]+: (E|W): no-documentation')
|
||||
|
||||
# platform python is obsoleted, but not provided
|
||||
addFilter(r'obsolete-not-provided platform-python')
|
||||
|
||||
|
||||
# RPMLINT IMPERFECTIONS:
|
||||
# ifarch applied patches are OK
|
||||
# https://fedoraproject.org/wiki/Packaging:Guidelines#Architecture_Support
|
||||
addFilter(r'%ifarch-applied-patch')
|
||||
|
||||
# debugsource
|
||||
addFilter(r'^python3\d?-debugsource\.[^:]+: (E|W): no-documentation')
|
||||
|
||||
# debuginfo
|
||||
addFilter(r'^python3\d?-debuginfo\.[^:]+: (E|W): useless-provides debuginfo\(build-id\)')
|
||||
|
||||
# debug package contains devel and non-devel files
|
||||
addFilter(r'python3\d?-debug.[^:]+: (E|W): (non-)?devel-file-in-(non-)?devel-package')
|
||||
|
||||
# this goes to other subpackage, hence not actually dangling, the read error is bogus
|
||||
addFilter(r'dangling-relative-symlink /usr/lib(64)?/pkgconfig/python-3\.\ddm\.pc python-3\.\d\.pc')
|
||||
addFilter(r'read-error /usr/lib(64)?/pkgconfig/python-3\.\ddm\.pc \[Errno 2\]')
|
||||
|
||||
# we need this macro to evaluate, even if the line starts with #
|
||||
addFilter(r'macro-in-comment %\{_pyconfig(32|64)_h\}')
|
||||
|
||||
# SPELLING ERRORS
|
||||
addFilter(r'spelling-error .* en_US (bytecode|pyc|filename|tkinter|namespaces|pytest) ')
|
260
python3.spec
260
python3.spec
|
@ -122,8 +122,10 @@
|
|||
# ==================
|
||||
Summary: Version 3 of the Python programming language aka Python 3000
|
||||
Name: python3
|
||||
Version: %{pybasever}.1
|
||||
Release: 3%{?dist}
|
||||
# WARNING When rebasing to a new Python version,
|
||||
# remember to update the python3-docs package as well
|
||||
Version: %{pybasever}.5
|
||||
Release: 1%{?dist}
|
||||
License: Python
|
||||
Group: Development/Languages
|
||||
|
||||
|
@ -138,7 +140,6 @@ BuildRequires: autoconf
|
|||
BuildRequires: bluez-libs-devel
|
||||
BuildRequires: bzip2
|
||||
BuildRequires: bzip2-devel
|
||||
BuildRequires: db4-devel >= 4.7
|
||||
|
||||
# expat 2.1.0 added the symbol XML_SetHashSalt without bumping SONAME. We use
|
||||
# it (in pyexpat) in order to enable the fix in Python-3.2.3 for CVE-2012-0876:
|
||||
|
@ -163,6 +164,7 @@ BuildRequires: readline-devel
|
|||
BuildRequires: sqlite-devel
|
||||
BuildRequires: desktop-file-utils
|
||||
BuildRequires: libappstream-glib
|
||||
BuildRequires: gdb
|
||||
|
||||
BuildRequires: systemtap-sdt-devel
|
||||
BuildRequires: systemtap-devel
|
||||
|
@ -184,10 +186,6 @@ BuildRequires: zlib-devel
|
|||
|
||||
%if 0%{?with_rewheel}
|
||||
BuildRequires: python3-setuptools
|
||||
BuildRequires: python3-six
|
||||
BuildRequires: python3-pyparsing
|
||||
BuildRequires: python3-appdirs
|
||||
BuildRequires: python3-packaging
|
||||
BuildRequires: python3-pip
|
||||
%endif
|
||||
|
||||
|
@ -405,37 +403,6 @@ Patch206: 00206-remove-hf-from-arm-triplet.patch
|
|||
# Fedora needs the default mips64-linux-gnu
|
||||
Patch243: 00243-fix-mips64-triplet.patch
|
||||
|
||||
# 00249 #
|
||||
# Fix builds using the --with-dtrace flag as the rpmbuild
|
||||
# of python is an out of tree build
|
||||
# Not yet fixed upstream: http://bugs.python.org/issue28787
|
||||
Patch249: 00249-fix-out-of-tree-dtrace-builds.patch
|
||||
|
||||
# 00252
|
||||
# Add executable option to install.py command to make it work for
|
||||
# scripts specified as an entry_points
|
||||
Patch252: 00252-add-executable-option.patch
|
||||
|
||||
# 00258 #
|
||||
# Kernel 4.9 introduced some changes to its crypto API
|
||||
# making test_aead_aes_gcm fail, so skipping the test for now
|
||||
# Reported upstream: http://bugs.python.org/issue29324
|
||||
Patch258: 00258-fix-test_aead_aes_gcm.patch
|
||||
|
||||
# 00260 #
|
||||
# setuptools from version 34.0.0 and onwards, unbundled its dependencies
|
||||
# and started requiring them so when rewheel mode is enabled we will have
|
||||
# to BuildRequire the new dependencies, in order for the virtualenv's to work properly
|
||||
# setuptools change: https://setuptools.readthedocs.io/en/latest/history.html#v34-0-0
|
||||
# Reported upstream: http://bugs.python.org/issue29523
|
||||
# https://github.com/python/cpython/pull/67
|
||||
Patch260: 00260-require-setuptools-dependencies.patch
|
||||
|
||||
# 00261 #
|
||||
# Use proper command line parsing in _testembed
|
||||
# Fixed upstream: http://bugs.python.org/issue24932
|
||||
Patch261: 00261-use-proper-command-line-parsing-in-_testembed.patch
|
||||
|
||||
# 00262 #
|
||||
# Backport of PEP 538: Coercing the legacy C locale to a UTF-8 based locale
|
||||
# https://www.python.org/dev/peps/pep-0538/
|
||||
|
@ -443,6 +410,18 @@ Patch261: 00261-use-proper-command-line-parsing-in-_testembed.patch
|
|||
# Original proposal: https://bugzilla.redhat.com/show_bug.cgi?id=1404918
|
||||
Patch262: 00262-pep538_coerce_legacy_c_locale.patch
|
||||
|
||||
# 00292 #
|
||||
# Restore the public PyExc_RecursionErrorInst symbol that was removed
|
||||
# from the 3.6.4 release upstream.
|
||||
# Reported upstream: https://bugs.python.org/issue30697
|
||||
Patch292: 00292-restore-PyExc_RecursionErrorInst-symbol.patch
|
||||
|
||||
# 00301 #
|
||||
# Tools/scripts/pathfix.py: Add -n option for no backup~
|
||||
# See: https://bugzilla.redhat.com/show_bug.cgi?id=1546990
|
||||
# Fixed upstream: https://bugs.python.org/issue32885
|
||||
Patch301: 00301-pathfix-add-n-option-for-no-backup.patch
|
||||
|
||||
# (New patches go here ^^^)
|
||||
#
|
||||
# When adding new patches to "python" and "python3" in Fedora, EL, etc.,
|
||||
|
@ -452,14 +431,6 @@ Patch262: 00262-pep538_coerce_legacy_c_locale.patch
|
|||
#
|
||||
# https://fedoraproject.org/wiki/SIGs/Python/PythonPatches
|
||||
|
||||
# 00264 #
|
||||
# test_pass_by_value was added in Python 3.6.1 and on aarch64
|
||||
# it is catching an error that was there, but wasn't tested before.
|
||||
# Therefore skipping the test on aarch64 until fixed upstream.
|
||||
# Reported upstream: http://bugs.python.org/issue29804
|
||||
Patch264: 00264-skip-test-failing-on-aarch64.patch
|
||||
|
||||
|
||||
# add correct arch for ppc64/ppc64le
|
||||
# it should be ppc64le-linux-gnu/ppc64-linux-gnu instead powerpc64le-linux-gnu/powerpc64-linux-gnu
|
||||
Patch5001: python3-powerppc-arch.patch
|
||||
|
@ -491,13 +462,24 @@ Requires: python3-pip
|
|||
%endif
|
||||
|
||||
%description
|
||||
Python 3 is a new version of the language that is incompatible with the 2.x
|
||||
line of releases. The language is mostly the same, but many details, especially
|
||||
how built-in objects like dictionaries and strings work, have changed
|
||||
considerably, and a lot of deprecated features have finally been removed.
|
||||
Python is an interpreted, interactive, object-oriented programming
|
||||
language often compared to Tcl, Perl, Scheme or Java. Python includes
|
||||
modules, classes, exceptions, very high level dynamic data types
|
||||
and dynamic typing. Python supports interfaces to many system calls and
|
||||
libraries, as well as to various windowing systems (X11, Motif, Tk,
|
||||
Mac and MFC).
|
||||
|
||||
Programmers can write new built-in modules for Python in C or C++.
|
||||
Python can be used as an extension language for applications that
|
||||
need a programmable interface.
|
||||
|
||||
Note that documentation for Python is provided in the python3-docs package.
|
||||
|
||||
This package provides the "python3" executable; most of the actual
|
||||
implementation is within the "python3-libs" and "system-python-libs" packages.
|
||||
|
||||
%package libs
|
||||
Summary: Python 3 runtime libraries
|
||||
Summary: Python runtime libraries
|
||||
Group: Development/Libraries
|
||||
# For Modularity purpose we need not to include the dist-tag int he dependency
|
||||
%if %(d="%{?dist}"; [ "${d#module-base-runtime-}x" != "${d}x" ] && echo 1 || echo 0)
|
||||
|
@ -515,7 +497,10 @@ Provides: python3-enum34 = 1.0.4-5%{?dist}
|
|||
Obsoletes: python3-enum34 < 1.0.4-5%{?dist}
|
||||
|
||||
%description libs
|
||||
This package contains files used to embed Python 3 into applications.
|
||||
This package contains runtime libraries for use by Python:
|
||||
- the libpython dynamic library, for use by applications that embed Python as
|
||||
a scripting language, and by the main "python3" executable
|
||||
- the Python standard library
|
||||
|
||||
%package -n system-python
|
||||
Summary: System Python executable
|
||||
|
@ -542,39 +527,53 @@ Requires: glibc%{?_isa} >= 2.24.90-26
|
|||
This package contains files used to embed System Python into applications.
|
||||
|
||||
%package devel
|
||||
Summary: Libraries and header files needed for Python 3 development
|
||||
Summary: Libraries and header files needed for Python development
|
||||
Group: Development/Libraries
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
|
||||
BuildRequires: python-rpm-macros
|
||||
Requires: python-rpm-macros
|
||||
Requires: python3-rpm-macros
|
||||
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1217376
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1496757
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1218294
|
||||
# TODO change to a specific subpackage once available (#1218294)
|
||||
Requires: redhat-rpm-config
|
||||
|
||||
Conflicts: %{name} < %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
This package contains libraries and header files used to build applications
|
||||
with and native libraries for Python 3
|
||||
The Python programming language's interpreter can be extended with
|
||||
dynamically loaded extensions and can be embedded in other programs.
|
||||
This package contains the header files and libraries needed to do
|
||||
these types of tasks.
|
||||
|
||||
Install python3-devel if you want to develop Python extensions. The
|
||||
python3 package will also need to be installed. You'll probably also
|
||||
want to install the python3-docs package, which contains Python
|
||||
documentation.
|
||||
|
||||
%package tools
|
||||
Summary: A collection of tools included with Python 3
|
||||
Summary: A collection of tools included with Python
|
||||
Group: Development/Tools
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: %{name}-tkinter = %{version}-%{release}
|
||||
|
||||
%description tools
|
||||
This package contains several tools included with Python 3
|
||||
This package contains several tools included with Python
|
||||
|
||||
%package tkinter
|
||||
Summary: A GUI toolkit for Python 3
|
||||
Summary: A GUI toolkit for Python
|
||||
Group: Development/Languages
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description tkinter
|
||||
The Tkinter (Tk interface) program is an graphical user interface for
|
||||
The Tkinter (Tk interface) program is a graphical user interface for
|
||||
the Python scripting language.
|
||||
|
||||
%package test
|
||||
Summary: The test modules from the main python 3 package
|
||||
Summary: The test modules from the main python3 package
|
||||
Group: Development/Languages
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: %{name}-tools = %{version}-%{release}
|
||||
|
@ -585,11 +584,11 @@ These are in a separate package to save space, as they are almost never used
|
|||
in production.
|
||||
|
||||
You might want to install the python3-test package if you're developing
|
||||
python 3 code that uses more than just unittest and/or test_support.py.
|
||||
python code that uses more than just unittest and/or test_support.py.
|
||||
|
||||
%if 0%{?with_debug_build}
|
||||
%package debug
|
||||
Summary: Debug version of the Python 3 runtime
|
||||
Summary: Debug version of the Python runtime
|
||||
Group: Applications/System
|
||||
|
||||
# The debug build is an all-in-one package version of the regular build, and
|
||||
|
@ -603,20 +602,20 @@ Requires: %{name}-tkinter%{?_isa} = %{version}-%{release}
|
|||
Requires: %{name}-tools%{?_isa} = %{version}-%{release}
|
||||
|
||||
%description debug
|
||||
python3-debug provides a version of the Python 3 runtime with numerous debugging
|
||||
python3-debug provides a version of the Python runtime with numerous debugging
|
||||
features enabled, aimed at advanced Python users, such as developers of Python
|
||||
extension modules.
|
||||
|
||||
This version uses more memory and will be slower than the regular Python 3 build,
|
||||
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 bytecodes are unchanged, so that .pyc files are compatible between the two
|
||||
versions of Python 3, but the debugging features mean that C/C++ extension
|
||||
versions of Python, but the debugging features mean that C/C++ extension
|
||||
modules are ABI-incompatible with those built for the standard runtime.
|
||||
|
||||
It shares installation directories with the standard Python 3 runtime, so that
|
||||
.py and .pyc files can be shared. All compiled extension modules gain a "_d"
|
||||
suffix ("foo_d.so" rather than "foo.so") so that each Python 3 implementation
|
||||
It shares installation directories with the standard Python runtime, so that
|
||||
.py and .pyc files can be shared. All compiled extension modules gain a "_d"
|
||||
suffix ("foo_d.so" rather than "foo.so") so that each Python implementation
|
||||
can load its own extensions.
|
||||
%endif # with_debug_build
|
||||
|
||||
|
@ -655,7 +654,7 @@ rm -r Modules/zlib || exit 1
|
|||
#done
|
||||
|
||||
%if 0%{with_rewheel}
|
||||
%global pip_version 9.0.1
|
||||
%global pip_version 9.0.3
|
||||
sed -r -i s/'_PIP_VERSION = "[0-9.]+"'/'_PIP_VERSION = "%{pip_version}"'/ Lib/ensurepip/__init__.py
|
||||
%endif
|
||||
|
||||
|
@ -693,16 +692,9 @@ sed -r -i s/'_PIP_VERSION = "[0-9.]+"'/'_PIP_VERSION = "%{pip_version}"'/ Lib/en
|
|||
%patch205 -p1
|
||||
%patch206 -p1
|
||||
%patch243 -p1
|
||||
%patch249 -p1
|
||||
%patch252 -p1
|
||||
%patch258 -p1
|
||||
%patch260 -p1
|
||||
%patch261 -p1
|
||||
%patch262 -p1
|
||||
|
||||
%ifarch aarch64
|
||||
%patch264 -p1
|
||||
%endif
|
||||
%patch292 -p1
|
||||
%patch301 -p1
|
||||
|
||||
# Currently (2010-01-15), http://docs.python.org/library is for 2.6, and there
|
||||
# are many differences between 2.6 and the Python 3 library.
|
||||
|
@ -728,7 +720,7 @@ export CPPFLAGS="`pkg-config --cflags-only-I libffi`"
|
|||
export OPT="$RPM_OPT_FLAGS -D_GNU_SOURCE -fPIC -fwrapv"
|
||||
export LINKCC="gcc"
|
||||
export CFLAGS="$CFLAGS `pkg-config --cflags openssl`"
|
||||
export LDFLAGS="$RPM_LD_FLAGS `pkg-config --libs-only-L openssl`"
|
||||
export LDFLAGS="$RPM_LD_FLAGS -g `pkg-config --libs-only-L openssl`"
|
||||
|
||||
|
||||
# Define a function, for how to perform a "build" of python for a given
|
||||
|
@ -760,6 +752,7 @@ BuildPython() {
|
|||
--with-system-ffi \
|
||||
--enable-loadable-sqlite-extensions \
|
||||
--with-dtrace \
|
||||
--with-lto \
|
||||
%if 0%{?with_systemtap}
|
||||
--with-systemtap \
|
||||
%endif
|
||||
|
@ -802,7 +795,11 @@ BuildPython debug \
|
|||
BuildPython optimized \
|
||||
python \
|
||||
python%{pybasever} \
|
||||
%ifarch %{ix86} x86_64
|
||||
"--without-ensurepip --enable-optimizations" \
|
||||
%else
|
||||
"--without-ensurepip" \
|
||||
%endif
|
||||
true
|
||||
|
||||
# ======================================================
|
||||
|
@ -972,8 +969,9 @@ sed -i -e "s/'pyconfig.h'/'%{_pyconfig_h}'/" \
|
|||
# Switch all shebangs to refer to the specific Python version.
|
||||
LD_LIBRARY_PATH=./build/optimized ./build/optimized/python \
|
||||
Tools/scripts/pathfix.py \
|
||||
-i "%{_bindir}/python%{pybasever}" \
|
||||
%{buildroot}
|
||||
-i "%{_bindir}/python%{pybasever}" -pn \
|
||||
%{buildroot} \
|
||||
%{?with_gdb_hooks:%{buildroot}$DirHoldingGdbPy/*.py}
|
||||
|
||||
# Remove shebang lines from .py files that aren't executable, and
|
||||
# remove executability from .py files that don't have a shebang line:
|
||||
|
@ -1155,7 +1153,7 @@ CheckPython() {
|
|||
# aarch64, see upstream bug http://bugs.python.org/issue21131
|
||||
WITHIN_PYTHON_RPM_BUILD= \
|
||||
LD_LIBRARY_PATH=$ConfDir $ConfDir/python -m test.regrtest \
|
||||
--verbose --findleaks \
|
||||
-wW --slowest --findleaks \
|
||||
-x test_distutils \
|
||||
%ifarch ppc64le aarch64
|
||||
-x test_faulthandler \
|
||||
|
@ -1402,7 +1400,7 @@ fi
|
|||
%{pylibdir}/distutils/__pycache__/*%{bytecode_suffixes}
|
||||
%{pylibdir}/distutils/README
|
||||
%{pylibdir}/distutils/command
|
||||
|
||||
%exclude %{pylibdir}/distutils/command/wininst-*.exe
|
||||
|
||||
%dir %{pylibdir}/email/
|
||||
%dir %{pylibdir}/email/__pycache__/
|
||||
|
@ -1467,6 +1465,7 @@ fi
|
|||
%defattr(-,root,root)
|
||||
%{pylibdir}/config-%{LDVERSION_optimized}-%{_arch}-linux%{_gnu}/*
|
||||
%exclude %{pylibdir}/config-%{LDVERSION_optimized}-%{_arch}-linux%{_gnu}/Makefile
|
||||
%{pylibdir}/distutils/command/wininst-*.exe
|
||||
%{_includedir}/python%{LDVERSION_optimized}/*.h
|
||||
%exclude %{_includedir}/python%{LDVERSION_optimized}/%{_pyconfig_h}
|
||||
%doc Misc/README.valgrind Misc/valgrind-python.supp Misc/gdbinit
|
||||
|
@ -1657,6 +1656,91 @@ fi
|
|||
# ======================================================
|
||||
|
||||
%changelog
|
||||
* Thu Mar 29 2018 Charalampos Stratakis <cstratak@redhat.com> - 3.6.5-1
|
||||
- Update to 3.6.5
|
||||
|
||||
* Sat Mar 24 2018 Miro Hrončok <mhroncok@redhat.com> - 3.6.4-6
|
||||
- Fix broken macro invocation and broken building of C Python extensions
|
||||
Resolves: rhbz#1560103
|
||||
|
||||
* Fri Mar 16 2018 Miro Hrončok <mhroncok@redhat.com> - 3.6.4-5
|
||||
- Add -n option for pathfix.py
|
||||
Resolves: rhbz#1546990
|
||||
|
||||
* Thu Mar 15 2018 Miro Hrončok <mhroncok@redhat.com> - 3.6.4-4
|
||||
- Fix the py_byte_compile macro to work on Python 2
|
||||
- Remove the pybytecompile macro file from the flat package
|
||||
Resolves: rhbz#1484993
|
||||
|
||||
* Tue Mar 13 2018 Charalampos Stratakis <cstratak@redhat.com> - 3.6.4-3
|
||||
- Do not send IP addresses in SNI TLS extension
|
||||
|
||||
* Tue Jan 23 2018 Charalampos Stratakis <cstratak@redhat.com> - 3.6.4-2
|
||||
- Restore the PyExc_RecursionErrorInst public symbol
|
||||
|
||||
* Mon Jan 15 2018 Charalampos Stratakis <cstratak@redhat.com> - 3.6.4-1
|
||||
- Update to version 3.6.4
|
||||
|
||||
* Mon Oct 09 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.6.3-2
|
||||
- Fix memory corruption due to allocator mix
|
||||
Resolves: rhbz#1498207
|
||||
|
||||
* Fri Oct 06 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.6.3-1
|
||||
- Update to Python 3.6.3
|
||||
|
||||
* Fri Sep 29 2017 Miro Hrončok <mhroncok@redhat.com> - 3.6.2-8
|
||||
- Make the -devel package require redhat-rpm-config
|
||||
Resolves: rhbz#1496757
|
||||
|
||||
* Wed Sep 06 2017 Iryna Shcherbina <ishcherb@redhat.com> - 3.6.2-7
|
||||
- Include `-g` in the flags sent to the linker (LDFLAGS)
|
||||
Resolves: rhbz#1483222
|
||||
|
||||
* Mon Aug 28 2017 Michal Cyprian <mcyprian@redhat.com> - 3.6.2-6
|
||||
- Use python3 style of calling super() without arguments in rpath
|
||||
patch to prevent recursion in UnixCCompiler subclasses
|
||||
Resolves: rhbz#1458122
|
||||
|
||||
* Fri Aug 11 2017 Michal Cyprian <mcyprian@redhat.com> - 3.6.2-5
|
||||
- Revert "Add --executable option to install.py command"
|
||||
This enhancement is currently not needed and it can possibly
|
||||
collide with `pip --editable`option
|
||||
|
||||
* Mon Aug 07 2017 Iryna Shcherbina <ishcherb@redhat.com> - 3.6.2-4
|
||||
- Fix the "urllib FTP protocol stream injection" vulnerability
|
||||
Resolves: rhbz#1478916
|
||||
|
||||
* Tue Aug 01 2017 Tomas Orsava <torsava@redhat.com> - 3.6.2-3
|
||||
- Dropped BuildRequires on db4-devel which was useful for Python 2 (module
|
||||
bsddb), however, no longer needod for Python 3
|
||||
- Tested building Python 3 with and without the dependency, all tests pass and
|
||||
filelists of resulting RPMs are identical
|
||||
|
||||
* Tue Jul 25 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.6.2-2
|
||||
- Make test_asyncio to not depend on the current SIGHUP signal handler.
|
||||
|
||||
* Tue Jul 18 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.6.2-1
|
||||
- Update to Python 3.6.2
|
||||
|
||||
* Tue Jun 27 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.6.1-8
|
||||
- Update to the latest upstream implementation of PEP 538
|
||||
|
||||
* Fri Jun 23 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.6.1-7
|
||||
- Fix test_alpn_protocols from test_ssl
|
||||
- Do not require rebundled setuptools dependencies
|
||||
|
||||
* Tue May 09 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.6.1-6
|
||||
- Enable profile guided optimizations for x86_64 and i686 architectures
|
||||
- Update to a newer implementation of PEP 538
|
||||
- Update description to reflect that Python 3 is now the default Python
|
||||
|
||||
* Fri May 05 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.6.1-5
|
||||
- Update PEP 538 to the latest upstream implementation
|
||||
|
||||
* Tue Apr 18 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.6.1-4
|
||||
- Enable link time optimizations
|
||||
- Move windows executables to the devel subpackage (rhbz#1426257)
|
||||
|
||||
* Thu Apr 13 2017 Tomas Orsava <torsava@redhat.com> - 3.6.1-3
|
||||
- Rename python3.Xdm-config script from -debug to be arch specific
|
||||
Resolves: rhbz#1179073
|
||||
|
@ -1664,16 +1748,16 @@ Resolves: rhbz#1179073
|
|||
* Wed Apr 05 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.6.1-2
|
||||
- Install the Makefile in its proper location (rhbz#1438219)
|
||||
|
||||
* Wed Mar 22 2017 Iryna Shcherbina <ishcherb@redhat.com> - 3.6.1-1
|
||||
* Mon Apr 03 2017 Iryna Shcherbina <ishcherb@redhat.com> - 3.6.1-1
|
||||
- Update to version 3.6.1 final
|
||||
|
||||
* Tue Mar 21 2017 Tomas Orsava <torsava@redhat.com> - 3.6.1-0.2.rc1
|
||||
- Fix syntax error in %%py_byte_compile macro (rhbz#1433569)
|
||||
|
||||
* Thu Mar 16 2017 Iryna Shcherbina <ishcherb@redaht.com> - 3.6.1-0.1.rc1
|
||||
* Mon Apr 03 2017 Iryna Shcherbina <ishcherb@redaht.com> - 3.6.1-0.1.rc1
|
||||
- Update to Python 3.6.1 release candidate 1
|
||||
- Add patch 264 to skip a known test failure on aarch64
|
||||
|
||||
* Tue Mar 21 2017 Tomas Orsava <torsava@redhat.com> - 3.6.0-22
|
||||
- Fix syntax error in %%py_byte_compile macro (rhbz#1433569)
|
||||
|
||||
* Fri Mar 10 2017 Charalampos Stratakis <cstratak@redhat.com> - 3.6.0-21
|
||||
- Use proper command line parsing in _testembed
|
||||
- Backport of PEP 538: Coercing the legacy C locale to a UTF-8 based locale
|
||||
|
|
2
sources
2
sources
|
@ -1 +1 @@
|
|||
SHA512 (Python-3.6.1.tar.xz) = 8605fb7019386fec227d4b06d06f00ae500a8a89df289bfe6141bb56196c75483a60cc0ee553930742b31cefce68add5ccf226e0f27b7b915f5026d597e1ac29
|
||||
SHA512 (Python-3.6.5.tar.xz) = 6b26fcd296b9bd8e67861eff10d14db7507711ddba947288d16d6def53135c39326b7f969c04bb2b2993f924d9e7ad3f5c5282a3915760bc0885cf0a8ea5eb51
|
||||
|
|
|
@ -1,25 +0,0 @@
|
|||
diff -up Python-3.4.0/Lib/test/test_asyncio/test_events.py.orig Python-3.4.0/Lib/test/test_asyncio/test_events.py
|
||||
--- Python-3.4.0/Lib/test/test_asyncio/test_events.py.orig 2014-04-15 13:18:49.696215288 +0200
|
||||
+++ Python-3.4.0/Lib/test/test_asyncio/test_events.py 2014-04-15 13:18:56.104258453 +0200
|
||||
@@ -1528,7 +1528,7 @@ class SubprocessTestsMixin:
|
||||
self.check_terminated(proto.returncode)
|
||||
transp.close()
|
||||
|
||||
- @unittest.skipIf(sys.platform == 'win32', "Don't have SIGHUP")
|
||||
+ @unittest.skipIf(True, "Temporarily skipped (rhbz#1088233)")
|
||||
def test_subprocess_send_signal(self):
|
||||
prog = os.path.join(os.path.dirname(__file__), 'echo.py')
|
||||
|
||||
|
||||
diff -up Python-3.4.0/Lib/test/test_asyncio/test_subprocess.py.orig Python-3.4.0/Lib/test/test_asyncio/test_subprocess.py
|
||||
--- Python-3.4.0/Lib/test/test_asyncio/test_subprocess.py.orig 2014-04-17 12:03:32.777827520 +0200
|
||||
+++ Python-3.4.0/Lib/test/test_asyncio/test_subprocess.py 2014-04-17 12:04:37.614210481 +0200
|
||||
@@ -108,7 +108,7 @@ class SubprocessMixin:
|
||||
else:
|
||||
self.assertEqual(-signal.SIGTERM, returncode)
|
||||
|
||||
- @unittest.skipIf(sys.platform == 'win32', "Don't have SIGHUP")
|
||||
+ @unittest.skipIf(True, "Temporarily skipped (rhbz#1088233)")
|
||||
def test_send_signal(self):
|
||||
code = 'import time; print("sleeping", flush=True); time.sleep(3600)'
|
||||
args = [sys.executable, '-c', code]
|
Loading…
Reference in New Issue