https://github.com/python/cpython/commit/bb2dfadb9221fa3035fda42a2c153c831013e3d3
commit: bb2dfadb9221fa3035fda42a2c153c831013e3d3
branch: main
author: Zanie Blue <[email protected]>
committer: erlend-aasland <[email protected]>
date: 2025-01-03T11:04:03+01:00
summary:

gh-128104: Remove `Py_STRFTIME_C99_SUPPORT`; require C99-compliant strftime 
(#128106)

files:
A Misc/NEWS.d/next/Build/2024-12-20-09-03-22.gh-issue-128104.m_SoVx.rst
M Modules/_datetimemodule.c
M configure
M configure.ac
M pyconfig.h.in

diff --git 
a/Misc/NEWS.d/next/Build/2024-12-20-09-03-22.gh-issue-128104.m_SoVx.rst 
b/Misc/NEWS.d/next/Build/2024-12-20-09-03-22.gh-issue-128104.m_SoVx.rst
new file mode 100644
index 00000000000000..c3a47fbecd1dad
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2024-12-20-09-03-22.gh-issue-128104.m_SoVx.rst
@@ -0,0 +1,3 @@
+Remove ``Py_STRFTIME_C99_SUPPORT`` conditions in favor of requiring C99
+:manpage:`strftime(3)` specifier support at build time. When cross-compiling,
+there is no build time check and support is assumed.
diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c
index b1102984cb5e9e..368d10411366c4 100644
--- a/Modules/_datetimemodule.c
+++ b/Modules/_datetimemodule.c
@@ -1912,9 +1912,7 @@ wrap_strftime(PyObject *object, PyObject *format, 
PyObject *timetuple,
         }
 #ifdef Py_NORMALIZE_CENTURY
         else if (ch == 'Y' || ch == 'G'
-#ifdef Py_STRFTIME_C99_SUPPORT
                  || ch == 'F' || ch == 'C'
-#endif
         ) {
             /* 0-pad year with century as necessary */
             PyObject *item = PySequence_GetItem(timetuple, 0);
@@ -1952,15 +1950,11 @@ wrap_strftime(PyObject *object, PyObject *format, 
PyObject *timetuple,
              * +6 to accommodate dashes, 2-digit month and day for %F. */
             char buf[SIZEOF_LONG * 5 / 2 + 2 + 6];
             Py_ssize_t n = PyOS_snprintf(buf, sizeof(buf),
-#ifdef Py_STRFTIME_C99_SUPPORT
                                       ch == 'F' ? "%04ld-%%m-%%d" :
-#endif
                                       "%04ld", year_long);
-#ifdef Py_STRFTIME_C99_SUPPORT
             if (ch == 'C') {
                 n -= 2;
             }
-#endif
             if (_PyUnicodeWriter_WriteSubstring(&writer, format, start, end) < 
0) {
                 goto Error;
             }
diff --git a/configure b/configure
index 3d2c60213db591..2c3046e89bcb65 100755
--- a/configure
+++ b/configure
@@ -26436,8 +26436,8 @@ printf "%s\n" "#define Py_NORMALIZE_CENTURY 1" 
>>confdefs.h
 
 fi
 
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C99-specific 
strftime specifiers are supported" >&5
-printf %s "checking whether C99-specific strftime specifiers are supported... 
" >&6; }
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether C99-compatible 
strftime specifiers are supported" >&5
+printf %s "checking whether C99-compatible strftime specifiers are 
supported... " >&6; }
 if test ${ac_cv_strftime_c99_support+y}
 then :
   printf %s "(cached) " >&6
@@ -26445,7 +26445,7 @@ else $as_nop
 
 if test "$cross_compiling" = yes
 then :
-  ac_cv_strftime_c99_support=no
+  ac_cv_strftime_c99_support=
 else $as_nop
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
@@ -26472,7 +26472,7 @@ if ac_fn_c_try_run "$LINENO"
 then :
   ac_cv_strftime_c99_support=yes
 else $as_nop
-  ac_cv_strftime_c99_support=no
+  as_fn_error $? "Python requires C99-compatible strftime specifiers" 
"$LINENO" 5
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -26481,12 +26481,6 @@ fi
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: 
$ac_cv_strftime_c99_support" >&5
 printf "%s\n" "$ac_cv_strftime_c99_support" >&6; }
-if test "$ac_cv_strftime_c99_support" = yes
-then
-
-printf "%s\n" "#define Py_STRFTIME_C99_SUPPORT 1" >>confdefs.h
-
-fi
 
 have_curses=no
 have_panel=no
diff --git a/configure.ac b/configure.ac
index ee034e5a9621df..50b130f2c802b5 100644
--- a/configure.ac
+++ b/configure.ac
@@ -6672,7 +6672,7 @@ then
   [Define if year with century should be normalized for strftime.])
 fi
 
-AC_CACHE_CHECK([whether C99-specific strftime specifiers are supported], 
[ac_cv_strftime_c99_support], [
+AC_CACHE_CHECK([whether C99-compatible strftime specifiers are supported], 
[ac_cv_strftime_c99_support], [
 AC_RUN_IFELSE([AC_LANG_SOURCE([[
 #include <time.h>
 #include <string.h>
@@ -6692,13 +6692,8 @@ int main(void)
 }
 ]])],
 [ac_cv_strftime_c99_support=yes],
-[ac_cv_strftime_c99_support=no],
-[ac_cv_strftime_c99_support=no])])
-if test "$ac_cv_strftime_c99_support" = yes
-then
-  AC_DEFINE([Py_STRFTIME_C99_SUPPORT], [1],
-  [Define if C99-specific strftime specifiers are supported.])
-fi
+[AC_MSG_ERROR([Python requires C99-compatible strftime specifiers])],
+[ac_cv_strftime_c99_support=])])
 
 dnl check for ncursesw/ncurses and panelw/panel
 dnl NOTE: old curses is not detected.
diff --git a/pyconfig.h.in b/pyconfig.h.in
index 1ca83fd2f2ca1b..ca08f087a85e9f 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -1715,9 +1715,6 @@
 /* Define if you want to enable internal statistics gathering. */
 #undef Py_STATS
 
-/* Define if C99-specific strftime specifiers are supported. */
-#undef Py_STRFTIME_C99_SUPPORT
-
 /* The version of SunOS/Solaris as reported by `uname -r' without the dot. */
 #undef Py_SUNOS_VERSION
 

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to