Boost logo

Boost :

Subject: [boost] bpm, a tool to install a modular Boost distribution
From: Peter Dimov (lists_at_[hidden])
Date: 2015-01-05 10:29:06


One month ago, Stephen Kelly wrote:

> git affects the developer workflow, but that thread was about creating
> modular releases and downloads, which is a different goal and has a
> different set of problems to solve. That's what that thread was about. I
> didn't see any desire to have that as a goal in the thread.
>
> Git doesn't affect users.
>
> Before and after transition to git, they download all-of-boost.zip from
> the boost website.

To address this point of his, I've been working at a tool, bpm, that can
install a modular Boost distribution.

As I've already mentioned in other threads, it works like this:

D:\boost-1.60.0>bpm install system
bpm: installing module 'system'
bpm: installing module 'assert'
bpm: installing module 'config'
bpm: installing module 'core'
bpm: installing module 'predef'
bpm: installing module 'build'
bpm: the following libraries need to be built:
  system
bpm: (use ./b2 to build)
bpm: recreating header links
bpm: recreating index

That is, when told to install Boost.System, it downloads and installs the
'system' package into ./libs/system, along with all its dependencies, then
creates links to the headers (like 'b2 headers') in ./include and an
./index.html file listing the installed libraries.

The full syntax is:

D:\boost-1.60.0>bpm
Usage: bpm [-v] [-q] command [options] [modules]

  -v: Be verbose
  -vv: Be more verbose
  -q: Be quiet

  bpm install [-n] [+d] [-k] [-a] [-i] [-p] <module> <module>...

    Installs the specified modules and their dependencies into
    the current directory.

    -n: Only output what would be installed
    +d: Do not install dependencies
    -k: Do not remove partial installations on error
    -a: All modules (use instead of a module list)
    -i: Installed modules
    -p: Partially installed modules

  bpm remove [-n] [-f] [-d] [-a] [-p] <package> <package>...

    Removes the specified packages.

    (A package, like 'numeric', can contain more than one module.)

    -n: Only output what would be removed
    -f: Force removal even when dependents exist
    -d: Remove dependents as well. Requires -f
    -a: Remove all packages. Requires -f
    -p: Remove partially installed packages

  bpm list [-a] [-i] [-p] [-b] [prefix]

    Lists modules matching [prefix].

    -a: All modules (default when no -b)
    -i: Installed modules (default when -b)
    -p: Partially installed modules
    -b: Modules that require building

  bpm headers

    Recreates the header links in the include/ subdirectory of
    the current directory.

  bpm index

    Recreates the file index.html, which lists the installed
    modules, in the current directory.

--
This all works already under Windows. (I haven't finished the POSIX part yet 
but it should be close.)
I could have made a Windows binary available for people to play with, but 
I'd rather give sources (at first). bpm contains code to do rm -rf 
<directory>, and if I've made a mistake somewhere, it could cause damage.
So, if there is interest and there are no objections, I'd like to put this 
tool into the Boost repository, in tools/bpm.

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