Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
horenmar opened this issue Aug 27, 2022 · 1 comment
Closed
Assignees

Comments

@horenmar
Copy link
Contributor


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.

@horenmar
Copy link
Contributor Author

Actually this is a design issue across all vcpkg ports.

If I don't update baseline, all my transitive dependencies are stuck at the version they were when I picked baseline. If I update baseline, it will happily override my explicit version constraints by adding higher ones of its own.

@microsoft microsoft locked and limited conversation to collaborators Aug 29, 2022
@Cheney-W Cheney-W converted this issue into discussion #26582 Aug 29, 2022

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants