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 :-)
That's part of boost packaging, re-assigning. Thanks for spotting that!
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")
Created attachment 418012 [details] spec file patch
Created attachment 418013 [details] Patch for the paths
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
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.
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.
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
Note the update only has the cmake files dropped, as I've written in the last paragraph.
*** Bug 602874 has been marked as a duplicate of this bug. ***
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.
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.