Boost logo

Boost-Build :

From: Edward Diener (eldiener_at_[hidden])
Date: 2020-03-11 09:00:46


I will use gcc as an example, since it allows for possible toolset
requirements, but any toolset with requirements works the same way. In
my user-config.jam, let us say for simplification purposes, I have:

using gcc : 9.2 : command_invoking_9.2 ;
using gcc : 9.1 : command_invoking_9.1 ;

I can do:

b2 toolset=gcc-9.2 address-model=32

without problems. Now let us supposed I add address model requirements
to my user-config.jam, as in:

using gcc : 9.2 : command_invoking_9.2 : : <address-model>32 ;
using gcc : 9.1 : command_invoking_9.1 : : <address-model>32 ;

and now I run the same command line:

b2 toolset=gcc-9.2 address-model=32

only to now get:

Performing configuration checks

     - default address-model : none
     - default architecture : none
E:/Programming/VersionControl/modular-boost/tools/build/src/build\feature.jam:787:
in expand-composites from module feature
error: explicitly-specified values of non-free feature
<toolset-gcc:version> conflict
error: existing values: 9.1 9.2
error: value from expanding <toolset-gcc:version>9.2 : 9.2
E:/Programming/VersionControl/modular-boost/tools/build/src/build\feature.jam:872:
in feature.expand from module feature
E:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:1104:
in evaluate-requirements from module targets
E:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:1122:
in common-properties2 from module targets
E:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:1018:
in targets.common-properties from module targets
E:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:1314:
in class_at_basic-target.generate from module object(alias-target-class)@8350
E:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:812:
in generate-really from module object(main-target)@8438
E:/Programming/VersionControl/modular-boost/tools/build/src/build\targets.jam:784:
in class_at_main-target.generate from module object(main-target)@8438
E:/Programming/VersionControl/modular-boost/tools/build/src\build-system.jam:797:
in load from module build-system
E:\Programming\VersionControl\modular-boost\tools\build\src/kernel\modules.jam:295:
in import from module modules
E:\Programming\VersionControl\modular-boost\tools\build\src/kernel/bootstrap.jam:139:
in boost-build from module
E:\Programming\VersionControl\modular-boost\boost-build.jam:17: in
module scope from module

Really ? I am telling Boost Build the gcc version when I invoke b2. Dois
boost Build really mean to say that a toolset name, even with different
versions of a given toolset, must have different requirements for b2 to
pick the right one to use ? That is pretty awful and clearly keeps me
from specifying different versions of the same toolset with the same
requirements. Which I find endlessly amusing since I can obviously
specify different versions of a toolset in my user-config as long as I
specify no requirements at all, when requirements are allowed.


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk