#510 Build problem when ffcall is not in a system directory.

build problems
closed-works-for-me
Sam Steingold
clisp (525)
5
2008-12-14
2008-11-27
Waldek Hebisch
No

Current clisp distribution unbundled libffcall
and libsigsegv. Unfortunatly, many popular
Linux distributions do not include them.
When libffcall and/or libsigsegv are installed
in a nonstandard directory clisp-2.47 configure
can not find them. Giving --with-libsigsegv-prefix
(which is mentioned in unix/INSTALL) does not
help -- apparently this argument is ignored by
configure. For ffcall I was unable to find
official method to specify alternative location.

Also modifying CFLAGS and/or LDFLAGS did not
help: adding -I to CFLAGS allowed to find
header files, but when I modified LDFLAGS,
then configure was able to find the libraries,
but subconfigure in i18n failed, complaining
about modified LDFLAGS.

Discussion

  • Sam Steingold
    Sam Steingold
    2008-11-28

    • labels: --> clisp
    • assigned_to: nobody --> sds
    • milestone: --> build problems
     
  • Sam Steingold
    Sam Steingold
    2008-11-28

    wfm --with-libffcall-prefix and --with-libsigsegv-prefix
    please check config.log and investigate why the configure fails to detect the libraries.

     
  • Sam Steingold
    Sam Steingold
    2008-11-28

    • status: open --> pending
     
  • Sam Steingold
    Sam Steingold
    2008-11-28

    this is now marked "pending" because we are waiting for your input

     
  • Waldek Hebisch
    Waldek Hebisch
    2008-12-12

    From config log:

    configure:26222: checking for libsigsegv
    configure:26252: gcc -o conftest -g -O2 conftest.c -lsigsegv >&5
    conftest.c:60:21: error: sigsegv.h: No such file or directory

    AFAICS configure contains no mechanizm to pass correct include and
    library options for libsigsegv and libffcall to the compiler used for feature testing (gcc in this case). As I wrote in the original
    report after appropriate setting of CFLAGS and LDFLAGS configure
    finds libsigsegv and libffcall, but then fails later.

     
  • Waldek Hebisch
    Waldek Hebisch
    2008-12-12

    • status: pending --> open
     
  • Sam Steingold
    Sam Steingold
    2008-12-12

    my config.log says:
    configure:27208: checking for libsigsegv
    configure:27238: gcc -o conftest -I/home/sds/top/Linux-x86_64/include conftest.c /home/sds/top/Linux-x86_6/lib/libsigsegv.a -lc >&5
    configure:27245: $? = 0
    configure:27267: result: yes
    configure:27275: checking how to link with libsigsegv
    configure:27277: result: /home/sds/top/Linux-x86_64/lib/libsigsegv.a -lc

    I invoke configure with arguments
    --with-libsigsegv-prefix=/home/sds/top/Linux-x86_64 --with-libffcall-prefix=/home/sds/top/Linux-x86_64
    what is your exact configure command line?

     
  • Sam Steingold
    Sam Steingold
    2008-12-12

    • status: open --> pending
     
  • Waldek Hebisch
    Waldek Hebisch
    2008-12-12

    I used the following configure line (in the root directory
    of the source tree):

    ./configure --with-libffcall-prefix=/home/hebisch/lisp/pp4/usr --with-libsigsegv-prefix=/home/hebisch/lisp/pp4/usr >clogg 2>&1 &

    libffcall and libsigsegv are in the specified directory:
    -bash-3.2$ ls /home/hebisch/lisp/pp4/usr/include/
    avcall.h sigsegv.h trampoline_r.h vacall_r.h
    callback.h trampoline.h vacall.h
    -bash-3.2$ ls /home/hebisch/lisp/pp4/usr/lib/
    libavcall.a libcallback.a libsigsegv.a libtrampoline.a
    libavcall.la libcallback.la libsigsegv.la libvacall.a
    -bash-3.2$

     
  • Waldek Hebisch
    Waldek Hebisch
    2008-12-12

    • status: pending --> open
     
  • Sam Steingold
    Sam Steingold
    2008-12-12

    I am lost.
    first, please tell me your platform (uname -a; glibc version if linux).
    second, please read your config.log very carefully and see where your prefixes are used.
    also, look for "checking how to link with".
    you might also want to try cvs head.

     
  • Sam Steingold
    Sam Steingold
    2008-12-12

    • status: open --> pending-works-for-me
     
  • Waldek Hebisch
    Waldek Hebisch
    2008-12-12

    • status: pending-works-for-me --> open-works-for-me
     
  • Waldek Hebisch
    Waldek Hebisch
    2008-12-12

    I am running Fedora 9 with self-compiled kernel.

    uname -a
    Linux localhost.localdomain 2.6.25.6 #7 PREEMPT Fri Jul 4 14:09:18 EDT 2008 x86_64 x86_64 x86_64 GNU/Linux

    The system uses libc 2.8

    /bin/sh --version
    GNU bash, version 3.2.33(1)-release (x86_64-redhat-linux-gnu)
    Copyright (C) 2007 Free Software Foundation, Inc.

    Concerning config.log: I see no indication that prefixes I gave
    are used. "checking how to link with" lines seem to be the
    same regardless if I give prefix argument or not:

    configure:31697: checking for libsigsegv
    configure:31756: result: no, consider installing GNU libsigsegv
    configure:31809: checking how to link with libavcall
    configure:32264: result: -lavcall
    configure:32305: checking how to link with libcallback
    configure:32760: result: -lcallback
    configure:32813: checking avcall.h usability
    configure:32830: gcc -c -g -O2 conftest.c >&5
    conftest.c:120:20: error: avcall.h: No such file or directory

    Actually, if I try configuring without giving prefix argument
    config.log is essentially the same (I see changed command line,
    changes to paths (since I configure in different directory)
    and different value of STACK_ADDRESS_RANGE (this one simply
    changes from run to run)).

     
  • Sam Steingold
    Sam Steingold
    2008-12-12

    did you try clisp cvs head?

     
  • Waldek Hebisch
    Waldek Hebisch
    2008-12-12

    cvs gives me the same result as 2.47

     
  • Sam Steingold
    Sam Steingold
    2008-12-12

    please edit the top-level configure script and add "set -xv" early on.
    also, add "-xv" to the src/configure invocation:

    --- configure.~1.139.~ 2008-11-19 17:23:00.000000000 -0500
    +++ configure 2008-12-12 15:02:45.001616000 -0500
    @@ -1,4 +1,4 @@
    -#! /bin/sh
    +#! /bin/sh -xv
    # Usage: configure [options] [dirname [cc]]
    # Examples:
    # configure obj
    @@ -643,7 +643,7 @@ if test -n "$do_config"; then
    fi
    cd "${ABS_DIRNAME}";
    echo "executing `pwd`/configure $*"
    - ${CONFIG_SHELL} configure $subdir_srcdir_args \ + ${CONFIG_SHELL} -xv configure $subdir_srcdir_args \ $subdir_configure_args --cache-file=config.cache
    fi

    redirect output to a file and post a link to the file here.
    you can also examine the file yourself to see why the options are not used.

     
  • Waldek Hebisch
    Waldek Hebisch
    2008-12-12

    OK. log at:

    http://www.math.uni.wroc.pl/~hebisch/tmp/clogg

    AFAICS problem is due to lib versus lib64 confusion: ffcall and libsigsegv installs libraries in /home/hebisch/lisp/pp4/usr/lib
    but configure searches in /home/hebisch/lisp/pp4/usr/lib64

     
  • Sam Steingold
    Sam Steingold
    2008-12-14

    • status: open-works-for-me --> pending-works-for-me
     
  • Waldek Hebisch
    Waldek Hebisch
    2008-12-14

    • status: pending-works-for-me --> open-works-for-me
     
  • Waldek Hebisch
    Waldek Hebisch
    2008-12-14

    I see, this is known problem. However, telling users to
    install library in specific directory does not look like
    right solutions. AFAICS autoconf was hyped to be able to
    find proper information via testing (instead of relying on
    hardcoded details) and it does not look hard to add
    apropriate test.

     
  • Sam Steingold
    Sam Steingold
    2008-12-14

    this is clearly an autoconf problem, specifically, a problem in the configure scripts of libffcall and libsigsegv.
    there is absolutely nothing I can do about it.
    please _DO_ complain to the autoconf maintainers.

     
  • Sam Steingold
    Sam Steingold
    2008-12-14

    • status: open-works-for-me --> closed-works-for-me