unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
* runpath validation
@ 2017-04-18 20:26 Catonano
  2017-04-18 20:31 ` Catonano
  0 siblings, 1 reply; 6+ messages in thread
From: Catonano @ 2017-04-18 20:26 UTC (permalink / raw)
  To: help-guix

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

trying to build Granite
https://launchpad.net/granite

I get this error

validating RUNPATH of 1 binaries in
"/gnu/store/c7zrvx10p41g26q0l8jray6xc0lv4qn3-granite-0.4.0.1/bin"...
/gnu/store/c7zrvx10p41g26q0l8jray6xc0lv4qn3-granite-0.4.0.1/bin/granite-demo:

error: depends on 'libgranite.so.3', which cannot be found in RUNPATH
(
"/gnu/store/c7zrvx10p41g26q0l8jray6xc0lv4qn3-granite-0.4.0.1/lib"
"/gnu/store/rmjlycdgiq8pfy5hfi42qhw3k7p6kdav-glibc-2.25/lib"
"/gnu/store/dhc2iy059hi91fk55dcv79z09kp6500y-gcc-5.4.0-lib/lib"
"/gnu/store/33wnpkc00awp59nsr8anmm5d265gcg85-gtk+-3.22.6/lib"
"/gnu/store/r1zsyinrpcpfbcym5qrx6zbk6hwzxwnm-pango-1.40.3/lib"
"/gnu/store/jkx9mkw8j34jfnv0dqdbbzxdcx3mlfdg-atk-2.22.0/lib"
"/gnu/store/i0bjwdqvn0wixcwfpw254w0az17iysga-cairo-1.14.8/lib"
"/gnu/store/di54h9fw72m3y31vpkpgk71clccrpwy8-gdk-pixbuf+svg-2.36.3/lib"
"/gnu/store/0wps368gx0cn3ynrkbhzq5pxf75rng7y-glib-2.50.3/lib"
"/gnu/store/5bx1wrvp15sr8jvwhaxf1x69chmh4w0j-libgee-0.18.1/lib"
"/gnu/store/dhc2iy059hi91fk55dcv79z09kp6500y-gcc-5.4.0-lib/lib/gcc/x86_64-unknown-linux-gnu/5.4.0/../../..")

I kept the build older (with build -K) and lib/libgranite.so.3 does exist

$ /tmp/guix-build-granite-0.4.0.1.drv-0/build$ ls lib/
Application.c        Drawing/             granite.vapi
libgranite.so.3.0.1  Widgets/
CMakeFiles/          granite.h            GtkPatch/        Makefile
cmake_install.cmake  granite.pc           libgranite.so    Services/
config.h             granite_valac.stamp  libgranite.so.3  style-classes.c

So I though: if I disable runpath check, lib/libgranite.so.3 will be there,
at runtime

So:

#:validate-runpath? #f

in this case the build succeeds but inspecting the built thing in the store
I see

~$ ls /gnu/store/zv2c9mbs4q7f75p9xlgxs62fb5wmp3ac-granite-0.4.0.1/
bin/  include/  lib64/  share/

So now the folder is not lib anymore, it's lib64

Will lib/libgranite.so.3 be found ?

Thanks !
Ciao

[-- Attachment #2: Type: text/html, Size: 2444 bytes --]

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

* Re: runpath validation
  2017-04-18 20:26 runpath validation Catonano
@ 2017-04-18 20:31 ` Catonano
  2017-04-18 20:55   ` Catonano
  0 siblings, 1 reply; 6+ messages in thread
From: Catonano @ 2017-04-18 20:31 UTC (permalink / raw)
  To: help-guix

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

this is the package I'm using. For reference

http://paste.lisp.org/display/344598

Thanks again

[-- Attachment #2: Type: text/html, Size: 204 bytes --]

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

* Re: runpath validation
  2017-04-18 20:31 ` Catonano
@ 2017-04-18 20:55   ` Catonano
  2017-04-20  8:10     ` Ludovic Courtès
  0 siblings, 1 reply; 6+ messages in thread
From: Catonano @ 2017-04-18 20:55 UTC (permalink / raw)
  To: help-guix

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

Thanks to Snape I could find objdump and attempt what is suggested here
https://en.wikipedia.org/wiki/Rpath

me@my-machine /gnu/store/zv2c9mbs4q7f75p9xlgxs62fb5wmp3ac-granite-0.4.0.1$
objdump -a -x bin/granite-demo | grep NEEDED
  NEEDED               libgranite.so.3  <--- here it is
  NEEDED               libgtk-3.so.0
  NEEDED               libgdk-3.so.0
  NEEDED               libpangocairo-1.0.so.0
  NEEDED               libpango-1.0.so.0
  NEEDED               libatk-1.0.so.0
  NEEDED               libcairo-gobject.so.2
  NEEDED               libcairo.so.2
  NEEDED               libgdk_pixbuf-2.0.so.0
  NEEDED               libgio-2.0.so.0
  NEEDED               libgthread-2.0.so.0
  NEEDED               libgee-0.8.so.2
  NEEDED               libgobject-2.0.so.0
  NEEDED               libglib-2.0.so.0
  NEEDED               libm.so.6
  NEEDED               libgcc_s.so.1
  NEEDED               libc.so.6


and

me@my-machine /gnu/store/zv2c9mbs4q7f75p9xlgxs62fb5wmp3ac-granite-0.4.0.1$
objdump -a -x bin/granite-demo | grep RPATH
me@my-machine /gnu/store/zv2c9mbs4q7f75p9xlgxs62fb5wmp3ac-granite-0.4.0.1$

[-- Attachment #2: Type: text/html, Size: 1550 bytes --]

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

* Re: runpath validation
  2017-04-18 20:55   ` Catonano
@ 2017-04-20  8:10     ` Ludovic Courtès
  2017-04-23  8:37       ` Catonano
  0 siblings, 1 reply; 6+ messages in thread
From: Ludovic Courtès @ 2017-04-20  8:10 UTC (permalink / raw)
  To: Catonano; +Cc: help-guix

Hello!

Catonano <catonano@gmail.com> skribis:

> Thanks to Snape I could find objdump and attempt what is suggested here
> https://en.wikipedia.org/wiki/Rpath
>
> me@my-machine /gnu/store/zv2c9mbs4q7f75p9xlgxs62fb5wmp3ac-granite-0.4.0.1$
> objdump -a -x bin/granite-demo | grep NEEDED
>   NEEDED               libgranite.so.3  <--- here it is
>   NEEDED               libgtk-3.so.0
>   NEEDED               libgdk-3.so.0
>   NEEDED               libpangocairo-1.0.so.0
>   NEEDED               libpango-1.0.so.0
>   NEEDED               libatk-1.0.so.0
>   NEEDED               libcairo-gobject.so.2
>   NEEDED               libcairo.so.2
>   NEEDED               libgdk_pixbuf-2.0.so.0
>   NEEDED               libgio-2.0.so.0
>   NEEDED               libgthread-2.0.so.0
>   NEEDED               libgee-0.8.so.2
>   NEEDED               libgobject-2.0.so.0
>   NEEDED               libglib-2.0.so.0
>   NEEDED               libm.so.6
>   NEEDED               libgcc_s.so.1
>   NEEDED               libc.so.6
>
>
> and
>
> me@my-machine /gnu/store/zv2c9mbs4q7f75p9xlgxs62fb5wmp3ac-granite-0.4.0.1$
> objdump -a -x bin/granite-demo | grep RPATH

You should grep for RUNPATH, and I guess that will show that
/gnu/store/zv2c9mbs4q7f75p9xlgxs62fb5wmp3ac-granite-0.4.0.1/lib is *not*
in there, even though it should (if it’s not in RUNPATH, then launching
‘granite-demo’ will result in a “library not found” error, which is what
this validation phase wants to avoid.)

To fix this, you need to make sure the link command for ‘granite-demo’
has an explicit -lgranite or similar; ld-wrapper will take care of
adding the corresponding -rpath switch.

HTH!  If needed, we can discuss it further on IRC.

Ludo’.

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

* Re: runpath validation
  2017-04-20  8:10     ` Ludovic Courtès
@ 2017-04-23  8:37       ` Catonano
  2017-04-25  8:49         ` Ricardo Wurmus
  0 siblings, 1 reply; 6+ messages in thread
From: Catonano @ 2017-04-23  8:37 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: help-guix

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

2017-04-20 10:10 GMT+02:00 Ludovic Courtès <ludo@gnu.org>:

>
> You should grep for RUNPATH, and I guess that will show that
> /gnu/store/zv2c9mbs4q7f75p9xlgxs62fb5wmp3ac-granite-0.4.0.1/lib is *not*
> in there, even though it should (if it’s not in RUNPATH, then launching
> ‘granite-demo’ will result in a “library not found” error, which is what
> this validation phase wants to avoid.)
>

and instead what I found is that ...granite/lib *is* there

>
> HTH!  If needed, we can discuss it further on IRC.
>

Thanks !
If I find you on line I'll ping you about this

For now, let me report my last findings

The build fails in the validate-runpath phase

With "#:validate-runpath? #f" iit succeeds

AND this is what I find on the resulting built artifact

me@my-machine /gnu/store/wzbjl4mjqdq38jyllb4ny2mn1kkqqikv-granite-0.4.0.1$
objdump -a -x bin/granite-demo | grep RUNPATH
  RUNPATH
/gnu/store/wzbjl4mjqdq38jyllb4ny2mn1kkqqikv-granite-0.4.0.1/lib
:/gnu/store/rmjlycdgiq8pfy5hfi42qhw3k7p6kdav-glibc-2.25/lib
...

I installed granite with

./pre-inst-env guix package -i granite

I got this advice

The following environment variable definitions may be needed:
   export
LIBRARY_PATH="/home/catonano/.guix-profile/lib:/home/catonano/.guix-profile/lib64${LIBRARY_PATH:+:}$LIBRARY_PATH"

I don't know why, I don't touch search paths in the granite package recipe

Anyway I followed the suggestion

~$ echo $LIBRARY_PATH
/home/me.guix-profile/lib
:/home/me/.guix-profile/lib64
:/home/me/.guix-profile/lib


and this is what I get

~$ granite-demo
granite-demo: error while loading shared libraries: libgranite.so.3: cannot
open shared object file: No such file or directory

This is the state of the art, for now

See you around ! ;-)

[-- Attachment #2: Type: text/html, Size: 2595 bytes --]

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

* Re: runpath validation
  2017-04-23  8:37       ` Catonano
@ 2017-04-25  8:49         ` Ricardo Wurmus
  0 siblings, 0 replies; 6+ messages in thread
From: Ricardo Wurmus @ 2017-04-25  8:49 UTC (permalink / raw)
  To: Catonano; +Cc: help-guix


Catonano <catonano@gmail.com> writes:

> 2017-04-20 10:10 GMT+02:00 Ludovic Courtès <ludo@gnu.org>:
>
>>
>> You should grep for RUNPATH, and I guess that will show that
>> /gnu/store/zv2c9mbs4q7f75p9xlgxs62fb5wmp3ac-granite-0.4.0.1/lib is *not*
>> in there, even though it should (if it’s not in RUNPATH, then launching
>> ‘granite-demo’ will result in a “library not found” error, which is what
>> this validation phase wants to avoid.)
>>
>
> and instead what I found is that ...granite/lib *is* there

Cmake is a bit weird sometimes.  Look at the definition for “bamtools”
to see how you may be able to explicitly add the lib directory to the
RUNPATH.

Other examples are “powertabeditor” and “lmms” in music.scm.

--
Ricardo

GPG: BCA6 89B6 3655 3801 C3C6  2150 197A 5888 235F ACAC
https://elephly.net

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

end of thread, other threads:[~2017-04-25  8:49 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-04-18 20:26 runpath validation Catonano
2017-04-18 20:31 ` Catonano
2017-04-18 20:55   ` Catonano
2017-04-20  8:10     ` Ludovic Courtès
2017-04-23  8:37       ` Catonano
2017-04-25  8:49         ` Ricardo Wurmus

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