Unconditional conditional building is cursed
Some libraries (Context, Contract, Fiber, Json, Math, Nowide) are built conditionally and use checks from the Config library to do that (`import ../../config/checks/config : requires ;`). Apparently, it happens to be a PITA for some consumers. Vcpkg had to hack around that and update the hack every Boost release, but Boost 1.76 revealed problems in it ( https://github.com/boostorg/build/issues/724) and Boost 1.77 is blocked by it (https://github.com/microsoft/vcpkg/pull/19556#issuecomment-904702798). I have a mixed feeling about silently not building libraries. I understand that for a lot of people it is reasonable that the default stage build will not build a library on an unsupported compiler. However, it is absolutely bad and a confusing thing to a user that the input is silently ignored when a library is requested using the `--with-<library>` flag. A way to turn off the conditional building of the libraries could also be in debug purposes alongside fixing `--with-<library>` behaviour and making possible for vcpkg to live without resorting to hacking the boost build system. I have no affiliation to vcpkg and I am not a maintainer of any mentioned libraries. It is purely my observation about how Boost is used.
Nikita Kniazev wrote:
Some libraries (Context, Contract, Fiber, Json, Math, Nowide) are built conditionally and use checks from the Config library to do that (`import ../../config/checks/config : requires ;`). Apparently, it happens to be a PITA for some consumers. Vcpkg had to hack around that and update the hack every Boost release, but Boost 1.76 revealed problems in it ( https://github.com/boostorg/build/issues/724) and Boost 1.77 is blocked by it (https://github.com/microsoft/vcpkg/pull/19556#issuecomment- 904702798).
I have a mixed feeling about silently not building libraries. I understand that for a lot of people it is reasonable that the default stage build will not build a library on an unsupported compiler. However, it is absolutely bad and a confusing thing to a user that the input is silently ignored when a library is requested using the `--with-<library>` flag.
But the problem has nothing to do with silently not building libraries. It's caused by libraries assuming that Boost.Config is at ../config.
participants (2)
-
Nikita Kniazev
-
Peter Dimov