Re: F40 proposal: Porting Fedora to Modern C (System-Wide Change proposal)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



* Daniel P. Berrangé:

> Good to see it mentions autoconf, as such tests were my immediate
> concern upon reading the intro.
>
> I presume the same problem will exist in other build systems that
> probe for features, both well known ones like cmake/meson/etc,
> but also home grown ones that are package specific (/me glares
> at QEMU's 'configure' that merely pretends to look like it is
> from autoconf, but is actually just a hand written shell script).

Yes, some distributions use config.log diffing.  I've got an
instrumented GCC that logs the relevant errors in a way that is
impossible to hide.  There are pros and cons for each approach.

I found one non-autoconf issue already:

  Unclear how CCompiler.has_function works for functions with parameters
  <https://github.com/pypa/setuptools/issues/3648>

This is actually quite typical of the things that are papered over by
implicit function declarations.

>> == Dependencies ==
>> To avoid regressing the porting effort, GCC as the system compiler
>> needs to reject obsolete constructs by default. This is expected for
>> GCC 14, to be released as part of Fedora 40 in Spring 2024.
>
> So this change is talking about a new GCC landing in Fedora 40.
>
> To avoid massive disruption to Fedora though, we need to be doing
> work waaaaay earlier than the Fedora 40 dev cycle though.

Yes, I understand that we might be too late already.  I wanted to get
the announcement out of the door that we can start carrying patches for
this in rawhide starting now (particularly where we might have cascading
effects on our testing, like the has_function issue mentioned above).

I don't think I can do this work on a branch because keeping that branch
up-to-date will be too much work on its own.

> Identifying all the places where autoconf tests quietly change
> their result, and silently toggle on/off alternative code paths
> is going to be a big job on its own.

Right, but other distributions are doing this as well (Gentoo has
already begun working on this from a Clang 16 perspective), and we are
trying to come up with ways to share observations and patches.

One tough aspect is that this affects disproportionately legacy software
for which there is no upstream around anymore, or the sources are
difficult to change because they are supposed to keep building on very,
very old systems.  We can switch to building in C89 mode in these cases.

> I feel that this need to start on the prep work in F38/F39 is not
> very obvious from the F40 change proposal text.

I mentioned that package maintainers need to tolerate the odd patch to
fix issues in rawhide.  That's what I'm asking for today.

> Concretely, as an upstream  maintainer, what should they do to test
> the behaviour of their code ?  Is there more to it than just
> setting CFLAGS="-std=gnu99", if they want to validate this in their
> upstream CI ahead of GCC 14 arriving ?

It's -Werror=implicit-int -Werror=implicit-function-declaration.  Best
to throw in -Werror=int-conversion -Werror=strict-prototypes
-Werror=old-style-definition.  -Werror=int-conversion should really be a
no-brainer, the other two are about the removal of old-style function
definitions and declarations that are not prototypes from C2X (also
mentioned in the proposal).  I can probably spell this out in the
proposal.

Some of the planned Clang 16+ and GCC 14+ changes may not be directly
testable with current compilers, but they will be less impactful than
the two main issues, I think.  That's why I'm focusing to get us past
the C99 bump first.

Thanks,
Florian
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
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@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux