On Thu, Jan 20, 2022 at 07:50:58AM -0500, Kaleb Keithley wrote:
> I thought I'd solved all my gcc-12-isms in ceph by running --scratch
> --arch-override=x86_64 builds, so I tried a full build and ran into this on
> aarch64. :-(
> 
> In file included from /usr/include/boost/integer.hpp:20,
>                  from /usr/include/boost/integer/integer_mask.hpp:16,
>                  from /usr/include/boost/random/mersenne_twister.hpp:26,
>                  from /usr/include/boost/uuid/random_generator.hpp:17,
>                  from /usr/include/boost/uuid/uuid_generators.hpp:17,
>                  from /builddir/build/BUILD/ceph-16.2.7/src/include/uuid.h:16,
>                  from 
> /builddir/build/BUILD/ceph-16.2.7/src/include/types.h:21,
>                  from 
> /builddir/build/BUILD/ceph-16.2.7/src/msg/msg_types.h:23,
>                  from
> /builddir/build/BUILD/ceph-16.2.7/src/common/ceph_context.h:36,
>                  from /builddir/build/BUILD/ceph-16.2.7/src/common/dout.h:29,
>                  from /builddir/build/BUILD/ceph-16.2.7/src/common/debug.h:18,
>                  from
> /builddir/build/BUILD/ceph-16.2.7/src/mgr/ActivePyModule.cc:16:
> /usr/include/boost/integer_traits.hpp:83:64: error: narrowing
> conversion of '255' from 'int' to 'char' [-Wnarrowing]
>    83 |     public detail::integer_traits_base<char, CHAR_MIN, CHAR_MAX>
>       |
> 
> https://koji.fedoraproject.org/koji/taskinfo?taskID=81520773
> 
> Are we expecting an update to boost by any chance?

Thanks for the preprocessed source.  That clearly shows a bug in
python3:
# 1681 "/usr/include/python3.10/pyconfig-64.h" 3 4
#define _DARWIN_C_SOURCE 1
#define _FILE_OFFSET_BITS 64
#define _GNU_SOURCE 1
#define _LARGEFILE_SOURCE 1
#define _NETBSD_SOURCE 1
#define _POSIX_C_SOURCE 200809L
#define _PYTHONFRAMEWORK ""
#define _REENTRANT 1
#define _XOPEN_SOURCE 700
#define _XOPEN_SOURCE_EXTENDED 1
#define __BSD_VISIBLE 1
#define __CHAR_UNSIGNED__ 1

__CHAR_UNSIGNED__ is a gcc predefined macro that is defined iff
-funsigned-char is in effect (by default or explicit), while it
shouldn't be defined if -fsigned-char is in effect (by default or
explicit).  As you used -fsigned-char option on -funsigned-char
defaulting arch, gcc correctly doesn't predefine __CHAR_UNSIGNED__.

But this python header defines it anyway which is just wrong,
because it breaks -fsigned-char explicit option on arches that default
to -funsigned-char - glibc limits.h that is included later will:
/* Minimum and maximum values a `char' can hold.  */
#  ifdef __CHAR_UNSIGNED__
#   define CHAR_MIN     0
#   define CHAR_MAX     UCHAR_MAX
#  else
#   define CHAR_MIN     SCHAR_MIN
#   define CHAR_MAX     SCHAR_MAX
#  endif
and so CHAR_{MIN,MAX} won't match what char actually is.
If python wants in configure some macro for its own purposes,
it shouldn't use __CHAR_UNSIGNED__ but should use some
ideally non-reserved namespace identifier of its own.

        Jakub
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam on the list, report it: 
https://pagure.io/fedora-infrastructure

Reply via email to