unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
* bug#32575: [Cuirass] Filter results by architecture
@ 2018-08-29 13:54 Ricardo Wurmus
  2018-08-29 20:49 ` Joshua Branson
  2018-08-30  9:41 ` Danny Milosavljevic
  0 siblings, 2 replies; 10+ messages in thread
From: Ricardo Wurmus @ 2018-08-29 13:54 UTC (permalink / raw)
  To: 32575

The Cuirass web interface shows the number of successful, failed, and
pending builds for each evaluation.  Looking at just these numbers it is
impossible to tell, how each of the supported architectures is affected.

It would be good if we could separate the view by architecture.  Then we
could more easily determine that a change broke many builds for one
architecture while fixing builds on another.

One way to do this would be to accept an optional query variable, e.g.

    http://ci.guix.info/jobset/guix-master?system=x86_64-linux

This could be selected from a drop-down on the page or exposed through a
number of links.

--
Ricardo

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

* bug#32575: [Cuirass] Filter results by architecture
  2018-08-29 13:54 bug#32575: [Cuirass] Filter results by architecture Ricardo Wurmus
@ 2018-08-29 20:49 ` Joshua Branson
  2018-08-30  5:56   ` Gábor Boskovits
  2018-08-30  8:09   ` Ricardo Wurmus
  2018-08-30  9:41 ` Danny Milosavljevic
  1 sibling, 2 replies; 10+ messages in thread
From: Joshua Branson @ 2018-08-29 20:49 UTC (permalink / raw)
  To: 32575

Ricardo Wurmus <rekado@elephly.net> writes:

> The Cuirass web interface shows the number of successful, failed, and
> pending builds for each evaluation.  Looking at just these numbers it is
> impossible to tell, how each of the supported architectures is affected.
>
> It would be good if we could separate the view by architecture.  Then we
> could more easily determine that a change broke many builds for one
> architecture while fixing builds on another.
>
> One way to do this would be to accept an optional query variable, e.g.
>
>     http://ci.guix.info/jobset/guix-master?system=x86_64-linux

That is an option.  Another one is using a REST API.  It seems to have
all the hype these days.  So the URL would turn into:

     http://ci.guix.info/jobset/guix-master/system/x86_64-linux

Though I freely admit, I don't completely understand the benefits of REST.

>
> This could be selected from a drop-down on the page or exposed through a
> number of links.
>
> --
> Ricardo

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

* bug#32575: [Cuirass] Filter results by architecture
  2018-08-29 20:49 ` Joshua Branson
@ 2018-08-30  5:56   ` Gábor Boskovits
  2018-08-30  8:09   ` Ricardo Wurmus
  1 sibling, 0 replies; 10+ messages in thread
From: Gábor Boskovits @ 2018-08-30  5:56 UTC (permalink / raw)
  To: Joshua Branson; +Cc: 32575

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

Joshua Branson <jbranso@fastmail.com> ezt írta (időpont: 2018. aug. 29.,
Sze, 22:41):

> Ricardo Wurmus <rekado@elephly.net> writes:
>
> > The Cuirass web interface shows the number of successful, failed, and
> > pending builds for each evaluation.  Looking at just these numbers it is
> > impossible to tell, how each of the supported architectures is affected.
> >
> > It would be good if we could separate the view by architecture.  Then we
> > could more easily determine that a change broke many builds for one
> > architecture while fixing builds on another.
> >
> > One way to do this would be to accept an optional query variable, e.g.
> >
> >     http://ci.guix.info/jobset/guix-master?system=x86_64-linux
>
> That is an option.  Another one is using a REST API.  It seems to have
> all the hype these days.  So the URL would turn into:
>
>      http://ci.guix.info/jobset/guix-master/system/x86_64-linux
>
> Though I freely admit, I don't completely understand the benefits of REST.
>
> Actually there are some more options to do this, but I think this should
go with
a more generic filtering/sorting capability, using a uniform
implementation. I
noticed this in a writeup before, Ludo asked me to turn that to a TODO on
the Cuirass repository, and I will do that once back from vacation.

> >
> > This could be selected from a drop-down on the page or exposed through a
> > number of links.
> >
> > --
> > Ricardo
>
>
>
>

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

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

* bug#32575: [Cuirass] Filter results by architecture
  2018-08-29 20:49 ` Joshua Branson
  2018-08-30  5:56   ` Gábor Boskovits
@ 2018-08-30  8:09   ` Ricardo Wurmus
  1 sibling, 0 replies; 10+ messages in thread
From: Ricardo Wurmus @ 2018-08-30  8:09 UTC (permalink / raw)
  To: Joshua Branson; +Cc: 32575


Hi Joshua,

> Ricardo Wurmus <rekado@elephly.net> writes:
>
>> The Cuirass web interface shows the number of successful, failed, and
>> pending builds for each evaluation.  Looking at just these numbers it is
>> impossible to tell, how each of the supported architectures is affected.
>>
>> It would be good if we could separate the view by architecture.  Then we
>> could more easily determine that a change broke many builds for one
>> architecture while fixing builds on another.
>>
>> One way to do this would be to accept an optional query variable, e.g.
>>
>>     http://ci.guix.info/jobset/guix-master?system=x86_64-linux
>
> That is an option.  Another one is using a REST API.  It seems to have
> all the hype these days.  So the URL would turn into:
>
>      http://ci.guix.info/jobset/guix-master/system/x86_64-linux
>
> Though I freely admit, I don't completely understand the benefits of REST.

REST doesn’t quite apply here, because we only use GET — the Cuirass web
interface is read-only.  A big part of REST is to use HTTP verbs in an
appropriate manner and keep the URLs as resource identifiers the same
for all verbs.

What you refer to is the related trend to using Clean URLs:

    https://en.wikipedia.org/wiki/Clean_URL

These are often used with a RESTful API.

I think that filtering of a dynamic resource could very well be done
with a GET query string.  A Clean URL would make more sense for
something that doesn’t change as quickly (e.g. a particular product in a
catalogue).

--
Ricardo

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

* bug#32575: [Cuirass] Filter results by architecture
  2018-08-29 13:54 bug#32575: [Cuirass] Filter results by architecture Ricardo Wurmus
  2018-08-29 20:49 ` Joshua Branson
@ 2018-08-30  9:41 ` Danny Milosavljevic
  2018-08-30 12:14   ` Ludovic Courtès
  1 sibling, 1 reply; 10+ messages in thread
From: Danny Milosavljevic @ 2018-08-30  9:41 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: 32575

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

Hi Ricardo,

On Wed, 29 Aug 2018 15:54:47 +0200
Ricardo Wurmus <rekado@elephly.net> wrote:

> The Cuirass web interface shows the number of successful, failed, and
> pending builds for each evaluation.  Looking at just these numbers it is
> impossible to tell, how each of the supported architectures is affected.
> 
> It would be good if we could separate the view by architecture.  Then we
> could more easily determine that a change broke many builds for one
> architecture while fixing builds on another.
> 
> One way to do this would be to accept an optional query variable, e.g.
> 
>     http://ci.guix.info/jobset/guix-master?system=x86_64-linux
> 
> This could be selected from a drop-down on the page or exposed through a
> number of links.

I agree.

Also, in the Javascript frontend I had a list of architecture links for each package.

The filter could be applied to show only a given set of architectures.

I think that for a portable package, the architecture it runs on is
an implementation detail - it should build on all of them.  If it doesn't,
that should show up as an error.

So I had

  hello      [x86_64-checkbox-log] [armhf-checkbox-log] [aarch64-checkbox-log]

and not

  hello.x86_64 [checkbox-log]
  hello.armhf [checkbox-log]
  hello.aarch64 [checkbox-log]

The latter looks more like these are different packages with different purposes -
which they really aren't from a user standpoint.

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

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

* bug#32575: [Cuirass] Filter results by architecture
  2018-08-30  9:41 ` Danny Milosavljevic
@ 2018-08-30 12:14   ` Ludovic Courtès
  2018-08-30 12:50     ` Clément Lassieur
  0 siblings, 1 reply; 10+ messages in thread
From: Ludovic Courtès @ 2018-08-30 12:14 UTC (permalink / raw)
  To: Danny Milosavljevic; +Cc: 32575, clement

Hi Danny & all,

Danny Milosavljevic <dannym@scratchpost.org> skribis:

> I think that for a portable package, the architecture it runs on is
> an implementation detail - it should build on all of them.  If it doesn't,
> that should show up as an error.
>
> So I had
>
>   hello      [x86_64-checkbox-log] [armhf-checkbox-log] [aarch64-checkbox-log]
>
> and not
>
>   hello.x86_64 [checkbox-log]
>   hello.armhf [checkbox-log]
>   hello.aarch64 [checkbox-log]
>
> The latter looks more like these are different packages with different purposes -
> which they really aren't from a user standpoint.

The difficulty is that, from Cuirass’ viewpoint, “hello.x86_64-linux”
and “hello.armhf-linux” are just two different unrelated jobs.

Perhaps what we would need is to internally change how jobs are
represented in the database: we could have one job, “hello”, connected
to one or more “builds”, each with its own system.

I think it would amount to splitting the “Builds” table into two tables:
“Builds” and “Jobs”.  Clément, does that make sense?

Ludo’.

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

* bug#32575: [Cuirass] Filter results by architecture
  2018-08-30 12:14   ` Ludovic Courtès
@ 2018-08-30 12:50     ` Clément Lassieur
  2018-08-30 20:33       ` Ludovic Courtès
  0 siblings, 1 reply; 10+ messages in thread
From: Clément Lassieur @ 2018-08-30 12:50 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 32575

Ludovic Courtès <ludo@gnu.org> writes:

> Hi Danny & all,
>
> Danny Milosavljevic <dannym@scratchpost.org> skribis:
>
>> I think that for a portable package, the architecture it runs on is
>> an implementation detail - it should build on all of them.  If it doesn't,
>> that should show up as an error.
>>
>> So I had
>>
>>   hello      [x86_64-checkbox-log] [armhf-checkbox-log] [aarch64-checkbox-log]
>>
>> and not
>>
>>   hello.x86_64 [checkbox-log]
>>   hello.armhf [checkbox-log]
>>   hello.aarch64 [checkbox-log]
>>
>> The latter looks more like these are different packages with different purposes -
>> which they really aren't from a user standpoint.
>
> The difficulty is that, from Cuirass’ viewpoint, “hello.x86_64-linux”
> and “hello.armhf-linux” are just two different unrelated jobs.
>
> Perhaps what we would need is to internally change how jobs are
> represented in the database: we could have one job, “hello”, connected
> to one or more “builds”, each with its own system.
>
> I think it would amount to splitting the “Builds” table into two tables:
> “Builds” and “Jobs”.  Clément, does that make sense?

The 'job' word already has a meaning in Cuirass: it is the thing that is
returned from the evaluation.  For example, if Cuirass builds foo and
bar for x86_64 and i686, there will be exactly 4 jobs produced at each
evaluation :

 - foo.x86_64-linux     
 - foo.i686-linux       
 - bar.x86_64-linux     
 - bar.i686-linux       

(10 evaluations means 40 jobs produced, etc.)

(Most of them have a derivation file associated that already exists, so
they won't be added in the Build table.)

I don't think we should change that meaning because it will make
everything more difficult to understand.

But the Builds table looks like this:

CREATE TABLE Builds (
  derivation    TEXT NOT NULL PRIMARY KEY,
  evaluation    INTEGER NOT NULL,
  job_name      TEXT NOT NULL,
  system        TEXT NOT NULL,
  nix_name      TEXT NOT NULL,
  log           TEXT NOT NULL,
  status        INTEGER NOT NULL,
  timestamp     INTEGER NOT NULL,
  starttime     INTEGER NOT NULL,
  stoptime      INTEGER NOT NULL,
  FOREIGN KEY (evaluation) REFERENCES Evaluations (id)
);

We even have the 'system' column, so to me we have everything we need,
and we could display on one line all the builds that have the same
'nix_name' for a given evaluation.

Does it make sense?
Clément

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

* bug#32575: [Cuirass] Filter results by architecture
  2018-08-30 12:50     ` Clément Lassieur
@ 2018-08-30 20:33       ` Ludovic Courtès
  2018-08-31 18:35         ` Clément Lassieur
  0 siblings, 1 reply; 10+ messages in thread
From: Ludovic Courtès @ 2018-08-30 20:33 UTC (permalink / raw)
  To: Clément Lassieur; +Cc: 32575

Clément Lassieur <clement@lassieur.org> skribis:

> Ludovic Courtès <ludo@gnu.org> writes:

[...]

>> Perhaps what we would need is to internally change how jobs are
>> represented in the database: we could have one job, “hello”, connected
>> to one or more “builds”, each with its own system.
>>
>> I think it would amount to splitting the “Builds” table into two tables:
>> “Builds” and “Jobs”.  Clément, does that make sense?
>
> The 'job' word already has a meaning in Cuirass: it is the thing that is
> returned from the evaluation.  For example, if Cuirass builds foo and
> bar for x86_64 and i686, there will be exactly 4 jobs produced at each
> evaluation :
>
>  - foo.x86_64-linux     
>  - foo.i686-linux       
>  - bar.x86_64-linux     
>  - bar.i686-linux       

Yes.

> CREATE TABLE Builds (
>   derivation    TEXT NOT NULL PRIMARY KEY,
>   evaluation    INTEGER NOT NULL,
>   job_name      TEXT NOT NULL,
>   system        TEXT NOT NULL,
>   nix_name      TEXT NOT NULL,
>   log           TEXT NOT NULL,
>   status        INTEGER NOT NULL,
>   timestamp     INTEGER NOT NULL,
>   starttime     INTEGER NOT NULL,
>   stoptime      INTEGER NOT NULL,
>   FOREIGN KEY (evaluation) REFERENCES Evaluations (id)
> );
>
> We even have the 'system' column, so to me we have everything we need,
> and we could display on one line all the builds that have the same
> 'nix_name' for a given evaluation.

Hmm, probably, indeed (though ‘nix_name’ is meant as hint, not as a
key.)

Right now, build-aux/hydra/*.scm returns a list of jobs like this:

  (hello-2.10.x86_64-linux
    (derivation
      .
      "/gnu/store/2dl7n4l0l0vjzpjnv67fbb7vf24kw0ap-hello-2.10.drv")
    (description …)
    (long-description …)
    (license …)
    (home-page …)
    (maintainers "bug-guix@gnu.org")
    (max-silent-time . 3600)
    (timeout . 72000))
  ;; … likewise for ‘hello.i686-linux’, etc.

My proposal would be for build-aux/hydra/*.scm to return jobs that look
like this:

  (hello-2.10     ; <- no special naming convention
    (derivations
      .
      (("x86_64-linux" . /gnu/store/…-hello-2.10.drv")
       ("i686-linux" . /gnu/store/…-hello-2.10.drv")))
    (description …)
    (long-description …)
    (license …)
    (home-page …)
    (maintainers "bug-guix@gnu.org")
    (max-silent-time . 3600)
    (timeout . 72000))

Conceptually, that models the situation better, IMO.

But like you write, we probably already have everything to do something
along the lines of what Danny proposed.  The change above can come later
(it would be incompatible with Hydra, too.)

Thoughts?

Ludo’.

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

* bug#32575: [Cuirass] Filter results by architecture
  2018-08-30 20:33       ` Ludovic Courtès
@ 2018-08-31 18:35         ` Clément Lassieur
  2021-03-25 13:32           ` Mathieu Othacehe
  0 siblings, 1 reply; 10+ messages in thread
From: Clément Lassieur @ 2018-08-31 18:35 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: 32575

Ludovic Courtès <ludo@gnu.org> writes:

>> CREATE TABLE Builds (
>>   derivation    TEXT NOT NULL PRIMARY KEY,
>>   evaluation    INTEGER NOT NULL,
>>   job_name      TEXT NOT NULL,
>>   system        TEXT NOT NULL,
>>   nix_name      TEXT NOT NULL,
>>   log           TEXT NOT NULL,
>>   status        INTEGER NOT NULL,
>>   timestamp     INTEGER NOT NULL,
>>   starttime     INTEGER NOT NULL,
>>   stoptime      INTEGER NOT NULL,
>>   FOREIGN KEY (evaluation) REFERENCES Evaluations (id)
>> );
>>
>> We even have the 'system' column, so to me we have everything we need,
>> and we could display on one line all the builds that have the same
>> 'nix_name' for a given evaluation.
>
> Hmm, probably, indeed (though ‘nix_name’ is meant as hint, not as a
> key.)
>
> Right now, build-aux/hydra/*.scm returns a list of jobs like this:
>
>   (hello-2.10.x86_64-linux
>     (derivation
>       .
>       "/gnu/store/2dl7n4l0l0vjzpjnv67fbb7vf24kw0ap-hello-2.10.drv")
>     (description …)
>     (long-description …)
>     (license …)
>     (home-page …)
>     (maintainers "bug-guix@gnu.org")
>     (max-silent-time . 3600)
>     (timeout . 72000))
>   ;; … likewise for ‘hello.i686-linux’, etc.
>
> My proposal would be for build-aux/hydra/*.scm to return jobs that look
> like this:
>
>   (hello-2.10     ; <- no special naming convention
      ^
This is 'nix-name' (which is 'derivation-name')

>     (derivations
>       .
>       (("x86_64-linux" . /gnu/store/…-hello-2.10.drv")
>        ("i686-linux" . /gnu/store/…-hello-2.10.drv")))
              ^
This is 'system' (which is 'derivation-system')

>     (description …)
>     (long-description …)
>     (license …)
>     (home-page …)
>     (maintainers "bug-guix@gnu.org")
>     (max-silent-time . 3600)
>     (timeout . 72000))

So everything is already in the derivations that are in Cuirass.  Why
would we need to change the interface with the evaluator
(build-aux/hydra/*.scm)?

Clément

> Conceptually, that models the situation better, IMO.
>
> But like you write, we probably already have everything to do something
> along the lines of what Danny proposed.  The change above can come later
> (it would be incompatible with Hydra, too.)
>
> Thoughts?
>
> Ludo’.

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

* bug#32575: [Cuirass] Filter results by architecture
  2018-08-31 18:35         ` Clément Lassieur
@ 2021-03-25 13:32           ` Mathieu Othacehe
  0 siblings, 0 replies; 10+ messages in thread
From: Mathieu Othacehe @ 2021-03-25 13:32 UTC (permalink / raw)
  To: Clément Lassieur; +Cc: 32575-done


Hello,

The Builds table now has as "system" field on Cuirass master. The job
system is displayed on http://ci.guix.gnu.org/eval/xxx page. With
1ed93601089e774df849bc4ffab718bb1f142d34 it is also possible to sort by
table columns, including the "System" column.

Closing this one,

Thanks,

Mathieu




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

end of thread, other threads:[~2021-03-25 13:33 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-29 13:54 bug#32575: [Cuirass] Filter results by architecture Ricardo Wurmus
2018-08-29 20:49 ` Joshua Branson
2018-08-30  5:56   ` Gábor Boskovits
2018-08-30  8:09   ` Ricardo Wurmus
2018-08-30  9:41 ` Danny Milosavljevic
2018-08-30 12:14   ` Ludovic Courtès
2018-08-30 12:50     ` Clément Lassieur
2018-08-30 20:33       ` Ludovic Courtès
2018-08-31 18:35         ` Clément Lassieur
2021-03-25 13:32           ` Mathieu Othacehe

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