From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pjotr Prins Subject: Re: package dependencies Date: Mon, 14 Dec 2015 07:29:39 +0100 Message-ID: <20151214062939.GA12226@thebird.nl> References: <87zixjttsa.fsf@gmail.com> <20151209201329.20594c2e@weiserose.weiserose.de> <20151210045530.GA28215@thebird.nl> <87bn9uxy0l.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55509) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a8MeW-00031a-T8 for guix-devel@gnu.org; Mon, 14 Dec 2015 01:30:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a8MeT-00083c-MQ for guix-devel@gnu.org; Mon, 14 Dec 2015 01:30:32 -0500 Content-Disposition: inline In-Reply-To: <87bn9uxy0l.fsf@gnu.org> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Ludovic =?iso-8859-1?Q?Court=E8s?= Cc: guix-devel@gnu.org Thanks Ludo. I still think it could be made a little clearer from the pac= kager's=20 perspective. How about concluding it with something like: In short, to create a package, by default you should use 'inputs' for dependencies. Use 'native-inputs' for tools used at build-time, but not at runtime and use propagated-inputs when the other two do not suffice. On Sun, Dec 13, 2015 at 02:45:46PM +0100, Ludovic Court=C3=A8s wrote: > Hello! >=20 > I=E2=80=99ve rephrased the doc in =E2=80=9Cpackage Reference=E2=80=9D i= n a way that is hopefully > clearer: >=20 > =E2=80=98inputs=E2=80=99 (default: =E2=80=98'()=E2=80=99) > =E2=80=98native-inputs=E2=80=99 (default: =E2=80=98'()=E2=80=99) > =E2=80=98propagated-inputs=E2=80=99 (default: =E2=80=98'()=E2=80=99= ) > These fields list dependencies of the package. Each one is a > list of tuples, where each tuple has a label for the input (a > string) as its first element, a package, origin, or derivatio= n > as its second element, and optionally the name of the output > thereof that should be used, which defaults to =E2=80=98"out"= =E2=80=99 (*note > Packages with Multiple Outputs::, for more on package > outputs). For example, the list below specifies 3 inputs: >=20 > `(("libffi" ,libffi) > ("libunistring" ,libunistring) > ("glib:bin" ,glib "bin")) ;the "bin" output of Glib >=20 > The distinction between =E2=80=98native-inputs=E2=80=99 and =E2= =80=98inputs=E2=80=99 is > necessary when considering cross-compilation. When > cross-compiling, dependencies listed in =E2=80=98inputs=E2=80= =99 are built for > the _target_ architecture; conversely, dependencies listed in > =E2=80=98native-inputs=E2=80=99 are built for the architectur= e of the _build_ > machine. >=20 > =E2=80=98native-inputs=E2=80=99 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. =E2=80=98guix lint=E2=80=99 c= an report likely > mistakes in this area (*note Invoking guix lint::). >=20 > Lastly, =E2=80=98propagated-inputs=E2=80=99 is similar to =E2= =80=98inputs=E2=80=99, but the > specified packages will be force-installed alongside the > package they belong to (*note =E2=80=98guix package=E2=80=99: > package-cmd-propagated-inputs, for information on how =E2=80=98= guix > package=E2=80=99 deals with propagated inputs.) >=20 > For example this is necessary when a library needs headers of > another library to compile, or needs another shared library t= o > be linked alongside itself when a program wants to link to it= . >=20 > HTH! >=20 > Ludo=E2=80=99. >=20 --=20