summaryrefslogtreecommitdiff
path: root/Ports
diff options
context:
space:
mode:
authorRodrigo Tobar <rtobarc@gmail.com>2021-10-06 14:39:46 +0800
committerLinus Groh <mail@linusgroh.de>2021-10-06 13:57:52 +0100
commitc3a6d969884cf99635c74bf8e1c67770bed2253a (patch)
tree8e9b1b85e79a6a55e31a8491b20cf86b6260b810 /Ports
parentc38c93bff12ea1192c96db27d4115b1935f7a9b3 (diff)
downloadserenity-c3a6d969884cf99635c74bf8e1c67770bed2253a.zip
Ports: Patch Python to deal with Serenity's strftime
The xmlrpc.client module has some trial-and-error logic at module import time to figure out how to properly format years using strftime. There have already been problems in the past with this code in Python (see https://bugs.python.org/issue13305, which is still open), and Serenity only adds to that. This problem has been reported at https://bugs.python.org/issue45386, so hopefully in time we won't need this patch anymore.
Diffstat (limited to 'Ports')
-rw-r--r--Ports/python3/patches/ReadMe.md4
-rw-r--r--Ports/python3/patches/xmlrcp_client.patch27
2 files changed, 31 insertions, 0 deletions
diff --git a/Ports/python3/patches/ReadMe.md b/Ports/python3/patches/ReadMe.md
index c862a201e9..b1c58da503 100644
--- a/Ports/python3/patches/ReadMe.md
+++ b/Ports/python3/patches/ReadMe.md
@@ -27,3 +27,7 @@ Make some tweaks to Python's `setup.py` files:
- Add `/usr/local/lib` / `/usr/local/include` to the system lib / include dirs, relative to the sysroot when crosscompiling. These are by default only included when not crosscompiling for some reason.
- Add `/usr/local/include/ncurses` to the curses include paths so it can build the `_curses` module. This is by default included for a bunch of extensions, but not `_curses`.
- Add `/usr/local/includes/uuid` to the uuid include paths so it can build the `_uuid` module. This is by default included for a bunch of extensions, but not `_uuid`.
+
+## `xmlrcp_client.patch`
+
+Fix xmlrpc.client module so it can be imported. It otherwise a call to strftime raises a ValueError that the code is not prepared to handle.
diff --git a/Ports/python3/patches/xmlrcp_client.patch b/Ports/python3/patches/xmlrcp_client.patch
new file mode 100644
index 0000000000..2b479d03e7
--- /dev/null
+++ b/Ports/python3/patches/xmlrcp_client.patch
@@ -0,0 +1,27 @@
+--- Python-3.10.0/Lib/xmlrpc/client.py 2021-10-06 14:28:27.231681509 +0800
++++ Python-3.10.0/Lib/xmlrpc/client.py 2021-10-06 14:31:01.712267885 +0800
+@@ -264,16 +264,22 @@
+
+ # Issue #13305: different format codes across platforms
+ _day0 = datetime(1, 1, 1)
+-if _day0.strftime('%Y') == '0001': # Mac OS X
++def _try(fmt):
++ try:
++ return _day0.strftime(fmt) == '0001'
++ except ValueError:
++ return False
++if _try('%Y'): # Mac OS X
+ def _iso8601_format(value):
+ return value.strftime("%Y%m%dT%H:%M:%S")
+-elif _day0.strftime('%4Y') == '0001': # Linux
++elif _try('%4Y'): # Linux
+ def _iso8601_format(value):
+ return value.strftime("%4Y%m%dT%H:%M:%S")
+ else:
+ def _iso8601_format(value):
+ return value.strftime("%Y%m%dT%H:%M:%S").zfill(17)
+ del _day0
++del _try
+
+
+ def _strftime(value):