From 234f01d600210e35ae75b2f1e787346628fecb5a11d6d5404250372651c2a4a0 Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Fri, 15 Nov 2024 12:38:32 +0000 Subject: [PATCH] Accepting request 1224307 from home:bmwiedemann:branches:devel:languages:python Add fix2038.patch to fix an issue with year 2038 OBS-URL: https://build.opensuse.org/request/show/1224307 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-bson?expand=0&rev=14 --- fix2038.patch | 35 +++++++++++++++++++++++++++++++++++ python-bson.changes | 5 +++++ python-bson.spec | 1 + 3 files changed, 41 insertions(+) create mode 100644 fix2038.patch diff --git a/fix2038.patch b/fix2038.patch new file mode 100644 index 0000000..e1e60bf --- /dev/null +++ b/fix2038.patch @@ -0,0 +1,35 @@ +Index: bson-0.5.8/bson/objectid.py +=================================================================== +--- bson-0.5.8.orig/bson/objectid.py ++++ bson-0.5.8/bson/objectid.py +@@ -158,7 +158,7 @@ class ObjectId(object): + generation_time = generation_time - generation_time.utcoffset() + timestamp = calendar.timegm(generation_time.timetuple()) + oid = struct.pack( +- ">i", int(timestamp)) + b"\x00\x00\x00\x00\x00\x00\x00\x00" ++ ">L", int(timestamp) & 0xFFFFFFFF) + b"\x00\x00\x00\x00\x00\x00\x00\x00" + return cls(oid) + + @classmethod +@@ -184,7 +184,7 @@ class ObjectId(object): + """ + + # 4 bytes current time +- oid = struct.pack(">i", int(time.time())) ++ oid = struct.pack(">L", int(time.time()) & 0xFFFFFFFF) + + # 3 bytes machine + oid += ObjectId._machine_bytes +Index: bson-0.5.8/bson/tests/test_objectid.py +=================================================================== +--- bson-0.5.8.orig/bson/tests/test_objectid.py ++++ bson-0.5.8/bson/tests/test_objectid.py +@@ -522,7 +522,7 @@ class TestObjectId(unittest.TestCase): + if 'PyPy 1.8.0' in sys.version: + # See https://bugs.pypy.org/issue1092 + raise SkipTest("datetime.timedelta is broken in pypy 1.8.0") +- d = datetime.datetime.utcnow() ++ d = datetime.datetime.utcfromtimestamp(2000000000) + d = d - datetime.timedelta(microseconds=d.microsecond) + oid = ObjectId.from_datetime(d) + self.assertEqual(d, oid.generation_time.replace(tzinfo=None)) diff --git a/python-bson.changes b/python-bson.changes index ecd1f02..b9cbe90 100644 --- a/python-bson.changes +++ b/python-bson.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Nov 14 20:23:54 UTC 2024 - Bernhard Wiedemann + +- Add fix2038.patch to fix an issue with year 2038 + ------------------------------------------------------------------- Fri Dec 29 13:44:20 UTC 2023 - Antonio Larrosa diff --git a/python-bson.spec b/python-bson.spec index 7c85449..82261dc 100644 --- a/python-bson.spec +++ b/python-bson.spec @@ -28,6 +28,7 @@ Source: https://github.com/py-bson/bson/archive/%{version}.tar.gz#/bson- Patch0: drop-python2-support.patch # PATCH-FIX-OPENSUSE Use assertEqual to support Python 3.12 Patch1: support-python312.patch +Patch2: fix2038.patch BuildRequires: %{python_module pip} BuildRequires: %{python_module setuptools} BuildRequires: %{python_module wheel}