Subject: Re: guile-www configure script cannot find srfi
To: Carson Chittom <carson@sdf.lonestar.org>
From: Greg Troxel <gdt@ir.bbn.com>
List: pkgsrc-users
Date: 01/25/2007 08:33:19
I just built guile-www on NetBSD-current (i386), and it worked fine -
but that's not on Darwin. But, guile (1.6.8, from pkgsrc) is able to
find srfi 13. It sounds like guile-www configure is failing to find
srfi-13 (see line below), but that's surely via scheme not .h and
libs. Try it manually with guile:
/usr/pkgsrc/devel/guile-www > guile
guile> (use-modules (srfi srfi-13))
guile> (version)
"1.6.8"
If that fails, which I expect it will, then there's probably some
dynamic linking issue; Darwin seems to compile absolute paths into
binaries, vs RPATH used by *BSD and
rpath-banned-put-everything-in-/usr/lib-or-set-LD_LIBRARY_PATH
approach of Debian.
See /usr/pkg/share/guile/1.6/srfi/srfi-13.scm.
It defines a bunch of procedures in Scheme, but also does:
(load-extension "libguile-srfi-srfi-13-14-v-1" "scm_init_srfi_13")
This is supposed to dynamically link the shlib (first arg) and then
runt he initialization function (2nd) from the lib, which registers
the new Scheme procedures defined in C.
These are present on my box:
> l /usr/pkg/lib/libguile-srfi-srfi-13*
-rw-r--r-- 1 root wheel 85202 Oct 26 12:57 /usr/pkg/lib/libguile-srfi-srfi-13-14-v-1.a
-rwxr-xr-x 1 root wheel 1030 Oct 26 12:57 /usr/pkg/lib/libguile-srfi-srfi-13-14-v-1.la
lrwxr-xr-x 1 root wheel 37 Oct 26 12:57 /usr/pkg/lib/libguile-srfi-srfi-13-14-v-1.so -> libguile-srfi-srfi-13-14-v-1.so.1.0.1
lrwxr-xr-x 1 root wheel 37 Oct 26 12:57 /usr/pkg/lib/libguile-srfi-srfi-13-14-v-1.so.1 -> libguile-srfi-srfi-13-14-v-1.so.1.0.1
-rwxr-xr-x 1 root wheel 83050 Oct 26 12:57 /usr/pkg/lib/libguile-srfi-srfi-13-14-v-1.so.1.0.1
and that library dynamically links to others:
> ldd /usr/pkg/lib/libguile-srfi-srfi-13-14-v-1.so.1.0.1
/usr/pkg/lib/libguile-srfi-srfi-13-14-v-1.so.1.0.1:
-lcrypt.0 => /usr/lib/libcrypt.so.0
-lm.0 => /usr/lib/libm387.so.0
-lm.0 => /usr/lib/libm.so.0
-lpthread.0 => /usr/lib/libpthread.so.0
-lguile-ltdl.1 => /usr/pkg/lib/libguile-ltdl.so.1
-lguile.12 => /usr/pkg/lib/libguile.so.12
There's an outstanding PR about guile dynamic linking with libltdl for
g-wrap; see PR 33665 for some clues. I think it's quite likely that
this is the same issue.
my guile-www build:
/usr/pkgsrc/devel/guile-www > make
=> Required installed package digest>=20010302: digest-20060826 found
=> Checksum SHA1 OK for guile-www-2.13.tar.gz
=> Checksum RMD160 OK for guile-www-2.13.tar.gz
===> Installing dependencies for guile-www-2.13nb1
=> Required installed package guile>=1.6.3nb1: guile-1.6.8 found
===> Overriding tools for guile-www-2.13nb1
===> Extracting for guile-www-2.13nb1
===> Patching for guile-www-2.13nb1
===> Creating toolchain wrappers for guile-www-2.13nb1
===> Configuring for guile-www-2.13nb1
=> Modifying GNU configure scripts to avoid --recheck
=> Replacing config-guess with pkgsrc versions
=> Replacing config-sub with pkgsrc versions
configure: WARNING: If you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used.
checking for a BSD-compatible install... /usr/bin/install -c -o root -g wheel
checking whether build environment is sane... yes
checking for gawk... /usr/bin/awk
checking whether make sets $(MAKE)... yes
checking for i386--netbsdelf-strip... no
checking for strip... strip
checking whether to enable maintainer-specific portions of Makefiles... no
checking for guile... /usr/pkg/bin/guile
checking for guile-config... /usr/pkg/bin/guile-config
checking for guile-tools... /usr/pkg/bin/guile-tools
checking if Guile has make-shared-substring... yes
checking if (ice-9 regex) is available... yes
checking if (srfi srfi-13) is available... yes
checking if (ice-9 optargs-kw) is available... no
checking if (ice-9 optargs) acts like (ice-9 optargs-kw)... yes
checking for Guile site directory... ${prefix}/share/guile/site
checking punify command... guile-tools punify
configure: creating ./config.status
config.status: creating module-install
config.status: creating Makefile
config.status: creating doc/Makefile
config.status: creating examples/id.cgi
config.status: executing twerp-prep commands
===> Building for guile-www-2.13nb1
Making all in doc
nothing to do for doc-index-prep
/usr/bin/make all-am
=> Unwrapping files-to-be-installed.
--
Greg Troxel <gdt@ir.bbn.com>