Vincent Legoll <vincent.leg...@gmail.com> skribis: > I'm trying to package & use a static library (not mine), but it looks like > the right "-L" parameter is not automagically passed to the user package > (where the lib is in (inputs ...)) > > something like the following: > > (define-public a (package ...)) > (define-public b (package ... (inputs `(("liba" ,a))) ...)) > > I tried to put the right -L into make-flags & configure-flags myself, but > it failed with error, I don't even know if I have to do that : > > (define-public b (package ... > (arguments > `(#:make-flags (list (string-append "LDFLAGS=-L" ,a "/lib -la")) > #:configure-flags (list (string-append "LDFLAGS=-L" ,a "/lib -la")) ^^ Since packages do not use gexps (yet), you have to do the more complicated thing here:
(inputs `(("the-label-for-a" ,a))) (arguments '(#:make-flags (list (string-append "LDFLAGS=-L" (assoc-ref %build-inputs "the-label-for-a"))))) > this ended with: > > ERROR: In procedure primitive-load: > ERROR: In procedure scm_lreadr: /gnu/store/*-guile-builder:1:5211: > Unknown # object: #\< > > which is in this : > > [...] > #:phases %standard-phases #:locale "en_US.utf8" #:configure-flags > (list (string-append "LDFLAGS=-L" #<package urlmatch@1.0 > /home/vince/guix-packages/fifth.scm:40 503c780> "/lib -lurlmatch")) > [...] And indeed, we see the package object was written as is in the build script above. > I did find a use of static lib (apart from libgcc) in utils-linux but > nothing here seems special (even the *.a move looks optional) In (guix build-system gnu), there’s a ‘static-package’ procedure that turns a GNU build system package into a statically-linked package. If your use case falls in that category, it’s enough to do: (define the-static-package (static-package the-package)) HTH! Ludo’.