From: "Ludovic Courtès" <ludo@gnu.org>
To: guile-devel@gnu.org
Cc: guix-devel@gnu.org
Subject: Resurrecting top-notch continuous integration for Guile
Date: Sun, 29 Jan 2023 18:36:19 +0100 [thread overview]
Message-ID: <87lell2qgc.fsf@inria.fr> (raw)
[-- Attachment #1: Type: text/plain, Size: 2587 bytes --]
Hello Guilers!
(And hello Guix—that’s about an interesting use case. :-))
Back in 2009, together with Rob Vermaas of NixOS, we set up continuous
integration for Guile (among other GNU packages), using Nix coupled with
Hydra, its continuous integration (CI) system:
https://lists.gnu.org/archive/html/guile-devel/2009-11/msg00084.html
The CI jobs still exist although they’ve been bitrotting for ~10 years:
https://hydra.nixos.org/jobset/gnu/guile-2-0
https://git.savannah.gnu.org/cgit/hydra-recipes.git/tree/guile/release.nix
Ten years ago is when I embarked on this side project *cough* called
Guix (Guix = Guile + Nix, see?). To close the loop, it’s natural to
reinstate CI, but this time with Guix and Cuirass, its companion CI
tool—Guile code all the way down! You can see these new CI jobs on the
build farm of the Guix project:
https://ci.guix.gnu.org/jobset/guile
(Speaking of which, I hereby ask fellow Guix hackers to voice any
concerns they may have regarding this use of project resources.)
Code for these jobs is currently in a Guile branch:
https://git.savannah.gnu.org/cgit/guile.git/log/?h=wip-cuirass-ci
This branch brings several things:
1. The ‘guix.scm’ file at the top can be used to spawn a shell with a
development environment for Guix:
guix shell
It can also be used to (cross-)build Guile, as in:
guix build -f guix.scm --target=x86_64-w64-mingw32
2. ‘build-aux/manifest.scm’ defines a Guix “manifest” for several
Guile builds we may want to test: building with Clang,
cross-compiling to MinGW and RISCV and whatnot, building with
‘--disable-threads’, etc.
3. There’s a ‘.guix-channel’ file at the top, meaning that Guile can
be used as a Guix “channel” providing additional packages. You’d
do that by having something as following in
~/.config/guix/channels.scm and then running ‘guix pull’:
(cons (channel
(name 'guile)
(url "https://git.savannah.gnu.org/git/guile.git")
(branch "wip-cuirass-ci"))
%default-channels)
This is arguably the weirdest part, but that’s how we get Cuirass
to consume Guile.
There’s still much tweaking we can do, but the basics are in place, and
I find it pretty cool. :-) If there are no objections, I’ll merge this
branch into “main”. It’s going to be nice to have a dashboard to look
at before the next release!
Feedback welcome!
Ludo’.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 853 bytes --]
next reply other threads:[~2023-01-29 17:36 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-29 17:36 Ludovic Courtès [this message]
2023-01-29 18:34 ` Resurrecting top-notch continuous integration for Guile Felix Lechner via Development of GNU Guix and the GNU System distribution.
2023-01-29 21:02 ` Tobias Geerinckx-Rice
2023-02-06 16:58 ` Ludovic Courtès
2023-02-06 20:55 ` Maxim Cournoyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://guix.gnu.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87lell2qgc.fsf@inria.fr \
--to=ludo@gnu.org \
--cc=guile-devel@gnu.org \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).