Bug 597020 - Fatal error compiling Performous (and I suppose other programs too)
Summary: Fatal error compiling Performous (and I suppose other programs too)
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Fedora
Classification: Fedora
Component: boost
Version: 13
Hardware: All
OS: Linux
low
high
Target Milestone: ---
Assignee: Benjamin Kosnik
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
: 602874 (view as bug list)
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2010-05-27 23:27 UTC by Peque
Modified: 2013-08-09 05:49 UTC (History)
10 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2010-08-12 07:19:12 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)
spec file patch (1.78 KB, patch)
2010-05-30 11:41 UTC, Aurelien Bompard
no flags Details | Diff
Patch for the paths (871 bytes, patch)
2010-05-30 11:42 UTC, Aurelien Bompard
no flags Details | Diff

Description Peque 2010-05-27 23:27:15 UTC
Version-Release number of selected component (if applicable):
boost-1.41.0



How reproducible:
(Downloading -8 MiB aprox- and trying to compile Performous)
$ git clone git://git.performous.org/gitroot/performous/performous
$ cd performous
$ mkdir build
$ cd build
$ cmake ../



Then you'll get this error:
--------------------------------------------------------
globbed: ../../boost-1.41.0//cmake//BoostConfig.cmake
FOUNDVERSION=1.41.0
CMake Error at /usr/share/boost-1.41.0/cmake/BoostConfig.cmake:28 (include):
  include could not find load file:

    /usr//usr/lib64/mpich2/lib/Boost.cmake
Call Stack (most recent call first):
  /usr/share/cmake/boost/BoostConfig.cmake:15 (include)
  cmake/Modules/FindBoost.cmake:81 (find_package)
  libs/plugin++/CMakeLists.txt:40 (find_package)


CMake Error at /usr/share/boost-1.41.0/cmake/BoostConfig.cmake:87 (message):
  Boost components not found: filesystem
Call Stack (most recent call first):
  /usr/share/cmake/boost/BoostConfig.cmake:15 (include)
  cmake/Modules/FindBoost.cmake:81 (find_package)
  libs/plugin++/CMakeLists.txt:40 (find_package)
------------------------------------------------------

So, if you go to "/usr/share/boost-1.41.0/cmake/BoostConfig.cmake:28"
you'll find this line:
------------------------------------------------------
include("/usr//usr/lib64/mpich2/lib/Boost.cmake")
------------------------------------------------------
Is it right? ("/usr//usr/")

Which package provides that file anyway? (/usr/lib64/mpich2/lib/Boos.cmake) shouldn't it be installed by default as required by cmake?


Hope this will help. Thanks for you attention and sorry for my english :-)

Comment 1 Rex Dieter 2010-05-28 12:55:08 UTC
That's part of boost packaging, re-assigning.  Thanks for spotting that!

Comment 2 Aurelien Bompard 2010-05-30 11:40:49 UTC
Nice to see I'm not the only one :)

I've found where the bug comes from, and made two patches to boost. I'll attach them now.

Two bugs actually : the spec file is removing the .cmake files which are included by /usr/share/boost-1.41.0/cmake/BoostConfig.cmake, and the include paths at the top of this file are wrong (duplicate "/usr")

Comment 3 Aurelien Bompard 2010-05-30 11:41:59 UTC
Created attachment 418012 [details]
spec file patch

Comment 4 Aurelien Bompard 2010-05-30 11:42:31 UTC
Created attachment 418013 [details]
Patch for the paths

Comment 5 Peque 2010-06-02 15:25:03 UTC
Hi Aurelien,

I've heard that boost-1.41 is not being supported or led by anybody... Is that true? Isn't anybody working on it? :-S

Comment 6 Petr Machata 2010-06-03 16:07:49 UTC
Hi, thanks for the patch.  It doesn't fix the problem for me though, the Cmake file that gets installed is the one from the parallel build, which doesn't report all the necessary modules.  Performous then complains that we don't ship boost filesystem.

The boost build chain doesn't seem to play nicely with the idea that we build it per-partes, serial stuff and then parallel stuff with two backends.  The file usr/share/boost-1.41.0/cmake/BoostConfig.make contains this line:
  include("/usr/lib/mpich2/lib/Boost.cmake")
... which of course contains just the parallel libraries.  I think we need to post-process all the various Boost.cmakes and merge them somehow.

Also notice that the file is in /share/, but it includes things from /lib/.  That doesn't play nicely with multilib, where this include will lead to /lib64/ and we get a multilib conflict.

I'm looking into these things now.

Comment 7 Petr Machata 2010-06-04 14:33:02 UTC
These files are involved in boost cmake support:
 - /usr/lib{,64}/Boost.cmake, /usr/lib{64,}/{openmpi,mpich2}/lib/Boost.cmake
   these contain a list of libraries that we deliver.  What we need I think is keep the file in /usr/lib intact, for serial compilation.  Files in openmpi and mpich2 only contain parallel libraries, and we need to add the extra stuff from /usr/lib/Boost.cmake there.

 - /usr/share/boost-$ver/cmake/BoostVersion.cmake
   which does the setup itself.  It dispatches to /usr/lib{,64}/Boost.cmake to learn about the libraries that are installed.  That means that in fact this file should be in /usr/lib{,64}/boost-$ver/cmake/BoostVersion.cmake.  Also in fact the file now includes /usr/lib/mpich2/lib/Boost.cmake, which needs to be fixed, and this file also needs to be taught about the possibility of parallel builds (https://fedoraproject.org/wiki/Packaging:MPI).

 - /usr/share/cmake/boost/BoostConfig.cmake
   which just dispatches to /usr/share/boost-$ver/cmake/BoostVersion.cmake since that files needs to be moved to lib, this one cannot be in shared either and ends up in /usr/lib{,64}/boost/.  That's ok, cmake should manage to find it there (if it looks in lib64 for 64bit builds that is).

 - /usr/share/cmake/boost/BoostConfigVersion.cmake
   this looks at all various /usr/share/boost-*/cmake/BoostConfig.cmake and picks the one with the right version.  Since these files are moved to lib{,64}, this one becomes multilib-unsafe, too, and needs to be moved to lib{,64}.

 - /usr/share/boost-$ver/cmake/BoostConfigVersion.cmake
   which can stay as it is

Actually one option is simply to not ship cmake files at all.  Cmake was able to find boost before and likely will be for the time to come.  So this is what I will do now so that we have boost that can be built against.

Comment 8 Fedora Update System 2010-06-04 16:43:39 UTC
boost-1.41.0-9.fc13 has been submitted as an update for Fedora 13.
http://admin.fedoraproject.org/updates/boost-1.41.0-9.fc13

Comment 9 Petr Machata 2010-06-04 16:44:27 UTC
Note the update only has the cmake files dropped, as I've written in the last paragraph.

Comment 10 Petr Machata 2010-06-11 10:12:15 UTC
*** Bug 602874 has been marked as a duplicate of this bug. ***

Comment 11 Fedora Update System 2010-06-22 17:14:47 UTC
boost-1.41.0-9.fc13 has been pushed to the Fedora 13 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 12 Benjamin Kosnik 2010-09-14 19:12:43 UTC
Verified fixed on F13.

ie
...
Linking CXX executable performous
[100%] Built target performous

 Note had to install portaudio-devel as well as the deps listed on the main performous.org/develop.html page.


Note You need to log in before you can comment on or make changes to this bug.