Subject: bug#14080: Guile bug building from source with pkg-config

From: Mark H Weaver <[email-masked]>
Date: Sat, 30 Mar 2013 19:10:45 -0400

Hi Mark,

In your replies, please keep <[email-masked]> in the CC line, so
that your emails will be recorded in this bug entry.

Mark Sutton <[email-masked]> writes:

> On 30/03/13 07:21, Mark H Weaver wrote:
>> Mark Sutton <[email-masked]> writes:
>>
>>> I can ./configure make make install guile-2.0.7 from source, however,
>>> when I then try in build guile-clutter or guile-ncurses from source I
>>> get errors in both. After googling I found that I should have
>>> ./configure PKG_CONFIG=true.
>> You shouldn't need PKG_CONFIG=true.  Frankly it's a bad idea.
>>
>> Can you please show us the error messages you get (and any relevant
>> context) if you configure *without* PKG_CONFIG=true?
>>
>>      Thanks,
>>        Mark
> Hi Mark,
>
> I'm using Kubuntu 12.04. I've ./configure (no args) make & make
> install - guile-2.0.7 from source with no problems.
> When I try to ./configure guile-ncurses-1.3 I get the following (I've
> attached the configure.log file) ...
>
> checking for a BSD-compatible install... /usr/bin/install -c
> checking whether build environment is sane... yes
> checking for a thread-safe mkdir -p... /bin/mkdir -p
> checking for gawk... gawk
> checking whether make sets $(MAKE)... yes
> checking for style of include used by make... GNU
> checking for gcc... gcc
> checking whether the C compiler works... yes
> checking for C compiler default output file name... a.out
> checking for suffix of executables...
> checking whether we are cross compiling... no
> checking for suffix of object files... o
> checking whether we are using the GNU C compiler... yes
> checking whether gcc accepts -g... yes
> checking for gcc option to accept ISO C89... none needed
> checking dependency style of gcc... gcc3
> checking how to run the C preprocessor... gcc -E
> checking for grep that handles long lines and -e... /bin/grep
> checking for egrep... /bin/grep -E
> checking for ANSI C header files... yes
> checking for sys/types.h... yes
> checking for sys/stat.h... yes
> checking for stdlib.h... yes
> checking for string.h... yes
> checking for memory.h... yes
> checking for strings.h... yes
> checking for inttypes.h... yes
> checking for stdint.h... yes
> checking for unistd.h... yes
> checking minix/config.h usability... no
> checking minix/config.h presence... no
> checking for minix/config.h... no
> checking whether it is safe to define __EXTENSIONS__... yes
> checking for gcc... (cached) gcc
> checking whether we are using the GNU C compiler... (cached) yes
> checking whether gcc accepts -g... (cached) yes
> checking for gcc option to accept ISO C89... (cached) none needed
> checking dependency style of gcc... (cached) gcc3
> checking build system type... i686-pc-linux-gnu
> checking host system type... i686-pc-linux-gnu
> configure: checking for ncurses
> checking curses.h usability... no
> checking curses.h presence... no
> checking for curses.h... no
> checking ncurses/curses.h usability... no
> checking ncurses/curses.h presence... no
> checking for ncurses/curses.h... no
> configure: error: in `/home/marks/3rd-party-src/guile-ncurses-1.3':
> configure: error: curses.h could not be found

This indicates that you need to install the 'libncurses5-dev' package.
In general, when compiling software from source code, you need the *-dev
packages of any library dependencies.

> Also, I've tried to install guile-clutter, it stops at cannot find
> g-wrap. When I try to install g-wrap from source I can configure okay
> (again without args), however, when I try to make I get the following
> ...
>
> make  all-recursive
> make[1]: Entering directory `/home/marks/3rd-party-src/g-wrap'
> Making all in lib
> make[2]: Entering directory `/home/marks/3rd-party-src/g-wrap/lib'
> make  all-am
> make[3]: Entering directory `/home/marks/3rd-party-src/g-wrap/lib'
> make[3]: Nothing to be done for `all-am'.
> make[3]: Leaving directory `/home/marks/3rd-party-src/g-wrap/lib'
> make[2]: Leaving directory `/home/marks/3rd-party-src/g-wrap/lib'
> Making all in g-wrap
> make[2]: Entering directory `/home/marks/3rd-party-src/g-wrap/g-wrap'
> make  all-am
> make[3]: Entering directory `/home/marks/3rd-party-src/g-wrap/g-wrap'
> sed -e "s|@g_wrap_shlib_dir\@||" \
>             ./config.scm.in > config.scm
> make[3]: Leaving directory `/home/marks/3rd-party-src/g-wrap/g-wrap'
> make[2]: Leaving directory `/home/marks/3rd-party-src/g-wrap/g-wrap'
> Making all in test
> make[2]: Entering directory `/home/marks/3rd-party-src/g-wrap/test'
> make[2]: Nothing to be done for `all'.
> make[2]: Leaving directory `/home/marks/3rd-party-src/g-wrap/test'
> Making all in guile
> make[2]: Entering directory `/home/marks/3rd-party-src/g-wrap/guile'
> Making all in g-wrap
> make[3]: Entering directory `/home/marks/3rd-party-src/g-wrap/guile/g-wrap'
> Making all in .
> make[4]: Entering directory `/home/marks/3rd-party-src/g-wrap/guile/g-wrap'
> /bin/bash ../../libtool --tag=CC   --mode=compile gcc -DHAVE_CONFIG_H
> -I. -I../.. -I../../g-wrap  -I../.. -I../../lib -I../../guile    -g
> -O2 -Wall -Wmissing-prototypes -Werror -std=gnu99 -MT guile-runtime.lo
> -MD -MP -MF .deps/guile-runtime.Tpo -c -o guile-runtime.lo
> guile-runtime.c
> libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../.. -I../../g-wrap
> -I../.. -I../../lib -I../../guile -g -O2 -Wall -Wmissing-prototypes
> -Werror -std=gnu99 -MT guile-runtime.lo -MD -MP -MF
> .deps/guile-runtime.Tpo -c guile-runtime.c  -fPIC -DPIC -o 
> .libs/guile-runtime.o
> In file included from guile-runtime.c:32:0:
> ../../guile/g-wrap/guile-compatibility.h:25:22: fatal error:
> libguile.h: No such file or directory

The compile command above is missing the CFLAGS associated with
guile-2.0.  The output of "pkg-config --cflags guile-2.0" should be in
there.  For example, on my system, it is:

  -pthread -I/usr/local/include/guile/2.0 -I/usr/local/include

What --prefix (if any) did you pass to ./configure when you built guile?
What is the output of "pkg-config --cflags guile-2.0" on your system?

Also, can you show us the full output of the "./configure" command for
g-wrap?

     Thanks,
       Mark

> compilation terminated.
> make[4]: *** [guile-runtime.lo] Error 1
> make[4]: Leaving directory `/home/marks/3rd-party-src/g-wrap/guile/g-wrap'
> make[3]: *** [all-recursive] Error 1
> make[3]: Leaving directory `/home/marks/3rd-party-src/g-wrap/guile/g-wrap'
> make[2]: *** [all-recursive] Error 1
> make[2]: Leaving directory `/home/marks/3rd-party-src/g-wrap/guile'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/home/marks/3rd-party-src/g-wrap'
> make: *** [all] Error 2