Boost logo

Boost :

Subject: [boost] [Log, Filesystem] Build errors using B2 and Jamfiles distributed with Boost
From: Norbert Wenzel (norbert.wenzel.lists_at_[hidden])
Date: 2015-08-01 07:15:25


I'm a lazy guy so I try to use Boost.Build whenever I can. That way I
can simply download the Boost tarball, extract it into my project's
directory and use the Jamfiles distributed with Boost.
Recently I switched to 1.58 and my project setup failed to build,
complaining that Filesystem would be built twice with different
settings* (actually it would be built one time without any specific
settings and one time with a sane set for my platform). I managed to
create a "simple" project setup to reproduce this error.

I created a library (testlib) with a single extern C function that fills
a user provided buffer with the current working directoy. This library
uses Boost.Filesystem internally. Therefore the lib's Jamfile also
references the Jamfile distributed with Filesystem.

I created an executable (test) that calls the lib function and also uses
Filesystem to get the parent directory of the current working directory
(as reported by the lib function).

This setup builds fine as long as I use cout to write the paths in the
test exe. When I replace cout with Boost.Log (and therefore also
reference the boost_log and boost_log_setup projects) this setup only
builds with Boost 1.57. From 1.58 on (also tested with 1.59.b1) the
project does not build because Filesystem would be built twice with
different settings.

Since the error can be triggered by changing the Boost version I reckon
this is due to a change in one of the Jamfiles (probably Boost.Log) and
not a problem of Boost.Build per se. But for reference I use Boost.Jam
Version 2014.03 (the one distributed with 1.58).

Since the "simple" setup consists of a few files and directories I've
made it available via Github:
https://github.com/norbertwenzel/boost-build-problem

I've posted this here and not to Boost.Build ML since I suspect this is
due to a change in one of the two libraries mentioned and not a bug or
misuse in/of Boost.Build.

Any help appreciated.
thanks,
Norbert

*) The exact error message I got:
error: Name clash for
'<p/tmp/b2_problem/external/boost_1_58_0/bin.v2/libs/filesystem/build/gcc-5.1.0/debug>libboost_filesystem.so.1.58.0'
error:
error: Tried to build the target twice, with property sets having
error: these incompatible properties:
error:
error: - none
error: - <abi>sysv <binary-format>elf <log-api>generic
<preserve-test-targets>on <python-debugging>off <python>2.7
<testing.execute>on <threadapi>pthread
error:
error: Please make sure to have consistent requirements for these
error: properties everywhere in your project, especially for install
error: targets.


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk