Skip to content

[boost-*] Boost libraries should depend on each other with version constraint #26548

@horenmar

Description

@horenmar

Is your feature request related to a problem? Please describe.
I use piece-wise boost ports, explicit versioning in vcpkg.json (rather than relying on baseline commit hash in registry configuration), and the result is that boost port versioning is a huge mess.

This is my (a part) of the resolved port set:

  * boost-algorithm[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\20d7a665b493f8b9816d56125e83928e41dcaa98
  * boost-any[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\6382a90fffe32ec65147d579e28f05604eaeef46
  * boost-array[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\11a6869eb0c7b2efa3e92b2c36795ef9873c6537
  * boost-assert[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\2e4adae40df44f3927978bba397b60f18ad8e919
  * boost-bind[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\c27b66c8e195ce97685c409c0821f907bae83d80
  * boost-build[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\ba4fbdacb5988e8f753bf2098ec257453c50a27a
    boost-circular-buffer[core]:x64-windows-pexlib -> 1.80.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\bf70dc530094e3190c4d5cc945bb452807cc150b
  * boost-concept-check[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\493a1b5ae991a9c7b2643e649329de16bcd0fa48
  * boost-config[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\22c6532dcc9c24fd85febb93dc936e68c031043a
  * boost-container[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\c29fd09bc12ad31bd796ba90682fcbd242090cc0
  * boost-container-hash[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\09168c62619e569c7b6b2799aa39c361a1afff22
  * boost-conversion[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\1e3552c53e2ef9bcfa7159f2f06079c30dfa53ac
  * boost-core[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\a22eddd8a3121063f8ef94eb4e0ae64021d0369a
  * boost-date-time[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\bc3460f55739fad6ef0e548bc084bade32985683
  * boost-detail[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\65c1cfff48ea4ead86b7db6d20401fbfef4e1022
  * boost-exception[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\6d7250e9806392fc38643fb7c069ba18fcec2350
  * boost-function[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\7057b960d6b790eb30f51ef17d67aa958230e100
  * boost-function-types[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\53ad331d5cdedab7b40eebaf15d9f8081a5d9eed
  * boost-fusion[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\10c27fdbefb33b57367582e1a8f262db9d94d807
  * boost-heap[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\3be349686d19ee7b297058dfa2d8177bf22cbe9b
    boost-icl[core]:x64-windows-pexlib -> 1.80.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\061544233c810a2a3e04cca99364bb2fe3edcbb2
  * boost-integer[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\7970a7ba822ac5e6a8a9f98ba5ee3631b3ccff3c
  * boost-intrusive[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\5162285659ad371e022c242481e20414c8b23e2b
  * boost-io[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\a248d3f95d95973f63b5be92c81747165ca0319c
  * boost-iterator[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\a9b329add024642bef5338c963bdfeee41bb60df
  * boost-lexical-cast[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\78f269516df3662fbb3417faba5a8983936de604
  * boost-modular-build-helper[core]:x64-windows-pexlib -> 1.79.0#2 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\e02a1f1b06a492d932f309feab8ac7751b0327ca
  * boost-move[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\957381b3c5ac7d2b563b2563ca8a78d49f034e68
  * boost-mp11[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\b741f7087023927b8345779b9a30575e1dee383f
  * boost-mpl[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\1fa673fcec0135c3a144d90528f719b281d29043
  * boost-numeric-conversion[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\33a349e75f738b735e678de319469c0f9009a413
  * boost-optional[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\9480f61fee5df6864a425964bd13ee783a7572a9
  * boost-parameter[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\94340499eaf0d204a8000b09a4b7f58eeb12c84d
  * boost-predef[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\c17a7256c1f86eab749e10b451dbf53d317afaf9
  * boost-preprocessor[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\1790581b89b5cf96bd870854b2bc4b256032a9c9
    boost-program-options[core]:x64-windows-pexlib -> 1.80.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\306ab169b6f177e71d82cb08c77a8629337a1b6a
  * boost-range[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\fff762e26af0f46863606c7fd088491dfcc84599
  * boost-rational[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\bd0b9e457fc969fdac6b9ee36b77a26b3c680ad5
  * boost-regex[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\a10bdc49cf30856030ed08921a5a30f3c3f3bdb1
  * boost-smart-ptr[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\b94b3b41ab4bb281041f40d876baf221c05818ce
  * boost-static-assert[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\673cf82169b2b1696d993477d47b2f94d4350a7f
  * boost-throw-exception[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\1607edf60f1243503820e06b4d3e16c385aa691d
  * boost-tokenizer[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\7e5682fee6727bada3b88221bd416edaa80f6a34
  * boost-tuple[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\c3b718eea1f62e7b4918b3c4f6a4be731d4085ce
  * boost-type-index[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\b4e2eff6204ba68938a99059b23d3abbd2e1dc55
  * boost-type-traits[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\7969a397a6c03205ec1c118834272183ff4201c7
  * boost-typeof[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\81216888498f3c8f6563b991a1d601af139da128
  * boost-uninstall[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\e2d05f10364104d9b7de2383bcb105a1fd3fe975
  * boost-unordered[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\b73d98ab77d4de1a3e4f12bdd84869dfc3adedc0
  * boost-utility[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\8eb91c7a3ad14393219ba020d3d26c39a325c626
  * boost-vcpkg-helpers[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\0e96a2cb3400bcafd55070d18bdcab64808ada01
  * boost-winapi[core]:x64-windows-pexlib -> 1.79.0 -- C:\Users\jenkins\AppData\Local\vcpkg\registries\git-trees\7f82a0041bb3b4ac1f3721afe5ba4e24e27c3a3c

Notice that some parts of boost are resolved to version 1.80.0, and some are resolved to version 1.79.0. The reason is that my baseline hash contains boost @ 1.79.0, while my explicit dependencies (boost-icl, boost-program-options, boost-circular-buffer) are set to require version 1.80.0.

Proposed solution
Boost packages should depend on each other with version constraints. e.g. boost-icl's vcpkg.json should look like this

{
  "name": "boost-icl",
  "version": "1.80.0",
  "description": "Boost icl module",
  "homepage": "https://github.com/boostorg/icl",
  "license": "BSL-1.0",
  "dependencies": [
    {
      "name": "boost-assert",
      "version>=": "1.80.0"
    },
    {
      "name": "boost-concept-check",
      "version>=": "1.80.0"
    },
    ...
  ]
}

If an end user still needs to use a boost part at specific older version, they can use override to achieve that, but mixing & matching boost versions CAN'T BE THE DEFAULT BEHAVIOUR.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions