Message ID | 20250320155908.43885-4-andrew.cooper3@citrix.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Xen: CI changes for new toolchain baseline | expand |
On 3/20/25 4:59 PM, Andrew Cooper wrote: > Signed-off-by: Andrew Cooper<andrew.cooper3@citrix.com> > --- > CC: Anthony PERARD<anthony.perard@vates.tech> > CC: Michal Orzel<michal.orzel@amd.com> > CC: Jan Beulich<jbeulich@suse.com> > CC: Julien Grall<julien@xen.org> > CC: Roger Pau Monné<roger.pau@citrix.com> > CC: Stefano Stabellini<sstabellini@kernel.org> > CC: Oleksii Kurochko<oleksii.kurochko@gmail.com> > --- > CHANGELOG.md | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/CHANGELOG.md b/CHANGELOG.md > index 9a5919585d43..4e333e608a96 100644 > --- a/CHANGELOG.md > +++ b/CHANGELOG.md > @@ -7,6 +7,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) > ## [4.21.0 UNRELEASED](https://xenbits.xenproject.org/gitweb/?p=xen.git;a=shortlog;h=staging) - TBD > > ### Changed > + - The minimum toolchain requirements have been increased to either: > + - GCC 5.1 and Binutils 2.25, or > + - Clang/LLVM 11 I think we want here to specify for which architectures it was done as RISC-V, for example, uses different versions: - GCC 12.2 or later - GNU Binutils 2.39 or later And for clang the version will be 17 as: f873029386dd415cd9caa78f600a593d9570c9ae("[BOLT] Add minimal RISC-V 64-bit support") $ git tag --contains f873029386dd415cd9caa78f600a593d9570c9ae llvmorg-17.0.0 ... I have some patch to build Xen RISC-V using clang-17 but I haven't sent to upstream yet as I am not really sure that if we need (or why we need) clang support just from the start. ~ Oleksii
On 21/03/2025 4:24 pm, Oleksii Kurochko wrote: > > > On 3/20/25 4:59 PM, Andrew Cooper wrote: >> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> >> --- >> CC: Anthony PERARD <anthony.perard@vates.tech> >> CC: Michal Orzel <michal.orzel@amd.com> >> CC: Jan Beulich <jbeulich@suse.com> >> CC: Julien Grall <julien@xen.org> >> CC: Roger Pau Monné <roger.pau@citrix.com> >> CC: Stefano Stabellini <sstabellini@kernel.org> >> CC: Oleksii Kurochko <oleksii.kurochko@gmail.com> >> --- >> CHANGELOG.md | 3 +++ >> 1 file changed, 3 insertions(+) >> >> diff --git a/CHANGELOG.md b/CHANGELOG.md >> index 9a5919585d43..4e333e608a96 100644 >> --- a/CHANGELOG.md >> +++ b/CHANGELOG.md >> @@ -7,6 +7,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) >> ## [4.21.0 UNRELEASED](https://xenbits.xenproject.org/gitweb/?p=xen.git;a=shortlog;h=staging) - TBD >> >> ### Changed >> + - The minimum toolchain requirements have been increased to either: >> + - GCC 5.1 and Binutils 2.25, or >> + - Clang/LLVM 11 > I think we want here to specify for which architectures it was done as RISC-V, for example, uses > different versions: > - GCC 12.2 or later > - GNU Binutils 2.39 or later > And for clang the version will be 17 as: > f873029386dd415cd9caa78f600a593d9570c9ae("[BOLT] Add minimal RISC-V 64-bit support") > $ git tag --contains f873029386dd415cd9caa78f600a593d9570c9ae > llvmorg-17.0.0 > ... > I have some patch to build Xen RISC-V using clang-17 but I haven't sent to upstream yet as I am not > really sure that if we need (or why we need) clang support just from the start. The same reason why we got an almost-nothing build in CI first, and are currently looking for a "hello world" message on boot. Keeping it working as you go is much easier than retrofitting at a later point, and supporting more than 1 of any $THING (not just compilers) is good to prevent accidental reliance on an implementation specific property. The only question is what version of Clang exists in Debian bookworm, as that affects how easy/hard it is to add to CI. According to https://packages.debian.org/search?keywords=clang, bookworm has Clang 14, while trixie has Clang 19. So, how hard a limit is Clang-17? Is Clang-14 doable or not? Alternatively, we could start adding some trixie containers. We have passed the toolchain freeze (was 15th March), so the build container should be stable now, even if it isn't quite released yet. ~Andrew
On 3/27/25 4:45 PM, Andrew Cooper wrote: > On 21/03/2025 4:24 pm, Oleksii Kurochko wrote: >> >> On 3/20/25 4:59 PM, Andrew Cooper wrote: >>> Signed-off-by: Andrew Cooper<andrew.cooper3@citrix.com> >>> --- >>> CC: Anthony PERARD<anthony.perard@vates.tech> >>> CC: Michal Orzel<michal.orzel@amd.com> >>> CC: Jan Beulich<jbeulich@suse.com> >>> CC: Julien Grall<julien@xen.org> >>> CC: Roger Pau Monné<roger.pau@citrix.com> >>> CC: Stefano Stabellini<sstabellini@kernel.org> >>> CC: Oleksii Kurochko<oleksii.kurochko@gmail.com> >>> --- >>> CHANGELOG.md | 3 +++ >>> 1 file changed, 3 insertions(+) >>> >>> diff --git a/CHANGELOG.md b/CHANGELOG.md >>> index 9a5919585d43..4e333e608a96 100644 >>> --- a/CHANGELOG.md >>> +++ b/CHANGELOG.md >>> @@ -7,6 +7,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) >>> ## [4.21.0 UNRELEASED](https://xenbits.xenproject.org/gitweb/?p=xen.git;a=shortlog;h=staging) - TBD >>> >>> ### Changed >>> + - The minimum toolchain requirements have been increased to either: >>> + - GCC 5.1 and Binutils 2.25, or >>> + - Clang/LLVM 11 >> I think we want here to specify for which architectures it was done as RISC-V, for example, uses >> different versions: >> - GCC 12.2 or later >> - GNU Binutils 2.39 or later >> And for clang the version will be 17 as: >> f873029386dd415cd9caa78f600a593d9570c9ae("[BOLT] Add minimal RISC-V 64-bit support") >> $ git tag --contains f873029386dd415cd9caa78f600a593d9570c9ae >> llvmorg-17.0.0 >> ... >> I have some patch to build Xen RISC-V using clang-17 but I haven't sent to upstream yet as I am not >> really sure that if we need (or why we need) clang support just from the start. > The same reason why we got an almost-nothing build in CI first, and are > currently looking for a "hello world" message on boot. > > Keeping it working as you go is much easier than retrofitting at a later > point, and supporting more than 1 of any $THING (not just compilers) is > good to prevent accidental reliance on an implementation specific property. > > The only question is what version of Clang exists in Debian bookworm, as > that affects how easy/hard it is to add to CI. > > According tohttps://packages.debian.org/search?keywords=clang, bookworm > has Clang 14, while trixie has Clang 19. > > So, how hard a limit is Clang-17? Is Clang-14 doable or not? I think it is pretty hard limit because: 1. I haven't checked all the extension but, for example, we required 'H' extension and the support for it was added in 16.0.0: [f4c887c3a8406d85f4f942c8350f10026994f4d8("RISCV] Add H extension") $ git tag --contains f4c887c3a8406d85f4f942c8350f10026994f4d8 llvmorg-16.0.0 ... 2. Minimal support for RISCV-64 was added in clang17: f873029386dd415cd9caa78f600a593d9570c9ae("[BOLT] Add minimal RISC-V 64-bit support") $ git tag --contains f873029386dd415cd9caa78f600a593d9570c9ae llvmorg-17.0.0 ... And, actually, the second one reason was the reason why I tried to build with clang17 and suggests to use it as a baseline. > > Alternatively, we could start adding some trixie containers. We have > passed the toolchain freeze (was 15th March), so the build container > should be stable now, even if it isn't quite released yet. clang has nice script to add any version. I did that in the following way for bookworm docker container: + DEPS=( + # Clang + wget + gnupg + ca-certificates + lsb-release + software-properties-common ... + update-ca-certificates + + wget -O -https://apt.llvm.org/llvm.sh | bash -s 17 + wget -O -https://apt.llvm.org/llvm.sh | bash -s 18 + wget -O -https://apt.llvm.org/llvm.sh | bash -s 19 + wget -O -https://apt.llvm.org/llvm.sh | bash -s 20 + # ln -s /usr/bin/clang-17 /usr/bin/clang ~ Oleksii
On 27/03/2025 4:55 pm, Oleksii Kurochko wrote: > > > On 3/27/25 4:45 PM, Andrew Cooper wrote: >> On 21/03/2025 4:24 pm, Oleksii Kurochko wrote: >>> On 3/20/25 4:59 PM, Andrew Cooper wrote: >>>> Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> >>>> --- >>>> CC: Anthony PERARD <anthony.perard@vates.tech> >>>> CC: Michal Orzel <michal.orzel@amd.com> >>>> CC: Jan Beulich <jbeulich@suse.com> >>>> CC: Julien Grall <julien@xen.org> >>>> CC: Roger Pau Monné <roger.pau@citrix.com> >>>> CC: Stefano Stabellini <sstabellini@kernel.org> >>>> CC: Oleksii Kurochko <oleksii.kurochko@gmail.com> >>>> --- >>>> CHANGELOG.md | 3 +++ >>>> 1 file changed, 3 insertions(+) >>>> >>>> diff --git a/CHANGELOG.md b/CHANGELOG.md >>>> index 9a5919585d43..4e333e608a96 100644 >>>> --- a/CHANGELOG.md >>>> +++ b/CHANGELOG.md >>>> @@ -7,6 +7,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) >>>> ## [4.21.0 UNRELEASED](https://xenbits.xenproject.org/gitweb/?p=xen.git;a=shortlog;h=staging) - TBD >>>> >>>> ### Changed >>>> + - The minimum toolchain requirements have been increased to either: >>>> + - GCC 5.1 and Binutils 2.25, or >>>> + - Clang/LLVM 11 >>> I think we want here to specify for which architectures it was done as RISC-V, for example, uses >>> different versions: >>> - GCC 12.2 or later >>> - GNU Binutils 2.39 or later >>> And for clang the version will be 17 as: >>> f873029386dd415cd9caa78f600a593d9570c9ae("[BOLT] Add minimal RISC-V 64-bit support") >>> $ git tag --contains f873029386dd415cd9caa78f600a593d9570c9ae >>> llvmorg-17.0.0 >>> ... >>> I have some patch to build Xen RISC-V using clang-17 but I haven't sent to upstream yet as I am not >>> really sure that if we need (or why we need) clang support just from the start. >> The same reason why we got an almost-nothing build in CI first, and are >> currently looking for a "hello world" message on boot. >> >> Keeping it working as you go is much easier than retrofitting at a later >> point, and supporting more than 1 of any $THING (not just compilers) is >> good to prevent accidental reliance on an implementation specific property. >> >> The only question is what version of Clang exists in Debian bookworm, as >> that affects how easy/hard it is to add to CI. >> >> According to https://packages.debian.org/search?keywords=clang, bookworm >> has Clang 14, while trixie has Clang 19. >> >> So, how hard a limit is Clang-17? Is Clang-14 doable or not? > I think it is pretty hard limit because: > 1. I haven't checked all the extension but, for example, we required 'H' extension and > the support for it was added in 16.0.0: > [f4c887c3a8406d85f4f942c8350f10026994f4d8("RISCV] Add H extension") > $ git tag --contains f4c887c3a8406d85f4f942c8350f10026994f4d8 > llvmorg-16.0.0 > ... > 2. Minimal support for RISCV-64 was added in clang17: > f873029386dd415cd9caa78f600a593d9570c9ae("[BOLT] Add minimal RISC-V 64-bit support") > $ git tag --contains f873029386dd415cd9caa78f600a593d9570c9ae > llvmorg-17.0.0 > ... > And, actually, the second one reason was the reason why I tried to build with clang17 and suggests to use > it as a baseline. That's fine. It means we can't use Debian bookworm for this purpose. > >> Alternatively, we could start adding some trixie containers. We have >> passed the toolchain freeze (was 15th March), so the build container >> should be stable now, even if it isn't quite released yet. > clang has nice script to add any version. I did that in the following way > for bookworm docker container: > + DEPS=( > + # Clang > + wget > + gnupg > + ca-certificates > + lsb-release > + software-properties-common > ... > + update-ca-certificates > + > + wget -O - https://apt.llvm.org/llvm.sh | bash -s 17 > + wget -O - https://apt.llvm.org/llvm.sh | bash -s 18 > + wget -O - https://apt.llvm.org/llvm.sh | bash -s 19 > + wget -O - https://apt.llvm.org/llvm.sh | bash -s 20 > + # ln -s /usr/bin/clang-17 /usr/bin/clang We used to do this. It backfired spectacularly when rebuilding a container after versions of clang had been dropped, and took out testing on the stable-* trees as a consequence. Therefore, we don't do this any more. (Or at least, not in a container marked for blocking failures.) ~Andrew
diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a5919585d43..4e333e608a96 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) ## [4.21.0 UNRELEASED](https://xenbits.xenproject.org/gitweb/?p=xen.git;a=shortlog;h=staging) - TBD ### Changed + - The minimum toolchain requirements have been increased to either: + - GCC 5.1 and Binutils 2.25, or + - Clang/LLVM 11 ### Added - On x86:
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> --- CC: Anthony PERARD <anthony.perard@vates.tech> CC: Michal Orzel <michal.orzel@amd.com> CC: Jan Beulich <jbeulich@suse.com> CC: Julien Grall <julien@xen.org> CC: Roger Pau Monné <roger.pau@citrix.com> CC: Stefano Stabellini <sstabellini@kernel.org> CC: Oleksii Kurochko <oleksii.kurochko@gmail.com> --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+)