unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "Jakub Kądziołka" <kuba@kadziolka.net>
To: Ricardo Wurmus <rekado@elephly.net>
Cc: guix-devel@gnu.org
Subject: Re: merge wip-haskell?
Date: Fri, 7 Aug 2020 18:55:24 +0200	[thread overview]
Message-ID: <20200807165524.qzpqrolvqfrqp6iu@gravity> (raw)
In-Reply-To: <87zh765sly.fsf@elephly.net>

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

On Fri, Aug 07, 2020 at 06:27:21PM +0200, Ricardo Wurmus wrote:
> 
> Jakub Kądziołka <kuba@kadziolka.net> writes:
> 
> > On Thu, Aug 06, 2020 at 10:13:46AM +0200, Ricardo Wurmus wrote:
> >> Number 4 is by far the ugliest change of them all.  In order to
> >> statically link packages we need to add all the “static” outputs of all
> >> Haskell inputs *and* the “static” outputs of *their* Haskell inputs.
> >> This is not easily accomplished, so I ended up using “package-closure”
> >> on all direct inputs, and then filtered the result to packages with
> >> names starting with “ghc-”.  If there was a more appropriate tool I’d
> >> use it, but I don’t think it exists.
> >
> > Perhaps we should work on making propagated-inputs per-output? That way,
> > :static could propagate the :static output of the dependencies.
> >
> > This would also be useful in other situations. For example, a package
> > might contain both a binary and a library, and the library must
> > propagate its dependencies to make the header files work.
> >
> > I don't know what a good syntax for this would be.
> 
> The binary / library problem is particularly interesting to me as we
> have a few Python bioinfo tools that also work as libraries.  When used
> as a library we need propagation, but when uses as command line tools
> propagation is not needed (and can be harmful due to the effects on
> PYTHONPATH).
> 
> Syntax seems less important than verifying that this actually works,
> though.

One still needs to pick a variant, even at random, to begin
implementation, which is hard when no options have been suggested :)

I suppose that we could add a list of outputs each propagated-input
applies to, putting it after the package and its output?

(this is unambiguous as we can check whether the third element of the
list is a string, or a list)

    (propagated-inputs
     `(("foo-static" ,foo "static" ("static"))
       ("bar" ,bar ("static"))))

However, this has the issue of being somewhat ad-hoc, and other
extensions to the list of inputs might become troublesome. This
motivates my second proposal:

    (propagated-inputs
     `(("foo-static" ,foo "static" #:propagate-to ("static"))
       ("bar" ,bar #:propagate-to ("static"))))

On the other hand, this variant feels somewhat over-engineered. After
all, we can always change the syntax if it becomes actually necessary.

There's also the option of adding another field to the package record:

    (propagated-inputs-for-outputs ;; name up to bikeshedding :)
     `(("static"
        (("foo-static" ,foo "static")
         ("bar ,bar)))))

> Alas, as someone who has committed and encouraged syntactic
> crimes with excessive reader macros, I think my vote on syntax carries
> no weight :)

Well, the number of reader macro crimes encouraged seems to correlate
with experience, so I would still like to ask for your opinion.

Regards,
Jakub Kądziołka

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

      reply	other threads:[~2020-08-07 16:55 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-06  8:13 merge wip-haskell? Ricardo Wurmus
2020-08-06 13:45 ` John Soo
2020-08-07 17:46   ` Timothy Sample
2020-08-07 19:53     ` Ricardo Wurmus
2020-08-09  4:29       ` Timothy Sample
2020-08-12 12:21         ` Ricardo Wurmus
2020-08-13 15:37         ` Ricardo Wurmus
2020-08-15  8:19           ` Ricardo Wurmus
2020-08-17 15:22             ` Timothy Sample
2020-08-24 15:38             ` Ludovic Courtès
2020-08-07 15:03 ` Jakub Kądziołka
2020-08-07 15:12   ` John Soo
2020-08-07 15:46     ` Jakub Kądziołka
2020-08-07 15:59       ` Ricardo Wurmus
2020-08-07 16:08         ` John Soo
2020-08-24 15:44         ` Ludovic Courtès
2020-08-24 17:54           ` Ricardo Wurmus
2020-08-28 13:53             ` Ludovic Courtès
2020-08-28 14:05               ` John Soo
2020-08-28 17:29                 ` Timothy Sample
2020-08-29 15:34                   ` Timothy Sample
2020-08-29 15:54                     ` John Soo
2020-08-07 16:27   ` Ricardo Wurmus
2020-08-07 16:55     ` Jakub Kądziołka [this message]

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=20200807165524.qzpqrolvqfrqp6iu@gravity \
    --to=kuba@kadziolka.net \
    --cc=guix-devel@gnu.org \
    --cc=rekado@elephly.net \
    /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).