[bug#76098,0/4] Patches towards a release

Message ID cover.1738851574.git.efraim@flashner.co.il
Headers
Series Patches towards a release |

Message

Efraim Flashner Feb. 6, 2025, 2:34 p.m. UTC
  In the process toward a new release I took a look at the 'release' make
target and the release.scm manifest to start.

In the Makefile:
* Added riscv64-linux as a supported system
* switch the assert-binaries-available make target we've used previously
  to make sure we have substitutes for a base set of packages to point
  to the installer manifest.  If the purpose of the installer is to
  install and then everyone expected to run `guix pull` then we need the
  packages from the installer.

release.scm:
I don't have a real good use for this manifest currently, but I've made
some changes anyway:
* %base-packages already existed in (gnu system), and that seemed like a
  good list of packages that we would need.
* %system-packages: The note mentioned the installer, so I copied the
  work I did on the installer.scm to this list.

installer.scm:
A manifest which only checks that we have substitutes for what can be
installed using the TUI installer (assuming no extra added items).  It
differs from the GUIX_SYSTEM_INSTALLER_SYSTEM variable in the Makefile
by including aarch64 as an architecture.  Ideally all the packages
should compile, which would allow someone to run the installer
successfully for x86_64-linux, i686-linux or aarch64-linux.

cross-compile.scm:
Ideally all the packages one would need to produce an OS image for
another architecture we support, or the same %base-packages for other
architectures we have.  Currently it only tests from x86_64-linux.

Ideally I'd like to see the installer.scm and cross-compile.scm
manifests added to cuirass.  I'd hope we could keep 100% build on
installer.scm so we can actually offer all the options in the installer,
and the cross-compile.scm manifest might need to be split so we can
focus on cross-compiling an OS config vs cross-compiling binaries for
another architecture.

Efraim Flashner (4):
  Makefile.am: Add riscv64-linux as a supported-system.
  etc: manifests/release: Adjust for changes in Guix.
  etc: Add installer manifest.
  etc: Add cross-compile manifest.

 Makefile.am                     |  15 +--
 etc/manifests/cross-compile.scm | 167 ++++++++++++++++++++++++++++++++
 etc/manifests/installer.scm     | 112 +++++++++++++++++++++
 etc/manifests/release.scm       |  51 +++++-----
 4 files changed, 312 insertions(+), 33 deletions(-)
 create mode 100644 etc/manifests/cross-compile.scm
 create mode 100644 etc/manifests/installer.scm


base-commit: 782cc91970a795a58d10391f387cc12e4bfd1c90
  

Comments

Ludovic Courtès Feb. 12, 2025, 9:38 a.m. UTC | #1
Hello Efraim,

Thanks for leading this effort!

Efraim Flashner <efraim@flashner.co.il> skribis:

> In the Makefile:
> * Added riscv64-linux as a supported system

One issue is that ci.guix, which is responsible for building release
artifacts (tarballs and ISOs), doesn’t build for riscv64-linux nor for
armhf-linux actually.

One way would be to add riscv64 and aarch64/armv7 hardware behind
ci.guix; another way would be to get bordeaux.guix to build these.

> * switch the assert-binaries-available make target we've used previously
>   to make sure we have substitutes for a base set of packages to point
>   to the installer manifest.  If the purpose of the installer is to
>   install and then everyone expected to run `guix pull` then we need the
>   packages from the installer.

That was the purpose of ‘release.scm’.  Perhaps instead of having an
unused ‘release.scm’, just make it what you currently have in
‘installer.scm’?

> installer.scm:
> A manifest which only checks that we have substitutes for what can be
> installed using the TUI installer (assuming no extra added items).  It
> differs from the GUIX_SYSTEM_INSTALLER_SYSTEM variable in the Makefile
> by including aarch64 as an architecture.  Ideally all the packages
> should compile, which would allow someone to run the installer
> successfully for x86_64-linux, i686-linux or aarch64-linux.
>
> cross-compile.scm:
> Ideally all the packages one would need to produce an OS image for
> another architecture we support, or the same %base-packages for other
> architectures we have.  Currently it only tests from x86_64-linux.

‘release.scm’ was lumping all that together, but maybe it’s more
convenient to separate it as you did, indeed.

> Ideally I'd like to see the installer.scm and cross-compile.scm
> manifests added to cuirass.  I'd hope we could keep 100% build on
> installer.scm so we can actually offer all the options in the installer,
> and the cross-compile.scm manifest might need to be split so we can
> focus on cross-compiling an OS config vs cross-compiling binaries for
> another architecture.

We can definitely add them to Cuirass.

Thanks,
Ludo’.