Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 73452

Summary: gnustep-base/gnustep-base-1.10.2_pre20041203 failed to find libffi
Product: Gentoo Linux Reporter: Cedric Godin <cedric.godin>
Component: Current packagesAssignee: Gentoo Gnustep project <gnustep>
Severity: normal    
Priority: High    
Version: unspecified   
Hardware: x86   
OS: Linux   
Package list:
Runtime testing required: ---

Description Cedric Godin 2004-12-05 08:21:57 UTC
When trying to update windowmaker, i put the gnustep use flag on. It tried to emerge gnustep-base/gnustep-base-1.10.2_pre20041203 but failed.
Here is the error :
checking ffi.h presence... yes
checking for ffi.h... yes
checking callback.h usability... no
checking callback.h presence... no
checking for callback.h... no
checking "for forwarding callback in runtime"... yes
checking "FFI library usage"... none

You do not have either ffcall or libffi installed, or configure needs
--with-ffi-include and/or --with-ffi-library flags so GNUstep can find them
GNUstep requires ffcall or libffi and proper libobjc hooks to do
invocations and DO.
(This does not apply on apple-apple-apple systems where DO is
not compatible with other GNUstep systems.)
You most likely do not want to build base without DO support. Many
things, including all applications, won't work at all without DO.
If you really want to build -base without DO support, add --disable-do
to the configure arguments.
For more information, read the GNUstep build guide, ffcall section:
configure: error: Incomplete support for ffi functionality.

gcc-config -l :

[1] i686-pc-linux-gnu-3.3.4
[2] i686-pc-linux-gnu-3.4.1 *

gcc -v :

Reading specs from /usr/lib/gcc/i686-pc-linux-gnu/3.4.1/specs
Configured with: /var/tmp/portage/gcc-3.4.1-r3/work/gcc-3.4.1/configure --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/3.4 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/3.4/info --enable-shared --host=i686-pc-linux-gnu --target=i686-pc-linux-gnu --with-system-zlib --enable-languages=c,c++,objc --enable-threads=posix --enable-long-long --disable-checking --disable-libunwind-exceptions --enable-cstdio=stdio --enable-version-specific-runtime-libs --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/include/g++-v3 --with-local-prefix=/usr/local --disable-werror --enable-shared --enable-nls --without-included-gettext --disable-multilib --enable-__cxa_atexit --enable-clocale=gnu
Thread model: posix
gcc version 3.4.1 20040803 (Gentoo Linux 3.4.1-r3, ssp-3.4-2, pie-

emerge -s libffi :

      Latest version available: 3.4.1-r1
      Latest version installed: 3.4.1-r1

If you need more infos please ask.

Reproducible: Always
Steps to Reproduce:
1. emerge -uD windowmaker
2. emerge gnustep-base

Actual Results:  
You do not have either ffcall or libffi installed, or configure needs
--with-ffi-include and/or --with-ffi-library flags so GNUstep can find them
GNUstep requires ffcall or libffi and proper libobjc hooks to do
invocations and DO.

Expected Results:  
GNUstep emerged

Portage 2.0.51-r3 (default-linux/x86/2004.2, gcc-3.4.1, glibc-,
2.6.9-gentoo-r1 i686)
System uname: 2.6.9-gentoo-r1 i686 Unknown CPU Type
Gentoo Base System version 1.4.16
ccache version 2.3 [enabled]
Autoconf: sys-devel/autoconf-2.59-r5
Automake: sys-devel/automake-1.8.5-r1
Binutils: sys-devel/binutils-
Headers:  sys-kernel/linux26-headers-
Libtools: sys-devel/libtool-1.5.2-r7
CFLAGS="-mcpu=athlon-xp -Os -pipe"
CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config
/usr/kde/3.3/env /usr/kde/3.3/share/config /usr/kde/3.3/shutdown
/usr/kde/3/share/config /usr/share/config /usr/share/texmf/dvipdfm/config/
/usr/share/texmf/dvips/config/ /usr/share/texmf/tex/generic/config/
/usr/share/texmf/tex/platex/config/ /usr/share/texmf/xdvi/ /var/qmail/control"
CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d"
CXXFLAGS="-mcpu=athlon-xp -Os -pipe"
FEATURES="autoaddcvs autoconfig ccache distlocks sandbox sfperms userpriv"
USE="3dnow 3dnowex X acl alsa apache2 apm arts avi cdr chroot crypt cups
dedicated dga divx4linux dvd encode faad fbcon gcc-libffi gd gif gnustep gphoto2
gpm graphviz gtk gtk2 icq imap imlib innodb ipv6 ithreads java jpeg kde kerberos
ldap libwww live mad maildir mmx mmx2 motif mozilla moznocompose moznoirc
moznomail mpeg msn mysql ncurses net network nls no_wxgtk1 nptl nvidia objc
oggvorbis opengl oss pam pdflib perl pg-intdatetime pg-vacuumdelay png postgres
python qt quicktime readline rtc samba sdl spell sse ssl tcltk threads tiff
truetype usb v4l v4l2 vdesktop wmf x86 xinerama xml xml2 xmms xprint xv xvid zlib"
Comment 1 Armando Di Cianno (RETIRED) gentoo-dev 2004-12-05 11:18:49 UTC
What is the ouput of `emerge -pv gnustep-base`?
Comment 2 Armando Di Cianno (RETIRED) gentoo-dev 2004-12-05 11:21:25 UTC
Actually, disregard that:

You have "gcc-libffi" in your USE flags.

Remove it -- this is not a bug.

You're "libffi" is from the seperate package "dev-libs/libffi".  If you want to use gcc-libffi, you need to emerge gcc with the gcj USE flag or >=gcc-3.4.3-r1 with the objc USE flag (or gcj), but this ebuild is still in testing, so I wouldn't.

You can just continue to not use the gcc-libffi use flag and everything should work fine.
Comment 3 Cedric Godin 2004-12-05 12:22:02 UTC
Sorry, but I tried with this use flag after a first error. I tried it thinking that i should solve my problem. I retried without it and still have the error.
the emerge gnustep-base -pv gives :

endymion root # emerge gnustep-base -pv

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild  N    ] gnustep-base/gnustep-base-1.10.2_pre20041203  -debug +doc -gcc-libffi -profile 0 kB 

of course all the dep are built (and libffi was a dep).

should i reopen the bug ?
Comment 4 Armando Di Cianno (RETIRED) gentoo-dev 2004-12-05 12:41:15 UTC
If dev-libs/libffi was installed, at worst, you may have to 'env-update', 'source /etc/profile' and try to emerge again.

Please let me know if that works.
Comment 5 Armando Di Cianno (RETIRED) gentoo-dev 2004-12-05 12:42:21 UTC
... and an `ldconfig` couldn't hurt, but shouldn't necessarily be needed.
Comment 6 Cedric Godin 2004-12-05 12:43:35 UTC
already did it but retried with same result.
Comment 7 Armando Di Cianno (RETIRED) gentoo-dev 2004-12-05 12:58:03 UTC
Hrm.  Well, there are a couple more things we can try.

First, clean out temp files: 'rm -Rf /var/tmp/portage/*', then try again (Making sure the gcc-libffi is off).

Second, if dev-libs/libffi is installed, what is the output of:
`ls /usr/include/libffi`
`ls /usr/lib/libffi`

Third, what does /etc/ looks like?

Fourth, when you did the 'env-update' and 'source /etc/profile', did you try to do the emerge in the same terminal as the one you executed those commands, or no?
Comment 8 Cedric Godin 2004-12-05 13:39:06 UTC
1st I checked in the configure.log and found

configure:13864: checking "FFI library usage"                                                                                                                          
configure:13891: gcc -o conftest -mcpu=athlon-xp -Os -pipe  -fgnu-runtime -I/usr/GNUstep/System/Library/Headers -Wl,-O1 -L/usr/GNUstep/System/Library/Libraries/gnu-gnu
-gnu -L/usr/GNUstep/System/Library/Libraries conftest.c -lffi -ldl  -lz >&5                                                                                            
`-mcpu=' is deprecated. Use `-mtune=' or '-march=' instead.                                                                                                            
cc1: warning: command line option "-fgnu-runtime" is valid for ObjC/ObjC++ but not for C                                                                               
/usr/lib/gcc/i686-pc-linux-gnu/3.4.1/../../../../i686-pc-linux-gnu/bin/ld: cannot find -lffi                                                                           
collect2: ld returned 1 exit status

(after a `ldconfig, env-update, source /etc/profile`,I tried `gcc -lffi` and same error)

then I rm /var/tmp/portage/*

and tried again a `gcc -lffi` and same result.

2nd ls /usr/lib/libffi


ls /usr/include/libffi

ffi.h  ffitarget.h

3rd /etc/ :


4th :

Once yes, twice not ;-)
Once in a screen terminal, once in a normal one.
Comment 9 Cedric Godin 2004-12-05 14:02:37 UTC
OK I tried smthing and it worked :
i just ln -s the /usr/lib/libffi/* in /usr/lib/

So I think the bug is related to gcc (ld) and not gnustep or libffi that need to create those symlinks.
Comment 10 Armando Di Cianno (RETIRED) gentoo-dev 2004-12-05 14:06:25 UTC