]> granicus.if.org Git - python/commitdiff
bpo-31904: Port the time module on VxWorks (GH-12305)
authorpxinwr <peixing.xin@windriver.com>
Mon, 15 Apr 2019 09:06:21 +0000 (17:06 +0800)
committerVictor Stinner <vstinner@redhat.com>
Mon, 15 Apr 2019 09:06:21 +0000 (11:06 +0200)
time.clock() is not available on VxWorks.

Doc/library/time.rst
Lib/test/test_time.py
Misc/NEWS.d/next/Library/2019-03-13-16-48-42.bpo-31904.9sjd38.rst [new file with mode: 0644]
Modules/timemodule.c

index baf92c1400eea1d030135eb71a71de040fa39700..170f8dc629bfe1bc1f53bb8547ab20bdce1c3a5f 100644 (file)
@@ -153,6 +153,8 @@ Functions
    :c:func:`QueryPerformanceCounter`. The resolution is typically better than one
    microsecond.
 
+   .. availability:: Windows, Unix. Not available on VxWorks.
+
    .. deprecated:: 3.3
       The behaviour of this function depends on the platform: use
       :func:`perf_counter` or :func:`process_time` instead, depending on your
index 136ad29e20adf09ed20b4d0a65cece444290659e..303918960b636bc37e9a29760864360792edb187 100644 (file)
@@ -88,6 +88,8 @@ class TimeTestCase(unittest.TestCase):
             check_ns(time.clock_gettime(time.CLOCK_REALTIME),
                      time.clock_gettime_ns(time.CLOCK_REALTIME))
 
+    @unittest.skipUnless(hasattr(time, 'clock'),
+                         'need time.clock()')
     def test_clock(self):
         with self.assertWarns(DeprecationWarning):
             time.clock()
@@ -549,7 +551,9 @@ class TimeTestCase(unittest.TestCase):
         self.assertRaises(ValueError, time.ctime, float("nan"))
 
     def test_get_clock_info(self):
-        clocks = ['clock', 'monotonic', 'perf_counter', 'process_time', 'time']
+        clocks = ['monotonic', 'perf_counter', 'process_time', 'time']
+        if hasattr(time, 'clock'):
+            clocks.append('clock')
 
         for name in clocks:
             if name == 'clock':
diff --git a/Misc/NEWS.d/next/Library/2019-03-13-16-48-42.bpo-31904.9sjd38.rst b/Misc/NEWS.d/next/Library/2019-03-13-16-48-42.bpo-31904.9sjd38.rst
new file mode 100644 (file)
index 0000000..6fb5c89
--- /dev/null
@@ -0,0 +1 @@
+Add time module support and fix test_time faiures for VxWorks.
index 724a064f5cebb0d0054011617819aeea43d1f8ca..3df17ac4fb68f57ab6641d72ced1792d79e6f2be 100644 (file)
@@ -145,7 +145,7 @@ perf_counter(_Py_clock_info_t *info)
     return _PyFloat_FromPyTime(t);
 }
 
-#if defined(MS_WINDOWS) || defined(HAVE_CLOCK)
+#if (defined(MS_WINDOWS) || defined(HAVE_CLOCK)) && !defined(__VXWORKS__)
 #define PYCLOCK
 static PyObject*
 pyclock(_Py_clock_info_t *info)
@@ -765,7 +765,7 @@ time_strftime(PyObject *self, PyObject *args)
         return NULL;
     }
 
-#if defined(_MSC_VER) || (defined(__sun) && defined(__SVR4)) || defined(_AIX)
+#if defined(_MSC_VER) || (defined(__sun) && defined(__SVR4)) || defined(_AIX) || defined(__VXWORKS__)
     if (buf.tm_year + 1900 < 1 || 9999 < buf.tm_year + 1900) {
         PyErr_SetString(PyExc_ValueError,
                         "strftime() requires year in [1; 9999]");
@@ -1001,18 +1001,21 @@ time_mktime(PyObject *self, PyObject *tm_tuple)
         return NULL;
     }
 
-#ifdef _AIX
+#if defined(_AIX) || (defined(__VXWORKS__) && !defined(_WRS_CONFIG_LP64))
     /* bpo-19748: AIX mktime() valid range is 00:00:00 UTC, January 1, 1970
        to 03:14:07 UTC, January 19, 2038. Thanks to the workaround below,
        it is possible to support years in range [1902; 2037] */
     if (tm.tm_year < 2 || tm.tm_year > 137) {
         /* bpo-19748: On AIX, mktime() does not report overflow error
-           for timestamp < -2^31 or timestamp > 2**31-1. */
+           for timestamp < -2^31 or timestamp > 2**31-1. VxWorks has the
+           same issue when working in 32 bit mode. */
         PyErr_SetString(PyExc_OverflowError,
                         "mktime argument out of range");
         return NULL;
     }
+#endif
 
+#ifdef _AIX
     /* bpo-34373: AIX mktime() has an integer overflow for years in range
        [1902; 1969]. Workaround the issue by using a year greater or equal than
        1970 (tm_year >= 70): mktime() behaves correctly in that case