The latest stable version of bogofilter-0.92.8 does not compile if gsl is not installed. The error message is: libbf_gsl.a: File not found. gsl is not even listed as a dependancy of bogofilter. Further more, bogofilter does not compile with the latest stable version of gsl in portage (gsl-1.4). I was only able to install bogofilter by installing the unstable gsl-1.7. Reproducible: Always Steps to Reproduce: 1. emerge -C gsl bogofilter 2. emerge bogofilter 3. Actual Results: Compilation fails with error: libbf_gsl.a: File not found. Expected Results: Installed. Portage 2.0.51.22-r3 (default-linux/x86/2005.0, gcc-3.4.4, glibc-2.3.5-r0, 2.6. 13-gentoo-r2 i686) ================================================================= System uname: 2.6.13-gentoo-r2 i686 Pentium III (Coppermine) Gentoo Base System version 1.6.13 distcc 2.18.3 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [enabled] ccache version 2.3 [disabled] dev-lang/python: 2.3.5, 2.4.1-r1 sys-apps/sandbox: 1.2.10 sys-devel/autoconf: 2.13, 2.59-r6 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6 sys-devel/binutils: 2.15.92.0.2-r10 sys-devel/libtool: 1.5.18-r1 virtual/os-headers: 2.6.11-r2 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CBUILD="i686-pc-linux-gnu" CFLAGS="-O2 -march=pentium3 -mfpmath=sse -pipe -fomit-frame-pointer" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/2/share/config /usr/kde/3.4/env /usr/kde/3.4/ share/config /usr/kde/3.4/shutdown /usr/kde/3/share/config /usr/lib/X11/xkb / usr/lib/mozilla/defaults/pref /usr/share/config /var/qmail/control" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-O2 -march=pentium3 -mfpmath=sse -pipe -fomit-frame-pointer" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig distcc distlocks sandbox sfperms strict" GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/Linux/ distributions/gentoo" LDFLAGS="-Wl,-O1" MAKEOPTS="-j8" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portage" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="x86 3dfx X aac acpi alsa apache apache2 apm arts artswrappersuid asm audiofile avi bash-completion berkdb bitmap-fonts bonobo bzip2 c++ ccache cdb cdinstall cdr cdrom cgi cpudetection crypt css cups curl dbus directfb disk- cache divx4linux doc dvd dvdr dvdread eds emboss encode esd ethereal exif expat ext-doc ext-man ext-openoffice ext-pdf ext-ps ext-rtf ext-xls fam fastcgi ffmpeg flac flash foomaticdb fortran ftp gd gdbm gif gimp gimpprint glut gmp gpm gstreamer gtk2 gtkhtml guile hal idn imagemagick imap imlib java jpeg junit kde kdeenablefinal lcms libg++ libwww lirc lua mad mhash mikmod mmx mng mono motif mozilla moznomail mp3 mpeg mysql mythtv ncurses nls nptl odbc ogg oggvorbis on- the-fly-crypt opengl pam pcre pdflib perl php pic png ppds python qt quicktime quotes readline real recode samba sdk sdl spell sql sqlite sse ssl subversion svga tcltk tcpd threads tiff transcode truetype truetype-fonts type1-fonts udev usb v4l v4l2 visualization voodoo3 vorbis win32codecs xine xinerama xml xml2 xmms xrandr xv xvid zlib zvbi userland_GNU kernel_linux elibc_glibc" Unset: ASFLAGS, CTARGET, LANG, LC_ALL, LINGUAS
Well, you are right the ebuild is not correct. In 0.92.8 gsl is a dependency if it is present. If it is not present bogofilter links a included gsl version. But it should never fail. So i don't understand why your compilation failed. I just commited a new ebuild for 0.92.8 where always the included gsl is used. If you want please test it. If it fails again i need more input. If you start using bogofilter go with 1.0.0. It has many fixes and best upgrading precedure from 0.92.8 to 1.0.0 will include a retraining of the database.
I tested this just now. Compiles properly with or without gsl. I also checked that the application launches both ways. Since I am not an official tester yet, I can't mark "Tested".
Same here on ~x86 for mail-filter/bogofilter-1.1.3 Looking at the log, I copy some interesting lines: ./configure ... --with-included-gsl --build=i686-pc-linux-gnu GSL_LIBS=libbf_gsl.a i686-pc-linux-gnu-gcc -DBOGOFILTER ... -o bogofilter bogofilter.o main.o \ libbogofilter.a strlcpy.o strlcat.o /usr/lib/libdb.so libbf_gsl.a -lm i686-pc-linux-gnu-ar cru libbf_gsl.a libbf_gsl_a-chisq.o ... libbf_gsl_a-minmax.o i686-pc-linux-gnu-gcc: libbf_gsl.a: No such file or directory It looks like internal gsl was configured, even compiled, but while the archive was still being built, another make process tried to link against it. Looks very much like a parallel build issue. The standard workaround of setting MAKEOPTS=-j1 made bogofilter compile for me. But of course this is not a proper fix. Looking at src/Makefile as it is generated by configure, I see this: bogofilter$(EXEEXT): $(bogofilter_OBJECTS) $(bogofilter_DEPENDENCIES) @rm -f bogofilter$(EXEEXT) $(LINK) $(bogofilter_LDFLAGS) $(bogofilter_OBJECTS) $(bogofilter_LDADD) \ $(LIBS) GSL_LIBS is part of bogofilter_LDADD but not bogofilter_DEPENDENCIES. So I'd guess this change to Makefile.am might help: --- src/Makefile.am 2006-12-05 23:30:20.000000000 +0100 +++ src/Makefile.am 2006-12-05 23:30:20.000000000 +0100 @@ -26,6 +26,7 @@ ../gsl/sys/pow_int.c ../gsl/sys/minmax.c noinst_LIBRARIES += libbf_gsl.a libbf_gsl_a_CPPFLAGS= -I$(top_srcdir) +bogofilter_DEPENDENCIES += libbf_gsl.a endif if USE_GCC4 Of course, if you change that you'd have to rerun autoconf, which I know near to nothing about, so I'll leave this to more experienced devs. I reported this upstream as http://sourceforge.net/tracker/index.php?func=detail&aid=1609654&group_id=62265&atid=499997
The patch, as suggested, causes a complaint of "+=" being used before bogofilter_DEPENDENCIES has been set. The following patch puts the GSL test after setting bogofilter_DEPENDENCIES thus handling the complaint. However not having an SMP system I can't test the patch. Note: just running "make" will regenerate src/Makefile from src/Makefile.am (without manually running autoconf). Please let me know if the patch works! Index: src/Makefile.am =================================================================== RCS file: /cvsroot/bogofilter/bogofilter/src/Makefile.am,v retrieving revision 1.141 diff -u -r1.141 Makefile.am --- src/Makefile.am 30 Nov 2006 00:14:16 -0000 1.141 +++ src/Makefile.am 6 Dec 2006 00:37:33 -0000 @@ -12,22 +12,6 @@ noinst_LIBRARIES = libbogofilter.a -if NEED_GSL -libbf_gsl_a_CFLAGS=$(AM_CFLAGS) -DRENAMEFILES -libbf_gsl_a_SOURCES= \ -../gsl/cdf/chisq.c ../gsl/cdf/gamma.c \ -../gsl/specfunc/gamma_inc.c ../gsl/err/error.c \ -../gsl/sys/infnan.c ../gsl/sys/fdiv.c \ -../gsl/specfunc/exp.c ../gsl/specfunc/trig.c \ -../gsl/specfunc/log.c ../gsl/specfunc/psi.c \ -../gsl/specfunc/zeta.c ../gsl/specfunc/elementary.c \ -../gsl/err/stream.c ../gsl/specfunc/expint.c \ -../gsl/specfunc/erfc.c ../gsl/sys/coerce.c \ -../gsl/sys/pow_int.c ../gsl/sys/minmax.c -noinst_LIBRARIES += libbf_gsl.a -libbf_gsl_a_CPPFLAGS= -I$(top_srcdir) -endif - if USE_GCC4 AM_CPPFLAGS = -iquote$(top_srcdir)/gnugetopt -iquote$(top_srcdir)/trio \ -I$(srcdir) @GSL_CFLAGS@ -I$(top_srcdir)/gsl/specfunc -I$(top_srcdir) @@ -59,8 +43,27 @@ bogofilter_LDADD = $(LDADD) $(LIBDB) $(GSL_LIBS) bogoutil_LDADD = $(LDADD) $(LIBDB) configtest_LDADD = $(LDADD) $(LIBDB) +bogofilter_DEPENDENCIES = $(LDADD) + +if NEED_GSL +libbf_gsl_a_CFLAGS=$(AM_CFLAGS) -DRENAMEFILES +libbf_gsl_a_SOURCES= \ +../gsl/cdf/chisq.c ../gsl/cdf/gamma.c \ +../gsl/specfunc/gamma_inc.c ../gsl/err/error.c \ +../gsl/sys/infnan.c ../gsl/sys/fdiv.c \ +../gsl/specfunc/exp.c ../gsl/specfunc/trig.c \ +../gsl/specfunc/log.c ../gsl/specfunc/psi.c \ +../gsl/specfunc/zeta.c ../gsl/specfunc/elementary.c \ +../gsl/err/stream.c ../gsl/specfunc/expint.c \ +../gsl/specfunc/erfc.c ../gsl/sys/coerce.c \ +../gsl/sys/pow_int.c ../gsl/sys/minmax.c +noinst_LIBRARIES += libbf_gsl.a +libbf_gsl_a_CPPFLAGS= -I$(top_srcdir) +bogofilter_DEPENDENCIES += libbf_gsl.a +endif EXTRA_PROGRAMS=panicenv + panicenv_SOURCES=panicenv.c panicenv_LDADD=$(LIBDB)
Martin, does this patch work for you? I've problems to reproduce the failure. I can see it fail once, twice but then it just works with `MAKEOPTS=-j8 USE=-gsl emerge bogofilter`.
Torsten and Martin, Since Torsten's results seem pretty good, I'll commit the change. If you encounter further problems please experiment with makefile changes and let me know what you learn. Thanks.
bogofilter-1.1.3 now applies the patch. Closing this bugreport. Please reopen it if there are further problems. Thanks.