Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 37850 - dev-libs/boost-1.31.0_alpha1 does not install any library files
Summary: dev-libs/boost-1.31.0_alpha1 does not install any library files
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Library (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: George Shapovalov (RETIRED)
Depends on:
Blocks: 32174
  Show dependency tree
Reported: 2004-01-10 17:47 UTC by Andreas Pokorny
Modified: 2004-03-16 23:55 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Note You need to log in before you can comment on or make changes to this bug.
Description Andreas Pokorny 2004-01-10 17:47:25 UTC
I emerged dev-libs/boost-1.31.0_alpha1, successfully. But the shared object files and archives libboost_signals.{so,a} libboost_threads.{so,a} and libbost_python.{so,a} are missing. 

Reproducible: Always
Steps to Reproduce:
1.emerge dev-libs/boost
2.find /usr/lib -iname 'libboost*'

Expected Results:  

Portage 2.0.49-r20 (default-x86-1.4, gcc-3.3.2, glibc-2.3.3_pre20031222-r0, 2.6.0)
System uname: 2.6.0 i686 AMD Duron(tm) processor
Gentoo Base System version
distcc 2.11.2 i686-pc-linux-gnu (protocols 1 and 2) (default port 3632) [disabled]
CFLAGS="-march=athlon -mmmx -m3dnow -fomit-frame-pointer -O3 -pipe"
CONFIG_PROTECT="/etc /usr/X11R6/lib/X11/xkb /usr/kde/2/share/config
/usr/kde/3.1/share/config /usr/kde/3.2/share/config /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/env.d"
CXXFLAGS="-march=athlon -mmmx -m3dnow -fomit-frame-pointer -O3 -pipe"
FEATURES="autoaddcvs ccache sandbox"
USE="3dnow X aalib alsa apm arts avi berkdb cdr crypt cups directfb dvd encode
esd foomaticdb gdbm gif gphoto2 gpm gstreamer gtk gtk2 imlib java jpeg kde ldap
libg++ libwww mad mikmod mmx motif mpeg mysql ncurses oggvorbis opengl oss pam
pdflib png postgres ppds python qt quicktime readline sasl scanner sdl slang
spell ssl svga tcltk tcpd tetex truetype x86 xml2 xmms xv zlib"
Comment 1 Karl-Johan Karlsson 2004-01-21 08:10:00 UTC
There are two problems:

1) the ebuild looks for libraries to install in ${S}/libs, but that's just source code - the binaries are in ${S}/bin/boost/libs.

2) 8 copies of each library is built, with all different combination of {{static linking, dynamic linking}, {debug, release}, {multithreaded, singlethreaded}}. This is documented in more/getting_started.html in the tarball (not on the site, as far as I can see).

You can give Jam (the build system) arguments that selects which of these are built. Only the desired (FSVO) one(s) should be built, renamed and merged.
Comment 2 George Shapovalov (RETIRED) gentoo-dev 2004-02-03 00:26:49 UTC
Hi guys.

Karl-Johan: thanks for some suggestions. I've prepared a new cvs snapshot and did a few fixes to the ebuild. I issues the _alpha2 ebuild, now in portage, please test.

As for the preparing all the variations, I would rather get it fixed and tested first, then we can move on to improving the ebuild.. Any idea on when the release (1.31) is gonna be out?

Comment 3 Karl-Johan Karlsson 2004-02-03 08:37:05 UTC
It installs OK, but building programs with it fails.

Tests done with and gcc version 3.3.2 20031022 (Gentoo Linux 3.3.2-r3, propolice) show:

Compiles OK:
   $ g++ -o regex.o -c regex_split_example_1.cpp

Linking fails:
   $ g++ -o regex -lboost_regex-gcc-1_31 regex.o

   regex.o(.text+0x2b0): In function `__tcf_0':
   : undefined reference to `boost::reg_expression<char, boost::regex_traits<char>, std::allocator<char> >::~reg_expression [in-charge]()'
   [... 50 lines of link failures, all of symbols that are present (according to "objdump --dynamic-syms | c++filt") in, later...]
   collect2: ld returned 1 exit status

But if I make a symlink: ->

linking succeeds:
   $ g++ -o regex -lboost_regex regex.o
   $ ./regex
   Enter text to split (or "quit" to exit): quit

and produces an executable about which ldd thinks:
   $ ldd regex | grep boost => /usr/lib/ (0x471eb000)
Comment 4 Karl-Johan Karlsson 2004-02-03 08:59:16 UTC
After reading the GCC manual more carefully, changing the linking order works both with and without the symlink:

   $ g++ -o regex regex.o -lboost_regex-gcc-1_31
   [No errors]
   $ g++ -o regex regex.o -lboost_regex
   [No errors]
Comment 5 George Shapovalov (RETIRED) gentoo-dev 2004-02-03 11:36:51 UTC
yea, gcc is sensitive to the order of argumens during linking, even in the same command line. However it would be nice indeed to have the symlinnks created during install. 
You may test the -r1 now ;). It installs the symlinks that were created during the build. Althought they also have all these long and sometimes cryptic names. It might be usefull to create some other simplified symlinks, but with the many files distributed all over the place I am not sure what kinds of simplified names to use, plus it should definitely be automated..

Comment 6 Karl-Johan Karlsson 2004-02-04 08:55:07 UTC
Doesn't work for me - the installed symlinks are broken: -> bin/boost/libs/regex/build/

As for shorter names, I'd first like to have symlinks with version numbers stripped from the library base names and then have the multithreaded release builds as defaults and everything else as special cases, so that we have:

   libboost_LIB.a -> libboost_LIB-gcc-mt.a
   libboost_LIB-gcc-mt.a -> libboost_LIB-gcc-mt-1_31.a -> ->

plus symlinks for *.so -> *.so.1.31.0 like we have now.

This way, at least nothing will break if you link with just "-lboost_LIB", even if you might lose a small fraction of the speed of the single-threaded libraries. But those who need that can probably figure out how to type "-lboost_LIB-gcc" instead.
Comment 7 George Shapovalov (RETIRED) gentoo-dev 2004-02-04 12:28:54 UTC
Thanks for testing.

I masked the -r1 for now. Also I got some feedback via email and I am persuading that person to post his request for links here as well :).
I'll now wait for the feedback and will most likely get back to this bug next week. Given no negative feedback on the binaries themselves I am thinking to mark    _alpha2 stable (as 1.30 no loger works) and meanwhile work on -r1 on symlinks.

Comment 8 Gen Zhang 2004-02-06 02:51:18 UTC
Could you not use something like what qt does, and simply move the entire src tree into /usr or /usr/lib and set up an env.d file? You then _remove_ all files that you're _certain_ are not needed, to go on a diet. Of course, I could also be talking out of my ass here...
Comment 9 George Shapovalov (RETIRED) gentoo-dev 2004-02-13 17:14:53 UTC
>Could you not use something like what qt does, and simply move the entire src >tree into /usr or /usr/lib and set up an env.d file? 

Well, we might, but I am afraid in this case this is not gonna be that usefull. Try looking at the source tree ;). Not only yo will have to add a ton of -L options when you will compile your stuff against libboost, but also it is far easier to install only necessary libs that to remove "extra cruft" for there is a lot of the latter.

On another note, the modified -r1 that should install appropriate symlinks is upcoming :).

Comment 10 George Shapovalov (RETIRED) gentoo-dev 2004-02-13 17:30:41 UTC
Ok, the -r1 is done and unmasked (in package.mask). Please test.
This revision should install the full set of appropriate symlinks without version and also default symlinks to gcc-mt version..
We might look into modifying what variant is chose with the useflags eventually, but lets first get this package fixed and into stable..

Comment 11 Graham Hudspith 2004-02-14 05:41:27 UTC
Tried the latest/greatest boost-1.31.0_alpha2-r1.ebuild. Everything seems to
build and install correctly, including the symlinks. Tried my Boost Threads
test program and all works well.

Good job!
Comment 12 George Shapovalov (RETIRED) gentoo-dev 2004-03-16 23:55:43 UTC
Release is out and in stable, closing the bug..