guix-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] Add python2-seqmagick.


From: Ben Woodcroft
Subject: Re: [PATCH] Add python2-seqmagick.
Date: Tue, 22 Sep 2015 08:36:03 +1000
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0

On 22/09/15 02:13, Ludovic Courtès wrote:
Pjotr Prins <address@hidden> skribis:

This contains the most lucid description of 'inputs' I have yet seen.
Could they go into the main Guix documentation?
What do you think needs to be changed compared to the text at
<http://www.gnu.org/software/guix/manual/html_node/package-Reference.html>?
So, those descriptions are right?

The manual from the POV of someone a bit confused:
inputs (default: '())

Package or derivation inputs to the build. This is a list of lists, where each list has the name of the input (a string) as its first element, a package or derivation object as its second element, and optionally the name of the output of the package or derivation that should be used, which defaults to "out".

That paragraph doesn't tell me much about what inputs actually are in any detail, only the semantics of how to specify them.
propagated-inputs (default: '())

This field is like inputs, but the specified packages will be force-installed alongside the package they belong to (see guix package, for information on how guix package deals with propagated inputs.)

I guess it is initially confusing why propagated-inputs exist as a concept - I presumed that inputs were "installed" too (an input of my input is my input). "force-install" is a bit ambiguous - force installed in the profile? in the store? What is "forced" - isn't every input required? What is the meaning of "install" exactly?

For example this is necessary when a library needs headers of another library to compile, or needs another shared library to be linked alongside itself when a program wants to link to it.

So I'm guessing this is supposed to mean that if library (A) needs headers of another library (B) when trying to compile (C) which requires (A), then library B should be in the propagated-inputs list of library A? This doesn't seem to have anything to do with being force installed. Also, an example from an interpreted language would be useful. Particularly since there seems to be some discussion about this on the mailing list atm.
http://lists.gnu.org/archive/html/guix-devel/2015-09/msg00597.html
native-inputs (default: '())

This field is like inputs, but in case of a cross-compilation it will be ensured that packages for the architecture of the build machine are present, such that executables from them can be used during the build.

This is typically where you would list tools needed at build time but not at run time, such as Autoconf, Automake, pkg-config, Gettext, or Bison. guix lint can report likely mistakes in this area (see Invoking guix lint).

This makes the most sense out of the three input types to me, although again the second sentence doesn't follow logically from the first (to me). Also the second sentence might include a nod to testing e.g. this would be where packages required only for testing are specified. Also unclear what mistakes lint is picking up here (how can lint know what is being used at runtime?), and thus the reference to lint seems of little benefit (authors should always run lint, so what's the point of mentioning it here?).

I imagine that examples would help too - the example at the top of that section is very useful but too simple, perhaps a second example with an interpreted language using different input types would be of use.
http://www.gnu.org/software/guix/manual/html_node/Defining-Packages.html#Defining-Packages

Thanks,
ben

reply via email to

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