diff mbox series

[1/2] README: bump minimum required clang/llvm version

Message ID 20240229095529.17723-2-roger.pau@citrix.com (mailing list archive)
State New
Headers show
Series Restrict Clang/LLVM supported versions | expand

Commit Message

Roger Pau Monne Feb. 29, 2024, 9:55 a.m. UTC
We no longer have a way to build with the minimum required clang/llvm version
stated in the README on the gitlab CI loop, since we dropped the Debian Jessie
container that had Clang 3.5.0.

Bump the minimum required Clang/LLVM to the one used in the oldest production
FreeBSD version (13.2 currently), as that's the main reason I care to maintain
Clang/LLVM support, and as far as I know FreeBSD is the only production
deployment of Xen built with Clang/LLVM.

Purge the build jobs for non-supported Clang versions from Gitlab CI.  Note the
.dockerfiles for the respective distros are explicitly not adjusted to drop the
install of the clang packages, or else those jobs would start to fail on older
Xen branches.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
I'm willing to consider older versions, but there needs to be a reason (iow:
use-case) for considering those, as maintaining support for older toolchains is
a burden.
---
 README                          |  2 +-
 automation/gitlab-ci/build.yaml | 45 ---------------------------------
 2 files changed, 1 insertion(+), 46 deletions(-)

Comments

Jan Beulich Feb. 29, 2024, 12:11 p.m. UTC | #1
On 29.02.2024 10:55, Roger Pau Monne wrote:
> --- a/README
> +++ b/README
> @@ -41,7 +41,7 @@ provided by your OS distributor:
>          - GCC 4.1.2_20070115 or later
>          - GNU Binutils 2.16.91.0.5 or later
>          or
> -        - Clang/LLVM 3.5 or later
> +        - Clang/LLVM 14.0.0 or later

Wow, that's a big step. I'm build-testing with Clang7 on one system and
with Clang5 on another (and the latter more frequently than the former).
If any real dependency on this new a version (about 3 years old?) was
introduced, I would then no longer be able to locally test any Clang
builds (and hence the risk would again increase that I introduce issues
that affect just Clang builds).

Jan
Roger Pau Monne Feb. 29, 2024, 12:40 p.m. UTC | #2
On Thu, Feb 29, 2024 at 01:11:55PM +0100, Jan Beulich wrote:
> On 29.02.2024 10:55, Roger Pau Monne wrote:
> > --- a/README
> > +++ b/README
> > @@ -41,7 +41,7 @@ provided by your OS distributor:
> >          - GCC 4.1.2_20070115 or later
> >          - GNU Binutils 2.16.91.0.5 or later
> >          or
> > -        - Clang/LLVM 3.5 or later
> > +        - Clang/LLVM 14.0.0 or later
> 
> Wow, that's a big step. I'm build-testing with Clang7 on one system and
> with Clang5 on another (and the latter more frequently than the former).
> If any real dependency on this new a version (about 3 years old?) was
> introduced, I would then no longer be able to locally test any Clang
> builds (and hence the risk would again increase that I introduce issues
> that affect just Clang builds).

Would it be possible for you to update to a newer version?  I see both
the OpenSUSE containers in Gitlab have newer versions of Clang.

The reasoning for selecting such versions is in the commit message, I
simply see no point in maintaining support for older Clang versions if
there's no-one that actually runs such builds.  Just listing them as
supported for being able to output a binary that's never run tested is
not helpful.

Thanks, Roger.
Jan Beulich Feb. 29, 2024, 1:01 p.m. UTC | #3
On 29.02.2024 13:40, Roger Pau Monné wrote:
> On Thu, Feb 29, 2024 at 01:11:55PM +0100, Jan Beulich wrote:
>> On 29.02.2024 10:55, Roger Pau Monne wrote:
>>> --- a/README
>>> +++ b/README
>>> @@ -41,7 +41,7 @@ provided by your OS distributor:
>>>          - GCC 4.1.2_20070115 or later
>>>          - GNU Binutils 2.16.91.0.5 or later
>>>          or
>>> -        - Clang/LLVM 3.5 or later
>>> +        - Clang/LLVM 14.0.0 or later
>>
>> Wow, that's a big step. I'm build-testing with Clang7 on one system and
>> with Clang5 on another (and the latter more frequently than the former).
>> If any real dependency on this new a version (about 3 years old?) was
>> introduced, I would then no longer be able to locally test any Clang
>> builds (and hence the risk would again increase that I introduce issues
>> that affect just Clang builds).
> 
> Would it be possible for you to update to a newer version?  I see both
> the OpenSUSE containers in Gitlab have newer versions of Clang.

No. These are SLES versions which I'm not intending to touch. See

https://lists.xen.org/archives/html/xen-devel/2024-02/msg01793.html

and

https://lists.xen.org/archives/html/xen-devel/2024-02/msg01795.html

for why. The most recent piece of hardware I've installed a fresh (but
not exactly new, yet still fully supported) SLES version on would
apparently offer Clang7 only, either.

If anything I could see about building a newer Clang version myself;
no idea how involved that is compared to the building of gcc (which I
consider pretty straightforward, but that's biased by me being used to
doing so).

Jan
Jan Beulich Feb. 29, 2024, 1:12 p.m. UTC | #4
On 29.02.2024 14:01, Jan Beulich wrote:
> On 29.02.2024 13:40, Roger Pau Monné wrote:
>> On Thu, Feb 29, 2024 at 01:11:55PM +0100, Jan Beulich wrote:
>>> On 29.02.2024 10:55, Roger Pau Monne wrote:
>>>> --- a/README
>>>> +++ b/README
>>>> @@ -41,7 +41,7 @@ provided by your OS distributor:
>>>>          - GCC 4.1.2_20070115 or later
>>>>          - GNU Binutils 2.16.91.0.5 or later
>>>>          or
>>>> -        - Clang/LLVM 3.5 or later
>>>> +        - Clang/LLVM 14.0.0 or later
>>>
>>> Wow, that's a big step. I'm build-testing with Clang7 on one system and
>>> with Clang5 on another (and the latter more frequently than the former).
>>> If any real dependency on this new a version (about 3 years old?) was
>>> introduced, I would then no longer be able to locally test any Clang
>>> builds (and hence the risk would again increase that I introduce issues
>>> that affect just Clang builds).
>>
>> Would it be possible for you to update to a newer version?  I see both
>> the OpenSUSE containers in Gitlab have newer versions of Clang.
> 
> No. These are SLES versions which I'm not intending to touch. See
> 
> https://lists.xen.org/archives/html/xen-devel/2024-02/msg01793.html
> 
> and
> 
> https://lists.xen.org/archives/html/xen-devel/2024-02/msg01795.html
> 
> for why. The most recent piece of hardware I've installed a fresh (but
> not exactly new, yet still fully supported) SLES version on would
> apparently offer Clang7 only, either.

Bah, that's not even Clang, only LLVM.

Jan
Roger Pau Monne Feb. 29, 2024, 2:21 p.m. UTC | #5
On Thu, Feb 29, 2024 at 02:12:26PM +0100, Jan Beulich wrote:
> On 29.02.2024 14:01, Jan Beulich wrote:
> > On 29.02.2024 13:40, Roger Pau Monné wrote:
> >> On Thu, Feb 29, 2024 at 01:11:55PM +0100, Jan Beulich wrote:
> >>> On 29.02.2024 10:55, Roger Pau Monne wrote:
> >>>> --- a/README
> >>>> +++ b/README
> >>>> @@ -41,7 +41,7 @@ provided by your OS distributor:
> >>>>          - GCC 4.1.2_20070115 or later
> >>>>          - GNU Binutils 2.16.91.0.5 or later
> >>>>          or
> >>>> -        - Clang/LLVM 3.5 or later
> >>>> +        - Clang/LLVM 14.0.0 or later
> >>>
> >>> Wow, that's a big step. I'm build-testing with Clang7 on one system and
> >>> with Clang5 on another (and the latter more frequently than the former).
> >>> If any real dependency on this new a version (about 3 years old?) was
> >>> introduced, I would then no longer be able to locally test any Clang
> >>> builds (and hence the risk would again increase that I introduce issues
> >>> that affect just Clang builds).
> >>
> >> Would it be possible for you to update to a newer version?  I see both
> >> the OpenSUSE containers in Gitlab have newer versions of Clang.
> > 
> > No. These are SLES versions which I'm not intending to touch. See
> > 
> > https://lists.xen.org/archives/html/xen-devel/2024-02/msg01793.html
> > 
> > and
> > 
> > https://lists.xen.org/archives/html/xen-devel/2024-02/msg01795.html
> > 
> > for why. The most recent piece of hardware I've installed a fresh (but
> > not exactly new, yet still fully supported) SLES version on would
> > apparently offer Clang7 only, either.

Hm, OK.  Would containers be an option?

I don't know for gcc, but for clang I'm quite sure the only run time
tested builds are the ones used by FreeBSD.  I'm hesitant to claim
clang versions as supported when they are only tested to generate an
output without triggering any errors, but there's no testing at all
that the generated code is functional.

> Bah, that's not even Clang, only LLVM.

I'm confused by this, doesn't your llvm package include clang?

Thanks, Roger.
Jan Beulich Feb. 29, 2024, 2:28 p.m. UTC | #6
On 29.02.2024 15:21, Roger Pau Monné wrote:
> On Thu, Feb 29, 2024 at 02:12:26PM +0100, Jan Beulich wrote:
>> Bah, that's not even Clang, only LLVM.
> 
> I'm confused by this, doesn't your llvm package include clang?

No, there are quite a few RPMs in general in SLES to cover everything,
yet on the distro in question the clang* one(s) are (is) missing.

Jan
Julien Grall March 12, 2024, 10:45 p.m. UTC | #7
Hi Roger,

On 29/02/2024 09:55, Roger Pau Monne wrote:
> We no longer have a way to build with the minimum required clang/llvm version
> stated in the README on the gitlab CI loop, since we dropped the Debian Jessie
> container that had Clang 3.5.0.
> 
> Bump the minimum required Clang/LLVM to the one used in the oldest production
> FreeBSD version (13.2 currently), as that's the main reason I care to maintain
> Clang/LLVM support, and as far as I know FreeBSD is the only production
> deployment of Xen built with Clang/LLVM.
> 
> Purge the build jobs for non-supported Clang versions from Gitlab CI.  Note the
> .dockerfiles for the respective distros are explicitly not adjusted to drop the
> install of the clang packages, or else those jobs would start to fail on older
> Xen branches.
> 
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
> I'm willing to consider older versions, but there needs to be a reason (iow:
> use-case) for considering those, as maintaining support for older toolchains is
> a burden.

It makes sense. On another thread I mentioned that QEMU also took the 
approach to only support compilers from currently (security?) supported 
distros.

Acked-by: Julien Grall <jgrall@amazon.com>

This could always be relaxed.

Cheers,
diff mbox series

Patch

diff --git a/README b/README
index c8a108449e29..5fe52cc7a932 100644
--- a/README
+++ b/README
@@ -41,7 +41,7 @@  provided by your OS distributor:
         - GCC 4.1.2_20070115 or later
         - GNU Binutils 2.16.91.0.5 or later
         or
-        - Clang/LLVM 3.5 or later
+        - Clang/LLVM 14.0.0 or later
       - For ARM 32-bit:
         - GCC 4.9 or later
         - GNU Binutils 2.24 or later
diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml
index 6d2cb18b8883..347fe1b5a8db 100644
--- a/automation/gitlab-ci/build.yaml
+++ b/automation/gitlab-ci/build.yaml
@@ -638,21 +638,6 @@  debian-stretch-gcc:
   variables:
     CONTAINER: debian:stretch
 
-debian-stretch-clang:
-  extends: .clang-x86-64-build
-  variables:
-    CONTAINER: debian:stretch
-
-debian-stretch-clang-debug:
-  extends: .clang-x86-64-build-debug
-  variables:
-    CONTAINER: debian:stretch
-
-debian-stretch-32-clang-debug:
-  extends: .clang-x86-32-build-debug
-  variables:
-    CONTAINER: debian:stretch-i386
-
 debian-stretch-32-gcc-debug:
   extends: .gcc-x86-32-build-debug
   variables:
@@ -725,16 +710,6 @@  ubuntu-trusty-gcc-debug:
   variables:
     CONTAINER: ubuntu:trusty
 
-ubuntu-xenial-clang:
-  extends: .clang-x86-64-build
-  variables:
-    CONTAINER: ubuntu:xenial
-
-ubuntu-xenial-clang-debug:
-  extends: .clang-x86-64-build-debug
-  variables:
-    CONTAINER: ubuntu:xenial
-
 ubuntu-xenial-gcc:
   extends: .gcc-x86-64-build
   variables:
@@ -745,16 +720,6 @@  ubuntu-xenial-gcc-debug:
   variables:
     CONTAINER: ubuntu:xenial
 
-ubuntu-bionic-clang:
-  extends: .clang-x86-64-build
-  variables:
-    CONTAINER: ubuntu:bionic
-
-ubuntu-bionic-clang-debug:
-  extends: .clang-x86-64-build-debug
-  variables:
-    CONTAINER: ubuntu:bionic
-
 ubuntu-bionic-gcc:
   extends: .gcc-x86-64-build
   variables:
@@ -775,16 +740,6 @@  ubuntu-focal-gcc-debug:
   variables:
     CONTAINER: ubuntu:focal
 
-ubuntu-focal-clang:
-  extends: .clang-x86-64-build
-  variables:
-    CONTAINER: ubuntu:focal
-
-ubuntu-focal-clang-debug:
-  extends: .clang-x86-64-build-debug
-  variables:
-    CONTAINER: ubuntu:focal
-
 opensuse-leap-clang:
   extends: .clang-x86-64-build
   variables: