On 12:57 Wed 13 Apr     , Magnus Ihse Bursie wrote:
> I disagree completely. We had it this way in mainline originally, but it 
> was fixed in https://bugs.openjdk.java.net/browse/JDK-8256393.
>

Prior to this patch, it seems there were no GCC version requirements.
That's not what I'm suggesting.

What I'm suggesting is that we replace gcc-10=10.2.0-5ubuntu1~20.04
(or whatever it is now) with just gcc-10.

That still selects a specific major version of GCC. It is between
major versions that we see new optimisations introduced, deprecations,
etc.  I would certainly not suggest that we allow it to be switched
from e.g. GCC 10 to G11 behind our backs. I have dealt with such
transitions in Fedora and know the changes they bring.

What I don't see the advantage of is requiring a very specific package
version.  If this was OpenJDK, it would be like asking to build 8u
with specifically 8u332-b05 rather than just 8u.  I can't see that we
would do that without a very good reason. I don't see such a good
reason for requiring the same of GCC.

These two are handled differently on the GCC development side too.
Breakage is expected with the move to a new major version.  This
is why three stable versions are currently being maintained [0].
If breakage were to happen between minor releases of a stable
version, however, that would be a bug. I've yet to see a case
of it happening, though of course it's possible.

> As you might know, I'm not too fond of the GHA solution, since we can't 
> debug issues with Github's hosts. Nevertheless, many users look at the 
> GHA results as a way to sanity check their code. Any and all spurious 
> build failures is a problem then, since it will present a red marker -- 
> even if the new code in the PR is okay.

This specific versioning is producing precisely these spurious
failures.

The reason I started digging into this was because my PR failed on
Linux x86_64. There were no code changes in the PR (I was backporting
the GHA setup to our Shenandoah fork of 8u). Having only just added
support to 8u mainline, I found this very odd.  It turns out it failed
because it could no longer download the specific version of GCC. [1]

I agree GHA can be painful to debug - it took me weeks to get 8u
working in full - but it is useful for testing on architectures
and operating systems one doesn't have easy access to.

>  The less control we have over the build platform, the greater the
> chance for odd and non-reproducible build failures.  Selecting a
> specific version of the compiler is a way to guarantee reproducible
> build results. If the build succeeds in mainline, and I submit
> correct code, chances are higher that the build also succeeds in my
> PR. In contrast, if the gcc version suddenly were changed behind my
> back, the mainline build might succeed, and my PR build fail, not
> due to anything I've done wrong, but just due to the fact that the
> compiler was switched by the Ubuntu team in the meantime.  Yes, it
> means a bit more annoyance when upgrading the compiler, but that
> also means it is a conscious (and hopefully well tested)
> choice. I'll take that any day over re-introducing more uncertainty
> into an already-unstable testing procedure.

As I say, I'm not suggesting we don't select a specific version, just
that we are not *too* specific to the point we are constantly changing
the version specification every time the Ubuntu maintainer fixes a typo.

/Magnus

[0] https://gcc.gnu.org/
[1] 
https://github.com/openjdk-bots/shenandoah-jdk8u/runs/5889665932?check_suite_focus=true

Thanks
-- 
Andrew :)
Pronouns: he / him or they / them
Senior Free Java Software Engineer
OpenJDK Package Owner
Red Hat, Inc. (http://www.redhat.com)

PGP Key: ed25519/0xCFDA0F9B35964222 (hkp://keys.gnupg.net)
Fingerprint = 5132 579D D154 0ED2 3E04  C5A0 CFDA 0F9B 3596 4222

Reply via email to