unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: ludo@gnu.org (Ludovic Courtès)
To: Timothy Sample <samplet@ngyro.com>
Cc: guix-devel@gnu.org
Subject: Re: Graft hooks
Date: Mon, 20 Aug 2018 11:12:29 +0200	[thread overview]
Message-ID: <87y3d1h05e.fsf@gnu.org> (raw)
In-Reply-To: <87k1ovbc0t.fsf@ngyro.com> (Timothy Sample's message of "Sun, 12 Aug 2018 15:49:54 -0400")

Hello Timothy,

Timothy Sample <samplet@ngyro.com> skribis:

> The basic idea would be to add a field (or use a property) to the
> package record.  Let’s call it “graft-hook”.  It would be Scheme code
> that gets run after grafting takes place, giving us a chance to patch
> special things like checksums.  The hook would be passed the list of
> files that were been modified during grafting.  Then, in the Racket
> package for example, I could write a graft-hook that updates the SHA-1
> hash of each of the modified source files.
>
> Since grafting is done at the derivation level, the hook code would have
> to be propagated down from the package level.  I haven’t looked at all
> the details yet, because maybe this is a bad idea and I shouldn’t waste
> my time!  :)  My first impression is that it is not too tricky.
>
> Are these problems too specialized to deserve a general mechanism like
> this?  Let me know what you think!

I agree that this would be the right thing to do!  (I’d really like to
do it for GDB as discussed in <https://bugs.gnu.org/19973>.)

Package properties would be the right way to make it extensible, but
there are complications (notably we’d need to use gexps, but build
systems don’t use gexps yet.)

So as a first step, would like to try and implement the checksum update
for Racket directly in (guix build grafts)?  The implementation would
need to be clearly separate from the generic grafting code (like profile
hooks in (guix profiles)) such that we can easily add similar hooks and
move them to a separate file later.

WDYT?

Thanks,
Ludo’.

  parent reply	other threads:[~2018-08-20  9:12 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-12 19:49 Graft hooks Timothy Sample
2018-08-13  0:28 ` Christopher Lemmer Webber
2018-08-13  7:19   ` Gábor Boskovits
2018-08-20  9:12 ` Ludovic Courtès [this message]
2018-08-21 15:42   ` Timothy Sample
2018-08-22 14:21     ` Ludovic Courtès
2018-08-22 18:29       ` Timothy Sample
2018-08-24 10:09         ` Ludovic Courtès
2018-08-22 19:15       ` Christopher Lemmer Webber
2018-08-23  7:15       ` Mark H Weaver
2018-08-23  9:54         ` Gábor Boskovits
2018-08-24 10:17         ` Ludovic Courtès
2018-08-24 21:59           ` Mark H Weaver

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87y3d1h05e.fsf@gnu.org \
    --to=ludo@gnu.org \
    --cc=guix-devel@gnu.org \
    --cc=samplet@ngyro.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).