Paul Fultz II wrote:
What would be nice if BPM was extensible to support libraries in the incubator. That is the user had some form of channel or PPA that could be added, which would install these unofficial libraries as well.
I could in principle borrow a page from your book and make it treat bpm install pdimov:mp11 as referring to github.com/pdimov/mp11, placing it into libs/mp11, but the problem is then versioning. When everything is under the boostorg umbrella, the nice thing about the superproject is that it gives me a global version across all submodules. So when you install filesystem 1.60.0, it knows to get system 1.60.0 as well. (pdimov/mp11 doesn't work because we already have numeric/odeint.) Actually, now that I think about it, I'm not sure downloading the Github tarball of boostorg/boost would give me the information I need to download the correct revision of the submodules... and I rather not integrate git into bpm. :-)
But now I think that this is unnecessary; I plan to rework it to download the packages directly from Github, and to scan the dependencies in place, so as to eliminate the need for a bpm-specific packaging.
Wouldn’t it need to download all of boost to do that? Otherwise, how does it know which header belongs to which library?
My current plan is to autodetect the library from boost/{library}/... or boost/{library}.hpp and rely on a list with the headers that do not fit this form. I just added --list-exceptions to boostdep for this purpose; the main offenders are boost/archive, which belongs to serialization, boost/graph/distributed and boost/graph/parallel, which are in graph_parallel, and boost/detail/winapi which is the winapi module.
This would be very useful in .travis.yml, except that you'd need to somehow bootstrap bpm first.
And b2 as well, correct?
I could integrate the b2 engine into bpm. The idea being that bpm.exe should be all one needs to install and build everything else. Although I don't have the time at present to flesh all this out, so it could be that I've overlooked something.