Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 74048 - dev-libs/boost-1.32.0.ebuild doesn't compile properly and installs garbage
Summary: dev-libs/boost-1.32.0.ebuild doesn't compile properly and installs garbage
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Development (show other bugs)
Hardware: x86 Linux
: High normal
Assignee: Disenchanted (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-12-10 16:52 UTC by Wojciech Milkowski
Modified: 2004-12-20 10:35 UTC (History)
3 users (show)

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


Attachments
variable to prevent heinous boost-jam lossage (boost-1.32.0.ebuild,1.99 KB, text/plain)
2004-12-12 11:22 UTC, Daniel Holth
Details
more convenient way of files hierarchy (boost-1.32.0.diff,736 bytes, patch)
2004-12-18 15:18 UTC, Wojciech Milkowski
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Wojciech Milkowski 2004-12-10 16:52:19 UTC
When I tried to upgrade boost-1.32, compile script could not be found and no error code was returned, so there was nothing to install which resulted in silent remove of old boost installation.

here is the log:

athlon wojtek # emerge --oneshot dev-libs/boost
Calculating dependencies  ...done!
>>> emerge (1 of 1) dev-libs/boost-1.32.0 to /
>>> md5 src_uri ;-) boost_1_32_0.tar.bz2
>>> Unpacking source...
>>> Unpacking boost_1_32_0.tar.bz2 to /var/tmp/portage/boost-1.32.0/work
>>> Source unpacked.
###
### Using 'gcc' toolset.
###
rm -rf bootstrap.gcc
mkdir bootstrap.gcc
gcc -o bootstrap.gcc/jam0 command.c compile.c execnt.c execunix.c execvms.c expand.c filent.c fileos2.c fileunix.c filevms.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c newstr.c option.c parse.c pathunix.c pathvms.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c pwd.c class.c native.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c
./bootstrap.gcc/jam0 -f build.jam --toolset=gcc --toolset-root= clean
...found 1 target...
...updating 1 target...
...updated 1 target...
./bootstrap.gcc/jam0 -f build.jam --toolset=gcc --toolset-root=
...found 82 targets...
...updating 6 targets...
.mkdir. bin.linuxx86
.cc. bin.linuxx86/yyacc
.cc. bin.linuxx86/mkjambase
.mkjambase. jambase.c
.cc. bin.linuxx86/jam
.link. bin.linuxx86/bjam
...updated 6 targets...
/usr/portage/dev-libs/boost/boost-1.32.0.ebuild: line 31: ./tools/build/jam_src/bin.linux/bjam: Nie ma takiego pliku ani katalogu
>>> Test phase [not enabled]: dev-libs/boost-1.32.0

>>> Install boost-1.32.0 into /var/tmp/portage/boost-1.32.0/image/ category dev-libs

[...]

Reproducible: Always
Steps to Reproduce:
emerge dev-libs/boost-1.32.0
Comment 1 Chris Mayo 2004-12-11 07:20:03 UTC
The ebuild contains a path to bjam (twice):

./tools/build/jam_src/bin.linux/bjam

try changing it to (at least on x86):

./tools/build/jam_src/bin.linuxx86/bjam
Comment 2 Disenchanted (RETIRED) gentoo-dev 2004-12-11 10:22:13 UTC
added ${arch} to bjam path
Comment 3 Disenchanted (RETIRED) gentoo-dev 2004-12-11 10:40:07 UTC
fails way down the line, working on it
Comment 4 Disenchanted (RETIRED) gentoo-dev 2004-12-11 10:44:11 UTC
it shouldn't || die on stage

testing

Comment 5 Disenchanted (RETIRED) gentoo-dev 2004-12-11 11:23:16 UTC
please test

all should be well now

Comment 6 Chris Mayo 2004-12-11 14:24:50 UTC
Declaring arch local in src_compile() makes it invisible to src_install(), so the install still can't find bjam and fails. Comment out the "local arch" line and it works just fine.

Another thing, wouldn't it be easier to use python_version() in the python eclass instead of all the sed stuff in this ebuild?
Comment 7 Disenchanted (RETIRED) gentoo-dev 2004-12-11 15:59:43 UTC
nullzone boost # ls /usr/include/boost/
Display all 139 possibilities? (y or n)
algorithm/                     dynamic_bitset/                last_value.hpp                 program_options/               spirit/
aligned_storage.hpp            dynamic_bitset_fwd.hpp         lexical_cast.hpp               program_options.hpp            spirit.hpp
any.hpp                        dynamic_bitset.hpp             limits.hpp                     progress.hpp                   state_saver.hpp
archive/                       enable_shared_from_this.hpp    logic/                         property_map.hpp               static_assert.hpp
array.hpp                      filesystem/                    math/                          property_map_iterator.hpp      static_warning.hpp
assert.hpp                     format/                        math_fwd.hpp                   python/                        strong_typedef.hpp
assign/                        format.hpp                     mem_fn.hpp                     python.hpp                     test/
assign.hpp                     function/                      mpl/                           random/                        thread/
bind/                          functional.hpp                 multi_array/                   random.hpp                     thread.hpp
bind.hpp                       function_equal.hpp             multi_array.hpp                range/                         throw_exception.hpp
blank_fwd.hpp                  function.hpp                   multi_index/                   range.hpp                      timer.hpp
blank.hpp                      function_output_iterator.hpp   multi_index_container_fwd.hpp  rational.hpp                   token_functions.hpp
call_traits.hpp                generator_iterator.hpp         multi_index_container.hpp      ref.hpp                        token_iterator.hpp
cast.hpp                       get_pointer.hpp                next_prior.hpp                 regex/                         tokenizer.hpp
checked_delete.hpp             graph/                         noncopyable.hpp                regex_fwd.hpp                  tuple/
compatibility/                 implicit_cast.hpp              nondet_random.hpp              regex.h                        type.hpp
compressed_pair.hpp            indirect_reference.hpp         none.hpp                       regex.hpp                      type_traits/
concept_archetype.hpp          integer/                       non_type.hpp                   scoped_array.hpp               type_traits.hpp
concept_check.hpp              integer_fwd.hpp                numeric/                       scoped_ptr.hpp                 utf8_codecvt_facet.hpp
config/                        integer.hpp                    operators.hpp                  serialization/                 utility/
config.hpp                     integer_traits.hpp             optional/                      shared_array.hpp               utility.hpp
crc.hpp                        intrusive_ptr.hpp              optional.hpp                   shared_container_iterator.hpp  variant/
cregex.hpp                     io/                            pending/                       shared_ptr.hpp                 variant.hpp
cstdint.hpp                    io_fwd.hpp                     pfto.hpp                       signal.hpp                     vector_property_map.hpp
cstdlib.hpp                    iterator/                      pointee.hpp                    signals/                       version.hpp
current_function.hpp           iterator_adaptors.hpp          pool/                          signals.hpp                    visit_each.hpp
date_time/                     iterator.hpp                   preprocessor/                  smart_cast.hpp                 weak_ptr.hpp
detail/                        lambda/                        preprocessor.hpp               smart_ptr.hpp
nullzone boost # ls /usr/include/boost/

better?
Comment 8 Wojciech Milkowski 2004-12-11 17:13:56 UTC
Now it seems to compile, but when I tried to compile monotone (http://bugs.gentoo.org/show_bug.cgi?id=39383) configure stops with that log in config.log:

configure:7968: checking libboost_unit_test_framework library
configure:7985: i686-pc-linux-gnu-g++ -o conftest -fno-stack-protector-all -fno-stack-protector -O2 -fno-strict-aliasing   conftest.cc -lboost_unit_test_framework  >&5
conftest.cc:33:42: boost/test/unit_test_suite.hpp: No such file or directory
conftest.cc:34:37: boost/test/test_tools.hpp: No such file or directory
conftest.cc:35: error: `boost' has not been declared
conftest.cc:35: error: expected nested-name-specifier before "test_suite"
conftest.cc:35: error: `test_suite' has not been declared
conftest.cc:36: error: expected constructor, destructor, or type conversion before '*' token
conftest.cc:36: error: expected `,' or `;' before '*' token
configure:7991: $? = 1
configure: failed program was:
| /* confdefs.h.  */

I'm not sure if that is OK, is version 1.31 incompatibile with 1.32?
Comment 9 Wojciech Milkowski 2004-12-11 17:18:52 UTC
Now I see, I checked /var/db/pkg/dev-libs/boost-1.32.0/CONTENTS file, and I assumed that there is only /usr/share/doc/boost/* instlled with documentaion.
So the ebuild is still invalid.
Comment 10 Disenchanted (RETIRED) gentoo-dev 2004-12-11 18:45:55 UTC
yes it was, now if you know boost really good (i used it but only the source header stuff, never used bjam, (pointing VS.net at the dir and voila all works (i used))

ok this one builds most all

why i asked if you know boost well? it builds all but 4 targets from looks of it

at least if you sync 35 minutes after this message there will be a 1.32.0 ebuild that installs boost, not only the docs

if it passes your test case i dont know, id like to hear about it for sure

reopening bug so others dont create duplicates

Comment 11 Wojciech Milkowski 2004-12-12 05:57:52 UTC
It still instals only /usr/share directory for me, I noticed that after compilation, which I think works well, there's another problem with finding bjam during install stage and I think that's the reason.
Comment 12 Disenchanted (RETIRED) gentoo-dev 2004-12-12 08:56:03 UTC
nothing is installed for you in /usr/include/boost/ ?

can you --sync and try again?

Comment 13 Wojciech Milkowski 2004-12-12 09:56:52 UTC
I did it about 4 times today (last time about 30 min. ago), but there's still the same problem. I have no /usr/include/boost directory after instalation of boost-1.32, and documentation is only thing that exists on my disk right now form this ebuild.
Comment 14 Daniel Holth 2004-12-12 10:53:13 UTC
I tried it today also, Sun, 12 Dec 2004 13:51:54 -0500, the newer version actually compiles the package but does not install the compiled bits. x86 gcc 3.4.3
Comment 15 Chris Mayo 2004-12-12 11:16:16 UTC
The full stop got lost off the front of the install line.

i.e.:

src_install () {
/tools/build/jam_src/bin.linux${arch}/bjam ${MAKEOPTS} \

should be:

src_install () {
./tools/build/jam_src/bin.linux${arch}/bjam ${MAKEOPTS} \
Comment 16 Daniel Holth 2004-12-12 11:22:55 UTC
Created attachment 45838 [details]
variable to prevent heinous boost-jam lossage

better to refer to this binary by its full name only once.
Comment 17 Daniel Holth 2004-12-12 11:25:04 UTC
Does not install boost.build
Comment 18 Disenchanted (RETIRED) gentoo-dev 2004-12-12 14:49:54 UTC
${BOOSTJAM} is being added and tested right now

id like to know how i ended up with the dir+files, possibly it wasnt cleaned up, then again considering i didnt have any prvious  version of boost i cant explain having the files

i apologize for the extra time it takes to get this right and thank you all for your input

Comment 19 Disenchanted (RETIRED) gentoo-dev 2004-12-13 07:35:28 UTC
i guess i never mentioned i added the fixed and seemingly working ebuild to portage

--sync please :)

Comment 20 Disenchanted (RETIRED) gentoo-dev 2004-12-13 16:07:51 UTC
no more problem comments, files are installed, looks done
Comment 21 Wojciech Milkowski 2004-12-14 06:28:34 UTC
There's still one problem, but I don't know if it is boost related or this build related. Every installed library has 'gcc-*-1_32' suffix which prevents properly linking against them. Also include directory looks like it could be more versions of boost instlalled together.
Maybe it should be fixed during install stage?
Comment 22 Wojciech Milkowski 2004-12-18 15:18:34 UTC
Created attachment 46303 [details, diff]
more convenient way of files hierarchy
Comment 23 Wojciech Milkowski 2004-12-18 15:19:13 UTC
I looked at the way of instalation boost, and figured out that there's a lot of hardlinks and symlinks between libraries that are simply redundant. I made more common way to organize this files. First I remove all redundant files, and then I make more conventional symlinks (without 1_32 version suffix, because of eventually backward compatibility) to proper libraries. Last thing is to make symlinks to libraries that we will link against by default (without worrying about suffixes). I choosed multitherated dynamic versions like earlier ebuild did.

I send patch for that modification. What do you think about that?
Comment 24 Wojciech Milkowski 2004-12-18 15:21:20 UTC
I forgot, I checked it if there are really redundant files:
for i in /usr/lib/libboost*1_32.{a,so}; do diff -s $i `echo $i | sed 's/\(.*\)-1_32\(.*\)/\1\2/'`; done
Comment 25 Gen Zhang 2004-12-20 05:44:35 UTC
You might find that using --layout=system will sort out the extraneous symlinking and various 1_32 in file names.
Comment 26 Wojciech Milkowski 2004-12-20 10:35:02 UTC
That's right, I did't read bjam/boost options. I think this flag should be used by default.