Boost logo

Boost-Build :

Subject: [Boost-build] naive usage of bootstrap.sh
From: Robert Ramey (ramey_at_[hidden])
Date: 2016-10-23 15:55:41


I can test the serialization library in the mac terminal and things work
great. I can test using whichever one of several compilers, I can build
my library status table, etc. and everything is OK.

But for the last 18 months, I have errors in the official boost test
matrix on the develop branch on the linux platforms. This was pretty
frustrating as I always considered the underlying OS of the mac and
linux very similar. After experimenting trying to isolate the issue I\
concluded that I have no choice but to install a similar platform in my
office. So I installed parallels on my mac with ubuntu 14.04. This went
pretty smoothly. It's very convenient that from within the ubuntu os I
can access my original mac OS file system with my master copy of Boost
source on it. So I should have the capability of running b2 test
procedure on exactly the same file versions.

So all I have to is to build B2 and a couple of other utilities on the
ubuntu file system - straight forward? - not so much. First of all I
don't want to polute my file tree on the Mac with files which contain
ubuntu executables and libraries. Of course I forget how to do this so
I look at the documentation on bootstrap.sh
http://www.boost.org/doc/libs/1_62_0/more/getting_started/unix-variants.html.
  It states in part:

$ cd path/to/boost_1_62_0
$ ./bootstrap.sh --help

which rewards me with:

parallels_at_ubuntu:~/Desktop/Parallels Shared
Folders/Home/WorkingProjects/modular-boost$ ./bootstrap.sh -help
`./bootstrap.sh' prepares Boost for building on a few kinds of systems.

Usage: ./bootstrap.sh [OPTION]...

Defaults for the options are specified in brackets.

Configuration:
   -h, --help display this help and exit
   --with-bjam=BJAM use existing Boost.Jam executable (bjam)
                             [automatically built]
   --with-toolset=TOOLSET use specific Boost.Build toolset
                             [automatically detected]
   --show-libraries show the set of libraries that require build
                             and installation steps (i.e., those libraries
                             that can be used with --with-libraries or
                             --without-libraries), then exit
   --with-libraries=list build only a particular set of libraries,
                             describing using either a comma-separated
list of
                             library names or "all"
                             [all]
   --without-libraries=list build all libraries except the ones listed []
   --with-icu enable Unicode/ICU support in Regex
                             [automatically detected]
   --without-icu disable Unicode/ICU support in Regex
   --with-icu=DIR specify the root of the ICU library
installation
                             and enable Unicode/ICU support in Regex
                             [automatically detected]
   --with-python=PYTHON specify the Python executable [python]
   --with-python-root=DIR specify the root of the Python installation
                             [automatically detected]
   --with-python-version=X.Y specify the Python version as X.Y
                             [automatically detected]

Installation directories:
   --prefix=PREFIX install Boost into the given PREFIX
                             [/usr/local]
   --exec-prefix=EPREFIX install Boost binaries into the given EPREFIX
                             [PREFIX]

More precise control over installation directories:
   --libdir=DIR install libraries here [EPREFIX/lib]
   --includedir=DIR install headers here [PREFIX/include]

parallels_at_ubuntu:~/Desktop/Parallels Shared
Folders/Home/WorkingProjects/modular-boost$

Which looks quite wrong to me. I expect bootstrap.sh to build some
boost tools not include things like --show-libraries , without-icu etc.
I'm now totally confused as to what bootstrap.sh is supposed to do.

Of course I'm not going to let a minor think like total confusion
prevent me from taking action ( this is america after all). So
following the documentation I let loose with:

parallels_at_ubuntu:~/Desktop/Parallels Shared
Folders/Home/WorkingProjects/modular-boost$ pwd
/home/parallels/Desktop/Parallels Shared
Folders/Home/WorkingProjects/modular-boost
parallels_at_ubuntu:~/Desktop/Parallels Shared
Folders/Home/WorkingProjects/modular-boost$ ./bootstrap.sh
--prefix=/home/parallels/boost
Building Boost.Build engine with toolset gcc...
tools/build/src/engine/bin.linuxx86_64/b2
Detecting Python version... 2.7
Detecting Python root... /usr
Unicode/ICU support for Boost.Regex?... not found.
Backing up existing Boost.Build configuration in project-config.jam.3
Generating Boost.Build configuration in project-config.jam...

Bootstrapping is done. To build, run:

     ./b2

To adjust configuration, edit 'project-config.jam'.
Further information:

    - Command line help:
      ./b2 --help

    - Getting started guide:
      http://www.boost.org/more/getting_started/unix-variants.html

    - Boost.Build documentation:
      http://www.boost.org/build/doc/html/index.html

parallels_at_ubuntu:~/Desktop/Parallels Shared
Folders/Home/WorkingProjects/modular-boost$ ls -l b2
-rwxrwxr-x 1 parallels parallels 271448 Oct 23 12:50 b2
parallels_at_ubuntu:~/Desktop/Parallels Shared
Folders/Home/WorkingProjects/modular-boost$

Which displays a number of messages whch seem totally out of place -
python? who ordered that?, etc. Worst of all, it seems to ignore the
"prefix" switch and builds b2 right in the boost root. Not where I
meant to put it and not where the documentation nor the help information
says it will go.

So now I'm going to have to dive into a place where I didn't want to go
- reviewing the bootstrap.sh script in detail. It shouldn't be this
way. At a very miniumum, the Getting Started documentation,
booststrap.sh help and execution are out of sync. I user less
persistent user shouldn't have to deal with this.

Robert Ramey


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