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.
Is your feature request related to a problem? Please describe.
I use piece-wise boost ports, explicit versioning in
vcpkg.json(rather than relying onbaselinecommit 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:
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'svcpkg.jsonshould 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.