Boost logo

Boost-Build :

From: Eric Woodruff (eric.woodruff_at_[hidden])
Date: 2008-03-30 15:11:29


I'm ultimately seeking to create an rpm generator to package files in a
dist directory from a pre-defined list, with a scanner that will read
this list and build the targets necessary to satisfy the install. To
simplify things, I'll start with a tar generator that works something like:

    tar dist : files.list ;

And suppose files.list just has one entry of '/usr/bin/hello'.

Building dist.tar should first build dist/usr/bin/hello. This implies to
me that bjam should understand how to build dist/usr/bin/hello from the
command line, given the following Jamfile:

    make hello : : @sayhi ;

    actions sayhi {
            echo hi > $(<) ;

    install dist/usr/bin : hello ;

Unfortunately, it doesn't work:

    rm -rf dist bin ; bjam dist/usr/bin/hello

    don't know how to make <e>dist/usr/bin/hello
    ...found 1 target...
    ...can't find 1 target...

Of course, just building the target directly works, but that will not
satisfy my requirements:

    rm -rf dist bin ; bjam

    MkDir1 bin
    MkDir1 bin/gcc-4.1.3
    MkDir1 bin/gcc-4.1.3/debug
    Jamfile</home/eric/Desktop/boost/test>.sayhi bin/gcc-4.1.3/debug/hello
    MkDir1 dist
    MkDir1 dist/usr
    MkDir1 dist/usr/bin
    common.copy dist/usr/bin/hello

Is it possible to enhance install to produce makeable targets in at the
install location that depend on the source targets? Or can an installex
rule be created to accomplish this? This is my ultimate Boost.Build use
case so I really hope that this is possible. I've been looking at
stage.jam and package.jam, but I can't yet make heads or tails of them.

(Of course I'm basing this problem on the assumption that if bjam knows
how to build a target, it also knows how to do it from the command-line
as well.)

Thanks a lot,


Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at