Bug 207783

Summary: guile cannot load dynamic extensions without guile-devel rpm also installed
Product: [Fedora] Fedora Reporter: Roman Ekjanov <roma>
Component: guileAssignee: Miroslav Lichvar <mlichvar>
Status: CLOSED ERRATA QA Contact:
Severity: low Docs Contact:
Priority: medium    
Version: 5   
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2006-09-27 21:41:37 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Roman Ekjanov 2006-09-23 04:42:51 UTC
Description of problem:
guile cannot load modules which use dynamically loaded shared libraries 

Version-Release number of selected component (if applicable): 1.6.7-6

How reproducible:
Always

Steps to Reproduce:
1.start guile
2.type (use-modules (ice-9 readline))
3.
  
Actual results:
ERROR: In procedure dynamic-link:
ERROR: file: "libguilereadline-v-12", message: "libguilereadline-v-12.so: cannot
open shared object file: No such file or directory"

Expected results:
Silently load the extension

Additional info:
The same error with other dynamic extensions.

The reason for the error is that all *.so links are in guile-devel package.
Workaround is to install guile-devel.

Comment 1 Miroslav Lichvar 2006-09-25 08:46:23 UTC
Guile should find correct library names in .la files that are in the package, so
the .so links aren't necessary.

Could you please send me output from this command?
strace guile -c '(use-modules (ice-9 readline))' 2>&1 | grep '^open'

Comment 2 Roman Ekjanov 2006-09-26 00:10:07 UTC
The problem is, apparently, only on 64bit architecture. The dynamic loader looks
for *.la files in a wrong directories /lib:/usr/lib. Not sure if it is global or
guile specific.  
Here is output of
strace guile -c '(use-modules (ice-9 readline))' 2>&1 | grep '^open':

open("/etc/ld.so.cache", O_RDONLY)      = 3
open("/usr/lib64/libguile.so.12", O_RDONLY) = 3
open("/usr/lib64/libguile-ltdl.so.1", O_RDONLY) = 3
open("/lib64/libcrypt.so.1", O_RDONLY)  = 3
open("/lib64/libm.so.6", O_RDONLY)      = 3
open("/lib64/libc.so.6", O_RDONLY)      = 3
open("/lib64/libdl.so.2", O_RDONLY)     = 3
open("/usr/share/guile/1.6/ice-9/boot-9.scm", O_RDONLY) = 3
open("/usr/share/guile/1.6/ice-9/r4rs.scm", O_RDONLY) = 4
open("/usr/share/guile/1.6/ice-9/arrays.scm", O_RDONLY) = 4
open("/usr/share/guile/1.6/ice-9/posix.scm", O_RDONLY) = 4
open("/usr/share/guile/1.6/ice-9/networking.scm", O_RDONLY) = 4
open("/usr/share/guile/1.6/ice-9/rdelim.scm", O_RDONLY) = 4
open("/usr/share/guile/1.6/ice-9/readline.scm", O_RDONLY) = 3
open("/usr/share/guile/1.6/ice-9/session.scm", O_RDONLY) = 4
open("/usr/share/guile/1.6/ice-9/documentation.scm", O_RDONLY) = 5
open("/usr/share/guile/1.6/ice-9/regex.scm", O_RDONLY) = 5
open("/usr/share/guile/1.6/ice-9/buffered-input.scm", O_RDONLY) = 4
open("/lib/libguilereadline-v-12.la", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/lib/libguilereadline-v-12.la", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("include/libguilereadline-v-12.la", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("ld.so.conf.d/*.conf/libguilereadline-v-12.la", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("libguilereadline-v-12.la", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY)      = 4
open("/usr/lib64/libguilereadline-v-12.so", O_RDONLY) = -1 ENOENT (No such file
or directory)
open("/lib64/tls/x86_64/libguilereadline-v-12.so", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/lib64/tls/libguilereadline-v-12.so", O_RDONLY) = -1 ENOENT (No such file
or directory)
open("/lib64/x86_64/libguilereadline-v-12.so", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/lib64/libguilereadline-v-12.so", O_RDONLY) = -1 ENOENT (No such file or
directory)
open("/usr/lib64/tls/x86_64/libguilereadline-v-12.so", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/lib64/tls/libguilereadline-v-12.so", O_RDONLY) = -1 ENOENT (No such
file or directory)
open("/usr/lib64/x86_64/libguilereadline-v-12.so", O_RDONLY) = -1 ENOENT (No
such file or directory)
open("/usr/lib64/libguilereadline-v-12.so", O_RDONLY) = -1 ENOENT (No such file
or directory)


Comment 3 Miroslav Lichvar 2006-09-26 11:56:49 UTC
Ok, thanks. Should be fixed in guile-1.6.7-7.fc5.

Comment 4 Fedora Update System 2006-09-26 20:01:41 UTC
guile-1.6.7-7.fc5 has been pushed for fc5, which should resolve this issue.  If these problems are still present in this version, then please make note of it in this bug report.

Comment 5 Roman Ekjanov 2006-09-27 02:02:52 UTC
Still the same error. Your patch went into a wrong place. There is another
linux*)  case section in configure, which is actually executed. But anyway, the
right way to fix it is to re-run all auto* and aclocal suite

Comment 6 Miroslav Lichvar 2006-09-27 14:03:25 UTC
Ok, I have rewritten the patch. Hopefully fixed in guile-1.6.7-8.fc5.

Comment 7 Fedora Update System 2006-09-27 20:37:46 UTC
guile-1.6.7-8.fc5 has been pushed for fc5, which should resolve this issue.  If these problems are still present in this version, then please make note of it in this bug report.