unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
* Recursively propagate build-system 'arguments' to dependency packages?
@ 2017-02-06 21:09 Myles English
  2017-02-07  2:19 ` Eric Bavier
  0 siblings, 1 reply; 5+ messages in thread
From: Myles English @ 2017-02-06 21:09 UTC (permalink / raw)
  To: help-guix


Trying to define a package to be compiled by ghc-8, and I think all of
its dependencies must also be compiled by ghc-8 rather than ghc (which
is version 7).  This is easy to do with one package, e.g..:

(define-module (my-packages myhaskell)
 ...
  #:use-module ((gnu packages haskell) #:prefix haskellmain:))

(define-public ghc-hunit8
  (package
    (inherit haskellmain:ghc-hunit)
    (arguments `(#:haskell ,ghc-8))))

To do that recursively for all the dependencies seems Too Difficult so,
is there a way to do something like --with-input=ghc=ghc-8 but with the
build-system arguments?  Perhaps doing the work in between the Bag and
the Derivation?

Myles

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

* Re: Recursively propagate build-system 'arguments' to dependency packages?
  2017-02-06 21:09 Recursively propagate build-system 'arguments' to dependency packages? Myles English
@ 2017-02-07  2:19 ` Eric Bavier
  0 siblings, 0 replies; 5+ messages in thread
From: Eric Bavier @ 2017-02-07  2:19 UTC (permalink / raw)
  To: Myles English; +Cc: help-guix

On Mon, 06 Feb 2017 21:09:33 +0000
Myles English <mylesenglish@gmail.com> wrote:

> Trying to define a package to be compiled by ghc-8, and I think all of
> its dependencies must also be compiled by ghc-8 rather than ghc (which
> is version 7).  This is easy to do with one package, e.g..:
> 
> (define-module (my-packages myhaskell)
>  ...
>   #:use-module ((gnu packages haskell) #:prefix haskellmain:))
> 
> (define-public ghc-hunit8
>   (package
>     (inherit haskellmain:ghc-hunit)
>     (arguments `(#:haskell ,ghc-8))))
> 
> To do that recursively for all the dependencies seems Too Difficult so,
> is there a way to do something like --with-input=ghc=ghc-8 but with the
> build-system arguments?  Perhaps doing the work in between the Bag and
> the Derivation?

You may take a look at the 'package-with-python2' procedure in
guix/build-system/python.scm, which seems like it could be adapted to
work with haskell/ghc packages.

`~Eric

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

* Re: Recursively propagate build-system 'arguments' to dependency packages?
@ 2017-02-07 15:15 Federico Beffa
  2017-02-07 19:07 ` Myles English
  0 siblings, 1 reply; 5+ messages in thread
From: Federico Beffa @ 2017-02-07 15:15 UTC (permalink / raw)
  To: ericbavier; +Cc: help-guix

Eric Bavier <ericbavier@openmailbox.org> writes:

> On Mon, 06 Feb 2017 21:09:33 +0000
> Myles English <mylesenglish@gmail.com> wrote:
>
>> Trying to define a package to be compiled by ghc-8, and I think all of
>> its dependencies must also be compiled by ghc-8 rather than ghc (which
>> is version 7).  This is easy to do with one package, e.g..:
>>
>> (define-module (my-packages myhaskell)
>>  ...
>>   #:use-module ((gnu packages haskell) #:prefix haskellmain:))
>>
>> (define-public ghc-hunit8
>>   (package
>>     (inherit haskellmain:ghc-hunit)
>>     (arguments `(#:haskell ,ghc-8))))
>>
>> To do that recursively for all the dependencies seems Too Difficult so,
>> is there a way to do something like --with-input=ghc=ghc-8 but with the
>> build-system arguments?  Perhaps doing the work in between the Bag and
>> the Derivation?
>
> You may take a look at the 'package-with-python2' procedure in
> guix/build-system/python.scm, which seems like it could be adapted to
> work with haskell/ghc packages.

Hi Eric, Myles,

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

Regards,
Fede

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

* Re: Recursively propagate build-system 'arguments' to dependency packages?
  2017-02-07 15:15 Federico Beffa
@ 2017-02-07 19:07 ` Myles English
  2017-02-08 16:01   ` Ricardo Wurmus
  0 siblings, 1 reply; 5+ messages in thread
From: Myles English @ 2017-02-07 19:07 UTC (permalink / raw)
  To: Federico Beffa; +Cc: help-guix

Hello Fede, Eric,

on [2017-02-07] at 15:15 Federico Beffa writes:

> Eric Bavier <ericbavier@openmailbox.org> writes:
>
>> On Mon, 06 Feb 2017 21:09:33 +0000
>> Myles English <mylesenglish@gmail.com> wrote:
>>
>>> Trying to define a package to be compiled by ghc-8, and I think all of
>>> its dependencies must also be compiled by ghc-8 rather than ghc (which
>>> is version 7).  This is easy to do with one package, e.g..:
>>>
>>> (define-module (my-packages myhaskell)
>>>  ...
>>>   #:use-module ((gnu packages haskell) #:prefix haskellmain:))
>>>
>>> (define-public ghc-hunit8
>>>   (package
>>>     (inherit haskellmain:ghc-hunit)
>>>     (arguments `(#:haskell ,ghc-8))))
>>>
>>> To do that recursively for all the dependencies seems Too Difficult so,
>>> is there a way to do something like --with-input=ghc=ghc-8 but with the
>>> build-system arguments?  Perhaps doing the work in between the Bag and
>>> the Derivation?

Thanks Eric for your suggestion. I made a start on this...

>> You may take a look at the 'package-with-python2' procedure in
>> guix/build-system/python.scm, which seems like it could be adapted to
>> work with haskell/ghc packages.
>
> Hi Eric, Myles,
>
> 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.

Myles

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

* Re: Recursively propagate build-system 'arguments' to dependency packages?
  2017-02-07 19:07 ` Myles English
@ 2017-02-08 16:01   ` Ricardo Wurmus
  0 siblings, 0 replies; 5+ messages in thread
From: Ricardo Wurmus @ 2017-02-08 16:01 UTC (permalink / raw)
  To: Myles English; +Cc: help-guix, Federico Beffa


Myles English <mylesenglish@gmail.com> writes:

> Hello Fede, Eric,
>
> on [2017-02-07] at 15:15 Federico Beffa writes:
>
>> Eric Bavier <ericbavier@openmailbox.org> writes:
>>
>>> On Mon, 06 Feb 2017 21:09:33 +0000
>>> Myles English <mylesenglish@gmail.com> wrote:
>>>
>>>> Trying to define a package to be compiled by ghc-8, and I think all of
>>>> its dependencies must also be compiled by ghc-8 rather than ghc (which
>>>> is version 7).  This is easy to do with one package, e.g..:
>>>>
>>>> (define-module (my-packages myhaskell)
>>>>  ...
>>>>   #:use-module ((gnu packages haskell) #:prefix haskellmain:))
>>>>
>>>> (define-public ghc-hunit8
>>>>   (package
>>>>     (inherit haskellmain:ghc-hunit)
>>>>     (arguments `(#:haskell ,ghc-8))))
>>>>
>>>> To do that recursively for all the dependencies seems Too Difficult so,
>>>> is there a way to do something like --with-input=ghc=ghc-8 but with the
>>>> build-system arguments?  Perhaps doing the work in between the Bag and
>>>> the Derivation?
>
> Thanks Eric for your suggestion. I made a start on this...
>
>>> You may take a look at the 'package-with-python2' procedure in
>>> guix/build-system/python.scm, which seems like it could be adapted to
>>> work with haskell/ghc packages.
>>
>> Hi Eric, Myles,
>>
>> 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:

--8<---------------cut here---------------start------------->8---
(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))))))
--8<---------------cut here---------------end--------------->8---

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.

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net

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

end of thread, other threads:[~2017-02-08 16:01 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-02-06 21:09 Recursively propagate build-system 'arguments' to dependency packages? Myles English
2017-02-07  2:19 ` Eric Bavier
  -- strict thread matches above, loose matches on Subject: below --
2017-02-07 15:15 Federico Beffa
2017-02-07 19:07 ` Myles English
2017-02-08 16:01   ` Ricardo Wurmus

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