[prev in list] [next in list] [prev in thread] [next in thread] 

List:       boost-build
Subject:    [Boost-build] Problem specifying a requirement for a toolset
From:       Edward Diener via Boost-build <boost-build () lists ! boost ! org>
Date:       2020-03-11 9:00:46
Message-ID: r4a9bu$25vd$1 () ciao ! gmane ! io
[Download RAW message or body]

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@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@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.



_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic