unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Packages with libraries and binaries
@ 2013-09-22 12:06 Andreas Enge
  2013-09-22 19:37 ` Nikita Karetnikov
  2013-09-22 19:44 ` Ludovic Courtès
  0 siblings, 2 replies; 8+ messages in thread
From: Andreas Enge @ 2013-09-22 12:06 UTC (permalink / raw)
  To: guix-devel

When trying to use cdparanoia, I noticed the following:

$ ldd `which cdparanoia`

        linux-vdso.so.1 =>  (0x00007fff1e9dd000)
        libcdda_interface.so.0 => not found
        libcdda_paranoia.so.0 => not found
        libm.so.6 => /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib/libm.so.6 (0x00007fb37355b000)
        librt.so.1 => /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib/librt.so.1 (0x00007fb373353000)
        libc.so.6 => /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib/libc.so.6 (0x00007fb372fa5000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb372d89000)
        /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007fb373877000)

The two missing libraries are part of the package itself; apparently, they
do not get encoded into the rpath. Could this be handled somehow by the build
system? Should it be done in the package definition? Or should I set an
LD_LIBRARY_PATH?

Andreas

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Packages with libraries and binaries
  2013-09-22 12:06 Packages with libraries and binaries Andreas Enge
@ 2013-09-22 19:37 ` Nikita Karetnikov
  2013-09-22 19:44 ` Ludovic Courtès
  1 sibling, 0 replies; 8+ messages in thread
From: Nikita Karetnikov @ 2013-09-22 19:37 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 471 bytes --]

> The two missing libraries are part of the package itself; apparently, they
> do not get encoded into the rpath. Could this be handled somehow by the build
> system? Should it be done in the package definition? Or should I set an
> LD_LIBRARY_PATH?

You can adjust RPATH with patchelf.  Here’s an example [1] (ignore the
comment about shared libs).

Does it answer your question?

[1] https://lists.gnu.org/archive/html/guix-devel/2013-07/txt5Qs_mNF2lH.txt

[-- Attachment #2: Type: application/pgp-signature, Size: 835 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Packages with libraries and binaries
  2013-09-22 12:06 Packages with libraries and binaries Andreas Enge
  2013-09-22 19:37 ` Nikita Karetnikov
@ 2013-09-22 19:44 ` Ludovic Courtès
  2013-10-04 17:55   ` Andreas Enge
  2013-10-04 17:58   ` Andreas Enge
  1 sibling, 2 replies; 8+ messages in thread
From: Ludovic Courtès @ 2013-09-22 19:44 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@enge.fr> skribis:

> When trying to use cdparanoia, I noticed the following:
>
> $ ldd `which cdparanoia`
>
>         linux-vdso.so.1 =>  (0x00007fff1e9dd000)
>         libcdda_interface.so.0 => not found
>         libcdda_paranoia.so.0 => not found
>         libm.so.6 => /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib/libm.so.6 (0x00007fb37355b000)
>         librt.so.1 => /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib/librt.so.1 (0x00007fb373353000)
>         libc.so.6 => /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib/libc.so.6 (0x00007fb372fa5000)
>         libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb372d89000)
>         /nix/store/53afsq4c7r10hn77h3iyyavy2bs02403-glibc-2.17/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007fb373877000)

That’s an indication that cdparanoia doesn’t use Libtool...

> The two missing libraries are part of the package itself; apparently, they
> do not get encoded into the rpath. Could this be handled somehow by the build
> system? Should it be done in the package definition? Or should I set an
> LD_LIBRARY_PATH?

In such cases, we must set the RUNPATH, using patchelf as Nikita notes.

The recommended way to do that is to use ‘augment-rpath’ from (guix
build rpath), as done in python.scm (make sure to add ‘patchelf’ as an
input).

HTH,
Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Packages with libraries and binaries
  2013-09-22 19:44 ` Ludovic Courtès
@ 2013-10-04 17:55   ` Andreas Enge
  2013-10-05 12:52     ` Ludovic Courtès
  2013-10-04 17:58   ` Andreas Enge
  1 sibling, 1 reply; 8+ messages in thread
From: Andreas Enge @ 2013-10-04 17:55 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Sun, Sep 22, 2013 at 09:44:18PM +0200, Ludovic Courtès wrote:
> In such cases, we must set the RUNPATH, using patchelf as Nikita notes.
> The recommended way to do that is to use ‘augment-rpath’ from (guix
> build rpath), as done in python.scm (make sure to add ‘patchelf’ as an
> input).

When copy-pasting the phases argument from python-2 into cdparanoia, the
build phase fails as follows:

phase `strip' succeeded after 0 seconds
starting phase `add-lib-to-runpath'
Backtrace:
In ice-9/boot-9.scm:
 157: 15 [catch #t #<catch-closure 1cb5d20> ...]
In unknown file:
   ?: 14 [apply-smob/1 #<catch-closure 1cb5d20>]
In ice-9/boot-9.scm:
  63: 13 [call-with-prompt prompt0 ...]
In ice-9/eval.scm:
 432: 12 [eval # #]
In ice-9/boot-9.scm:
2320: 11 [save-module-excursion #<procedure 1ce4bc0 at ice-9/boot-9.scm:3961:3 ()>]
3966: 10 [#<procedure 1ce4bc0 at ice-9/boot-9.scm:3961:3 ()>]
1645: 9 [%start-stack load-stack ...]
1650: 8 [#<procedure 1ceadb0 ()>]
In unknown file:
   ?: 7 [primitive-load "/nix/store/m95ni0aq76l1vrlvdjrz2g4gw13md321-cdparanoia-10.2-guile-builder"]
In ice-9/eval.scm:
 387: 6 [eval # ()]
In /nix/store/5kbwbhzkvndzlx0yldg3532xn7j74cwz-module-import/guix/build/gnu-build-system.scm:
 368: 5 [#<procedure 1ef74c0 at /nix/store/5kbwbhzkvndzlx0yldg3532xn7j74cwz-module-import/guix/build/gnu-build-system.scm:364:9 (expr)> #]
In ice-9/r4rs.scm:
  90: 4 [dynamic-wind #<procedure 221f540 at ice-9/eval.scm:416:20 ()> ...]
In ice-9/eval.scm:
 387: 3 [eval # #]
 386: 2 [eval # #]
 393: 1 [eval # #]
In unknown file:
   ?: 0 [memoize-variable-access! #<memoized cut> #<directory (guile-user) 1ca7c60>]

ERROR: In procedure memoize-variable-access!:
ERROR: Unbound variable: cut

As if an import of module srfi-26 were missing somewhere, but both python and
cdparanoia use the same gnu build system.

Andreas

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Packages with libraries and binaries
  2013-09-22 19:44 ` Ludovic Courtès
  2013-10-04 17:55   ` Andreas Enge
@ 2013-10-04 17:58   ` Andreas Enge
  2013-10-05 12:53     ` Ludovic Courtès
  1 sibling, 1 reply; 8+ messages in thread
From: Andreas Enge @ 2013-10-04 17:58 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

And can I use the same code for libraries using other libraries of the same
package, by changing "bin" to "lib" in the code snippet?

For instance, one has
$ ldd /nix/store/bplvsx34rzpn85vly086l0jhmhil9ncg-icu4c-50.1.1/lib/libicuuc.so
...
        libicudata.so.50 => not found
...

where the unfound library resides in the same directory.

Andreas

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Packages with libraries and binaries
  2013-10-04 17:55   ` Andreas Enge
@ 2013-10-05 12:52     ` Ludovic Courtès
  2013-10-06  9:50       ` Andreas Enge
  0 siblings, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2013-10-05 12:52 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@enge.fr> skribis:

> On Sun, Sep 22, 2013 at 09:44:18PM +0200, Ludovic Courtès wrote:
>> In such cases, we must set the RUNPATH, using patchelf as Nikita notes.
>> The recommended way to do that is to use ‘augment-rpath’ from (guix
>> build rpath), as done in python.scm (make sure to add ‘patchelf’ as an
>> input).
>
> When copy-pasting the phases argument from python-2 into cdparanoia, the
> build phase fails as follows:
>
> phase `strip' succeeded after 0 seconds
> starting phase `add-lib-to-runpath'

[...]

> ERROR: In procedure memoize-variable-access!:
> ERROR: Unbound variable: cut
>
> As if an import of module srfi-26 were missing somewhere, but both python and
> cdparanoia use the same gnu build system.

Exactly.  You need that snippet, as in python.scm:

--8<---------------cut here---------------start------------->8---
        #:modules ((guix build gnu-build-system)
                   (guix build utils)
                   (guix build rpath)
                   (srfi srfi-26))
        #:imported-modules ((guix build gnu-build-system)
                            (guix build utils)
                            (guix build rpath))
--8<---------------cut here---------------end--------------->8---

#:modules tells what modules are to be imported in the lexical
environment of the build program, while #:imported-modules says what
.scm/.go files need to be available in the build chroot (since srfi-26
is part of Guile, it’s listed in the former but not the latter.)

HTH,
Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Packages with libraries and binaries
  2013-10-04 17:58   ` Andreas Enge
@ 2013-10-05 12:53     ` Ludovic Courtès
  0 siblings, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2013-10-05 12:53 UTC (permalink / raw)
  To: Andreas Enge; +Cc: guix-devel

Andreas Enge <andreas@enge.fr> skribis:

> And can I use the same code for libraries using other libraries of the same
> package, by changing "bin" to "lib" in the code snippet?
>
> For instance, one has
> $ ldd /nix/store/bplvsx34rzpn85vly086l0jhmhil9ncg-icu4c-50.1.1/lib/libicuuc.so
> ...
>         libicudata.so.50 => not found
> ...
>
> where the unfound library resides in the same directory.

Yes, in this case the RUNPATH of libicuuc.so needs to be augmented to
contain $out/lib, where libicudata.so lives.

Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Packages with libraries and binaries
  2013-10-05 12:52     ` Ludovic Courtès
@ 2013-10-06  9:50       ` Andreas Enge
  0 siblings, 0 replies; 8+ messages in thread
From: Andreas Enge @ 2013-10-06  9:50 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Sat, Oct 05, 2013 at 02:52:47PM +0200, Ludovic Courtès wrote:
> Exactly.  You need that snippet, as in python.scm:

That did it, thanks for the explanations!

Andreas

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2013-10-06  9:50 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-22 12:06 Packages with libraries and binaries Andreas Enge
2013-09-22 19:37 ` Nikita Karetnikov
2013-09-22 19:44 ` Ludovic Courtès
2013-10-04 17:55   ` Andreas Enge
2013-10-05 12:52     ` Ludovic Courtès
2013-10-06  9:50       ` Andreas Enge
2013-10-04 17:58   ` Andreas Enge
2013-10-05 12:53     ` Ludovic Courtès

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).