Bug 2143303 (Autoconf2.72) - Tracker to prepare for Autoconf 2.72
Summary: Tracker to prepare for Autoconf 2.72
Keywords:
Status: ASSIGNED
Alias: Autoconf2.72
Product: Fedora
Classification: Fedora
Component: distribution
Version: rawhide
Hardware: All
OS: All
unspecified
unspecified
Target Milestone: ---
Assignee: Frédéric Bérat
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On: 2143639 2256783 2143306 2143718 2143724 2144758 2144802 2144836 2147559 2147571 2183119 2183120 2183126 2183127 2183132 2183146 2183156 2183157 2183159 2183441 2256768 2256775 2256836 2264449
Blocks:
TreeView+ depends on / blocked
 
Reported: 2022-11-16 14:57 UTC by Frédéric Bérat
Modified: 2024-02-16 06:39 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Type: Bug
Embargoed:


Attachments (Terms of Use)
autoconf-2.72 internal prerelease (2.04 MB, application/x-rpm)
2022-11-16 14:57 UTC, Frédéric Bérat
no flags Details
autoconf-2.72 internal prerelease (802.51 KB, application/x-rpm)
2023-03-30 13:27 UTC, Frédéric Bérat
no flags Details
Autoconf 2.72 pre-release (816.66 KB, application/x-rpm)
2024-01-04 13:23 UTC, Frédéric Bérat
no flags Details

Description Frédéric Bérat 2022-11-16 14:57:58 UTC
Created attachment 1924717 [details]
autoconf-2.72 internal prerelease

Created attachment 1924717 [details]
autoconf-2.72 internal prerelease

While preparing for the upcoming Autoconf 2.72 release, a mass rebuild of dependent component has been performed.

This rebuild as shown that some components are not ready for the update and may fail to build from source once it lands into the distribution.

This bug aims to track the progress on the fixes that need to be worked on for these components.

As of now there are several failures to investigate, for the following components:
am-utils  anjuta  apr  celestia  cifs-utils  firebird  krb5  net-snmp  netresolve  ruby  steghide  synfig  wine

Bugs will be opened for each of them respectively, as the pre-investigation goes.

The attached engineering release of autoconf 2.72 can be used for investigation.

Comment 1 Frédéric Bérat 2022-11-17 12:54:04 UTC
Pre-analysis for wine (yes I take them randomly):

They have the following code in their aclocal.m4{,.cross} files:

dnl **** Check whether we need to define a symbol on the compiler command line ****
dnl
dnl Usage: WINE_CHECK_DEFINE(name),[action-if-yes,[action-if-no]])
dnl
AC_DEFUN([WINE_CHECK_DEFINE],
[AS_VAR_PUSHDEF([ac_var],[ac_cv_cpp_def_$1])dnl
AC_CACHE_CHECK([whether we need to define $1],ac_var,
    AC_EGREP_CPP(yes,[#ifndef $1
yes
#endif],
    [AS_VAR_SET(ac_var,yes)],[AS_VAR_SET(ac_var,no)]))
AS_VAR_IF([ac_var],[yes],
      [CFLAGS="$CFLAGS -D$1"
  LINTFLAGS="$LINTFLAGS -D$1"])dnl
AS_VAR_POPDEF([ac_var])])

Which leads to a malformed configure script with Autoconf 2.72. While looking further,
I found out that the failure is somehow related to _AC_PROG_EGREP_TRADITIONAL
function, but I can't really figure out why.
Adding quotes around the "AC_EGREP_CPP" call fixes the failure, but again, I don't
know if that's a valid fix or not. There may be something wrong with the new function.

-----

Proposed fix:
--- aclocal.m4	2022-11-17 13:51:12.879963637 +0100
+++ aclocal.m4.new	2022-11-17 13:51:55.235882583 +0100
@@ -280,14 +280,14 @@
 dnl Usage: WINE_CHECK_DEFINE(name),[action-if-yes,[action-if-no]])
 dnl
 AC_DEFUN([WINE_CHECK_DEFINE],
 [AS_VAR_PUSHDEF([ac_var],[ac_cv_cpp_def_$1])dnl
 AC_CACHE_CHECK([whether we need to define $1],ac_var,
-    AC_EGREP_CPP(yes,[#ifndef $1
+    [AC_EGREP_CPP(yes,[#ifndef $1
 yes
 #endif],
-    [AS_VAR_SET(ac_var,yes)],[AS_VAR_SET(ac_var,no)]))
+    [AS_VAR_SET(ac_var,yes)],[AS_VAR_SET(ac_var,no)])])
 AS_VAR_IF([ac_var],[yes],
       [CFLAGS="$CFLAGS -D$1"
   LINTFLAGS="$LINTFLAGS -D$1"])dnl
 AS_VAR_POPDEF([ac_var])])


-----

Below is the diff of the generated configure, without (old) and with (new) the quotes:

--- configure.old 2022-11-17 13:36:01.612861069 +0100
+++ configure.new 2022-11-17 13:29:53.044676264 +0100
@@ -21715,17 +21715,11 @@
 
 fi
 
 
 case $host_cpu in
-  *i[3456789]86*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need to define __i386__" >&5
-printf %s "checking whether we need to define __i386__... " >&6; }
-if test ${ac_cv_cpp_def___i386__+y}
-then :
-  printf %s "(cached) " >&6
-else case e in #(
-  e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
+  *i[3456789]86*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5
 printf %s "checking for egrep -e... " >&6; }
 if test ${ac_cv_path_EGREP_TRADITIONAL+y}
 then :
   printf %s "(cached) " >&6
 else case e in #(
@@ -21735,15 +21729,11 @@
   as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   case $as_dir in #(((
-    '' ;;
-esac
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cpp_def___i386__" >&5
-printf "%s\n" "$ac_cv_cpp_def___i386__" >&6; } as_dir=./ ;;
+    '') as_dir=./ ;;
     */) ;;
     *) as_dir=$as_dir/ ;;
   esac
     for ac_prog in grep ggrep
    do
@@ -21857,11 +21847,17 @@
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP_TRADITIONAL" >&5
 printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; }
  EGREP_TRADITIONAL=$ac_cv_path_EGREP_TRADITIONAL
 
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we need to define __i386__" >&5
+printf %s "checking whether we need to define __i386__... " >&6; }
+if test ${ac_cv_cpp_def___i386__+y}
+then :
+  printf %s "(cached) " >&6
+else case e in #(
+  e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #ifndef __i386__
 yes
 #endif
 
@@ -21873,11 +21869,15 @@
 else case e in #(
   e) ac_cv_cpp_def___i386__=no ;;
 esac
 fi
 rm -rf conftest*
-)
+ ;;
+esac
+fi
+{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cpp_def___i386__" >&5
+printf "%s\n" "$ac_cv_cpp_def___i386__" >&6; }
 if test "x$ac_cv_cpp_def___i386__" = xyes
 then :
   CFLAGS="$CFLAGS -D__i386__"
   LINTFLAGS="$LINTFLAGS -D__i386__"
 fi ;;

Comment 2 Frédéric Bérat 2022-11-17 16:17:48 UTC
(In reply to Frédéric Bérat from comment #1)
> Pre-analysis for wine (yes I take them randomly):

Based on the feedback from the mailing list on this one, I'll create a ticket towards wine.

Comment 3 Frédéric Bérat 2022-11-17 16:41:27 UTC
(In reply to Frédéric Bérat from comment #2)
> (In reply to Frédéric Bérat from comment #1)
> > Pre-analysis for wine (yes I take them randomly):
> 
> Based on the feedback from the mailing list on this one, I'll create a
> ticket towards wine.

For reference: https://lists.gnu.org/archive/html/autoconf/2022-11/msg00117.html

Comment 4 Frédéric Bérat 2022-11-18 17:15:53 UTC
Pre-analysis for apr:

The root cause for the failure is different from the so far "usual" cases. One of the AC_TRY_COMPILE call fails for due to definitions present in the previously generated confdefs.h:

configure:26378: checking whether int64_t and long use fmt %ld
configure:26413: gcc -c -g -O2  -Werror -DLINUX -D_REENTRANT -D_GNU_SOURCE conftest.c >&5
conftest.c:161:15: error: two or more data types in declaration specifiers
  161 | #define gid_t int
      |               ^~~
conftest.c:160:15: error: two or more data types in declaration specifiers
  160 | #define uid_t int
      |               ^~~
conftest.c:162:17: error: two or more data types in declaration specifiers
  162 | #define ssize_t int
      |                 ^~~
configure:26413: $? = 1
configure: failed program was:
| /* confdefs.h */
| #define PACKAGE_NAME ""
| #define PACKAGE_TARNAME ""
| #define PACKAGE_VERSION ""
| #define PACKAGE_STRING ""
| #define PACKAGE_BUGREPORT ""
| #define PACKAGE_URL ""
| #define HAVE_STDIO_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_STDINT_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_WCHAR_H 1
| #define STDC_HEADERS 1
| #define _ALL_SOURCE 1
| #define _DARWIN_C_SOURCE 1
| #define _GNU_SOURCE 1
| #define _HPUX_ALT_XOPEN_SOCKET_API 1
| #define _NETBSD_SOURCE 1
| #define _OPENBSD_SOURCE 1
| #define _POSIX_PTHREAD_SEMANTICS 1
| #define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
| #define __STDC_WANT_IEC_60559_BFP_EXT__ 1
| #define __STDC_WANT_IEC_60559_DFP_EXT__ 1
| #define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
| #define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
| #define __STDC_WANT_LIB_EXT2__ 1
| #define __STDC_WANT_MATH_SPEC_FUNCS__ 1
| #define _TANDEM_SOURCE 1
| #define __EXTENSIONS__ 1
| #define HAVE_DLFCN_H 1
| #define LT_OBJDIR ".libs/"
| #define HAVE_ATOMIC_BUILTINS 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_H 1
| #define HAVE_PTHREAD_MUTEX_RECURSIVE 1
| #define HAVE_PTHREAD_KEY_DELETE 1
| #define HAVE_PTHREAD_RWLOCK_INIT 1
| #define HAVE_PTHREAD_ATTR_SETGUARDSIZE 1
| #define HAVE_PTHREAD_RWLOCKS 1
| #define HAVE_SCHED_H 1
| #define HAVE_SCHED_YIELD 1
| #define READDIR_IS_THREAD_SAFE 1
| #define HAVE_GETHOSTBYNAME_R 1
| #define HAVE_GETHOSTBYADDR_R 1
| #define HAVE_GETSERVBYNAME_R 1
| #define HAVE_SIGSUSPEND 1
| #define HAVE_SIGWAIT 1
| #define HAVE_POLL 1
| #define HAVE_EPOLL 1
| #define HAVE_EPOLL_CREATE1 1
| #define HAVE_DUP3 1
| #define HAVE_ACCEPT4 1
| #define HAVE_SOCK_CLOEXEC 1
| #define HAVE_FDATASYNC 1
| #define HAVE_EPOLL_CREATE1 1
| #define HAVE_DUP3 1
| #define HAVE_ACCEPT4 1
| #define HAVE_SOCK_CLOEXEC 1
| #define HAVE_GETPWNAM_R 1
| #define HAVE_GETPWUID_R 1
| #define HAVE_GETGRNAM_R 1
| #define HAVE_GETGRGID_R 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_MMAN_H 1
| #define HAVE_SYS_IPC_H 1
| #define HAVE_SYS_SHM_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_NET_IF_H 1
| #define HAVE_MMAP 1
| #define HAVE_MUNMAP 1
| #define HAVE_SHM_OPEN 1
| #define HAVE_SHM_UNLINK 1
| #define HAVE_SHMGET 1
| #define HAVE_SHMAT 1
| #define HAVE_SHMDT 1
| #define HAVE_SHMCTL 1
| #define HAVE_MPROTECT 1
| #define anonymous shared memory allocation method 1
| #define USE_SHMEM_MMAP_ZERO 1
| #define namebased memory allocation method 1
| #define USE_SHMEM_SHMGET 1
| #define HAVE_ALLOCA_H 1
| #define HAVE_ALLOCA 1
| #define HAVE_CALLOC 1
| #define HAVE_SETSID 1
| #define HAVE_ISINF 1
| #define HAVE_ISNAN 1
| #define HAVE_GETENV 1
| #define HAVE_PUTENV 1
| #define HAVE_SETENV 1
| #define HAVE_UNSETENV 1
| #define HAVE_WRITEV 1
| #define HAVE_GETIFADDRS 1
| #define HAVE_UTIME 1
| #define HAVE_UTIMES 1
| #define HAVE_SETRLIMIT 1
| #define HAVE_GETRLIMIT 1
| #define HAVE_SENDFILE 1
| #define HAVE_SIGACTION 1
| #define HAVE_DECL_SYS_SIGLIST 0
| #define HAVE_FORK 1
| #define HAVE_STRERROR_R 1
| #define HAVE_MMAP 1
| #define HAVE_MEMMOVE 1
| #define HAVE_GETPASS 1
| #define HAVE_GMTIME_R 1
| #define HAVE_LOCALTIME_R 1
| #define HAVE_MKSTEMP 1
| #define HAVE_CRYPT_H 1
| #define HAVE_CTYPE_H 1
| #define HAVE_DIRENT_H 1
| #define HAVE_DLFCN_H 1
| #define HAVE_ERRNO_H 1
| #define HAVE_FCNTL_H 1
| #define HAVE_GRP_H 1
| #define HAVE_INTTYPES_H 1
| #define HAVE_LIMITS_H 1
| #define HAVE_MALLOC_H 1
| #define HAVE_MEMORY_H 1
| #define HAVE_NETDB_H 1
| #define HAVE_POLL_H 1
| #define HAVE_PWD_H 1
| #define HAVE_SEMAPHORE_H 1
| #define HAVE_SIGNAL_H 1
| #define HAVE_STDARG_H 1
| #define HAVE_STDDEF_H 1
| #define HAVE_STDIO_H 1
| #define HAVE_STDLIB_H 1
| #define HAVE_STRING_H 1
| #define HAVE_STRINGS_H 1
| #define HAVE_TERMIOS_H 1
| #define HAVE_TIME_H 1
| #define HAVE_UNISTD_H 1
| #define HAVE_ARPA_INET_H 1
| #define HAVE_NETINET_IN_H 1
| #define HAVE_SYS_FILE_H 1
| #define HAVE_SYS_IOCTL_H 1
| #define HAVE_SYS_MMAN_H 1
| #define HAVE_SYS_PARAM_H 1
| #define HAVE_SYS_POLL_H 1
| #define HAVE_SYS_RESOURCE_H 1
| #define HAVE_SYS_SELECT_H 1
| #define HAVE_SYS_SEM_H 1
| #define HAVE_SYS_SENDFILE_H 1
| #define HAVE_SYS_SIGNAL_H 1
| #define HAVE_SYS_SOCKET_H 1
| #define HAVE_SYS_STAT_H 1
| #define HAVE_SYS_TIME_H 1
| #define HAVE_SYS_TYPES_H 1
| #define HAVE_SYS_UIO_H 1
| #define HAVE_SYS_UN_H 1
| #define HAVE_SYS_WAIT_H 1
| #define HAVE_NETINET_TCP_H 1
| #define uid_t int
| #define gid_t int
| #define ssize_t int
| #define SETPGRP_VOID 1
| #define SIZEOF_VOIDP 0
| #define SIZEOF_CHAR 0
| #define SIZEOF_SHORT 0
| #define SIZEOF_INT 0
| #define SIZEOF_LONG 0
| #define SIZEOF_LONG_LONG 0
| /* end confdefs.h.  */
| #include <sys/types.h>
| #include <stdio.h>
| #ifdef HAVE_STDINT_H
| #include <stdint.h>
| #endif
| 
| int
| main (void)
| {
| 
|     int64_t chk1, *ptr1;
|     long chk2, *ptr2 = &chk1;
|     ptr1 = &chk2;
|     *ptr1 = *ptr2 = 0;
|     printf("%ld %ld", chk1, chk2);
| 
| 
|   ;
|   return 0;
| }
configure:26426: result: no

After some more investigation, the fact that gid_t/uid_t and ssize_t are being defined doesn't make sense, since that should be detected by corresponding functions of configure (as required by e.g. AC_TYPE_UID_T in configure.in).
It appears that these tests are false negative: the test fails because "$EGREP_TRADITIONAL" variable is undefined in the context of the call, while it has been defined earlier in configure but in a more restricted context(a case/esac)).

That seems to be a side effect of the way EGREP_TRADITIONAL has been implemented, since this program isn't required before being actually executed. Thus, the symbol isn't properly defined in the general context.

This has been sent upstream for feedback:
https://lists.gnu.org/archive/html/autoconf/2022-11/msg00127.html

Comment 5 Frédéric Bérat 2022-11-22 10:40:10 UTC
cifs-utils is affected by https://lists.gnu.org/archive/html/autoconf/2022-11/msg00110.html

Comment 6 Frédéric Bérat 2022-11-22 12:15:26 UTC
net-snmp has a pretty useless test that verifies that the configure script is "valid" by checking for the version of autoconf it has been generated with.

They'll need to be notified once the new version is out.

Comment 7 Frédéric Bérat 2022-11-24 09:16:20 UTC
The ruby package is affected by the same bug as apr, a false negative on stdbool.h, thus the same reference:

https://lists.gnu.org/archive/html/autoconf/2022-11/msg00127.html

Comment 8 Frédéric Bérat 2022-11-24 09:22:30 UTC
Although there are likely more things to fix in this one (there are errors reported by aclocal and automake), the steghide package is also affected by the same bug that affects ruby and apr:

https://lists.gnu.org/archive/html/autoconf/2022-11/msg00127.html

Comment 9 Frédéric Bérat 2022-11-24 09:48:28 UTC
(In reply to Frédéric Bérat from comment #8)
> the steghide package is also affected by
> the same bug that affects ruby and apr:
> 
> https://lists.gnu.org/archive/html/autoconf/2022-11/msg00127.html

After double checking the "UNCONFIRMED" failures from mpb, few more packages are affected by the very same bug:
ledmon libmobi libsafec srmio

Comment 10 Ben Cotton 2023-02-07 15:11:14 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 38 development cycle.
Changing version to 38.

Comment 11 Frédéric Bérat 2023-03-30 12:28:28 UTC
Since a testing candidate was made available by the community, there has been some more changes that lead to more breakage.

The following packages need to get an update, since there were some changes that impacts the gnulib macros:

ImageMagick 1:7.1.1.4
emacs 1:28.2
grub2 2.06
gzip 1.12
libidn 1.41
libloc 0.9.16
make 4.4
parted 3.5
pspp 1.6.2
rcs 5.10.1

The typical error will look like:

| configure:8321: error: possibly undefined macro: _AC_SYS_LARGEFILE_TEST_INCLUDES
|       If this token and others are legitimate, please use m4_pattern_allow.
|       See the Autoconf documentation.

This can't be fixed by autoreconf, an update of "m4/largefile.m4", provided by gnulib, is needed. The gnulib files are usually updated when the community creates a new release.

Comment 12 Frédéric Bérat 2023-03-30 13:27:41 UTC
Created attachment 1954676 [details]
autoconf-2.72 internal prerelease

Comment 13 Fedora Release Engineering 2023-08-16 07:06:12 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 39 development cycle.
Changing version to 39.

Comment 14 Frédéric Bérat 2024-01-04 13:21:32 UTC
Autoconf 2.72 has been released end of December, and will be delivered to Fedora next week.

Latest report shows few failures that need to be fixed:

am-utils  fatresize  gmime  ImageMagick  kguitar  net-snmp  resource-agents

Few of them are new, and issues will be opened accordingly.

Comment 15 Frédéric Bérat 2024-01-04 13:23:41 UTC
Created attachment 2007173 [details]
Autoconf 2.72 pre-release

Comment 16 Aoife Moloney 2024-02-15 22:55:39 UTC
This bug appears to have been reported against 'rawhide' during the Fedora Linux 40 development cycle.
Changing version to 40.


Note You need to log in before you can comment on or make changes to this bug.