bpm added to tools/bpm on develop
I've added bpm, the Boost Package Manager, to tools/bpm on develop. To build it, do b2 tools/bpm/build//install at the Boost root and b2 will build bpm with the default toolset and place it in dist/bin. To try it out, first you might want to review the fs_remove_all function in fs.cpp, or use a drive or filesystem that does not hold valuable files, :-) then make an empty directory, copy bpm(.exe) there, make a text file bpm.conf with the following line: package_path=http://www.pdimov.com/tmp/pkg-develop-1612497/ then do f.ex. "bpm install filesystem". pkg-develop-1612497 is just a sample "release" that I made by running tools\bpm\scripts\package.bat at the root of my source tree, which happened to be at revision 1612497 of develop. It therefore contains Windows line endings (and b2.exe), so it will generally not be suited for installation on non-Windows systems. A POSIX release would need to be prepared from a POSIX source tree and will probably need to install bootstrap.sh instead of b2.exe, with bpm then issuing a message that ./bootstrap.sh needs to be run. I've done my development on Windows so far and have not had time to test on POSIX.
On Thu, Jan 8, 2015 at 12:51 AM, Peter Dimov
I've added bpm, the Boost Package Manager, to tools/bpm on develop. To build it, do
b2 tools/bpm/build//install
at the Boost root and b2 will build bpm with the default toolset and place it in dist/bin.
Using VC++ 2015 Preview, on a VirtualBox virtual machine running Windows 10 Preview, there were a few warnings. See attached. Several were the new warning C4456: declaration of 'whatever' hides previous local declaration. I have run into this warning a lot in my own code, and have decided that it were worth clearing as gratuitous reuse of names was confusing when I was coming back to code I hadn't looked at in a long time.
To try it out, first you might want to review the fs_remove_all function in fs.cpp, or use a drive or filesystem that does not hold valuable files, :-) then make an empty directory, copy bpm(.exe) there, make a text file bpm.conf with the following line:
package_path=http://www.pdimov.com/tmp/pkg-develop-1612497/
then do f.ex. "bpm install filesystem".
First try I got "bpm: invalid package_path '' in bpm.conf" I had done a copy-and-paste from your message, and had inadvertently picked up three leading spaces. Once those were removed, the install ran without problems. That caused me to wonder if comments were supported, so I added the line "# this is a test" followed by an empty line. "bpm install timer" ran OK, so I guess you anticipated the need for bpm.conf to support comments:-) A couple of the timer install messages stood out: "bpm: installing module 'math'". Ouch! math is big. I guess it is a dependency of chrono. That isn't a bpm problem of course, so I'll post a separate message about that. "bpm: installing module 'numeric~conversion'" Note the '~'. Would it be a better reflection of conversion being in a sub-directory of numeric if it were a '/'? That's all for now. For alpha level code, the experience so far has been remarkably smooth! --Beman
Beman Dawes wrote:
"bpm: installing module 'math'". Ouch! math is big. I guess it is a dependency of chrono. That isn't a bpm problem of course, so I'll post a separate message about that.
'math' is one of our most obvious problematic cases, where modules that only need fpclassify.hpp and sign.hpp for float and double get the whole math(35), as in lexical_cast. See http://www.pdimov.com/tmp/report-develop-3b5a9f4/module-weights.html I've been thinking of proposing a separate Boost.Float library, for consistency with Boost.Integer, that would contain those and other useful floating point utilities, but have no time right now to flesh that out. Other such cases are functional(24) for just hash (as were the case in, f.ex. array) and serialization(59) for just nvp.hpp and split_free.hpp (as in date_time). And of course the perennial type_traits(10).
"bpm: installing module 'numeric~conversion'" Note the '~'. Would it be a better reflection of conversion being in a sub-directory of numeric if it were a '/'?
boostdep deliberately replaces / with ~ in module names to make it easier for various tools (such as itself) that want to, f.ex. construct a filename or an URL from the module name, as they would otherwise need to watch for / and create directories. I can in principle replace it back to / in bpm for display purposes.
That's all for now. For alpha level code, the experience so far has been remarkably smooth!
Thanks.
Beman Dawes wrote:
Using VC++ 2015 Preview, on a VirtualBox virtual machine running Windows 10 Preview, there were a few warnings. See attached.
Several were the new warning C4456: declaration of 'whatever' hides previous local declaration. I have run into this warning a lot in my own code, and have decided that it were worth clearing as gratuitous reuse of names was confusing when I was coming back to code I hadn't looked at in a long time.
Thanks Beman, I think I've cleared those 4456es out. (One of them actually exposed a bug, so they do seem pretty useful, except when they are an annoyance as with the constructor of 'error' which 4456 wisely doesn't diagnose but -Wshadow does.) I've left the one in LzmaDec.c though as it's better to keep foreign code as-is.
participants (2)
-
Beman Dawes
-
Peter Dimov