Re: [boost] bcp namespace aliasing broken, impacts package providers, shared libraries unusable since 1.69
But as a first step I think that we need to add a Travis test to tools/bcp that exercises the scenario we want to fix.
I've looked into this and we have some issues we probably need to address even before getting to namespace aliasing. 1. Since tools/boost_install and libs/headers are now needed by Jamroot, it might be better if we install them by default when `build` is requested. (libs/config is also needed by Jamroot, but almost every other library needs it as a dependency, so this usually doesn't manifest as a problem in practice.) 2. When I add them by hand, bcp installs more than needed, because tools/boost_install/test references a number of libraries such as container, log, python, and so on; we don't need these for typical uses. 3. Installing these libraries exposed issues with them: 3a. Log doesn't work because it has jamfiles in libs/log/config, which is not copied (just `build` and `src` are.) 3b. Test doesn't work because it uses predef.check in its Jamfile, but Predef is not copied. Apart from that, https://travis-ci.org/boostorg/bcp/builds/537447552
On 5/26/19 5:39 PM, Peter Dimov via Boost wrote:
3. Installing these libraries exposed issues with them:
3a. Log doesn't work because it has jamfiles in libs/log/config, which is not copied (just `build` and `src` are.)
Could you expand? I'm not sure I understand how an incomplete Boost.Log directory tree comes to be.
Andrey Semashev wrote:
3a. Log doesn't work because it has jamfiles in libs/log/config, which is not copied (just `build` and `src` are.)
Could you expand? I'm not sure I understand how an incomplete Boost.Log directory tree comes to be.
That's just how `bcp` works as far as I can see. When you tell it to copy the library X and X depends on Log, it assumes that everything needed to build Log is contained in libs/log/build and libs/log/src, and only copies these two directories.
On 5/26/19 6:22 PM, Peter Dimov via Boost wrote:
Andrey Semashev wrote:
3a. Log doesn't work because it has jamfiles in libs/log/config, which > is not copied (just `build` and `src` are.)
Could you expand? I'm not sure I understand how an incomplete Boost.Log directory tree comes to be.
That's just how `bcp` works as far as I can see. When you tell it to copy the library X and X depends on Log, it assumes that everything needed to build Log is contained in libs/log/build and libs/log/src, and only copies these two directories.
Can it be modified to copy the whole directory structure? I could move libs/log/config into libs/log/build, but I'd prefer to be able to rely on all directory structure being intact.
Andrey Semashev wrote:
That's just how `bcp` works as far as I can see. When you tell it to copy the library X and X depends on Log, it assumes that everything needed to build Log is contained in libs/log/build and libs/log/src, and only copies these two directories.
Can it be modified to copy the whole directory structure?
Probably, but that would defeat its purpose, which is to extract the minimum usable subset. It could probably be changed to copy libs/$LIB/config as a special case.
On 5/26/19 7:17 PM, Peter Dimov via Boost wrote:
Andrey Semashev wrote:
That's just how `bcp` works as far as I can see. When you tell it to copy the library X and X depends on Log, it assumes that everything needed to build Log is contained in libs/log/build and libs/log/src, and > only copies these two directories.
Can it be modified to copy the whole directory structure?
Probably, but that would defeat its purpose, which is to extract the minimum usable subset.
Well, extracting a subset of *headers* sounds reasonable, but the sources and building infrastructure cannot be split. In fact, I'd say when it comes to buildable libraries, you have to copy the whole library since some headers may be referenced by the library sources.
It could probably be changed to copy libs/$LIB/config as a special case.
Maybe copy everything except tests, examples and docs?
participants (2)
-
Andrey Semashev
-
Peter Dimov