unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: taylanbayirli@gmail.com (Taylan Ulrich Bayırlı/Kammer)
To: Paul van der Walt <paul@denknerd.org>
Cc: guix-devel <guix-devel@gnu.org>
Subject: Re: Question about Haskell packages
Date: Wed, 14 Oct 2015 19:19:46 +0200	[thread overview]
Message-ID: <874mht4bbh.fsf@T420.taylan> (raw)
In-Reply-To: <87a8rlwkm7.fsf@denknerd.org> (Paul van der Walt's message of "Wed, 14 Oct 2015 17:11:28 +0200")

Paul van der Walt <paul@denknerd.org> writes:

> Hello Guix,

Hello!

> Yesterday i thought to myself that it would be cool to mess around with
> Idris <http://www.idris-lang.org>, on of the dependently-typed
> languages.  Turns out it depends on quite a lot of Hackage packages!  I
> steamed ahead, and now i have packaged all the dependencies.
>
> One weird thing i ran into though, is that frequently, a library L1 will
> build fine, but when you use it as an input to some other library L2,
> the configure phase will fail, saying that L1 is broken, since
> it is missing its dependencies D1..Dn.  Iyzsong suggested on IRC that i
> do like nixpkgs does [0] and simply add all dependencies as
> propagated-inputs.  That should solve that issue, but since i don't 100%
> understand what's going on, i thought it wise to ask you, wise and
> attractive users of Guix, for advice.

This sounds very similar to the pkg-config related problems that were
discussed a while back.  (It's a complicated topic, but the thread
starts here if you're interested:
https://lists.gnu.org/archive/html/guix-devel/2015-03/msg00565.html )

Long story short, some systems like pkg-config, and I guess Hackage
(maybe it just uses pkg-config?) aren't smart enough to understand that
a run-time dependency L2 of library L1 might be satisfied without having
any development meta-data of L2 installed during the compilation of a
program P which depends on L1.  Only L1's meta-data is really needed for
program P's compilation, but pkg-config is being "extra smart" and also
checks whether L2's meta-data is present, thinking that if it isn't, it
must mean L1 is broken because it lacks a dependency, as you noted.

(In the case of pkg-config, the meta-data is in "libfoo.pc" files in
$PKG_CONFIG_PATH.)

To work around that, we make L2 a "propagated input" of L1, meaning
whenever L1 is installed in some environment, the whole of L2 is also
installed (rather than making L2 invisible in the environment, although
it's really on the system and L1 refers to it via absolute file names).

Someone with specific knowledge of Hackage might want to confirm whether
it really has the exact same behavior as pkg-config, or whether there's
a better workaround for it.  If it doesn't, then indeed you need to turn
some inputs of L1 into propagated inputs.

Hope that helps,
Taylan

  reply	other threads:[~2015-10-14 17:19 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-14 15:11 Question about Haskell packages Paul van der Walt
2015-10-14 17:19 ` Taylan Ulrich Bayırlı/Kammer [this message]
  -- strict thread matches above, loose matches on Subject: below --
2015-10-15 10:08 Federico Beffa
2015-10-15 11:22 Federico Beffa

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=874mht4bbh.fsf@T420.taylan \
    --to=taylanbayirli@gmail.com \
    --cc=guix-devel@gnu.org \
    --cc=paul@denknerd.org \
    /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).