Boost logo

Boost-Build :

From: Mark Evans (evans_mark_at_[hidden])
Date: 2006-04-27 17:56:49


I hate to burn precious bandwidth, but...

To shed a little more light on the problem with install... I was wrong about this having worked before recent changes. The problem occurs when there are multiple invocations of stage.install, as below:

    install dummy : $(include-tree)
    : <install-source-root>.. <conditional>@hss.set-install-base ;

    install dummy : $(dist-tree)
    : <install-source-root>.. <conditional>@hss.set-install-base ;

There is no problem if the second call to install is removed. Or if I change dummy to dummy1 in the second invocation, things work.

The error message displayed when dummy was repeated (above) was:

error: No best alternative for ../../../../HSS3.0/HSS_ALL/AFC/Source/dummy
    next alternative: required properties: (empty)
        matched
    next alternative: required properties: (empty)
        matched

The $(dist-tree) didn''t get installed.

The test case that triggered the traceback that I reported before was:

    install dummy : $(targets) :
        : <conditional>@hss.set-install-base ;

Oops: there's an extra colon in there! Pilot error. This produces:

/cygdrive/c/mse/proj/boost-build/build/targets.jam:576: in object(main-target)@317.add-alternative from module object(main-target)@317
error: default build must be identical in all alternatives
error: main target is ../../../../HSS3.0/HSS_ALL/AFC/Source/dummy
error: with <conditional>@hss.set-install-base
error: differing from previous default build
/cygdrive/c/mse/proj/boost-build/build/targets.jam:453: in build-main-targets from module object(project-target)@89
/cygdrive/c/mse/proj/boost-build/build/targets.jam:268: in targets-to-build from module object(project-target)@89
/cygdrive/c/mse/proj/boost-build/build/targets.jam:250: in object(project-target)@89.generate from module object(project-target)@89
/cygdrive/c/mse/proj/boost-build/build-system.jam:296: in load from module build-system
....

So the only real problem is when the same name is passed as arg[1] to install.
To further simplify the test case that produces the error, I tried:

install dist : Jamfile ;
install dist : bar.h ;

This gets the error:

error: No best alternative for ./dist
    next alternative: required properties: (empty)
        matched
    next alternative: required properties: (empty)
        matched

The upshot for me, using <conditional>, is to make the dummy arg[1] arguments of install unique. I can live with this workaround but hopefully there's a better solution to be had.

Thanks,
Mark



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