Problems building rsync with Clang 15 beta

Paul Eggert <[email protected]>
Newsgroups gmane.comp.sysutils.autoconf.patches,gmane.network.rsync.general
Organization UCLA Computer Science Department
Message-ID <[email protected]>
On 8/17/22 23:58, Khem Raj wrote:
> rsync which add -pedantic-errors option to cflags during configure

OK, that's the problem then. 'configure' should not use flags like 
-pedantic-errors. This has long been a property of 'autoconf'-generated 
scripts.

The simplest way to fix this would be for rsync to not add 
-pedantic-errors, as it's more trouble than it's worth. If rsync must 
add -pedantic-errors for some reason, it should do so at the very end of 
'configure', as in the attached untested patch, so as not to screw up 
earlier 'configure' tests; and perhaps it'd be better for rsync to also 
add -pedantic-errors only for GCC not Clang (since Clang is more likely 
to mutate further in this area).

Really, though, omitting -pedantic-errors entirely is the way to go. 
-pedantic-errors should be enabled only for special purposes, by 
explicit request of the person running 'configure' and/or 'make'; it's 
not suitable as a default option.

Anyway, please give this rsync patch a try. I'll cc it to the rsync 
mailing list to give rsync developers a heads-up about the compatibility 
problem building rsync with Clang 15 (which luckily does not exist yet :-).
0001-Turn-on-pedantic-errors-at-the-end-of-configure.patch (text/x-patch, 2.5 KB)
From e64a58387db46239902b610871a0eb81626e99ff Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email protected]>
Date: Thu, 18 Aug 2022 07:46:28 -0700
Subject: [PATCH] Turn on -pedantic-errors at the end of 'configure'

Problem reported by Khem Raj in:
https://lists.gnu.org/r/autoconf-patches/2022-08/msg00009.html
---
 configure.ac | 35 ++++++++++++++++++++---------------
 1 file changed, 20 insertions(+), 15 deletions(-)

diff --git a/configure.ac b/configure.ac
index d185b2d3..7e9514f7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1071,21 +1071,6 @@ elif test x"$ac_cv_header_popt_h" != x"yes"; then
     with_included_popt=yes
 fi
 
-if test x"$GCC" = x"yes"; then
-    if test x"$with_included_popt" != x"yes"; then
-	# Turn pedantic warnings into errors to ensure an array-init overflow is an error.
-	CFLAGS="$CFLAGS -pedantic-errors"
-    else
-	# Our internal popt code cannot be compiled with pedantic warnings as errors, so try to
-	# turn off pedantic warnings (which will not lose the error for array-init overflow).
-	# Older gcc versions don't understand -Wno-pedantic, so check if --help=warnings lists
-	# -Wpedantic and use that as a flag.
-	case `$CC --help=warnings 2>/dev/null | grep Wpedantic` in
-	    *-Wpedantic*) CFLAGS="$CFLAGS -pedantic-errors -Wno-pedantic" ;;
-	esac
-    fi
-fi
-
 AC_MSG_CHECKING([whether to use included libpopt])
 if test x"$with_included_popt" = x"yes"; then
     AC_MSG_RESULT($srcdir/popt)
@@ -1444,6 +1429,26 @@ case "$CC" in
     ;;
 esac
 
+# Enable -pedantic-errors last, so that it doesn't mess up other
+# 'configure' tests.  For example, Autoconf uses empty function
+# prototypes like 'int main () {}' which Clang 15's -pedantic-errors
+# would reject.  Generally it's not a good idea to try to run
+# 'configure' itself with strict compiler checking.
+if test x"$GCC" = x"yes"; then
+    if test x"$with_included_popt" != x"yes"; then
+	# Turn pedantic warnings into errors to ensure an array-init overflow is an error.
+	CFLAGS="$CFLAGS -pedantic-errors"
+    else
+	# Our internal popt code cannot be compiled with pedantic warnings as errors, so try to
+	# turn off pedantic warnings (which will not lose the error for array-init overflow).
+	# Older gcc versions don't understand -Wno-pedantic, so check if --help=warnings lists
+	# -Wpedantic and use that as a flag.
+	case `$CC --help=warnings 2>/dev/null | grep Wpedantic` in
+	    *-Wpedantic*) CFLAGS="$CFLAGS -pedantic-errors -Wno-pedantic" ;;
+	esac
+    fi
+fi
+
 AC_CONFIG_FILES([Makefile lib/dummy zlib/dummy popt/dummy shconfig])
 AC_OUTPUT
 
-- 
2.37.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.