unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [GSoC] Continuous integration tool à la Hydra.
@ 2016-05-29 20:10 Mathieu Lirzin
  2016-05-30 21:34 ` Ludovic Courtès
                   ` (3 more replies)
  0 siblings, 4 replies; 22+ messages in thread
From: Mathieu Lirzin @ 2016-05-29 20:10 UTC (permalink / raw)
  To: guix-devel

Hello Guix!

Here is a first update on my GSoC project after the first week.

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.

Since it would be cumbersome to speak about something without giving it
a name, I have decided to call this software “Cuirass”.

While being intended as a general purpose continuous integration tool,
the first iteration of Cuirass is focusing only on building Guix
packages.  The logic of the program is simple since 'cuirass' sits in a
loop:

 - Fetching new changes from Guix master branch
 - Compiling Guix code
 - Evaluating packages derivations
 - Building those derivations

The Guix repository is kept in a directory set by 'CUIRASS_CACHEDIR'
environment variable to avoid cloning it every time.  Even if the
algorithm is trivial, the implementation has required some thought in
order to allow using guile code fetched from the Guix git repository.
Hopefully the solution was already in 'hydra-eval-guile-jobs' script
from Hydra, so I have used the same technique.

Currently the build phase is failing with the following error:

--8<---------------cut here---------------start------------->8---
Starting download of /gnu/store/y17blrd1x80nqik4ss4djbm92a5i5ivl-zsh-5.1.1.tar.gz
From http://www.zsh.org/pub/zsh-5.1.1.tar.gz...
ERROR: In procedure connect*: Network is unreachable

Starting download of /gnu/store/y17blrd1x80nqik4ss4djbm92a5i5ivl-zsh-5.1.1.tar.gz
From http://www.zsh.org/pub/old/zsh-5.1.1.tar.gz...
ERROR: In procedure connect*: Network is unreachable

Starting download of /gnu/store/y17blrd1x80nqik4ss4djbm92a5i5ivl-zsh-5.1.1.tar.gz
From http://tarballs.nixos.org/sha256/11shllzhq53fg8ngy3bgbmpf09fn2czifg7hsb41nxi3410mpvcl...
ERROR: download failed "http://tarballs.nixos.org/sha256/11shllzhq53fg8ngy3bgbmpf09fn2czifg7hsb41nxi3410mpvcl" 404 "Not Found"
failed to download "/gnu/store/y17blrd1x80nqik4ss4djbm92a5i5ivl-zsh-5.1.1.tar.gz" from ("http://www.zsh.org/pub/zsh-5.1.1.tar.gz" "http://www.zsh.org/pub/old/zsh-5.1.1.tar.gz")
builder for `/gnu/store/srsm569hhqiz56abp90dksknn6mqb03j-zsh-5.1.1.tar.gz.drv' failed to produce output path `/gnu/store/y17blrd1x80nqik4ss4djbm92a5i5ivl-zsh-5.1.1.tar.gz'
@ build-failed /gnu/store/srsm569hhqiz56abp90dksknn6mqb03j-zsh-5.1.1.tar.gz.drv - 1 builder for `/gnu/store/srsm569hhqiz56abp90dksknn6mqb03j-zsh-5.1.1.tar.gz.drv' failed to produce output path `/gnu/store/y17blrd1x80nqik4ss4djbm92a5i5ivl-zsh-5.1.1.tar.gz'
cannot build derivation `/gnu/store/ri86p3f5w84r6pxyz54icyb0r00lmqaj-zsh-5.1.1.drv': 1 dependencies couldn't be built
Backtrace:
In ice-9/boot-9.scm:
 157: 9 [catch #t #<catch-closure 1ffeba0> ...]
In unknown file:
   ?: 8 [apply-smob/1 #<catch-closure 1ffeba0>]
In ice-9/boot-9.scm:
  63: 7 [call-with-prompt prompt0 ...]
In ice-9/eval.scm:
 432: 6 [eval # #]
In ice-9/boot-9.scm:
  63: 5 [call-with-prompt break486 ...]
  63: 4 [call-with-prompt continue487 ...]
In ice-9/eval.scm:
 432: 3 [eval # #]
In ice-9/r4rs.scm:
  90: 2 [dynamic-wind #<procedure 4c92620 at ice-9/boot-9.scm:1133:2 _> ...]
In ice-9/boot-9.scm:
 702: 1 [map #<procedure 3b489120 at ice-9/eval.scm:416:20 (a)> (# # # # ...)]
In guix/store.scm:
 684: 0 [build # # 0]

guix/store.scm:684:15: In procedure build:
guix/store.scm:684:15: Throw to key `srfi-34' with args `(#<condition &nix-protocol-error [message: "build of `/gnu/store/ri86p3f5w84r6pxyz54icyb0r00lmqaj-zsh-5.1.1.drv' failed" status: 1] 3b50d5a0>)'.
--8<---------------cut here---------------end--------------->8---

which is probably related to the fact that https is not handled.

The next step will be to fix this issue, to provide a better abstraction
for the 'build jobs', and to find a way to make some test scripts using
dummy jobs.

For those willing to see more, a Git repository is available here:

  https://notabug.org/mthl/cuirass

Everyone is of course welcome to provide any feedback.

Thanks.

-- 
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  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
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2016-05-30 21:34 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Hello!

Mathieu Lirzin <mthl@gnu.org> skribis:

> Since it would be cumbersome to speak about something without giving it
> a name, I have decided to call this software “Cuirass”.

Interesting.  :-)

> While being intended as a general purpose continuous integration tool,
> the first iteration of Cuirass is focusing only on building Guix
> packages.  The logic of the program is simple since 'cuirass' sits in a
> loop:
>
>  - Fetching new changes from Guix master branch
>  - Compiling Guix code
>  - Evaluating packages derivations
>  - Building those derivations
>
> The Guix repository is kept in a directory set by 'CUIRASS_CACHEDIR'
> environment variable to avoid cloning it every time.  Even if the
> algorithm is trivial, the implementation has required some thought in
> order to allow using guile code fetched from the Guix git repository.
> Hopefully the solution was already in 'hydra-eval-guile-jobs' script
> from Hydra, so I have used the same technique.

So far, so good!

I think eventually ‘compile’ should disappear.  It should be up to the
project’s ‘evaluate.scm’ file (for Guix, it’s
‘build-aux/hydra/gnu-system.scm’) to compute whatever needs to be
computed to produce a list of derivations to build.

> Currently the build phase is failing with the following error:
>
> Starting download of /gnu/store/y17blrd1x80nqik4ss4djbm92a5i5ivl-zsh-5.1.1.tar.gz
> From http://www.zsh.org/pub/zsh-5.1.1.tar.gz...
> ERROR: In procedure connect*: Network is unreachable
>
> Starting download of /gnu/store/y17blrd1x80nqik4ss4djbm92a5i5ivl-zsh-5.1.1.tar.gz
> From http://www.zsh.org/pub/old/zsh-5.1.1.tar.gz...
> ERROR: In procedure connect*: Network is unreachable

Probably just a transient error on zsh.org.  The 1st URL is 404, and the
second one works for me.  I don’t think this has anything to do with
https.

Anyway, it’s good to see that the basics are in place!  :-)

Thanks for the update,
Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  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-07-25  0:30 ` Mathieu Lirzin
  3 siblings, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2016-05-30 21:54 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Mathieu Lirzin <mthl@gnu.org> skribis:

> For those willing to see more, a Git repository is available here:
>
>   https://notabug.org/mthl/cuirass

BTW, I can confirm that it “builds stuff” here when I let it go.

An improvement would be to redirect or filter
(current-build-output-port).  For instance, we could let only the “@”
lines go through (build started, build failed, etc.)

Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  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
  3 siblings, 1 reply; 22+ messages in thread
From: Mathieu Lirzin @ 2016-06-20 22:44 UTC (permalink / raw)
  To: guix-devel

Hello Guix!

Here is a second update on my GSoC project after the first 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”.

After providing a first basic evaluation loop described in my previous
mail, I have started thinking about the architecture of the global job
evaluation/compilation process in order to identify what type of data
structures would make sense.  It was not easy for me to reason about the
different layers of current Hydra usage in Guix, so it took me 2 weeks
to analyse it and provide a first decomposition of logic steps.  For now
this decomposition is:

  job-spec > job > build-result

where:
  
  - 'job-spec' defines all the information required by Cuirass to get
    the actual job definitions.  These information contains the
    repository type and url, the file and procedure name which yields a
    list of job, and the list of arguments passed to that procedure.

  - 'job' contains the derivation file name which describe all the
    dependencies.

  - 'build-result' contains the output obtained when realizing/building
    the derivation from a job + some logs.

'job-spec' and 'job' are already implemented in Cuirass. However
'build-result' will require a database to be useful.  Since I have no
experience with databases at all, this last week has been dedicated to
learn more about them, play with SQL queries, and use Guile-dbi and
Guile-sqlite3 bindings.  My plan is to use Sqlite first and eventually
switch to Postgresql later when concurrent writers would be critical.

The next step is to apply my newly acquired knowledge by allowing
'build-result' entries to be added to the database.  I will be AFK for 5
days so I will start working on that, next Sunday.

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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  2016-06-20 22:44 ` Mathieu Lirzin
@ 2016-06-24 12:42   ` Ludovic Courtès
  0 siblings, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2016-06-24 12:42 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Hello Mathieu!

Mathieu Lirzin <mthl@gnu.org> skribis:

> After providing a first basic evaluation loop described in my previous
> mail, I have started thinking about the architecture of the global job
> evaluation/compilation process in order to identify what type of data
> structures would make sense.  It was not easy for me to reason about the
> different layers of current Hydra usage in Guix, so it took me 2 weeks
> to analyse it and provide a first decomposition of logic steps.  For now
> this decomposition is:
>
>   job-spec > job > build-result
>
> where:
>   
>   - 'job-spec' defines all the information required by Cuirass to get
>     the actual job definitions.  These information contains the
>     repository type and url, the file and procedure name which yields a
>     list of job, and the list of arguments passed to that procedure.
>
>   - 'job' contains the derivation file name which describe all the
>     dependencies.
>
>   - 'build-result' contains the output obtained when realizing/building
>     the derivation from a job + some logs.

Sounds good to me.

> 'job-spec' and 'job' are already implemented in Cuirass. However
> 'build-result' will require a database to be useful.  Since I have no
> experience with databases at all, this last week has been dedicated to
> learn more about them, play with SQL queries, and use Guile-dbi and
> Guile-sqlite3 bindings.  My plan is to use Sqlite first and eventually
> switch to Postgresql later when concurrent writers would be critical.

When and if.  :-)

I’m saying “if” because while Hydra uses the database for inter-process
communication, I think we may as well use a message passing toolkit such
as ZeroMQ rather than abuse the database.  But that’s for later!

Looks like a good plan anyway!

Thank you,
Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  2016-05-29 20:10 [GSoC] Continuous integration tool à la Hydra Mathieu Lirzin
                   ` (2 preceding siblings ...)
  2016-06-20 22:44 ` Mathieu Lirzin
@ 2016-07-25  0:30 ` Mathieu Lirzin
  2016-07-25 21:36   ` Ludovic Courtès
  3 siblings, 1 reply; 22+ messages in thread
From: Mathieu Lirzin @ 2016-07-25  0:30 UTC (permalink / raw)
  To: guix-devel

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

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  2016-07-25  0:30 ` Mathieu Lirzin
@ 2016-07-25 21:36   ` Ludovic Courtès
  2016-07-27 14:28     ` Mathieu Lirzin
  2016-07-29 11:20     ` Florian Paul Schmidt
  0 siblings, 2 replies; 22+ messages in thread
From: Ludovic Courtès @ 2016-07-25 21:36 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Hello!

Mathieu Lirzin <mthl@gnu.org> skribis:

> 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.

Sounds good.  Using a separate process makes sure what’s evaluated
doesn’t erroneously ends up using modules already loaded by the
evaluator, and vice versa.

> 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.

OK.

> 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:
>
> 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)
> );

An evaluation leads to several derivations (for Guix, roughly one
derivation per package and per system type), but the table above seems
to suggest that each evaluation is mapped to only one derivation?

> 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)
> );
>
> The next step will be to continue improving the database communication,
> and start looking how to implement the HTTP API.

Cool!  It seems that the database already has or is about to have the
info we typically look for at
<https://hydra.gnu.org/jobset/gnu/core-updates>: which evaluations were
performed, what commit (specification) they correspond to, which
derivations they correspond to and whether they
succeeded/failed/aborted.

If the HTTP API exposes this info, possibly using the same API as Hydra
(see guix-hydra-jobset.el), that will cover an important part of our
daily needs.

> For those willing to follow my work, a Git repository is available here:
>
>   https://notabug.org/mthl/cuirass

… and the README has instructions on how to run it.  If anyone has spare
CPU cycles, run Cuirass, ‘guix publish’, and share.  :-)

I’m happy with the progress that’s been made, thank you!

Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  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
  1 sibling, 1 reply; 22+ messages in thread
From: Mathieu Lirzin @ 2016-07-27 14:28 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

Hello,

ludo@gnu.org (Ludovic Courtès) writes:

> Mathieu Lirzin <mthl@gnu.org> skribis:
>
[...]
>> 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)
>> );
>
> An evaluation leads to several derivations (for Guix, roughly one
> derivation per package and per system type), but the table above seems
> to suggest that each evaluation is mapped to only one derivation?

In my "confused" mind each derivation was considered an individual
evaluation.  But as you pointed out this makes more sense to decouple
those.  Fixed in commit d493a58823aed8c556bf795d02207e57718b96c9

Thanks,

-- 
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  2016-07-27 14:28     ` Mathieu Lirzin
@ 2016-07-28 12:38       ` Ludovic Courtès
  0 siblings, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2016-07-28 12:38 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Mathieu Lirzin <mthl@gnu.org> skribis:

> Hello,
>
> ludo@gnu.org (Ludovic Courtès) writes:
>
>> Mathieu Lirzin <mthl@gnu.org> skribis:
>>
> [...]
>>> 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)
>>> );
>>
>> An evaluation leads to several derivations (for Guix, roughly one
>> derivation per package and per system type), but the table above seems
>> to suggest that each evaluation is mapped to only one derivation?
>
> In my "confused" mind each derivation was considered an individual
> evaluation.  But as you pointed out this makes more sense to decouple
> those.  Fixed in commit d493a58823aed8c556bf795d02207e57718b96c9

Perfect, thanks!

Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  2016-07-25 21:36   ` Ludovic Courtès
  2016-07-27 14:28     ` Mathieu Lirzin
@ 2016-07-29 11:20     ` Florian Paul Schmidt
  2016-07-29 19:26       ` Mathieu Lirzin
  1 sibling, 1 reply; 22+ messages in thread
From: Florian Paul Schmidt @ 2016-07-29 11:20 UTC (permalink / raw)
  To: guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 2039 bytes --]

On 07/25/2016 11:36 PM, Ludovic Courtès wrote:

>> For those willing to follow my work, a Git repository is available here:
>>
>>   https://notabug.org/mthl/cuirass
> 
> … and the README has instructions on how to run it.  If anyone has spare
> CPU cycles, run Cuirass, ‘guix publish’, and share.  :-)

Sorry, if this mail comes around twice. Thunderbird crashed :(

Sadly the instructions to build it are a bit unclear. I tried:

fps@guix ~/cuirass$ guix environment --ad-hoc gcc gcc:lib automake guix
guile
guix environment: warning: ambiguous package specification `guile'
guix environment: warning: choosing guile-2.0.11 from
gnu/packages/guile.scm:131:2
fps@guix ~/cuirass [env]$
GUILE_LOAD_PATH=$GUILE_LOAD_PATH:/home/fps/guix/ ./configure




checking for a BSD-compatible install...
/run/current-system/profile/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p...
/run/current-system/profile/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... no
checking whether make supports nested variables... no
checking whether make supports nested variables... (cached) no
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking for pkg-config... no
checking for GUILE... no
configure: error: in `/home/fps/cuirass':
configure: error: The pkg-config script could not be found or is too
old.  Make sure it
is in your PATH or set the PKG_CONFIG environment variable to the full
path to pkg-config.

Alternatively, you may set the environment variables GUILE_CFLAGS
and GUILE_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.

To get pkg-config, see <http://pkg-config.freedesktop.org/>.
See `config.log' for more details

How about including a guix package definition then we can easily build
it assuming "we" know how to do out-of-guix-tree package building :)

Regards,
Flo


-- 
https://fps.io


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  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  7:09         ` [GSoC] Continuous integration tool à la Hydra Florian Paul Schmidt
  0 siblings, 2 replies; 22+ messages in thread
From: Mathieu Lirzin @ 2016-07-29 19:26 UTC (permalink / raw)
  To: Florian Paul Schmidt; +Cc: guix-devel

Hello,

Florian Paul Schmidt <mista.tapas@gmx.net> writes:

> On 07/25/2016 11:36 PM, Ludovic Courtès wrote:
>
>>> For those willing to follow my work, a Git repository is available here:
>>>
>>>   https://notabug.org/mthl/cuirass
>> 
>> … and the README has instructions on how to run it.  If anyone has spare
>> CPU cycles, run Cuirass, ‘guix publish’, and share.  :-)
>
> Sorry, if this mail comes around twice. Thunderbird crashed :(
>
> Sadly the instructions to build it are a bit unclear. I tried:
>
> fps@guix ~/cuirass$ guix environment --ad-hoc gcc gcc:lib automake guix
> guile
> guix environment: warning: ambiguous package specification `guile'
> guix environment: warning: choosing guile-2.0.11 from
> gnu/packages/guile.scm:131:2
> fps@guix ~/cuirass [env]$
> GUILE_LOAD_PATH=$GUILE_LOAD_PATH:/home/fps/guix/ ./configure
>
>
>
>
> checking for a BSD-compatible install...
> /run/current-system/profile/bin/install -c
> checking whether build environment is sane... yes
> checking for a thread-safe mkdir -p...
> /run/current-system/profile/bin/mkdir -p
> checking for gawk... gawk
> checking whether make sets $(MAKE)... no
> checking whether make supports nested variables... no
> checking whether make supports nested variables... (cached) no
> checking build system type... x86_64-unknown-linux-gnu
> checking host system type... x86_64-unknown-linux-gnu
> checking for pkg-config... no
> checking for GUILE... no
> configure: error: in `/home/fps/cuirass':
> configure: error: The pkg-config script could not be found or is too
> old.  Make sure it
> is in your PATH or set the PKG_CONFIG environment variable to the full
> path to pkg-config.
>
> Alternatively, you may set the environment variables GUILE_CFLAGS
> and GUILE_LIBS to avoid the need to call pkg-config.
> See the pkg-config man page for more details.
>
> To get pkg-config, see <http://pkg-config.freedesktop.org/>.
> See `config.log' for more details

I have tested successfully with the following command on a foreign
system:

  guix environment --ad-hoc automake pkg-config guile guix libgcrypt sqlite guile-sqlite3

Tell me if it works for you.

> How about including a guix package definition then we can easily build
> it assuming "we" know how to do out-of-guix-tree package building :)

It would indeed be nice to provide an easy way for Guix users to install
Cuirass.  IMHO package definitions meant as a development build tool is
confusing and should be avoided.  Nonetheless, I think it is useful to
document the previous 'guix environment ...' command in the README.

Thank you for your feedback.

-- 
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  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  7:09         ` [GSoC] Continuous integration tool à la Hydra Florian Paul Schmidt
  1 sibling, 1 reply; 22+ messages in thread
From: Ludovic Courtès @ 2016-07-30 22:49 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Mathieu Lirzin <mthl@gnu.org> skribis:

> I have tested successfully with the following command on a foreign
> system:
>
>   guix environment --ad-hoc automake pkg-config guile guix libgcrypt sqlite guile-sqlite3
>
> Tell me if it works for you.
>
>> How about including a guix package definition then we can easily build
>> it assuming "we" know how to do out-of-guix-tree package building :)
>
> It would indeed be nice to provide an easy way for Guix users to install
> Cuirass.  IMHO package definitions meant as a development build tool is
> confusing and should be avoided.  Nonetheless, I think it is useful to
> document the previous 'guix environment ...' command in the README.

What about providing a ‘guix.scm’ file that people could pass to ‘guix
environment -l’ (instead of typing the long command above), and to ‘guix
package -f’ (info "(guix) Invoking guix package")?

Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* 'guix environment' as a build tool. (was: [GSoC] Continuous integration tool à la Hydra.)
  2016-07-30 22:49         ` Ludovic Courtès
@ 2016-07-31  2:05           ` Mathieu Lirzin
  2016-07-31  2:20             ` Thompson, David
  2016-07-31 11:13             ` Ludovic Courtès
  0 siblings, 2 replies; 22+ messages in thread
From: Mathieu Lirzin @ 2016-07-31  2:05 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

ludo@gnu.org (Ludovic Courtès) writes:

> Mathieu Lirzin <mthl@gnu.org> skribis:
>
>> I have tested successfully with the following command on a foreign
>> system:
>>
>>   guix environment --ad-hoc automake pkg-config guile guix libgcrypt sqlite guile-sqlite3
>>
>> Tell me if it works for you.
>>
>>> How about including a guix package definition then we can easily build
>>> it assuming "we" know how to do out-of-guix-tree package building :)
>>
>> It would indeed be nice to provide an easy way for Guix users to install
>> Cuirass.  IMHO package definitions meant as a development build tool is
>> confusing and should be avoided.  Nonetheless, I think it is useful to
>> document the previous 'guix environment ...' command in the README.
>
> What about providing a ‘guix.scm’ file that people could pass to ‘guix
> environment -l’ (instead of typing the long command above), and to ‘guix
> package -f’ (info "(guix) Invoking guix package")?

'guix environment -l' uses a package definition.  To me this abstraction
doesn't fit well in a development context:

 - the origin hash doesn't make sense.
 - packages already included in Guix have redundant description and synopsis.
 - package definitions rely on Guix internals.

In fact what 'guix.scm' contains feels more like a "debian" directory or
a "PACKAGE.spec" file on steroid because of the "guix environment -l"
feature which derives from it but doesn't appear as first class.

An idea that I like better and is less invasive, would be to complement
bootstrap scripts with:

  ./bootstrap --with-guix

This command would:

- generate a guix-env script that wraps 'guix environment ...' if it
  doesn't exist.
- Invoke ./guix-env
- Invoke autoreconf -vfi

if the user wants to enter this environment Later it will have to invoke
'./guix-env'.

Some interesting things could be done beyond this, for example by using
per repository profiles that would save development environments.  This
would allow developpers to easily use different setups.

WDYT?

-- 
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 'guix environment' as a build tool. (was: [GSoC] Continuous integration tool à la Hydra.)
  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 11:13             ` Ludovic Courtès
  1 sibling, 2 replies; 22+ messages in thread
From: Thompson, David @ 2016-07-31  2:20 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

On Sat, Jul 30, 2016 at 10:05 PM, Mathieu Lirzin <mthl@gnu.org> wrote:
> ludo@gnu.org (Ludovic Courtès) writes:
>
>> Mathieu Lirzin <mthl@gnu.org> skribis:
>>
>>> I have tested successfully with the following command on a foreign
>>> system:
>>>
>>>   guix environment --ad-hoc automake pkg-config guile guix libgcrypt sqlite guile-sqlite3
>>>
>>> Tell me if it works for you.
>>>
>>>> How about including a guix package definition then we can easily build
>>>> it assuming "we" know how to do out-of-guix-tree package building :)
>>>
>>> It would indeed be nice to provide an easy way for Guix users to install
>>> Cuirass.  IMHO package definitions meant as a development build tool is
>>> confusing and should be avoided.  Nonetheless, I think it is useful to
>>> document the previous 'guix environment ...' command in the README.
>>
>> What about providing a ‘guix.scm’ file that people could pass to ‘guix
>> environment -l’ (instead of typing the long command above), and to ‘guix
>> package -f’ (info "(guix) Invoking guix package")?
>
> 'guix environment -l' uses a package definition.  To me this abstraction
> doesn't fit well in a development context:

It *does* fit well.  This use-case is why I wrote 'guix environment'
in the first place.

>  - the origin hash doesn't make sense.

You don't need one.  Use local-file for the source field.

>  - packages already included in Guix have redundant description and synopsis.

I don't understand what this means.

>  - package definitions rely on Guix internals.

The package API rarely changes in practice.

> In fact what 'guix.scm' contains feels more like a "debian" directory or
> a "PACKAGE.spec" file on steroid because of the "guix environment -l"
> feature which derives from it but doesn't appear as first class.
>
> An idea that I like better and is less invasive, would be to complement
> bootstrap scripts with:
>
>   ./bootstrap --with-guix
>
> This command would:
>
> - generate a guix-env script that wraps 'guix environment ...' if it
>   doesn't exist.
> - Invoke ./guix-env
> - Invoke autoreconf -vfi
>
> if the user wants to enter this environment Later it will have to invoke
> './guix-env'.

This just makes things more inconvenient and limits potential utility.
You would lose the ability to tweak the dependency graph with custom
package recipes.  I do this frequently in my projects that use
bleeding edge features of other software that may not even have an
official release yet.  Also, with a package file, Guix users can
install the development snapshot with 'guix package -f' or simply
build it with 'guix build -f'.

> Some interesting things could be done beyond this, for example by using
> per repository profiles that would save development environments.  This
> would allow developpers to easily use different setups.

'guix environment' already serves this purpose.  I do want to extend
'guix environment' with a --save flag that will register the profile
it generates as a GC root so that it can be saved for future sessions
so that the environment doesn't need to be rebuilt every time the user
upgrades Guix.

Hopefully this clears things up.

- Dave

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 'guix environment' as a build tool.
  2016-07-31  2:20             ` Thompson, David
@ 2016-07-31  4:17               ` Mathieu Lirzin
  2016-07-31 13:55               ` Ludovic Courtès
  1 sibling, 0 replies; 22+ messages in thread
From: Mathieu Lirzin @ 2016-07-31  4:17 UTC (permalink / raw)
  To: Thompson, David; +Cc: guix-devel

"Thompson, David" <dthompson2@worcester.edu> writes:

> On Sat, Jul 30, 2016 at 10:05 PM, Mathieu Lirzin <mthl@gnu.org> wrote:
>> ludo@gnu.org (Ludovic Courtès) writes:
>>
>>> Mathieu Lirzin <mthl@gnu.org> skribis:
>>>
>>>> I have tested successfully with the following command on a foreign
>>>> system:
>>>>
>>>>   guix environment --ad-hoc automake pkg-config guile guix libgcrypt sqlite guile-sqlite3
>>>>
>>>> Tell me if it works for you.
>>>>
>>>>> How about including a guix package definition then we can easily build
>>>>> it assuming "we" know how to do out-of-guix-tree package building :)
>>>>
>>>> It would indeed be nice to provide an easy way for Guix users to install
>>>> Cuirass.  IMHO package definitions meant as a development build tool is
>>>> confusing and should be avoided.  Nonetheless, I think it is useful to
>>>> document the previous 'guix environment ...' command in the README.
>>>
>>> What about providing a ‘guix.scm’ file that people could pass to ‘guix
>>> environment -l’ (instead of typing the long command above), and to ‘guix
>>> package -f’ (info "(guix) Invoking guix package")?
>>
>> 'guix environment -l' uses a package definition.  To me this abstraction
>> doesn't fit well in a development context:
>
> It *does* fit well.  This use-case is why I wrote 'guix environment'
> in the first place.

Obviously I disagree.

>>  - the origin hash doesn't make sense.
>
> You don't need one.  Use local-file for the source field.

I would be happy to, however I vaguely remember trying this without
success for Mcron.  Do you have an example to provide?

>>  - packages already included in Guix have redundant description and synopsis.
>
> I don't understand what this means.
>
>>  - package definitions rely on Guix internals.
>
> The package API rarely changes in practice.

This is relative, IME packages moving across modules is not an
exception.

>> In fact what 'guix.scm' contains feels more like a "debian" directory or
>> a "PACKAGE.spec" file on steroid because of the "guix environment -l"
>> feature which derives from it but doesn't appear as first class.
>>
>> An idea that I like better and is less invasive, would be to complement
>> bootstrap scripts with:
>>
>>   ./bootstrap --with-guix
>>
>> This command would:
>>
>> - generate a guix-env script that wraps 'guix environment ...' if it
>>   doesn't exist.
>> - Invoke ./guix-env
>> - Invoke autoreconf -vfi
>>
>> if the user wants to enter this environment Later it will have to invoke
>> './guix-env'.
>
> This just makes things more inconvenient and limits potential utility.
> You would lose the ability to tweak the dependency graph with custom
> package recipes.
>  I do this frequently in my projects that use bleeding edge features
> of other software that may not even have an official release yet.

Since this script is supposed to be wrapper around 'guix environment' I
don't understand how it could limit anything 'guix environment' could
do?

> Also, with a package file, Guix users can install the development
> snapshot with 'guix package -f' or simply build it with 'guix build
> -f'.

I am not sure what you mean by "development snapshot". If you an
arbitrary timely chosen commit like what is done for Haunt:

  (origin
    (method git-fetch)
    (uri (git-reference
         (url "git://dthompson.us/haunt.git")
         (commit "f0a7c2b14a201448432d3564d851ee0686d5b1b1")))
         (sha256
          (base32
           "1dnzsw18blhr8admw48zbl3ilz3iiqmb149i37y820h0imqfli0v"))))

This is not useful for me.  In most case I want 'guix build -f' to build
the current commit from the local repository.  If 'local-file' can work
then this is fine, but I have never achieved the expected result.

>> Some interesting things could be done beyond this, for example by using
>> per repository profiles that would save development environments.  This
>> would allow developpers to easily use different setups.
>
> 'guix environment' already serves this purpose.
>  I do want to extend 'guix environment' with a --save flag that will
> register the profile it generates as a GC root so that it can be saved
> for future sessions so that the environment doesn't need to be rebuilt
> every time the user upgrades Guix.

That would be nice.

> Hopefully this clears things up

Maybe I am misinterpreting, but this read a bit patronizing.  No need to
say that if this is the case I don't appreciate much.

-- 
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  2016-07-29 19:26       ` Mathieu Lirzin
  2016-07-30 22:49         ` Ludovic Courtès
@ 2016-07-31  7:09         ` Florian Paul Schmidt
  2016-07-31 12:03           ` Mathieu Lirzin
  1 sibling, 1 reply; 22+ messages in thread
From: Florian Paul Schmidt @ 2016-07-31  7:09 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel


[-- Attachment #1.1: Type: text/plain, Size: 4965 bytes --]

Hi!

On 07/29/2016 09:26 PM, Mathieu Lirzin wrote:
>> To get pkg-config, see <http://pkg-config.freedesktop.org/>.
>> See `config.log' for more details
> 
> I have tested successfully with the following command on a foreign
> system:
> 
>   guix environment --ad-hoc automake pkg-config guile guix libgcrypt sqlite guile-sqlite3
> 
> Tell me if it works for you.

Yes, that makes configure run fine. Thanks

This is what I get when I run it:

fps@guix ~/cuirass [env]$ ./pre-inst-env cuirass
--specifications=tests/hello-singleton.scm --database=test.db
Cloning into 'guix'...
remote: Counting objects: 101761, done.
remote: Compressing objects: 100% (28866/28866), done.
remote: Total 101761 (delta 74214), reused 99101 (delta 72173)
Receiving objects: 100% (101761/101761), 35.86 MiB | 6.27 MiB/s, done.
Resolving deltas: 100% (74214/74214), done.
Checking connectivity... done.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
+ exec autoreconf -vfi
./bootstrap: line 5: exec: autoreconf: not found
In execvp of ./configure: No such file or directory
In execvp of make: No such file or directory
;;; note: source file /home/fps/.cache/cuirass/guix/./guix/derivations.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/derivations.go
;;; note: source file /home/fps/.cache/cuirass/guix/./guix/store.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/store.go
;;; note: source file /home/fps/.cache/cuirass/guix/./guix/utils.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/utils.go
;;; note: source file /home/fps/.cache/cuirass/guix/./guix/combinators.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/combinators.go
;;; note: source file /home/fps/.cache/cuirass/guix/./guix/build/utils.scm

[.... more here ....]

;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/unrtf.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/unrtf.go
;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/uucp.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/uucp.go
;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/vtk.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/vtk.go
;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/wdiff.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/wdiff.go
;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/wine.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/wine.go
;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/xfce.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/xfce.go
;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/xnee.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/xnee.go
;;; note: source file
/home/fps/.cache/cuirass/guix/./gnu/packages/yubico.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/yubico.go
;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/zsh.scm
;;;       newer than compiled
/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/zsh.go
evaluate 'hello-2.10.x86_64-linux': 32.563 seconds
building /gnu/store/cw502hifb3q32h2x0gl1afgzmbx9295y-hello-2.10.drv...
/gnu/store/zby49aqfbd9w9br4l52mvb3y6f9vfv22-hello-2.10
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
^C
fps@guix ~/cuirass [env]$

And then:

fps@guix ~/cuirass [env]$  ./pre-inst-env cuirass --database=test.db
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
[....]

Is that the expected output/behaviour?

Regards,
Flo


-- 
https://fps.io


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 473 bytes --]

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 'guix environment' as a build tool.
  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 11:13             ` Ludovic Courtès
  1 sibling, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2016-07-31 11:13 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

Hello,

Mathieu Lirzin <mthl@gnu.org> skribis:

> ludo@gnu.org (Ludovic Courtès) writes:
>
>> Mathieu Lirzin <mthl@gnu.org> skribis:
>>
>>> I have tested successfully with the following command on a foreign
>>> system:
>>>
>>>   guix environment --ad-hoc automake pkg-config guile guix libgcrypt sqlite guile-sqlite3
>>>
>>> Tell me if it works for you.
>>>
>>>> How about including a guix package definition then we can easily build
>>>> it assuming "we" know how to do out-of-guix-tree package building :)
>>>
>>> It would indeed be nice to provide an easy way for Guix users to install
>>> Cuirass.  IMHO package definitions meant as a development build tool is
>>> confusing and should be avoided.  Nonetheless, I think it is useful to
>>> document the previous 'guix environment ...' command in the README.
>>
>> What about providing a ‘guix.scm’ file that people could pass to ‘guix
>> environment -l’ (instead of typing the long command above), and to ‘guix
>> package -f’ (info "(guix) Invoking guix package")?
>
> 'guix environment -l' uses a package definition.  To me this abstraction
> doesn't fit well in a development context:
>
>  - the origin hash doesn't make sense.

Not a problem with ‘local-file’, as David wrote.

>  - packages already included in Guix have redundant description and synopsis.

Yeah, though for such packages, a guix.scm is typically less useful
since most of the time ‘guix environment PACKAGE’ is enough.

>  - package definitions rely on Guix internals.

I sympathize both with this and with what David wrote here.

I can sympathize with the idea that conceptually a package definition is
not quite the same thing as a development environment definition, in
practice ‘guix environment -l’ remains much better than the long command
line above.  :-)

> An idea that I like better and is less invasive, would be to complement
> bootstrap scripts with:
>
>   ./bootstrap --with-guix
>
> This command would:
>
> - generate a guix-env script that wraps 'guix environment ...' if it
>   doesn't exist.
> - Invoke ./guix-env
> - Invoke autoreconf -vfi
>
> if the user wants to enter this environment Later it will have to invoke
> './guix-env'.

I’m not convinced by generated scripts.

Now, we’re at a stage where everyone is welcome to explore their own
way.  Some may prefer a ‘guix.scm’ file, while others would prefer a
script that runs ‘guix environment --ad-hoc’.  With more experience,
maybe we can come up with a solution that better caters to everyone’s
needs.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  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
  0 siblings, 1 reply; 22+ messages in thread
From: Mathieu Lirzin @ 2016-07-31 12:03 UTC (permalink / raw)
  To: Florian Paul Schmidt; +Cc: guix-devel

Hi,

Florian Paul Schmidt <mista.tapas@gmx.net> writes:

> On 07/29/2016 09:26 PM, Mathieu Lirzin wrote:
>>> To get pkg-config, see <http://pkg-config.freedesktop.org/>.
>>> See `config.log' for more details
>> 
>> I have tested successfully with the following command on a foreign
>> system:
>> 
>>   guix environment --ad-hoc automake pkg-config guile guix libgcrypt sqlite guile-sqlite3
>> 
>> Tell me if it works for you.
>
> Yes, that makes configure run fine. Thanks

Cool. :)

> This is what I get when I run it:
>
> fps@guix ~/cuirass [env]$ ./pre-inst-env cuirass
> --specifications=tests/hello-singleton.scm --database=test.db
> Cloning into 'guix'...
> remote: Counting objects: 101761, done.
> remote: Compressing objects: 100% (28866/28866), done.
> remote: Total 101761 (delta 74214), reused 99101 (delta 72173)
> Receiving objects: 100% (101761/101761), 35.86 MiB | 6.27 MiB/s, done.
> Resolving deltas: 100% (74214/74214), done.
> Checking connectivity... done.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> + exec autoreconf -vfi
> ./bootstrap: line 5: exec: autoreconf: not found
> In execvp of ./configure: No such file or directory
> In execvp of make: No such file or directory
> ;;; note: source file /home/fps/.cache/cuirass/guix/./guix/derivations.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/derivations.go
> ;;; note: source file /home/fps/.cache/cuirass/guix/./guix/store.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/store.go
> ;;; note: source file /home/fps/.cache/cuirass/guix/./guix/utils.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/utils.go
> ;;; note: source file /home/fps/.cache/cuirass/guix/./guix/combinators.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/combinators.go
> ;;; note: source file /home/fps/.cache/cuirass/guix/./guix/build/utils.scm
>
> [.... more here ....]
>
> ;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/unrtf.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/unrtf.go
> ;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/uucp.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/uucp.go
> ;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/vtk.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/vtk.go
> ;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/wdiff.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/wdiff.go
> ;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/wine.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/wine.go
> ;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/xfce.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/xfce.go
> ;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/xnee.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/xnee.go
> ;;; note: source file
> /home/fps/.cache/cuirass/guix/./gnu/packages/yubico.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/yubico.go
> ;;; note: source file /home/fps/.cache/cuirass/guix/./gnu/packages/zsh.scm
> ;;;       newer than compiled
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/zsh.go
> evaluate 'hello-2.10.x86_64-linux': 32.563 seconds
> building /gnu/store/cw502hifb3q32h2x0gl1afgzmbx9295y-hello-2.10.drv...
> /gnu/store/zby49aqfbd9w9br4l52mvb3y6f9vfv22-hello-2.10
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> ^C
> fps@guix ~/cuirass [env]$
>
> And then:
>
> fps@guix ~/cuirass [env]$  ./pre-inst-env cuirass --database=test.db
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> [....]
>
> Is that the expected output/behaviour?

Yes The output is not really explicit nor clean and should be filtered.
However this is working like intended.  To explain What is happening:

 > HEAD is now at XXX....

each time this line is displayed the repository is polled and if a
commit happened since, the evaluation/building process restarts which is
what the first lines was displaying.

> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
> [...]
> /gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/zsh.go
> evaluate 'hello-2.10.x86_64-linux': 32.563 seconds
> building /gnu/store/cw502hifb3q32h2x0gl1afgzmbx9295y-hello-2.10.drv...
> /gnu/store/zby49aqfbd9w9br4l52mvb3y6f9vfv22-hello-2.10

If you have any suggestion to improve Cuirass, feel free to share.
Thank you very much for going this far.  :)

-- 
Mathieu Lirzin

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 'guix environment' as a build tool.
  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
  1 sibling, 1 reply; 22+ messages in thread
From: Ludovic Courtès @ 2016-07-31 13:55 UTC (permalink / raw)
  To: Thompson, David; +Cc: guix-devel

Hello!

"Thompson, David" <dthompson2@worcester.edu> skribis:

> On Sat, Jul 30, 2016 at 10:05 PM, Mathieu Lirzin <mthl@gnu.org> wrote:
>> ludo@gnu.org (Ludovic Courtès) writes:

[...]

>>> What about providing a ‘guix.scm’ file that people could pass to ‘guix
>>> environment -l’ (instead of typing the long command above), and to ‘guix
>>> package -f’ (info "(guix) Invoking guix package")?
>>
>> 'guix environment -l' uses a package definition.  To me this abstraction
>> doesn't fit well in a development context:
>
> It *does* fit well.  This use-case is why I wrote 'guix environment'
> in the first place.

[...]

>> if the user wants to enter this environment Later it will have to invoke
>> './guix-env'.
>
> This just makes things more inconvenient and limits potential utility.

That sounds harsh.

I don’t have a better answer for Mathieu other than ‘guix environment
-l’, and I think it does the job well.

But I also think that Mathieu’s concerns must not be dismissed.  For
instance, it’s true that some of the metadata in ‘package’ forms looks
irrelevant for the purposes of setting up a build environment—no big
deal, but still it doesn’t “feel” completely right.

Conversely, useful metadata is missing: for instance, I’d like to add
something that would allow me to specify the equivalent of ‘--network
--expose=$HOME/.gdbinit’ in development environments I use.

Perhaps the solution is to introduce a new way to declare development
environments?  It would be similar to ‘package’, but without ‘synopsis’,
‘description’, and a couple other things; it could have additional
fields to describe container setups and such likes; it would compile
down to a bag, just like packages.

What do you think?

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 'guix environment' as a build tool.
  2016-07-31 13:55               ` Ludovic Courtès
@ 2016-07-31 14:07                 ` Thompson, David
  2016-07-31 20:09                   ` Ludovic Courtès
  0 siblings, 1 reply; 22+ messages in thread
From: Thompson, David @ 2016-07-31 14:07 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Sun, Jul 31, 2016 at 9:55 AM, Ludovic Courtès <ludo@gnu.org> wrote:
> Hello!
>
> "Thompson, David" <dthompson2@worcester.edu> skribis:
>
>> On Sat, Jul 30, 2016 at 10:05 PM, Mathieu Lirzin <mthl@gnu.org> wrote:
>>> ludo@gnu.org (Ludovic Courtès) writes:
>
> [...]
>
>>>> What about providing a ‘guix.scm’ file that people could pass to ‘guix
>>>> environment -l’ (instead of typing the long command above), and to ‘guix
>>>> package -f’ (info "(guix) Invoking guix package")?
>>>
>>> 'guix environment -l' uses a package definition.  To me this abstraction
>>> doesn't fit well in a development context:
>>
>> It *does* fit well.  This use-case is why I wrote 'guix environment'
>> in the first place.
>
> [...]
>
>>> if the user wants to enter this environment Later it will have to invoke
>>> './guix-env'.
>>
>> This just makes things more inconvenient and limits potential utility.
>
> That sounds harsh.

I'm sorry.

> I don’t have a better answer for Mathieu other than ‘guix environment
> -l’, and I think it does the job well.
>
> But I also think that Mathieu’s concerns must not be dismissed.  For
> instance, it’s true that some of the metadata in ‘package’ forms looks
> irrelevant for the purposes of setting up a build environment—no big
> deal, but still it doesn’t “feel” completely right.

My intention was to define it just like a regular package so that
users can do whatever they want with it: build it, install it, or make
a development environment using it.

> Conversely, useful metadata is missing: for instance, I’d like to add
> something that would allow me to specify the equivalent of ‘--network
> --expose=$HOME/.gdbinit’ in development environments I use.
>
> Perhaps the solution is to introduce a new way to declare development
> environments?  It would be similar to ‘package’, but without ‘synopsis’,
> ‘description’, and a couple other things; it could have additional
> fields to describe container setups and such likes; it would compile
> down to a bag, just like packages.
>
> What do you think?

Hmm, that sounds like a good idea.  Maybe I'll try to write a
prototype sometime.  The downside of this method is that one could no
longer use the same expression as input to 'guix build -f' or 'guix
package -f'.

- Dave

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: 'guix environment' as a build tool.
  2016-07-31 14:07                 ` Thompson, David
@ 2016-07-31 20:09                   ` Ludovic Courtès
  0 siblings, 0 replies; 22+ messages in thread
From: Ludovic Courtès @ 2016-07-31 20:09 UTC (permalink / raw)
  To: Thompson, David; +Cc: guix-devel

Hi!

"Thompson, David" <dthompson2@worcester.edu> skribis:

> On Sun, Jul 31, 2016 at 9:55 AM, Ludovic Courtès <ludo@gnu.org> wrote:
>> Conversely, useful metadata is missing: for instance, I’d like to add
>> something that would allow me to specify the equivalent of ‘--network
>> --expose=$HOME/.gdbinit’ in development environments I use.
>>
>> Perhaps the solution is to introduce a new way to declare development
>> environments?  It would be similar to ‘package’, but without ‘synopsis’,
>> ‘description’, and a couple other things; it could have additional
>> fields to describe container setups and such likes; it would compile
>> down to a bag, just like packages.
>>
>> What do you think?
>
> Hmm, that sounds like a good idea.  Maybe I'll try to write a
> prototype sometime.  The downside of this method is that one could no
> longer use the same expression as input to 'guix build -f' or 'guix
> package -f'.

Good point.  That would be a drawback of the approach, but probably we
can support both styles.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [GSoC] Continuous integration tool à la Hydra.
  2016-07-31 12:03           ` Mathieu Lirzin
@ 2016-08-01 18:55             ` Florian Paul Schmidt
  0 siblings, 0 replies; 22+ messages in thread
From: Florian Paul Schmidt @ 2016-08-01 18:55 UTC (permalink / raw)
  To: Mathieu Lirzin; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 6529 bytes --]

Hi again. Sorry I'm on vacation in Sweden so the formatting of this mail suffered ;) The one thing that had me worried was the errors right after the git pull..

Regards,
Flo

On July 31, 2016 2:03:59 PM GMT+02:00, Mathieu Lirzin <mthl@gnu.org> wrote:
>Hi,
>
>Florian Paul Schmidt <mista.tapas@gmx.net> writes:
>
>> On 07/29/2016 09:26 PM, Mathieu Lirzin wrote:
>>>> To get pkg-config, see <http://pkg-config.freedesktop.org/>.
>>>> See `config.log' for more details
>>> 
>>> I have tested successfully with the following command on a foreign
>>> system:
>>> 
>>>   guix environment --ad-hoc automake pkg-config guile guix libgcrypt
>sqlite guile-sqlite3
>>> 
>>> Tell me if it works for you.
>>
>> Yes, that makes configure run fine. Thanks
>
>Cool. :)
>
>> This is what I get when I run it:
>>
>> fps@guix ~/cuirass [env]$ ./pre-inst-env cuirass
>> --specifications=tests/hello-singleton.scm --database=test.db
>> Cloning into 'guix'...
>> remote: Counting objects: 101761, done.
>> remote: Compressing objects: 100% (28866/28866), done.
>> remote: Total 101761 (delta 74214), reused 99101 (delta 72173)
>> Receiving objects: 100% (101761/101761), 35.86 MiB | 6.27 MiB/s,
>done.
>> Resolving deltas: 100% (74214/74214), done.
>> Checking connectivity... done.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> + exec autoreconf -vfi
>> ./bootstrap: line 5: exec: autoreconf: not found
>> In execvp of ./configure: No such file or directory
>> In execvp of make: No such file or directory
>> ;;; note: source file
>/home/fps/.cache/cuirass/guix/./guix/derivations.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/derivations.go
>> ;;; note: source file /home/fps/.cache/cuirass/guix/./guix/store.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/store.go
>> ;;; note: source file /home/fps/.cache/cuirass/guix/./guix/utils.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/utils.go
>> ;;; note: source file
>/home/fps/.cache/cuirass/guix/./guix/combinators.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/guix/combinators.go
>> ;;; note: source file
>/home/fps/.cache/cuirass/guix/./guix/build/utils.scm
>>
>> [.... more here ....]
>>
>> ;;; note: source file
>/home/fps/.cache/cuirass/guix/./gnu/packages/unrtf.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/unrtf.go
>> ;;; note: source file
>/home/fps/.cache/cuirass/guix/./gnu/packages/uucp.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/uucp.go
>> ;;; note: source file
>/home/fps/.cache/cuirass/guix/./gnu/packages/vtk.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/vtk.go
>> ;;; note: source file
>/home/fps/.cache/cuirass/guix/./gnu/packages/wdiff.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/wdiff.go
>> ;;; note: source file
>/home/fps/.cache/cuirass/guix/./gnu/packages/wine.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/wine.go
>> ;;; note: source file
>/home/fps/.cache/cuirass/guix/./gnu/packages/xfce.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/xfce.go
>> ;;; note: source file
>/home/fps/.cache/cuirass/guix/./gnu/packages/xnee.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/xnee.go
>> ;;; note: source file
>> /home/fps/.cache/cuirass/guix/./gnu/packages/yubico.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/yubico.go
>> ;;; note: source file
>/home/fps/.cache/cuirass/guix/./gnu/packages/zsh.scm
>> ;;;       newer than compiled
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/zsh.go
>> evaluate 'hello-2.10.x86_64-linux': 32.563 seconds
>> building
>/gnu/store/cw502hifb3q32h2x0gl1afgzmbx9295y-hello-2.10.drv...
>> /gnu/store/zby49aqfbd9w9br4l52mvb3y6f9vfv22-hello-2.10
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> ^C
>> fps@guix ~/cuirass [env]$
>>
>> And then:
>>
>> fps@guix ~/cuirass [env]$  ./pre-inst-env cuirass --database=test.db
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> [....]
>>
>> Is that the expected output/behaviour?
>
>Yes The output is not really explicit nor clean and should be filtered.
>However this is working like intended.  To explain What is happening:
>
> > HEAD is now at XXX....
>
>each time this line is displayed the repository is polled and if a
>commit happened since, the evaluation/building process restarts which
>is
>what the first lines was displaying.
>
>> HEAD is now at 2fa66f4 gnu: mutt: Update to 1.6.2.
>> [...]
>>
>/gnu/store/044sj7g4gxmy9garq6ii5aips4jn6hr6-profile/share/guile/site/2.0/gnu/packages/zsh.go
>> evaluate 'hello-2.10.x86_64-linux': 32.563 seconds
>> building
>/gnu/store/cw502hifb3q32h2x0gl1afgzmbx9295y-hello-2.10.drv...
>> /gnu/store/zby49aqfbd9w9br4l52mvb3y6f9vfv22-hello-2.10
>
>If you have any suggestion to improve Cuirass, feel free to share.
>Thank you very much for going this far.  :)
>
>-- 
>Mathieu Lirzin

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.

[-- Attachment #2: Type: text/html, Size: 7816 bytes --]

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2016-08-01 18:55 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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
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

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).