From: Mathieu Lirzin <mthl@gnu.org>
To: guix-devel <guix-devel@gnu.org>
Subject: Re: [GSoC] Continuous integration tool à la Hydra.
Date: Mon, 25 Jul 2016 02:30:10 +0200 [thread overview]
Message-ID: <87vazueezx.fsf@gnu.org> (raw)
In-Reply-To: <871t4ksk0n.fsf@gnu.org> (Mathieu Lirzin's message of "Sun, 29 May 2016 22:10:16 +0200")
Hello Guix!
Here is a third update on my GSoC project after the second month.
As a reminder, Hydra (https://nixos.org/hydra/) is a Nix-based
continuous build system which is used by Guix to compile packages on
different platforms and to distribute packages substitutes. The aim of
this project is to replace Hydra with a more integrated software written
in Guile, named “Cuirass”.
Since my second update I have first fixed a major bug. When building
different branches of Guix and evaluating package derivations the
results were always the same. The issue was that the evaluations were
happening in the same Guile process which does not play well with module
changes. To fix that I have used a separate process + pipe to get the
evaluation results.
In the last update, I have introduced usage of SRFI-9 records for
specifications, jobs, and builds. While they are nice to organize data,
they have major drawbacks:
- not flexible when you want to informally create a container.
- require serialization when passing them throught pipes.
For those reasons I have switched to good ol' alists, which are flexible,
persistant, directly readable and don't require messing with load paths.
The downside is of course that there is no compile time checks when
manipulating data.
As stated in my last update. I have been working on storing data in a
database. For that I have decided to use Guile-sqlite3. The principal
efforts have consist of using an external schema file and design it.
I have come up with this, but this will likely evolve in the future:
--8<---------------cut here---------------start------------->8---
CREATE TABLE Specifications (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
repo_name TEXT NOT NULL,
url TEXT NOT NULL,
load_path TEXT NOT NULL,
file TEXT NOT NULL,
proc TEXT NOT NULL,
arguments TEXT NOT NULL,
-- The following columns are optional.
branch TEXT,
tag TEXT,
revision TEXT
);
CREATE TABLE Evaluations (
derivation TEXT NOT NULL PRIMARY KEY,
job_name TEXT NOT NULL,
specification INTEGER NOT NULL,
FOREIGN KEY (specification) REFERENCES Specifications (id)
);
CREATE TABLE Builds (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
derivation TEXT NOT NULL,
log TEXT NOT NULL,
output TEXT, -- NULL if build failed
FOREIGN KEY (derivation) REFERENCES Evaluations (derivation)
);
--8<---------------cut here---------------end--------------->8---
The next step will be to continue improving the database communication,
and start looking how to implement the HTTP API.
For those willing to follow my work, a Git repository is available here:
https://notabug.org/mthl/cuirass
Everyone is of course welcome to provide any feedback.
Thanks.
--
Mathieu Lirzin
next prev parent reply other threads:[~2016-07-25 0:30 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-29 20:10 [GSoC] Continuous integration tool à la Hydra Mathieu Lirzin
2016-05-30 21:34 ` Ludovic Courtès
2016-05-30 21:54 ` Ludovic Courtès
2016-06-20 22:44 ` Mathieu Lirzin
2016-06-24 12:42 ` Ludovic Courtès
2016-07-25 0:30 ` Mathieu Lirzin [this message]
2016-07-25 21:36 ` Ludovic Courtès
2016-07-27 14:28 ` Mathieu Lirzin
2016-07-28 12:38 ` Ludovic Courtès
2016-07-29 11:20 ` Florian Paul Schmidt
2016-07-29 19:26 ` Mathieu Lirzin
2016-07-30 22:49 ` Ludovic Courtès
2016-07-31 2:05 ` 'guix environment' as a build tool. (was: [GSoC] Continuous integration tool à la Hydra.) Mathieu Lirzin
2016-07-31 2:20 ` Thompson, David
2016-07-31 4:17 ` 'guix environment' as a build tool Mathieu Lirzin
2016-07-31 13:55 ` Ludovic Courtès
2016-07-31 14:07 ` Thompson, David
2016-07-31 20:09 ` Ludovic Courtès
2016-07-31 11:13 ` Ludovic Courtès
2016-07-31 7:09 ` [GSoC] Continuous integration tool à la Hydra Florian Paul Schmidt
2016-07-31 12:03 ` Mathieu Lirzin
2016-08-01 18:55 ` Florian Paul Schmidt
-- strict thread matches above, loose matches on Subject: below --
2016-08-06 11:05 David Craven
2016-08-06 16:19 ` Mark H Weaver
2016-08-06 16:23 ` David Craven
2016-08-06 16:58 ` David Craven
2016-08-06 23:45 ` Mathieu Lirzin
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87vazueezx.fsf@gnu.org \
--to=mthl@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 external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.