|
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