From a91ccfd104ca4d1592345637965f432321998dd647646d99773f59e1b384b6d9 Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Wed, 28 Jun 2023 20:08:16 +0000 Subject: [PATCH 1/2] - Update to 3.12.0b3: - gh-103142: The version of OpenSSL used in Windows and Mac installers has been upgraded to 1.1.1u to address CVE-2023-2650, CVE-2023-0465, CVE-2023-0466, CVE-2023-0464, as well as CVE-2023-0286, CVE-2022-4303, and CVE-2022-4303 fixed previously in 1.1.1t (gh-101727). - gh-102153: urllib.parse.urlsplit() now strips leading C0 control and space characters following the specification for URLs defined by WHATWG in response to CVE-2023-24329. - gh-99889: Fixed a security in flaw in uu.decode() that could allow for directory traversal based on the input if no out_file was specified. - gh-104049: Do not expose the local on-disk location in directory indexes produced by http.client.SimpleHTTPRequestHandler. - gh-103935: trace.__main__ now uses io.open_code() for files to be executed instead of raw open(). - gh-102953: The extraction methods in tarfile, and shutil.unpack_archive(), have a new filter argument that allows limiting tar features than may be surprising or dangerous, such as creating files outside the destination directory. See Extraction filters for details. - Remove upstreamed patches: - 00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python312?expand=0&rev=9 --- ...rf-map-test-harness-gh-104811-104823.patch | 43 ------------------- Python-3.12.0b1.tar.xz | 3 -- Python-3.12.0b1.tar.xz.asc | 18 -------- Python-3.12.0b3.tar.xz | 3 ++ Python-3.12.0b3.tar.xz.asc | 18 ++++++++ fix_configure_rst.patch | 16 +++---- python312.changes | 28 ++++++++++++ python312.spec | 6 +-- subprocess-raise-timeout.patch | 8 ++-- 9 files changed, 59 insertions(+), 84 deletions(-) delete mode 100644 00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch delete mode 100644 Python-3.12.0b1.tar.xz delete mode 100644 Python-3.12.0b1.tar.xz.asc create mode 100644 Python-3.12.0b3.tar.xz create mode 100644 Python-3.12.0b3.tar.xz.asc diff --git a/00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch b/00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch deleted file mode 100644 index c9994e5..0000000 --- a/00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Carl Meyer -Date: Tue, 23 May 2023 16:04:31 -0600 -Subject: [PATCH] 00398: fix stack overwrite on 32-bit in perf map test harness - (#104811) - ---- - Modules/_testinternalcapi.c | 13 +++++++++---- - 1 file changed, 9 insertions(+), 4 deletions(-) - -Index: Python-3.12.0b1/Modules/_testinternalcapi.c -=================================================================== ---- Python-3.12.0b1.orig/Modules/_testinternalcapi.c -+++ Python-3.12.0b1/Modules/_testinternalcapi.c -@@ -762,19 +762,24 @@ clear_extension(PyObject *self, PyObject - static PyObject * - write_perf_map_entry(PyObject *self, PyObject *args) - { -+ PyObject *code_addr_v; - const void *code_addr; - unsigned int code_size; - const char *entry_name; - -- if (!PyArg_ParseTuple(args, "KIs", &code_addr, &code_size, &entry_name)) -+ if (!PyArg_ParseTuple(args, "OIs", &code_addr_v, &code_size, &entry_name)) - return NULL; -+ code_addr = PyLong_AsVoidPtr(code_addr_v); -+ if (code_addr == NULL) { -+ return NULL; -+ } - - int ret = PyUnstable_WritePerfMapEntry(code_addr, code_size, entry_name); -- if (ret == -1) { -- PyErr_SetString(PyExc_OSError, "Failed to write performance map entry"); -+ if (ret < 0) { -+ PyErr_SetFromErrno(PyExc_OSError); - return NULL; - } -- return Py_BuildValue("i", ret); -+ return PyLong_FromLong(ret); - } - - static PyObject * diff --git a/Python-3.12.0b1.tar.xz b/Python-3.12.0b1.tar.xz deleted file mode 100644 index 1f2a155..0000000 --- a/Python-3.12.0b1.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ba76ca64acd745babdfb8467820964df98858ee6a9577bf1d93447257be581e -size 20053428 diff --git a/Python-3.12.0b1.tar.xz.asc b/Python-3.12.0b1.tar.xz.asc deleted file mode 100644 index f232f0f..0000000 --- a/Python-3.12.0b1.tar.xz.asc +++ /dev/null @@ -1,18 +0,0 @@ ------BEGIN PGP SIGNATURE----- - -iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmRrW0VfFIAAAAAALgAo -aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx -Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6 -YwUPOg/9GRDnAfe68z7VrKn8owGDL+YQe5Wfj9eDlAo1nG4ncozx2oDmq2k/VFXG -sKSMzatc+K08awmd48w0lCX+GV0EwlOWcTzmFiXliw0UNQ0lfG+Dj8QidGO/CcRQ -U2JUqpyohwJnONjcxB2aIfa0VXKrNY9cAvJGiqwxq+sn4fDrOOKEANOgxisSD2ia -MlU1rYIwDoqC+shLQyv6Dq8WkPsKLYEtHaymT6i7oWcq2+1SZexNkRPdVvC0BGbz -XVCNRq3NsSDxSJLYfmw5METwJ/ZEHPQ3G8VqktLZ61A5foq6Zk08xBYgA3qVstrU -Nrd33qxMZNPlaZFNAlg07FTqlHd056zL/XeYVEu+/J51xiY0aP+XtpEJHsJLcxMP -nBSySwO11SOaMW+1lM6/ylkGmo2N62VrYwfT05t3t5PP5Cz71G5D+lLchcnvbGEu -edeABX5GNcwMvoJL+Dkk4d8kuDiA3UEyytoefko06Qri1wThAdONXRxE9dG0AoNg -VzeD1v7ld2cJ0Of9/ArdJFjNo7LBa9kpE0/Rmn18YbRJZSI/pbRmLvHkqVmpKBTU -rk5sK+wFb5VoXEY3MziClmydQW3UybYk/Eybq0ea+9cpkCWKemVSHCC5t9TX/X35 -d4rc2SRAkdgP7a/2V/ZK10lXmq6bCGvdXce8Qd3g14Bq9mBk5cI= -=3HQL ------END PGP SIGNATURE----- diff --git a/Python-3.12.0b3.tar.xz b/Python-3.12.0b3.tar.xz new file mode 100644 index 0000000..4120d16 --- /dev/null +++ b/Python-3.12.0b3.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9160c6065e9885b37c2e57865d0bb27fc7e54aaa9c186c761da30d2bddbcc9ee +size 20220780 diff --git a/Python-3.12.0b3.tar.xz.asc b/Python-3.12.0b3.tar.xz.asc new file mode 100644 index 0000000..20c2343 --- /dev/null +++ b/Python-3.12.0b3.tar.xz.asc @@ -0,0 +1,18 @@ +-----BEGIN PGP SIGNATURE----- + +iQKTBAABCgB9FiEEcWlgX2LHUTVtBUomqCHmgOX6YwUFAmSQpQZfFIAAAAAALgAo +aXNzdWVyLWZwckBub3RhdGlvbnMub3BlbnBncC5maWZ0aGhvcnNlbWFuLm5ldDcx +Njk2MDVGNjJDNzUxMzU2RDA1NEEyNkE4MjFFNjgwRTVGQTYzMDUACgkQqCHmgOX6 +YwWidw/+Knq6IbctodaIGoNp+s3OnMGqLJ9SHRLxwbNlI4DK5sym0pWVX+VNgJFT +FPCUG6KCO2B46CfrppoMuy+O0WoYskdlYZWjqxEDcSjgB9SgmRAmH34uaQkvpfDa +j8SeL+W+HmmqovjWn2+sroaHJ9TaVgDqaosn8xFUHRsoNwWQvaxn7tYD0WytxhtT +kMM8SEde5A9l1opwmq9Hl6e3FGjbX+zu0AkmAEuH+9fcT3aFCpwjjrljeiHoISdS +LcrrBP80GC1uoRiqJaMeLweCZxEmPwU6AtUffEkzFp8tE6tLAGVQ8HfkWnFGJdEi +/OsJ2dDuh/UFrwOdotmAcJ5Z/rRzfMm1EbH1++YVu07QV4V8vcVNSWPEZhhb/olQ +NppgFVv7LMfY6dVdYMjGGdxFsYLdtAelnvCXBzvoSW5zDVNgaGJN79RfCqnJmqAX +dgSSoAW5q55MDM61DAj5Yb0QKpS9P21qyL7Utg1BFxKF7KIZ7VmwfmW44epiPi8i +EEc1dtvJCvVux6JGKGhaG06pVPUKh57sMhDN8GqMScCPV3wxS+KMF/SWP/csVKxy +nJpfqS1npVjsZuLSw/8R4s7yOfRZAQfkzH28NeHRn0BNfCJAUN6PS1AKDdqISkwv +9vYZADkJvJ6vLGYX21D5WfBoh+rIq2sB9pK+glEjQ3jfR1UOu94= +=/noy +-----END PGP SIGNATURE----- diff --git a/fix_configure_rst.patch b/fix_configure_rst.patch index 71c8fc7..4d83543 100644 --- a/fix_configure_rst.patch +++ b/fix_configure_rst.patch @@ -3,10 +3,8 @@ Misc/NEWS | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) -Index: Python-3.12.0b1/Doc/using/configure.rst -=================================================================== ---- Python-3.12.0b1.orig/Doc/using/configure.rst -+++ Python-3.12.0b1/Doc/using/configure.rst +--- a/Doc/using/configure.rst ++++ b/Doc/using/configure.rst @@ -599,13 +599,11 @@ macOS Options See ``Mac/README.rst``. @@ -21,14 +19,12 @@ Index: Python-3.12.0b1/Doc/using/configure.rst .. cmdoption:: --enable-framework=INSTALLDIR Create a Python.framework rather than a traditional Unix install. Optional -Index: Python-3.12.0b1/Misc/NEWS -=================================================================== ---- Python-3.12.0b1.orig/Misc/NEWS -+++ Python-3.12.0b1/Misc/NEWS -@@ -10780,7 +10780,7 @@ C API +--- a/Misc/NEWS ++++ b/Misc/NEWS +@@ -11173,7 +11173,7 @@ C API - bpo-40939: Removed documentation for the removed ``PyParser_*`` C API. - - bpo-43795: The list in :ref:`stable-abi-list` now shows the public name + - bpo-43795: The list in :ref:`limited-api-list` now shows the public name - :c:struct:`PyFrameObject` rather than ``_frame``. The non-existing entry + :c:type:`PyFrameObject` rather than ``_frame``. The non-existing entry ``_node`` no longer appears in the list. diff --git a/python312.changes b/python312.changes index 930d174..807887c 100644 --- a/python312.changes +++ b/python312.changes @@ -1,3 +1,31 @@ +------------------------------------------------------------------- +Wed Jun 28 19:59:03 UTC 2023 - Matej Cepl + +- Update to 3.12.0b3: + - gh-103142: The version of OpenSSL used in Windows and + Mac installers has been upgraded to 1.1.1u to address + CVE-2023-2650, CVE-2023-0465, CVE-2023-0466, CVE-2023-0464, + as well as CVE-2023-0286, CVE-2022-4303, and CVE-2022-4303 + fixed previously in 1.1.1t (gh-101727). + - gh-102153: urllib.parse.urlsplit() now strips leading C0 + control and space characters following the specification for + URLs defined by WHATWG in response to CVE-2023-24329. + - gh-99889: Fixed a security in flaw in uu.decode() that could + allow for directory traversal based on the input if no + out_file was specified. + - gh-104049: Do not expose the local on-disk + location in directory indexes produced by + http.client.SimpleHTTPRequestHandler. + - gh-103935: trace.__main__ now uses io.open_code() for files + to be executed instead of raw open(). + - gh-102953: The extraction methods in tarfile, and + shutil.unpack_archive(), have a new filter argument that + allows limiting tar features than may be surprising or + dangerous, such as creating files outside the destination + directory. See Extraction filters for details. +- Remove upstreamed patches: + - 00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch + ------------------------------------------------------------------- Thu Jun 1 11:42:58 UTC 2023 - Daniel Garcia diff --git a/python312.spec b/python312.spec index 308ce8e..5ce973c 100644 --- a/python312.spec +++ b/python312.spec @@ -105,7 +105,7 @@ %define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so %bcond_without profileopt Name: %{python_pkg_name}%{psuffix} -Version: 3.12.0b1 +Version: 3.12.0b3 Release: 0 Summary: Python 3 Interpreter License: Python-2.0 @@ -162,9 +162,6 @@ Patch34: skip-test_pyobject_freed_is_freed.patch # PATCH-FIX-SLE fix_configure_rst.patch bpo#43774 mcepl@suse.com # remove duplicate link targets and make documentation with old Sphinx in SLE Patch35: fix_configure_rst.patch -# PATCH-FIX-UPSTREAM 00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch -- gh#python/cpython#104811 -# fix stack overwrite on 32-bit in perf map test harness -Patch36: 00398-fix-stack-overwrite-on-32-bit-in-perf-map-test-harness-gh-104811-104823.patch BuildRequires: autoconf-archive BuildRequires: automake @@ -434,7 +431,6 @@ other applications. %patch34 -p1 %endif %patch35 -p1 -%patch36 -p1 # drop Autoconf version requirement sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac diff --git a/subprocess-raise-timeout.patch b/subprocess-raise-timeout.patch index 040a5ec..b984fc4 100644 --- a/subprocess-raise-timeout.patch +++ b/subprocess-raise-timeout.patch @@ -2,11 +2,9 @@ Lib/test/test_subprocess.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -Index: Python-3.12.0b1/Lib/test/test_subprocess.py -=================================================================== ---- Python-3.12.0b1.orig/Lib/test/test_subprocess.py -+++ Python-3.12.0b1/Lib/test/test_subprocess.py -@@ -279,7 +279,8 @@ class ProcessTestCase(BaseTestCase): +--- a/Lib/test/test_subprocess.py ++++ b/Lib/test/test_subprocess.py +@@ -280,7 +280,8 @@ class ProcessTestCase(BaseTestCase): "time.sleep(3600)"], # Some heavily loaded buildbots (sparc Debian 3.x) require # this much time to start and print. From cde4f6d8a6bdb51ee11f8bc507e12d926df7087ce45152ec096c8e89ebe73867 Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Wed, 28 Jun 2023 20:21:39 +0000 Subject: [PATCH 2/2] Fix patches OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python312?expand=0&rev=10 --- no-skipif-doctests.patch | 178 +++++++++++++++++++-------------------- python312.spec | 8 +- 2 files changed, 93 insertions(+), 93 deletions(-) diff --git a/no-skipif-doctests.patch b/no-skipif-doctests.patch index bcd9c4a..92e1ec8 100644 --- a/no-skipif-doctests.patch +++ b/no-skipif-doctests.patch @@ -6,7 +6,7 @@ unchanged: --- a/Doc/library/turtle.rst +++ b/Doc/library/turtle.rst -@@ -250,7 +250,6 @@ Turtle motion +@@ -251,7 +251,6 @@ Turtle motion turtle is headed. .. doctest:: @@ -14,7 +14,7 @@ unchanged: >>> turtle.position() (0.00,0.00) -@@ -277,7 +276,6 @@ Turtle motion +@@ -278,7 +277,6 @@ Turtle motion >>> turtle.goto(0, 0) .. doctest:: @@ -22,7 +22,7 @@ unchanged: >>> turtle.position() (0.00,0.00) -@@ -296,13 +294,11 @@ Turtle motion +@@ -297,13 +295,11 @@ Turtle motion orientation depends on the turtle mode, see :func:`mode`. .. doctest:: @@ -36,7 +36,7 @@ unchanged: >>> turtle.heading() 22.0 -@@ -321,13 +317,11 @@ Turtle motion +@@ -322,13 +318,11 @@ Turtle motion orientation depends on the turtle mode, see :func:`mode`. .. doctest:: @@ -50,7 +50,7 @@ unchanged: >>> turtle.heading() 22.0 -@@ -350,13 +344,11 @@ Turtle motion +@@ -351,13 +345,11 @@ Turtle motion not change the turtle's orientation. .. doctest:: @@ -62,9 +62,9 @@ unchanged: .. doctest:: - :skipif: _tkinter is None - >>> tp = turtle.pos() - >>> tp -@@ -380,13 +372,11 @@ Turtle motion + >>> tp = turtle.pos() + >>> tp +@@ -419,13 +411,11 @@ Turtle motion unchanged. .. doctest:: @@ -78,7 +78,7 @@ unchanged: >>> turtle.position() (0.00,240.00) -@@ -402,13 +392,11 @@ Turtle motion +@@ -441,13 +431,11 @@ Turtle motion Set the turtle's second coordinate to *y*, leave first coordinate unchanged. .. doctest:: @@ -92,7 +92,7 @@ unchanged: >>> turtle.position() (0.00,40.00) -@@ -435,7 +423,6 @@ Turtle motion +@@ -474,7 +462,6 @@ Turtle motion =================== ==================== .. doctest:: @@ -100,7 +100,7 @@ unchanged: >>> turtle.setheading(90) >>> turtle.heading() -@@ -448,14 +435,12 @@ Turtle motion +@@ -487,14 +474,12 @@ Turtle motion its start-orientation (which depends on the mode, see :func:`mode`). .. doctest:: @@ -115,7 +115,7 @@ unchanged: >>> turtle.heading() 90.0 -@@ -487,7 +472,6 @@ Turtle motion +@@ -526,7 +511,6 @@ Turtle motion calculated automatically. May be used to draw regular polygons. .. doctest:: @@ -123,7 +123,7 @@ unchanged: >>> turtle.home() >>> turtle.position() -@@ -516,7 +500,6 @@ Turtle motion +@@ -555,7 +539,6 @@ Turtle motion .. doctest:: @@ -131,15 +131,15 @@ unchanged: >>> turtle.home() >>> turtle.dot() -@@ -534,7 +517,6 @@ Turtle motion +@@ -573,7 +556,6 @@ Turtle motion it by calling ``clearstamp(stamp_id)``. .. doctest:: - :skipif: _tkinter is None >>> turtle.color("blue") - >>> turtle.stamp() -@@ -550,7 +532,6 @@ Turtle motion + >>> stamp_id = turtle.stamp() +@@ -588,7 +570,6 @@ Turtle motion Delete stamp with given *stampid*. .. doctest:: @@ -147,7 +147,7 @@ unchanged: >>> turtle.position() (150.00,-0.00) -@@ -595,7 +576,6 @@ Turtle motion +@@ -626,7 +607,6 @@ Turtle motion undo actions is determined by the size of the undobuffer. .. doctest:: @@ -155,7 +155,7 @@ unchanged: >>> for i in range(4): ... turtle.fd(50); turtle.lt(80) -@@ -628,7 +608,6 @@ Turtle motion +@@ -659,7 +639,6 @@ Turtle motion turtle turn instantly. .. doctest:: @@ -163,7 +163,7 @@ unchanged: >>> turtle.speed() 3 -@@ -649,7 +628,6 @@ Tell Turtle's state +@@ -680,7 +659,6 @@ Tell Turtle's state Return the turtle's current location (x,y) (as a :class:`Vec2D` vector). .. doctest:: @@ -171,7 +171,7 @@ unchanged: >>> turtle.pos() (440.00,-0.00) -@@ -665,7 +643,6 @@ Tell Turtle's state +@@ -696,7 +674,6 @@ Tell Turtle's state orientation which depends on the mode - "standard"/"world" or "logo". .. doctest:: @@ -179,7 +179,7 @@ unchanged: >>> turtle.goto(10, 10) >>> turtle.towards(0,0) -@@ -677,7 +654,6 @@ Tell Turtle's state +@@ -708,7 +685,6 @@ Tell Turtle's state Return the turtle's x coordinate. .. doctest:: @@ -187,7 +187,7 @@ unchanged: >>> turtle.home() >>> turtle.left(50) -@@ -693,7 +669,6 @@ Tell Turtle's state +@@ -724,7 +700,6 @@ Tell Turtle's state Return the turtle's y coordinate. .. doctest:: @@ -195,7 +195,7 @@ unchanged: >>> turtle.home() >>> turtle.left(60) -@@ -710,7 +685,6 @@ Tell Turtle's state +@@ -741,7 +716,6 @@ Tell Turtle's state :func:`mode`). .. doctest:: @@ -203,7 +203,7 @@ unchanged: >>> turtle.home() >>> turtle.left(67) -@@ -727,7 +701,6 @@ Tell Turtle's state +@@ -758,7 +732,6 @@ Tell Turtle's state other turtle, in turtle step units. .. doctest:: @@ -211,7 +211,7 @@ unchanged: >>> turtle.home() >>> turtle.distance(30,40) -@@ -751,7 +724,6 @@ Settings for measurement +@@ -782,7 +755,6 @@ Settings for measurement Default value is 360 degrees. .. doctest:: @@ -219,7 +219,7 @@ unchanged: >>> turtle.home() >>> turtle.left(90) -@@ -774,7 +746,6 @@ Settings for measurement +@@ -805,7 +777,6 @@ Settings for measurement ``degrees(2*math.pi)``. .. doctest:: @@ -227,7 +227,7 @@ unchanged: >>> turtle.home() >>> turtle.left(90) -@@ -785,7 +756,6 @@ Settings for measurement +@@ -816,7 +787,6 @@ Settings for measurement 1.5707963267948966 .. doctest:: @@ -235,7 +235,7 @@ unchanged: :hide: >>> turtle.degrees(360) -@@ -821,7 +791,6 @@ Drawing state +@@ -852,7 +822,6 @@ Drawing state thickness. If no argument is given, the current pensize is returned. .. doctest:: @@ -243,7 +243,7 @@ unchanged: >>> turtle.pensize() 1 -@@ -853,7 +822,6 @@ Drawing state +@@ -884,7 +853,6 @@ Drawing state attributes in one statement. .. doctest:: @@ -251,7 +251,7 @@ unchanged: :options: +NORMALIZE_WHITESPACE >>> turtle.pen(fillcolor="black", pencolor="red", pensize=10) -@@ -876,7 +844,6 @@ Drawing state +@@ -907,7 +875,6 @@ Drawing state Return ``True`` if pen is down, ``False`` if it's up. .. doctest:: @@ -259,31 +259,31 @@ unchanged: >>> turtle.penup() >>> turtle.isdown() -@@ -917,7 +884,6 @@ Color control +@@ -948,7 +915,6 @@ Color control newly set pencolor. .. doctest:: - :skipif: _tkinter is None - >>> colormode() - 1.0 -@@ -966,7 +932,6 @@ Color control + >>> colormode() + 1.0 +@@ -997,7 +963,6 @@ Color control with the newly set fillcolor. .. doctest:: - :skipif: _tkinter is None - >>> turtle.fillcolor("violet") - >>> turtle.fillcolor() -@@ -1005,7 +970,6 @@ Color control + >>> turtle.fillcolor("violet") + >>> turtle.fillcolor() +@@ -1036,7 +1001,6 @@ Color control with the newly set colors. .. doctest:: - :skipif: _tkinter is None - >>> turtle.color("red", "green") - >>> turtle.color() -@@ -1022,7 +986,6 @@ Filling + >>> turtle.color("red", "green") + >>> turtle.color() +@@ -1053,7 +1017,6 @@ Filling ~~~~~~~ .. doctest:: @@ -291,15 +291,15 @@ unchanged: :hide: >>> turtle.home() -@@ -1032,7 +995,6 @@ Filling +@@ -1063,7 +1026,6 @@ Filling Return fillstate (``True`` if filling, ``False`` else). .. doctest:: - :skipif: _tkinter is None - >>> turtle.begin_fill() - >>> if turtle.filling(): -@@ -1057,7 +1019,6 @@ Filling + >>> turtle.begin_fill() + >>> if turtle.filling(): +@@ -1088,7 +1050,6 @@ Filling above may be either all yellow or have some white regions. .. doctest:: @@ -307,7 +307,7 @@ unchanged: >>> turtle.color("black", "red") >>> turtle.begin_fill() -@@ -1074,7 +1035,6 @@ More drawing control +@@ -1105,7 +1066,6 @@ More drawing control variables to the default values. .. doctest:: @@ -315,7 +315,7 @@ unchanged: >>> turtle.goto(0,-22) >>> turtle.left(100) -@@ -1125,7 +1085,6 @@ Visibility +@@ -1156,7 +1116,6 @@ Visibility drawing observably. .. doctest:: @@ -323,7 +323,7 @@ unchanged: >>> turtle.hideturtle() -@@ -1136,7 +1095,6 @@ Visibility +@@ -1167,7 +1126,6 @@ Visibility Make the turtle visible. .. doctest:: @@ -331,7 +331,7 @@ unchanged: >>> turtle.showturtle() -@@ -1167,7 +1125,6 @@ Appearance +@@ -1198,7 +1156,6 @@ Appearance deal with shapes see Screen method :func:`register_shape`. .. doctest:: @@ -339,7 +339,7 @@ unchanged: >>> turtle.shape() 'classic' -@@ -1193,7 +1150,6 @@ Appearance +@@ -1224,7 +1181,6 @@ Appearance ``resizemode("user")`` is called by :func:`shapesize` when used with arguments. .. doctest:: @@ -347,23 +347,23 @@ unchanged: >>> turtle.resizemode() 'noresize' -@@ -1217,7 +1173,6 @@ Appearance - of the shapes's outline. +@@ -1248,7 +1204,6 @@ Appearance + of the shape's outline. .. doctest:: - :skipif: _tkinter is None >>> turtle.shapesize() (1.0, 1.0, 1) -@@ -1242,7 +1197,6 @@ Appearance +@@ -1273,7 +1228,6 @@ Appearance heading of the turtle are sheared. .. doctest:: - :skipif: _tkinter is None - >>> turtle.shape("circle") - >>> turtle.shapesize(5,2) -@@ -1259,7 +1213,6 @@ Appearance + >>> turtle.shape("circle") + >>> turtle.shapesize(5,2) +@@ -1290,7 +1244,6 @@ Appearance change the turtle's heading (direction of movement). .. doctest:: @@ -371,7 +371,7 @@ unchanged: >>> turtle.reset() >>> turtle.shape("circle") -@@ -1305,7 +1258,6 @@ Appearance +@@ -1336,7 +1289,6 @@ Appearance turtle (its direction of movement). .. doctest:: @@ -379,7 +379,7 @@ unchanged: >>> turtle.reset() >>> turtle.shape("circle") -@@ -1334,7 +1286,6 @@ Appearance +@@ -1365,7 +1317,6 @@ Appearance given matrix. .. doctest:: @@ -387,7 +387,7 @@ unchanged: >>> turtle = Turtle() >>> turtle.shape("square") -@@ -1350,7 +1301,6 @@ Appearance +@@ -1381,7 +1332,6 @@ Appearance can be used to define a new shape or components of a compound shape. .. doctest:: @@ -395,7 +395,7 @@ unchanged: >>> turtle.shape("square") >>> turtle.shapetransform(4, -1, 0, 2) -@@ -1375,7 +1325,6 @@ Using events +@@ -1406,7 +1356,6 @@ Using events procedural way: .. doctest:: @@ -403,7 +403,7 @@ unchanged: >>> def turn(x, y): ... left(180) -@@ -1396,7 +1345,6 @@ Using events +@@ -1427,7 +1376,6 @@ Using events ``None``, existing bindings are removed. .. doctest:: @@ -411,7 +411,7 @@ unchanged: >>> class MyTurtle(Turtle): ... def glow(self,x,y): -@@ -1424,7 +1372,6 @@ Using events +@@ -1455,7 +1403,6 @@ Using events mouse-click event on that turtle. .. doctest:: @@ -419,7 +419,7 @@ unchanged: >>> turtle.ondrag(turtle.goto) -@@ -1452,7 +1399,6 @@ Special Turtle methods +@@ -1483,7 +1430,6 @@ Special Turtle methods Return the last recorded polygon. .. doctest:: @@ -427,7 +427,7 @@ unchanged: >>> turtle.home() >>> turtle.begin_poly() -@@ -1472,7 +1418,6 @@ Special Turtle methods +@@ -1503,7 +1449,6 @@ Special Turtle methods turtle properties. .. doctest:: @@ -435,7 +435,7 @@ unchanged: >>> mick = Turtle() >>> joe = mick.clone() -@@ -1485,7 +1430,6 @@ Special Turtle methods +@@ -1516,7 +1461,6 @@ Special Turtle methods return the "anonymous turtle": .. doctest:: @@ -443,7 +443,7 @@ unchanged: >>> pet = getturtle() >>> pet.fd(50) -@@ -1499,7 +1443,6 @@ Special Turtle methods +@@ -1530,7 +1474,6 @@ Special Turtle methods TurtleScreen methods can then be called for that object. .. doctest:: @@ -451,7 +451,7 @@ unchanged: >>> ts = turtle.getscreen() >>> ts -@@ -1517,7 +1460,6 @@ Special Turtle methods +@@ -1548,7 +1491,6 @@ Special Turtle methods ``None``, the undobuffer is disabled. .. doctest:: @@ -459,7 +459,7 @@ unchanged: >>> turtle.setundobuffer(42) -@@ -1527,7 +1469,6 @@ Special Turtle methods +@@ -1558,7 +1500,6 @@ Special Turtle methods Return number of entries in the undobuffer. .. doctest:: @@ -467,7 +467,7 @@ unchanged: >>> while undobufferentries(): ... undo() -@@ -1550,7 +1491,6 @@ below: +@@ -1581,7 +1522,6 @@ below: For example: .. doctest:: @@ -475,7 +475,7 @@ unchanged: >>> s = Shape("compound") >>> poly1 = ((0,0),(10,-5),(0,10),(-10,-5)) -@@ -1561,7 +1501,6 @@ below: +@@ -1592,7 +1532,6 @@ below: 3. Now add the Shape to the Screen's shapelist and use it: .. doctest:: @@ -483,7 +483,7 @@ unchanged: >>> register_shape("myshape", s) >>> shape("myshape") -@@ -1581,7 +1520,6 @@ Most of the examples in this section ref +@@ -1612,7 +1551,6 @@ Most of the examples in this section ref ``screen``. .. doctest:: @@ -491,7 +491,7 @@ unchanged: :hide: >>> screen = Screen() -@@ -1598,7 +1536,6 @@ Window control +@@ -1629,7 +1567,6 @@ Window control Set or return background color of the TurtleScreen. .. doctest:: @@ -499,7 +499,7 @@ unchanged: >>> screen.bgcolor("orange") >>> screen.bgcolor() -@@ -1690,7 +1627,6 @@ Window control +@@ -1721,7 +1658,6 @@ Window control distorted. .. doctest:: @@ -507,7 +507,7 @@ unchanged: >>> screen.reset() >>> screen.setworldcoordinates(-50,-7.5,50,7.5) -@@ -1701,7 +1637,6 @@ Window control +@@ -1732,7 +1668,6 @@ Window control ... left(45); fd(2) # a regular octagon .. doctest:: @@ -515,7 +515,7 @@ unchanged: :hide: >>> screen.reset() -@@ -1723,7 +1658,6 @@ Animation control +@@ -1754,7 +1689,6 @@ Animation control Optional argument: .. doctest:: @@ -523,7 +523,7 @@ unchanged: >>> screen.delay() 10 -@@ -1745,7 +1679,6 @@ Animation control +@@ -1776,7 +1710,6 @@ Animation control :func:`delay`). .. doctest:: @@ -531,7 +531,7 @@ unchanged: >>> screen.tracer(8, 25) >>> dist = 2 -@@ -1782,7 +1715,6 @@ Using screen events +@@ -1813,7 +1746,6 @@ Using screen events must have the focus. (See method :func:`listen`.) .. doctest:: @@ -539,7 +539,7 @@ unchanged: >>> def f(): ... fd(50) -@@ -1803,7 +1735,6 @@ Using screen events +@@ -1834,7 +1766,6 @@ Using screen events must have focus. (See method :func:`listen`.) .. doctest:: @@ -547,7 +547,7 @@ unchanged: >>> def f(): ... fd(50) -@@ -1828,7 +1759,6 @@ Using screen events +@@ -1859,7 +1790,6 @@ Using screen events named ``turtle``: .. doctest:: @@ -555,7 +555,7 @@ unchanged: >>> screen.onclick(turtle.goto) # Subsequently clicking into the TurtleScreen will >>> # make the turtle move to the clicked point. -@@ -1848,7 +1778,6 @@ Using screen events +@@ -1879,7 +1809,6 @@ Using screen events Install a timer that calls *fun* after *t* milliseconds. .. doctest:: @@ -563,7 +563,7 @@ unchanged: >>> running = True >>> def f(): -@@ -1930,7 +1859,6 @@ Settings and special methods +@@ -1961,7 +1890,6 @@ Settings and special methods ============ ========================= =================== .. doctest:: @@ -571,7 +571,7 @@ unchanged: >>> mode("logo") # resets turtle heading to north >>> mode() -@@ -1945,7 +1873,6 @@ Settings and special methods +@@ -1976,7 +1904,6 @@ Settings and special methods values of color triples have to be in the range 0..*cmode*. .. doctest:: @@ -579,7 +579,7 @@ unchanged: >>> screen.colormode(1) >>> turtle.pencolor(240, 160, 80) -@@ -1966,7 +1893,6 @@ Settings and special methods +@@ -1997,7 +1924,6 @@ Settings and special methods do with a Tkinter Canvas. .. doctest:: @@ -587,7 +587,7 @@ unchanged: >>> cv = screen.getcanvas() >>> cv -@@ -1978,7 +1904,6 @@ Settings and special methods +@@ -2009,7 +1935,6 @@ Settings and special methods Return a list of names of all currently available turtle shapes. .. doctest:: @@ -595,7 +595,7 @@ unchanged: >>> screen.getshapes() ['arrow', 'blank', 'circle', ..., 'turtle'] -@@ -2002,7 +1927,6 @@ Settings and special methods +@@ -2033,7 +1958,6 @@ Settings and special methods coordinates: Install the corresponding polygon shape. .. doctest:: @@ -603,7 +603,7 @@ unchanged: >>> screen.register_shape("triangle", ((5,-3), (0,5), (-5,-3))) -@@ -2018,7 +1942,6 @@ Settings and special methods +@@ -2049,7 +1973,6 @@ Settings and special methods Return the list of turtles on the screen. .. doctest:: @@ -611,7 +611,7 @@ unchanged: >>> for turtle in screen.turtles(): ... turtle.color("red") -@@ -2080,7 +2003,6 @@ Methods specific to Screen, not inherite +@@ -2111,7 +2034,6 @@ Methods specific to Screen, not inherite center window vertically .. doctest:: @@ -619,7 +619,7 @@ unchanged: >>> screen.setup (width=200, height=200, startx=0, starty=0) >>> # sets window to 200x200 pixels, in upper left of screen -@@ -2096,7 +2018,6 @@ Methods specific to Screen, not inherite +@@ -2127,7 +2049,6 @@ Methods specific to Screen, not inherite Set title of turtle window to *titlestring*. .. doctest:: @@ -627,7 +627,7 @@ unchanged: >>> screen.title("Welcome to the turtle zoo!") -@@ -2167,7 +2088,6 @@ Public classes +@@ -2198,7 +2119,6 @@ Public classes Example: .. doctest:: @@ -635,7 +635,7 @@ unchanged: >>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s = Shape("compound") -@@ -2514,7 +2434,6 @@ Changes since Python 3.0 +@@ -2549,7 +2469,6 @@ Changes since Python 3.0 .. doctest:: diff --git a/python312.spec b/python312.spec index 5ce973c..1257029 100644 --- a/python312.spec +++ b/python312.spec @@ -424,12 +424,12 @@ other applications. %patch09 -p1 %patch15 -p1 %patch29 -p1 -%if 0%{?suse_version} <= 1500 +# %%if 0%%{?suse_version} <= 1500 %patch33 -p1 -%endif -%if 0%{?sle_version} && 0%{?sle_version} <= 150300 +# %%endif +# %%if 0%%{?sle_version} && 0%%{?sle_version} <= 150300 %patch34 -p1 -%endif +# %%endif %patch35 -p1 # drop Autoconf version requirement