[Rpm-maint] [PATCH] config: Detect major/minor warnings and include the correct system header.
Dmitry V. Levin
ldv at altlinux.org
Fri Jul 21 11:36:36 UTC 2017
On Fri, Jul 21, 2017 at 01:24:01PM +0200, Mark Wielaard wrote:
> On Thu, 2017-07-20 at 17:06 +0300, Dmitry V. Levin wrote:
> > I'm not sure what sys/mkdev.h does, but glibc's sys/sysmacros.h certainly
> > undefines major, minor, and makedev prior to defining its own versions of
> > these macros.
> >
> > My guess is that these undefs are not needed.
>
> You are right. This makes the patch simpler. Now we only need to fix the
> AC_HEADER_MAJOR check. Cleaned up patch attached. Retested on rhel7 and
> fedora26.
>
> sys/mkdev.h is a solaris/bsd thing. I checked and they also undef the
> macros before (re)defining them. Although there they might not be
> defined in another header in the first place.
>
> Thanks,
>
> Mark
> From 77a745abd88f278b4c29aadefb2f6c5d47bde5e6 Mon Sep 17 00:00:00 2001
> From: Mark Wielaard <mark at klomp.org>
> Date: Wed, 19 Jul 2017 14:43:28 +0200
> Subject: [PATCH] config: Detect major/minor warnings and include the correct
> system header.
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
>
> glibc 2.25 introduced (really long and annoying) warnings for each use
> of the major/minor macros from the wrong header:
>
> lib/cpio.c: In function ‘rpmcpioHeaderWrite’:
> lib/cpio.c:245:13: warning: In the GNU C Library, "major" is defined
> by <sys/sysmacros.h>. For historical compatibility, it is
> currently defined by <sys/types.h> as well, but we plan to
> remove this soon. To use "major", include <sys/sysmacros.h>
> directly. If you did not intend to use a system-defined macro
> "major", you should undefine it after including <sys/types.h>.
> dev = major(st->st_dev); SET_NUM_FIELD(hdr->devMajor, dev, field);
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> Adjust the configure check to correctly detect the header to include
> that doesn't produce those warning producing macros.
>
> Tested against RHEL7 (glibc 2.17) and Fedora 26 (glibc 2.25).
>
> Signed-off-by: Mark Wielaard <mark at klomp.org>
> ---
> configure.ac | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/configure.ac b/configure.ac
> index cc657ec..017a908 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -561,7 +561,15 @@ AM_ICONV
>
> dnl Checks for header files we can live without.
> AC_HEADER_STDC
> +dnl glibc and autoconf don't really play well together.
> +dnl glibc will produce a warning when including the wrong header.
> +dnl but still define major and minor. Causing us to include the header
> +dnl that produces a giant warning for each major/minor use.
> +dnl Use -Werror to work around that.
> +old_CFLAGS=$CFLAGS
> +CFLAGS="$CFLAGS -Werror"
> AC_HEADER_MAJOR
> +CFLAGS=$old_CFLAGS
> AC_STRUCT_DIRENT_D_TYPE
>
> AC_CHECK_HEADERS(limits.h)
This looks good enough to be used in other projects, too.
Thanks!
--
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.rpm.org/pipermail/rpm-maint/attachments/20170721/d4b1be12/attachment-0001.asc>
More information about the Rpm-maint
mailing list