GNOME Bugzilla – Bug 347922
configure doesn't test for slib: make fails on require.scm
Last modified: 2018-06-29 21:10:09 UTC
(cd .libs && rm -f libgncmod-test.la && ln -s ../libgncmod-test.la libgncmod-test.la) make[3]: Leaving directory `/data/downloads/gnucash-2.0.0/src/test-core' Making all in engine make[3]: Entering directory `/data/downloads/gnucash-2.0.0/src/engine' chmod u+x ./iso-currencies-to-c GUILE_LOAD_PATH=: srcdir=. ./iso-currencies-to-c ERROR: Could not find slib/require.scm in ("" "" "/usr/local/share/guile/site" "/usr/local/share/guile/1.8" "/usr/local/share/guile") make[3]: *** [iso-4217-currencies.c] Error 1 make[3]: Leaving directory `/data/downloads/gnucash-2.0.0/src/engine' make[2]: *** [all-recursive] Error 1
We can test this similar to other tests: [warlord@cliodev src]$ guile -c "(use-modules (ice-9 slib)) (require 'format)" ERROR: slib:require unsupported feature format [warlord@cliodev src]$ echo $status 2 [warlord@cliodev src]$ guile -c "(use-modules (ice-9 slib)) (require 'printf)" [warlord@cliodev src]$ echo $status 0 (format is only in older versions, but we always require printf -- so we can/should test for that)
Fixed in trunk in r14551. Waiting for audit to backport to 2.0.
Audited by jsled. Merged into 2.0 as r14563 for 2.0.1
For the record: Slib can be obtained from http://swissnet.ai.mit.edu/~jaffer/SLIB.html
Perhaps that info should go into the README?
I downloaded slib from the above location, unzipped it into /usr/share/slib, ran "make install" from that directory. When I try to build gnucash, it complains: checking for SLIB support... configure: error: Cannot find SLIB. Are you sure you have it installed? See http://bugzilla.gnome.org/show_bug.cgi?id=347922 What else am I supposed to do to configure gnucash? I grepped for "slib" in the gnucash directory and found an otherwise undocumented option to configure: --with-slibdir=/lib I tried changing my configure command to include --with-slibdir=/usr/share/slib but I still get the same error message.
Steve: I bet you a dollar to a dime that /usr/share/slib isn't in the default guile load path, and that you didn't add a symlink from /usr/share/guile/slib -> /usr/share/slib Create that symlink and try again. You can test slib by hand by running: guile -c "(use-modules (ice-9 slib)) (require 'printf)"
% which guile /usr/bin/guile % guile --version Guile 1.8.0 Copyright (c) 1995, 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation Guile may be distributed under the terms of the GNU General Public Licence; certain other uses are permitted as well. For details, see the file `COPYING', which is included in the Guile distribution. There is no warranty, to the extent permitted by law. % guile -c "(use-modules (ice-9 slib)) (require 'printf)" ERROR: Unbound variable: with-load-pathname % ls -l /usr/share/guile total 0 drwxr-xr-x 6 root root 232 2006-08-17 22:02 1.6/ lrwxrwxrwx 1 root root 3 2005-11-16 06:16 1.6.7 -> 1.6/ drwxr-xr-x 7 root root 208 2006-07-21 09:38 1.8/ drwxr-xr-x 3 root root 72 2006-08-17 22:41 site/ lrwxrwxrwx 1 root root 15 2006-08-20 21:25 slib -> /usr/share/slib/ % If I add the line to /usr/share/guile/1.8/ice-9/slib.scm: (load (string-append (assoc-ref %guile-build-info 'pkgdatadir) "/slib/guile.init")) (define-module (ice-9 slib) Then I get: % guile -c "(use-modules (ice-9 slib)) (require 'printf)" % But I still the the error: ... checking for SLIB support... configure: error: Cannot find SLIB. Are you sure you have it installed? % guile -c '(display %load-path)' (/usr/share/guile/site /usr/share/guile/1.8 /usr/share/guile)
Anything printed in config.log? When you run guile by hand, what's the return value? I.e., what do you get from: % guile -c "(use-modules (ice-9 slib)) (require 'printf)" % echo $? (at least I'm assuming this is bash. for tcsh it would be $status) Also, what version of SLIB do you have installed? I'll also point out that most distributions already include SLIB...
After running % guile -c "(use-modules (ice-9 slib)) (require 'printf)" ERROR: Unbound variable: with-load-pathname in bash, $? is 1. in /usr/share/slib/version.txt: @set SLIBVERSION 3a3 @set SLIBDATE February 2006 % locate slib.sh /usr/local/lib/slib/slib.sh /usr/local/src/gnucash-2.0.1/slib/slib.sh /usr/share/guile/site/slib/slib.sh /usr/share/slib/slib.sh All those directories are essentially the same. The /usr/local/lib directory doesn't have the .txi files. If I include the patch to /usr/share/guile/1.8/ice-9/slib.scm (shown above), % guile -c "(use-modules (ice-9 slib)) (require 'printf)" % echo $status 0
Include the patch, then run configure. If it fails, look in config.log and see what it says.
Line 80 of config.log says --with-slibdir=/lib: Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --libexecdir=/usr/lib --enable-languages=c,c++,objc,f95,java,ada --disable-checking --with-gxx-include-dir=/usr/include/c++/4.0.2 --enable-java-awt=gtk --disable-libjava-multilib --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit --without-system-libunwind --host=i586-suse-linux Line 1708 says: configure:27469: checking for (g-wrap gw-glib-spec) guile module configure:27475: result: yes configure:27495: checking for SLIB support configure:27509: error: Cannot find SLIB. Are you sure you have it installed? See http://bugzilla.gnome.org/show_bug.cgi?id=347922 This wasn't enough info to point out what's wrong, so I added some print lines to the configure file right before this error and found: checking for SLIB support... start DEBUG checking for SLIB support... LD_LIBRARY_PATH= /usr/local/lib: GUILE_LOAD_PATH= /usr/local/share/guile/site: /usr/bin/guile -c (use-modules (ice-9 slib)) (require 'printf) end DEBUG configure: error: Cannot find SLIB. Are you sure you have it installed? See http://bugzilla.gnome.org/show_bug.cgi?id=347922 If I run the standalone guile command, I get: ERROR: Value out of range 0 to 16: -1 Apparently, guile doesn't like the trailing ":" on GUILE_LOAD_PATH. GUILE_LOAD_PATH is read, but not set in the configure script! If I run % guile -c '(display %load-path)' (/usr/local/share/guile/site /usr/share/guile/site /usr/share/guile/1.8 /usr/share/guile /usr/share/guile/site /usr/share/guile/1.8 /usr/share/guile) and then % setenv GUILE_LOAD_PATH /usr/local/share/guile/site:/usr/share/guile/site:/usr/share/guile/1.8:/usr/share/guile then configure works! I think what I did to get this to compile is beyond what any end-user is willing to do to get this package to compile. Please fix the configure script so that GUILE_LOAD_PATH gets set if it is not already set.
This has got to be a guile version-specific error, because it works for me: $ env GUILE_LOAD_PATH=/tmp/foo: guile -c "(use-modules (ice-9 slib)) (require 'printf)" $ echo $status 0 $ guile --version Guile 1.6.7 GUILE_LOAD_PATH is something the user can set. The configure script is designed to use it if it's already set by the user, and just add the extra paths that the configure script requires. I don't see how setting it to an empty string if it's not set is going to help anything. On a different note... I have no idea what --with-slibdir is for, but I can assure you that it has nothing to do with SLIB. You say: > If I run the standalone guile command, I get: > ERROR: Value out of range 0 to 16: -1 But you don't show the actual command-line you ran, so I cannot tell if this is user error. Can you try reverting to guile 1.6 and see if you can get it working?
I reverted to guile 1.6, and now I'm back in the realm of GUILE_LOAD_PATH= /usr/local/share/guile/site:/usr/local/share/guile/site:/usr/share/guile/site:/usr/share/guile/1.6:/usr/share/guile:/usr/share/slib /usr/bin/guile -c (use-modules (ice-9 slib)) (require 'printf) end DEBUG configure: error: Cannot find SLIB. Are you sure you have it installed? See http://bugzilla.gnome.org/show_bug.cgi?id=347922 /usr/bin/guile -c "( use-modules ( ice-9 slib ) ) ( require 'printf)" ERROR: Unbound variable: with-load-pathname I've spent far too many frustrating hours trying to debug this program. I give up. I looked at trying to install gnucash-2.0.1 from rpm.pbone.net (for SuSe 10.0 and 10.1). It claims that there are 122 rpms that must be installed before gnucash will work. Is it just me, or does this seem excessive? Is there a push-button way to install gnucash-2.0.1 on SuSe 10.0 and 10.1? yast2's install knows about gnucash 1.8, but not 2.0.x.
122 RPMS does sound excessive. How come you didn't just install the SuSE guile, guile-devel, and slib RPMS? The only dependency you should have to build from source on SuSE is g-wrap. Everything else should be available as an RPM in the distribution. I know there are plenty of other people with gnucash-2.0.1 working on SuSE 10 so I think this really is just you. I know you don't want to hear that, and I know it's very frustrating. You might want to ask for help on the gnucash-user mailing list, or look at http://wiki.gnucash.org/wiki/GnuCash which links to ftp://ftp.gwdg.de/linux/misc/suser-crauch/10.1/RPMS/i686/
I finally got some of the rpms from ftp.gwdg.de/linux/misc/suser-crauch/10.0/RPMS/i686/: gnucash-2.0.1-0.rauch.1.i686.rpm gnucash-2.0.1-0.rauch.2.i686.rpm g-wrap-1.9.6-0.rauch.3.i686.rpm libgeier-0.6-0.rauch.1.SuSE1000.i686.rpm taxbird-0.7-0.rauch.1.SuSE1000.i686.rpm xmlsec1-1.2.9-0.rauch.1.i686.rpm xmlsec1-devel-1.2.9-0.rauch.1.i686.rpm xmlsec1-nss-1.2.9-0.rauch.1.i686.rpm xmlsec1-nss-devel-1.2.9-0.rauch.1.i686.rpm xmlsec1-openssl-1.2.9-0.rauch.1.i686.rpm xmlsec1-openssl-devel-1.2.9-0.rauch.1.i686.rpm and some of the rest from ftp.iasi.roedu.net/mirrors/suse-apt/oc2pus/10.0/RPMS/i586: aqbanking-2.2.0-0.oc2pus.1.i586.rpm gengetopt-2.17-0.oc2pus.1.i586.rpm gwenhywfar-2.3.1-0.oc2pus.1.i586.rpm ktoblzcheck-1.11-42.oc2pus.1.i586.rpm libchipcard2-2.1.7-0.oc2pus.1.i586.rpm libofx-0.8.1-1.oc2pus.cvs20060802.i586.rpm and the rest from the SuSE 10.0 distribution. The reason I didn't just get it from the SuSE 10.0 distribution is because it was either not there or it was verion 1.8.x. (It's been so long, I don't remember which one it was.)
Hi Derek - I've got exactly the same "Cannot find SLIB" error that Steve Kelem describes on this bug while trying to ./configure GNUCash 2.0.1 on my RHEL4 system tonight. I have guile 1.6.4 and SLIB 3a3 installed. From reading your posts here, here is what I've come up with so far: > A symlink from /usr/share/guile to /usr/share/slib IS present. > With the commands that you suggested, here's what I get from the bash shell: ===== [root@localhost gnucash-2.0.1]# guile -c "(use-modules (ice-9 slib)) (require 'printf)" ERROR: Unbound variable: with-load-pathname [root@localhost gnucash-2.0.1]# echo $? 2 ===== I really am an end-user without enough detailed knowledge of scripts to understand or even copy the fix that Steve came up with in that post, so I am good and lost at this point. Might you possibly be kind enough with any further suggestions? (BTW, I am new to this forum, so if I should have started a new bug, please excuse)
Devin, On RHEL4 should install the guile and other RPMS from http://people.redhat.com/notting/gnucash/ as appropriate.
Doh!! Would you believe me if I said somebody else wrote that comment? No? How about if I claim to have been fatigued from working late? Well, in any case, GNUCash came up surprisingly easily on the RHEL4 system (as it could have last night) after I just simply used the .rpms provided in the 2.0 folder. Thanks Derek, my apology for your time, and keep up the great work.
I just installed Slackware 11 and then tried to add Gnucash, got to this problem with Guile 1.8.1 (updated that first off to see if that was the problem) and here is what I did: 1) export SCHEME_LIBRARY_PATH=/usr/share/slib/ 2) From http://www.mail-archive.com/bug-guile@gnu.org/msg03869.html I got some clues, I edited /usr/share/guile/1.8/ice-9/slib.scm (Your directory may vary) I added the line (again this path may vary, it's hardcoded, caveat emptor): (load "/usr/share/slib/guile.init") just before (define-module (ice-9 slib) From the command line then you can execute: guile -c "(use-modules (ice-9 slib)) (require 'printf)" Instead of having to wait for the ./configure script to get there, if you don't get an error, your Guile problem is solved (I think this is really a guile/slib issue, but I was just wanting to install Gnucash and it was annoying.)
(In reply to comment #20) > I just installed Slackware 11 and then tried to add Gnucash, got to this > problem with Guile 1.8.1 (updated that first off to see if that was the > problem) and here is what I did: > 1) > export SCHEME_LIBRARY_PATH=/usr/share/slib/ > > 2) > From http://www.mail-archive.com/bug-guile@gnu.org/msg03869.html I got some > clues, > I edited /usr/share/guile/1.8/ice-9/slib.scm (Your directory may vary) > I added the line (again this path may vary, it's hardcoded, caveat emptor): > (load "/usr/share/slib/guile.init") > > just before (define-module (ice-9 slib) > > From the command line then you can execute: > guile -c "(use-modules (ice-9 slib)) (require 'printf)" > > Instead of having to wait for the ./configure script to get there, if you don't > get an error, your Guile problem is solved (I think this is really a guile/slib > issue, but I was just wanting to install Gnucash and it was annoying.) > ER, I also had to 1) export GUILE_LOAD_PATH=/usr/share 2) Edit .configure for GnuCash and change the check not to use G_WRAP_LIB_DIR (I have suspicions this might be specific to my installation) and set SCHEME_LIBRARY_PATH, ie: if LD_LIBRARY_PATH="${LD_LIBRARY_PATH}" \ GUILE_LOAD_PATH="${G_WRAP_MODULE_DIR}:${GUILE_LOAD_PATH}" \ SCHEME_LIBRARY_PATH="${SCHEME_LIBRARY_PATH}" \ ${GUILE} -c "(use-modules (ice-9 slib)) (require 'printf)" > /dev/null 2>&1
from http://not-your-cup-of-chai.blogspot.com/2006/11/slackware-11-and-adventure-with-gnucash.html: how about an configure flag slib configure --with-slib=/usr/share/here/is/slib inside configure: guile -c "(load \"/usr/share/here/is/slib/guile.init\") (require 'printf)" this works for me.
The fact that configure can find it is not sufficient; GUILE needs to find it. If you know where slib is installed just symlink it into the guile path.
guile-1.8 does not have correct slib support yet; it is still using an older way of supporting slib that doesn't work anymore. @#$*(@*#$(@
Thomas is correct. I did receive some help from the bug-guile list on how to install slib properly (http://lists.gnu.org/archive/html/bug-guile/2007-09/msg00008.html). The current situation is that after making the suggested change, loading Slib succeeds on the second try, not the first: # guile guile> (use-modules (ice-9 slib)) ERROR: Unbound variable: system ABORT: (unbound-variable) guile> (use-modules (ice-9 slib)) guile> Ergo, ./configure fails. I'm continuing to pursue the solution with them. I do have a couple of observations: 1] GnuCash depends on two upstreams cooperating (Slib and Guile). 2] Neither upstream community seems to feel particularly motivated to ensure that they work together. (Slib bug was first reported to Guile community 10/2006; Guile 1.8.1 and Slib 3a4. Guile subsequently had a release in 7/2007, but did not address the issue.) Now I can't help you because I can't read scheme, much less write it. I suspect that is the case with many of your users, even the ones who can program. Consider this: if you were to remove the scheme dependency in favor of...well any language with the prevailing functional or object-oriented paradigm (python, perl, java, gdl...even *spit* basic) you greatly expand the utility of your extensibility feature by making your product familiar to a much wider audience. Simultaneously, you expand your potential developer/contributor base by at least an order of magnitude. I do know that of the languages I listed, python at least is designed to be incorporated into stand-alone apps in much the same way as guile. And lastly, something like Python or Perl has a single reference implementation with which all library developers feel an obligation to interoperate. Alternatively, what functionality would GnuCash retain if the extensibility portion were removed? I just need scheduled transactions, manual transaction entry, and reconciling accounts to work. Reports can disappear. In four years I've never written a Scheme script myself, and now I find that this feature I've never used and don't care about is blocking access to my books due either to upstream apathy or upstream overwork. Is GnuCash structured such that the Guile dependency could be made optional? If I was a GnuCash developer, I don't know what would worry me more: that problems outside your codebase have such a devastating impact on your product, or that the people causing those problems don't resolve them in a timely fashion.
Without scheme, half the application would stop working. For one thing, all the reports require scheme! So I'm afraid ripping out scheme just isn't on the table at this point. Now, removing the slib dependency might be a good thing, just like we've removed the g-wrap dependency. I'll also just point out that all the major distributions have already solved this problem, so, no, I'm really not all that worried about it. But thank you for your concern.
I'm having the same problems as Bryce--and same results--the proffered solution hasn't worked for me. I'm running Fedora 7. Had to remove F7 guile because it doesn't have the guile development environment needed by gnucash. I installed guile-1.8.2 and then have followed all instructions to get slib installed but haven't yet been able to convince ./configure with gnucash that slib is installed. This is a sad state of affairs. I last visited gnucash a year or so ago and I believe slib installation was a problem then, too. I agree with Bryce--dump guile for gnucash or get it better integrated with the gnucash package installation. -Tom
Tom, Fedora 7 most certainly has the full development environemnt. You just didn't install the guile-devel package. First, clean your system of everything you built by hand, then: yum install guile-devel slib That's all you need on Fedora 7 and it works just fine. F7 is my development environment and I have no external packages.
Derek, my bad--sorry. I apologize for the rude comments. Actually I had checked for the availability of guile-devel with yom but didn't see it--I must have made a typo somewhere. Thanks. -Tom
Derek, I have slib installed, but still get erros. I'm using Solaris platform. $ guile -c "(use-modules (ice-9 slib)) (require 'printf)" ERROR: In procedure open-file: ERROR: No such file or directory: "/usr/share/guile/1.8/slib/mklibcat" $ls /usr/share/guile/1.8/slib/|grep mklibcat mklibcat.scm Any clue?
Halton, You didn't follow the slib instructions to build the library catalog. As root, run: guile -c "(use modules (ice-9 slib)) (require 'new-catalog)" This should build the new catalog file. It should only need to be done once.
I also ran into this problem lately on my ubuntu hardy machine. I used to be able to compile just fine a few months ago. $ dpkg -l guile* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-=============================================-=============================================-========================================================================================================== un guile <none> (no description available) ii guile-1.6 1.6.8-6ubuntu1 The GNU extension language and Scheme interpreter ii guile-1.6-dev 1.6.8-6ubuntu1 Development files for Guile 1.6 un guile-1.6-doc <none> (no description available) ii guile-1.6-libs 1.6.8-6ubuntu1 Main Guile libraries ii guile-1.6-slib 1.6.8-6ubuntu1 Guile SLIB support ii guile-1.8 1.8.3+1-1 The GNU extension language and Scheme interpreter un guile-1.8-doc <none> (no description available) ii guile-1.8-libs 1.8.3+1-1 Main Guile libraries un guile-g-wrap <none> (no description available) ii guile-library 0.1.6-1 Library of useful Guile modules pn guile-www <none> (no description available) $ dpkg -l slib* Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad) ||/ Name Version Description +++-=============================================-=============================================-========================================================================================================== ii slib 3a4-4 Portable Scheme library $ sudo apt-get build-dep gnucash Reading package lists... Done Building dependency tree Reading state information... Done The following packages will be REMOVED: g-wrap gnucash-compile-deps guile-1.8 guile-library 0 upgraded, 0 newly installed, 4 to remove and 0 not upgraded. After this operation, 1835kB disk space will be freed. Do you want to continue [Y/n]? n Abort. $ ./configure --prefix=/export/gnucash --enable-debug --enable-doxygen --enable-locale-specific-tax --enable-error-on-warning --enable-compile-warnings --enable-hbci [...] checking for guile... /usr/bin/guile checking for guile - 1.6.0 <= version < 99.99.99... yes: 1.6.8 checking for guile - 1.8.0 <= version < 99.99.99... no: 1.6.8 checking for SLIB support... configure: error: Cannot find SLIB. Are you sure you have it installed? See http://bugzilla.gnome.org/show_bug.cgi?id=347922 $ make clean cd . && /bin/sh /usr/src/gnucash/missing --run aclocal-1.9 -I macros -I m4 aclocal: couldn't open directory `m4': No such file or directory make: *** [aclocal.m4] Error 1
Derek, sorry for late response. I tried your comments in #31, but still fails. #guile -c "(use-modules (ice-9 slib)) (require 'new-catalog)" ERROR: In procedure open-file: ERROR: No such file or directory: "/usr/share/guile/1.8/slib/mklibcat"
Well, that would imply that either you don't have slib installed in the place guile thinks it should be, or /usr/share/guile/1.8/slib is not writable.
Please notice that I tried to compile gnucash today, with this under the Bash shell: export GUILE_LOAD_PATH=/usr/local/share/guile/site:/usr/share/guile/site:/usr/share/guile/1.8:/usr/share/guile I already have this message of bug while doing this: ./configure --prefix=/opt/gnucash --enable-debug --enable-doxygen --enable-error-on-warning --enable-compile-warnings here is the message: Cannot find SLIB. Are you sure you have it installed? See http://bugzilla.gnome.org/show_bug.cgi?id=347922 and http://bugzilla.gnome.org/show_bug.cgi?id=483631 I had to change to version 1.6: export GUILE_LOAD_PATH=/usr/local/share/guile/site:/usr/share/guile/site:/usr/share/guile/1.6:/usr/share/guile and configure runs well! I did not have to create a symlink from /usr/share/guile to /usr/share/slib nor for slibcat.
HOWTO install SLIB: I have installed guile-1.8.6 and got '/usr/share/guile/1.8/'. cd /usr/share/guile ln -sf 1.8 site cd 1.8 cp /PATH/slib.zip . unzip slib.zip chown -R root.root slib cd slib cp mklibcat.scm mklibcat make catalogs cd .. rm slib.zip vim -R slibcat Now 'configure' of gnucash should no longer complain. winfried
I have filed my version of this HOWTO as doc bugs with both SLIB and guile mailing lists. See my version of a fix described at: http://mail.google.com/mail/?hl=en&tab=wm#label/gnucash-devel/11f1a6cfb53bfc43 and http://mail.google.com/mail/?hl=en&tab=wm#label/gnucash-user/11f1a6cfb53bfc43 and http://mail.google.com/mail/?hl=en&tab=wm#label/0_guile-devel/11f1a6cfb53bfc43 HTH. -Tom
GnuCash bug tracking has moved to a new Bugzilla host. This bug has been copied to https://bugs.gnucash.org/show_bug.cgi?id=347922. Please update any external references or bookmarks.