mbox

[bug#36351,00/10] Add 'derivation-build-plan', improve (guix derivations)

Message ID 20190624121857.5818-1-ludo@gnu.org
Headers show

Message

Ludovic Courtès June 24, 2019, 12:18 p.m. UTC
Hello Guix,

This is the season cleanup of (guix derivations)!

The initial motivation was to allow ‘show-what-to-build’ to do deal
with builds of single derivation outputs, which became possible in
commit f8a9f99cd602ce1dc5307cb0c21ae718ad8796bb.

I ended up replacing ‘derivation-prerequisites-to-build’ with
‘derivation-build-plan’, which is both more flexible and simpler.

That led me to change <derivation-input> so that it would contain
a <derivation> instead of a derivation file name, which is more
natural and helps for things like ‘derivation-build-plan’ that
traverse the derivation graph (previously it’d have to call
‘read-derivation-from-file’, which would look up the derivation
in ‘%derivation-cache’.)

I wanted to change ‘guix build’ to support things like:

  guix build groff:doc

but there are slight complications so I’ll punt on that for now.

Thoughts?

Ludo’.

Ludovic Courtès (10):
  derivations: Add 'derivation-input'.
  derivations: Rewrite and replace 'derivations-prerequisites-to-build'.
  ui: 'show-what-to-build' uses 'derivation-build-plan'.
  graph: Use 'derivation-input-derivation'.
  derivations: <derivation-input> now aggregates a <derivation>.
  derivations: 'derivation' preserves pointer equality.
  derivations: 'build-derivations' can be passed derivation inputs.
  packages: 'specification->package+output' distinguishes "no output
    specified".
  ui: 'show-what-to-build' accepts derivation inputs.
  ui: 'show-derivation-outputs' accepts <derivation-input> records.

 gnu/packages.scm       |   8 +-
 guix/derivations.scm   | 269 +++++++++++++++++++++++------------------
 guix/scripts/graph.scm |   3 +-
 guix/ui.scm            |  67 +++++-----
 tests/derivations.scm  |  80 ++++++------
 tests/grafts.scm       |  16 +--
 tests/packages.scm     |  32 +++++
 7 files changed, 271 insertions(+), 204 deletions(-)

Comments

Ludovic Courtès June 27, 2019, 9:17 a.m. UTC | #1
Hello,

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

> This is the season cleanup of (guix derivations)!

I went ahead and pushed the whole shebang:

08c95ba28d ui: 'show-derivation-outputs' accepts <derivation-input> records.
d38d4ffa10 ui: 'show-what-to-build' accepts derivation inputs.
066eeae1a1 packages: 'specification->package+output' distinguishes "no output specified".
7c690a4738 derivations: 'build-derivations' can be passed derivation inputs.
fd951cd543 derivations: 'derivation' preserves pointer equality.
5cf4b26d52 derivations: <derivation-input> now aggregates a <derivation>.
a250061986 graph: Use 'derivation-input-derivation'.
9844d0091e ui: 'show-what-to-build' uses 'derivation-build-plan'.
ba04f80e2e derivations: Rewrite and replace 'derivations-prerequisites-to-build'.
c89985d91d derivations: Add 'derivation-input'.

Ludo’.