diff mbox series

[for-4.20,2/2] automation/cirrus-ci: introduce FreeBSD randconfig builds

Message ID 20250116085852.78273-2-roger.pau@citrix.com (mailing list archive)
State New
Headers show
Series [for-4.20,1/2] automation/cirrus-ci: update FreeBSD to 13.4 | expand

Commit Message

Roger Pau Monné Jan. 16, 2025, 8:58 a.m. UTC
Add a new randconfig job for each FreeBSD version.  This requires some
rework of the template so common parts can be shared between the full and
the randconfig builds.  Such randconfig builds are relevant because FreeBSD
is the only tested system that has a full non-GNU toolchain.

While there remove the stale `python` package install in the full build
case: this is no longer needed if `python311` is also specified.

Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
---
 .cirrus.yml | 64 +++++++++++++++++++++++++++++++++++++++++------------
 1 file changed, 50 insertions(+), 14 deletions(-)

Comments

Andrew Cooper Jan. 16, 2025, 9:46 a.m. UTC | #1
On 16/01/2025 8:58 am, Roger Pau Monne wrote:
> Add a new randconfig job for each FreeBSD version.  This requires some
> rework of the template so common parts can be shared between the full and
> the randconfig builds.  Such randconfig builds are relevant because FreeBSD
> is the only tested system that has a full non-GNU toolchain.
>
> While there remove the stale `python` package install in the full build
> case: this is no longer needed if `python311` is also specified.
>
> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> ---
>  .cirrus.yml | 64 +++++++++++++++++++++++++++++++++++++++++------------
>  1 file changed, 50 insertions(+), 14 deletions(-)
>
> diff --git a/.cirrus.yml b/.cirrus.yml
> index ee80152890f2..f3ea29102cbf 100644
> --- a/.cirrus.yml
> +++ b/.cirrus.yml
> @@ -1,11 +1,24 @@
>  # https://cirrus-ci.org/guide/tips-and-tricks/#sharing-configuration-between-tasks
> -freebsd_template: &FREEBSD_TEMPLATE
> +freebsd_13: &FREEBSD_13
> +  freebsd_instance:
> +    image_family: freebsd-13-4
> +freebsd_14: &FREEBSD_14
> +  freebsd_instance:
> +    image_family: freebsd-14-2
> +freebsd_15: &FREEBSD_15
> +  freebsd_instance:
> +    image_family: freebsd-15-0-snap
> +
> +freebsd_template: &FREEBSD_ENV
>    environment:
>      APPEND_LIB: /usr/local/lib
>      APPEND_INCLUDES: /usr/local/include
>  
> +freebsd_full_build_template: &FREEBSD_FULL_BUILD_TEMPLATE
> +  << : *FREEBSD_ENV
> +
>    install_script: pkg install -y seabios gmake ninja bash
> -                                 pkgconf python bison perl5
> +                                 pkgconf bison perl5
>                                   yajl lzo2 pixman argp-standalone
>                                   libxml2 glib git python311
>  
> @@ -15,20 +28,43 @@ freebsd_template: &FREEBSD_TEMPLATE
>      - ./configure --with-system-seabios=/usr/local/share/seabios/bios.bin
>      - gmake -j`sysctl -n hw.ncpu` clang=y
>  
> +freebsd_randconfig_template: &FREEBSD_RANDCONFIG_TEMPLATE
> +  << : *FREEBSD_ENV
> +
> +  install_script: pkg install -y gmake python bison

It's odd having python311 for the full build but only python for the
randconfig build.

IIRC, it's just for Qemu, so there is a split based on whether we build
tools or not.

What will happen when python becomes 3.12?  Does pkg have a way of
asking "I want any python as long as it's 3.11 or later" ?

Relatedly, how likely is python to transform into 3.12 in a bump to the
minor FreeBSD versions?

~Andrew
Roger Pau Monné Jan. 16, 2025, 12:16 p.m. UTC | #2
On Thu, Jan 16, 2025 at 09:46:33AM +0000, Andrew Cooper wrote:
> On 16/01/2025 8:58 am, Roger Pau Monne wrote:
> > Add a new randconfig job for each FreeBSD version.  This requires some
> > rework of the template so common parts can be shared between the full and
> > the randconfig builds.  Such randconfig builds are relevant because FreeBSD
> > is the only tested system that has a full non-GNU toolchain.
> >
> > While there remove the stale `python` package install in the full build
> > case: this is no longer needed if `python311` is also specified.
> >
> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com>
> > ---
> >  .cirrus.yml | 64 +++++++++++++++++++++++++++++++++++++++++------------
> >  1 file changed, 50 insertions(+), 14 deletions(-)
> >
> > diff --git a/.cirrus.yml b/.cirrus.yml
> > index ee80152890f2..f3ea29102cbf 100644
> > --- a/.cirrus.yml
> > +++ b/.cirrus.yml
> > @@ -1,11 +1,24 @@
> >  # https://cirrus-ci.org/guide/tips-and-tricks/#sharing-configuration-between-tasks
> > -freebsd_template: &FREEBSD_TEMPLATE
> > +freebsd_13: &FREEBSD_13
> > +  freebsd_instance:
> > +    image_family: freebsd-13-4
> > +freebsd_14: &FREEBSD_14
> > +  freebsd_instance:
> > +    image_family: freebsd-14-2
> > +freebsd_15: &FREEBSD_15
> > +  freebsd_instance:
> > +    image_family: freebsd-15-0-snap
> > +
> > +freebsd_template: &FREEBSD_ENV
> >    environment:
> >      APPEND_LIB: /usr/local/lib
> >      APPEND_INCLUDES: /usr/local/include
> >  
> > +freebsd_full_build_template: &FREEBSD_FULL_BUILD_TEMPLATE
> > +  << : *FREEBSD_ENV
> > +
> >    install_script: pkg install -y seabios gmake ninja bash
> > -                                 pkgconf python bison perl5
> > +                                 pkgconf bison perl5
> >                                   yajl lzo2 pixman argp-standalone
> >                                   libxml2 glib git python311
> >  
> > @@ -15,20 +28,43 @@ freebsd_template: &FREEBSD_TEMPLATE
> >      - ./configure --with-system-seabios=/usr/local/share/seabios/bios.bin
> >      - gmake -j`sysctl -n hw.ncpu` clang=y
> >  
> > +freebsd_randconfig_template: &FREEBSD_RANDCONFIG_TEMPLATE
> > +  << : *FREEBSD_ENV
> > +
> > +  install_script: pkg install -y gmake python bison
> 
> It's odd having python311 for the full build but only python for the
> randconfig build.
> 
> IIRC, it's just for Qemu, so there is a split based on whether we build
> tools or not.

Right, this was added by you in order to fix the build with the new
QEMU:

1223375d8b7f CI: Fix builds following qemu-xen update

IIRC you said that on FreeBSD you used 3.11 because it already
includes the required packages (tomllib and ensurepip).

> What will happen when python becomes 3.12?  Does pkg have a way of
> asking "I want any python as long as it's 3.11 or later" ?

Hm, I don't really know.  Maybe we could use a regexp, but that seems
ugly.  Otherwise maybe some shell logic based on the output of `pkg
version`.  I've been told by pkg developers there's no way (yet) to do
such version matching.

One suggestion I've received is to use the python3 meta-package,
which will default to python 3.11 right now (and will keep moving
forward).

Would you be OK with that?

> Relatedly, how likely is python to transform into 3.12 in a bump to the
> minor FreeBSD versions?

It will transform as a result of the change in the ports tree, rather
than a FreeBSD version bump.  When that happens it will affect all
FreeBSD branches mostly equally (as it propagates to the binary package
repositories).

Thanks, Roger.
diff mbox series

Patch

diff --git a/.cirrus.yml b/.cirrus.yml
index ee80152890f2..f3ea29102cbf 100644
--- a/.cirrus.yml
+++ b/.cirrus.yml
@@ -1,11 +1,24 @@ 
 # https://cirrus-ci.org/guide/tips-and-tricks/#sharing-configuration-between-tasks
-freebsd_template: &FREEBSD_TEMPLATE
+freebsd_13: &FREEBSD_13
+  freebsd_instance:
+    image_family: freebsd-13-4
+freebsd_14: &FREEBSD_14
+  freebsd_instance:
+    image_family: freebsd-14-2
+freebsd_15: &FREEBSD_15
+  freebsd_instance:
+    image_family: freebsd-15-0-snap
+
+freebsd_template: &FREEBSD_ENV
   environment:
     APPEND_LIB: /usr/local/lib
     APPEND_INCLUDES: /usr/local/include
 
+freebsd_full_build_template: &FREEBSD_FULL_BUILD_TEMPLATE
+  << : *FREEBSD_ENV
+
   install_script: pkg install -y seabios gmake ninja bash
-                                 pkgconf python bison perl5
+                                 pkgconf bison perl5
                                  yajl lzo2 pixman argp-standalone
                                  libxml2 glib git python311
 
@@ -15,20 +28,43 @@  freebsd_template: &FREEBSD_TEMPLATE
     - ./configure --with-system-seabios=/usr/local/share/seabios/bios.bin
     - gmake -j`sysctl -n hw.ncpu` clang=y
 
+freebsd_randconfig_template: &FREEBSD_RANDCONFIG_TEMPLATE
+  << : *FREEBSD_ENV
+
+  install_script: pkg install -y gmake python bison
+
+  build_script:
+    - cc --version
+    - gmake -j`sysctl -n hw.ncpu` -C xen clang=y \
+            KCONFIG_ALLCONFIG=tools/kconfig/allrandom.config randconfig
+    - gmake -j`sysctl -n hw.ncpu` build-xen clang=y
+
 task:
-  name: 'FreeBSD 13'
-  freebsd_instance:
-    image_family: freebsd-13-4
-  << : *FREEBSD_TEMPLATE
+  name: 'FreeBSD 13: full build'
+  << : *FREEBSD_13
+  << : *FREEBSD_FULL_BUILD_TEMPLATE
 
 task:
-  name: 'FreeBSD 14'
-  freebsd_instance:
-    image_family: freebsd-14-2
-  << : *FREEBSD_TEMPLATE
+  name: 'FreeBSD 14: full build'
+  << : *FREEBSD_14
+  << : *FREEBSD_FULL_BUILD_TEMPLATE
 
 task:
-  name: 'FreeBSD 15'
-  freebsd_instance:
-    image_family: freebsd-15-0-snap
-  << : *FREEBSD_TEMPLATE
+  name: 'FreeBSD 15: full build'
+  << : *FREEBSD_15
+  << : *FREEBSD_FULL_BUILD_TEMPLATE
+
+task:
+  name: 'FreeBSD 13: randconfig'
+  << : *FREEBSD_13
+  << : *FREEBSD_RANDCONFIG_TEMPLATE
+
+task:
+  name: 'FreeBSD 14: randconfig'
+  << : *FREEBSD_14
+  << : *FREEBSD_RANDCONFIG_TEMPLATE
+
+task:
+  name: 'FreeBSD 15: randconfig'
+  << : *FREEBSD_15
+  << : *FREEBSD_RANDCONFIG_TEMPLATE