
We presently have 3 ways of building C++ Boost from top-level directory: - with 'stage' target -- only libraries are installed - with 'install' target -- both libraries and headers are installed - with no explicit target -- everything is built, but nothing installed It seems to me that the first two options are what the majority of users will want, so some of them should be the default. I have a local patch that makes 'stage' the default, and additionally prints the following message: Performing 'stage' build by default: - binaries installed into 'stage/lib' - headers not installed, use the source tree Use the 'install' target for complete installation. This message is printed only if no explicit target is specified -- if user types 'stage' or 'install', it's assumed he knows what he's doing. Anybody has any comments on this change in defaults, or about the wording of the message? Thanks, Volodya -- Vladimir Prus http://vladimir_prus.blogspot.com Boost.Build V2: http://boost.org/boost-build2

Why do some people use stage target and not install? Don't they need the headers? Do they use the source directory directly? F. Bron boost-bounces@lists.boost.org a écrit sur 22/11/2008 09:40:18 :
We presently have 3 ways of building C++ Boost from top-level directory:
- with 'stage' target -- only libraries are installed - with 'install' target -- both libraries and headers are installed - with no explicit target -- everything is built, but nothing installed
It seems to me that the first two options are what the majority of users will want, so some of them should be the default. I have a local patch that makes 'stage' the default, and additionally prints the following message:
Performing 'stage' build by default: - binaries installed into 'stage/lib' - headers not installed, use the source tree Use the 'install' target for complete installation.
This message is printed only if no explicit target is specified -- if user types 'stage' or 'install', it's assumed he knows what he's doing.
Anybody has any comments on this change in defaults, or about the wording of the message?
Avis : Ce message et toute pièce jointe sont la propriété d'Alcan et sont destinés seulement aux personnes ou à l'entité à qui le message est adressé. Si vous avez reçu ce message par erreur, veuillez le détruire et en aviser l'expéditeur par courriel. Si vous n'êtes pas le destinataire du message, vous n'êtes pas autorisé à utiliser, à copier ou à divulguer le contenu du message ou ses pièces jointes en tout ou en partie. Notice: This message and any attachments are the property of Alcan and are intended solely for the named recipients or entity to whom this message is addressed. If you have received this message in error please inform the sender via e-mail and destroy the message. If you are not the intended recipient you are not allowed to use, copy or disclose the contents or attachments in whole or in part.

frederic.bron@alcan.com wrote:
Why do some people use stage target and not install? Don't they need the headers? Do they use the source directory directly?
Yes. For example, if you're working off SVN HEAD, you don't need to copy headers somewhere else, whereas putting all binaries in a single directory is still convenient. And 'install' won't work out of the box, anyway, since it tries to install into /usr/local, and regular users can't do that. - Volodya

On Sat, Nov 22, 2008 at 2:37 PM, <frederic.bron@alcan.com> wrote:
Why do some people use stage target and not install? Don't they need the headers? Do they use the source directory directly?
Yes, I do just that. In fact, I've never needed to make a full install. I guess, the primary use case for this target is UNIX systems with their centralized header storage.

-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Vladimir Prus Sent: 22 November 2008 08:40 To: Boost mailing list Subject: [boost] Building 'stage' by default
We presently have 3 ways of building C++ Boost from top-level directory:
- with 'stage' target -- only libraries are installed - with 'install' target -- both libraries and headers are installed - with no explicit target -- everything is built, but nothing installed
It seems to me that the first two options are what the majority of users will want, so some of them should be the default. I have a local patch that makes 'stage' the default, and additionally prints the following message:
Performing 'stage' build by default: - binaries installed into 'stage/lib' - headers not installed, use the source tree Use the 'install' target for complete installation.
This message is printed only if no explicit target is specified -- if user types 'stage' or 'install', it's assumed he knows what he's doing.
Anybody has any comments on this change in defaults, or about the wording of the message?
This sounds sensible to me. Could all the messages be even more specific - giving full paths? Is 'source tree' obvious to newbies? But don't many people really just want the library in a boost-root/lib directory? (leaving aside that the naming of all these sub directories seemed dotty to a Windows-newbie - but there you go...). Paul --- Paul A. Bristow Prizet Farmhouse Kendal, UK LA8 8AB +44 1539 561830, mobile +44 7714330204 pbristow@hetp.u-net.com

Paul A. Bristow wrote:
-----Original Message----- From: boost-bounces@lists.boost.org [mailto:boost-bounces@lists.boost.org] On Behalf Of Vladimir Prus Sent: 22 November 2008 08:40 To: Boost mailing list Subject: [boost] Building 'stage' by default
We presently have 3 ways of building C++ Boost from top-level directory:
- with 'stage' target -- only libraries are installed - with 'install' target -- both libraries and headers are installed - with no explicit target -- everything is built, but nothing installed
It seems to me that the first two options are what the majority of users will want, so some of them should be the default. I have a local patch that makes 'stage' the default, and additionally prints the following message:
Performing 'stage' build by default: - binaries installed into 'stage/lib' - headers not installed, use the source tree Use the 'install' target for complete installation.
This message is printed only if no explicit target is specified -- if user types 'stage' or 'install', it's assumed he knows what he's doing.
Anybody has any comments on this change in defaults, or about the wording of the message?
This sounds sensible to me.
Could all the messages be even more specific - giving full paths? Is 'source tree' obvious to newbies?
I don't know. Full paths can easily make this message poorly formatted.
But don't many people really just want the library in a boost-root/lib directory?
I don't know why we use 'stage/lib' by default -- given that we never create any other subdirectories of 'stage' or put any files there. Maybe, everything should go into 'stage' directly?
(leaving aside that the naming of all these sub directories seemed dotty to a Windows-newbie - but there you go...).
"dotty"? - Volodya

Vladimir Prus wrote:
I don't know why we use 'stage/lib' by default -- given that we never create any other subdirectories of 'stage' or put any files there. Maybe, everything should go into 'stage' directly?
The thought was that things like the "wave" binary would go into a "stage/bin". But since we only build that on the separate tools build it's not much of a loss to remove the extra subdir level. -- -- Grafik - Don't Assume Anything -- Redshift Software, Inc. - http://redshift-software.com -- rrivera/acm.org (msn) - grafik/redshift-software.com -- 102708583/icq - grafikrobot/aim,yahoo,skype,efnet,gmail

on Sat Nov 22 2008, Vladimir Prus <ghost-AT-cs.msu.su> wrote:
We presently have 3 ways of building C++ Boost from top-level directory:
- with 'stage' target -- only libraries are installed - with 'install' target -- both libraries and headers are installed - with no explicit target -- everything is built, but nothing installed
It seems to me that the first two options are what the majority of users will want, so some of them should be the default. I have a local patch that makes 'stage' the default,
Good choice.
and additionally prints the following message:
Performing 'stage' build by default: - binaries installed into 'stage/lib'
Could you change that to an absolute path for clarity and use backslashes when on windows?
- headers not installed, use the source tree
"Use the source tree" is not descriptive enough, IMO. I suggest, e.g., "place </absolute/path/of/current/dir> in your #include path to compile successfully."
Use the 'install' target for complete installation.
I think "Use the 'install' target" is also not descriptive enough. Some people just won't know what it means to "use" a "target." "Build the 'install' target" would be better, but I suggest "``bjam install'' will install headers and libraries in standard system locations (or under a --prefix directory of your choice)."
This message is printed only if no explicit target is specified -- if user types 'stage' or 'install', it's assumed he knows what he's doing.
Makes sense.
Anybody has any comments on this change in defaults, or about the wording of the message?
I think it's headed in the right direction. Good work! -- Dave Abrahams BoostPro Computing http://www.boostpro.com

On Sat, 22 Nov 2008, Vladimir Prus wrote:
We presently have 3 ways of building C++ Boost from top-level directory:
- with 'stage' target -- only libraries are installed - with 'install' target -- both libraries and headers are installed - with no explicit target -- everything is built, but nothing installed
It seems to me that the first two options are what the majority of users will want, so some of them should be the default. I have a local patch that makes 'stage' the default, and additionally prints the following message:
`bjam stage` seems like a developer-only target. Following in the unix tradition, I always do `bjam; bjam install` (with the appropriate prefix set).
Performing 'stage' build by default: - binaries installed into 'stage/lib' - headers not installed, use the source tree Use the 'install' target for complete installation.
This message is printed only if no explicit target is specified -- if user types 'stage' or 'install', it's assumed he knows what he's doing.
Anybody has any comments on this change in defaults, or about the wording of the message?
Ok, 'stage' seems innocuous enough (as long as the stage path is a subdirectory of PWD) that there's no real harm in this change. The wording could be simplified to "" Performing 'bjam stage': build and copy libraries to '<stage-lib>' Use 'bjam install' to copy headers to '<inst-headers>' and libraries to '<inst-libs>'. "" Where the <>s are the actual paths, something like <stage-lib> ./stage/lib <inst-headers> /usr/local/include/boost-1.37 <inst-libs> /usr/local/lib64 - Daniel
participants (8)
-
Andrey Semashev
-
David Abrahams
-
dherring@ll.mit.edu
-
frederic.bron@alcan.com
-
Paul A. Bristow
-
Rene Rivera
-
Vladimir Prus
-
Vladimir Prus