help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Generalizing DAG rewriting


From: Ludovic Courtès
Subject: Generalizing DAG rewriting
Date: Thu, 09 Feb 2017 10:55:06 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux)

Hi!

Ricardo Wurmus <address@hidden> skribis:

> Myles English <address@hidden> writes:
>
>> Hello Fede, Eric,
>>
>> on [2017-02-07] at 15:15 Federico Beffa writes:

[...]

>>> it seems that the only Python specific part of
>>> 'package-with-explicit-python' is the keyword '#:python'. What do you
>>> think of generalizing it by making it a function keyword argument and
>>> move the procedure to its own module (maybe (guix build-system
>>> utils)?).
>>
>> ...I came the same conclusion as Fede: it could be generalised.  It is
>> probably close to working for me (with respect to ghc) so I will keep
>> going for now.  I am not competent enough to generalise it but if
>> someone else does I can help test it.
>
> I’m doing the same for some Perl packages.  I defined a procedure
> “package-for-perl-5.14” which takes a package and rewrites it.
>
> It looks like this:
>
> (define (package-for-perl-5.14 pkg)
>   (let* ((rewriter (package-input-rewriting `((,perl . ,perl-5.14))
>                                             perl-5.14-package-name))
>          (new (rewriter pkg)))
>     (package
>      (inherit new)
>      (arguments `(#:perl ,perl-5.14
>                   ,@(package-arguments new))))))
>
> The problem here is that it doesn’t rewrite the “#:perl” argument
> recursively, so the dependencies of a Perl package will still refer to
> the latest version of Perl as that’s what’s used in the build system.
>
> We would need a solution that would take care of this problem for all
> build systems.

I agree that this is asking for generalization.

Another instance of DAG rewriting is the ‘package-with-’ helpers in
(guix build-system gnu).

We should have a general form of transformation procedure that handles
DAG traversal and memoization like all these procedures do.

Ludo’.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]