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):