unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: Leo Famulari <leo@famulari.name>
To: Hartmut Goebel <h.goebel@crazy-compilers.com>
Cc: help-guix <help-guix@gnu.org>
Subject: Re: inputs vs. native-inputs vs. propagated-inputs
Date: Sun, 12 Jun 2016 15:53:28 -0400	[thread overview]
Message-ID: <20160612195328.GB1615@jasmine> (raw)
In-Reply-To: <575D84C5.5090307@crazy-compilers.com>

On Sun, Jun 12, 2016 at 05:50:29PM +0200, Hartmut Goebel wrote:
> Am 12.06.2016 um 14:38 schrieb 宋文武:
> > Hartmut Goebel <h.goebel@crazy-compilers.com> writes:
> >> For for I understand. But then the manual says:
> >>
> >>           ‘native-inputs’ is typically used to list tools needed at
> >>           build time, but not at run time, such as Autoconf, Automake,
> >>           pkg-config, Gettext, or Bison.
> >>
> >> The first sentence implies that "inputs" are treated as needed at run
> >> time.
> > No, as _native_ inputs usually are tools for building (and testing),
> > most time they’re not needed at run time.
> 
> This paragraph is only talking about "native-inputs" and about "needed …
> not at run time". While the paragraph just above this sentence is
> talking about both "inputs" and native-inputs", this "needed … not at
> run time" implies "inputs" are needed at run time.
> 
> I suggest rephrasing this into something like: "Both inputs and
> native-inputs are used for stuff needed at build time, not at run time.
> 'inputs' are for ..., e.g. library headers, ..., while 'native-inputs'
> are for tools such as Autoconf, Automake, pkg-config, Gettext, or Bison."

'Inputs' do typically get used at run-time, as do propagated-inputs.

I found it hard to understand the distinctions by reading. It was only
when I had been making packages for a while that I understood.

I've tried to improve this text but I haven't come up with anything yet.

> >> If so, how can I as a packager find out if eg. libBBB is only used at
> >> build time and libCCC need to be a propagated input?

You will need at least a little knowledge about the programs you are
packaging and how they are supposed to build and run. I read a bit about
each program to guess about how libAAA uses it.

> I'm the packager, so I'm the one who needs to *define* the dependencies.
> There is no ‘guix gc –-references …’ I can query. So *I* need a way to
> determine whether an input needs to be propagated or not.

Test the program in an isolated environment and see if it works without
propagating the inputs.

You can set up an environment with only libAAA ...

$ guix environment --container --ad-hoc libAAA

... and then somehow exercise libAAA to see if it can find its
dependencies.

Also, once you've built the package, using `guix gc --references` is a
good way to inspect it. 

The type of input chosen by the packager does not dictate how libAAA
uses the dependency. The package could erroneously retain a reference to
a native-input like Automake, and `guix gc --references` will show you
this.

So, if libCCC appears in `guix gc --references /gnu/store/...-libAAA`,
it's reasonable to guess that libCCC does not need to be propagated.

Or, the package could lack a reference to something you *know* is needed
at run-time. So you can address that with propagated-inputs or setting
some build-time configuration.

Is it making more sense?

  reply	other threads:[~2016-06-12 19:53 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-12  9:07 inputs vs. native-inputs vs. propagated-inputs Hartmut Goebel
2016-06-12 12:38 ` 宋文武
2016-06-12 15:50   ` Hartmut Goebel
2016-06-12 19:53     ` Leo Famulari [this message]
2016-06-17 20:49       ` Hartmut Goebel
2016-06-17 23:34         ` Leo Famulari
2016-06-18 19:24           ` Ludovic Courtès
2016-06-19  3:57             ` Lukas Gradl
2016-06-19 13:44               ` Ludovic Courtès
2016-06-21 13:37                 ` Lukas Gradl
2016-07-10 21:23                   ` Chris Marusich

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=20160612195328.GB1615@jasmine \
    --to=leo@famulari.name \
    --cc=h.goebel@crazy-compilers.com \
    --cc=help-guix@gnu.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.
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).