boostorg / release-tools

6 stars 23 forks source link

Release tags point to wrong commits in submodules #64

Open Lastique opened 2 months ago

Lastique commented 2 months ago

This was reported by multiple library maintainers on the ML. Boost release tags that are set in git submodules point to wrong commits in some cases.

The following script shows the problematic submodules:

#!/bin/bash

cd <boost-root>
git checkout boost-1.85.0
git submodule foreach git checkout boost-1.85.0
git submodule status --cached | grep -E '^\+'

This will show the list of submodules, for which the currently checked out commit (i.e. the submodule's boost-1.85.0 tag) doesn't match the commit referenced by the superproject. The commit SHA it'll show is the commit referenced by the superproject.

The output on my machine is:

+e65367991cb5fbdb8a7cf218ae38f69ca9a0a9f5 libs/asio (asio-1.10.9-1298-ge6536799)
+98b8be489fa7a74753a724d8d0772d90bcbed0fc libs/beast (boost-1.85.0-12-g98b8be48)
+6865e94cc56a33bb8b162bf8d62cfe620b06d2b6 libs/bimap (boost-1.82.0-8-g6865e94)
+0b813affb41e0dd2a42c3c34033f4ae68431b3e9 libs/cobalt (boost-1.84.0-7-g0b813af)
+bba8d5f1011afc61b9fbaf0e96417d72cb09f8ec libs/compat (boost-1.84.0-5-gbba8d5f)
+083b41c17e34f1fc9b43ab796b40d0d8bece685c libs/core (boost-1.85.0-2-g083b41c)
+50719b212349f3d1268285c586331584d3dbfeb5 libs/describe (boost-1.85.0-2-g50719b2)
+a0c8edba38a4d31b449fcf7b7ada455977342596 libs/filesystem (filesystem-2014-07-23-813-ga0c8edb)
+f82eb32da79641697583a43be9988d7517d8553c libs/geometry (geometry-1.56.0-5991-gf82eb32da)
+07ba0e376177409c396c109807c13b7181a98ebe libs/intrusive (boost-1.85.0-4-g07ba0e3)
+9f85ed6d62ff91c6dc4fc30e3a20e9049ec67585 libs/json (boost-1.85.0-7-g9f85ed6)
+5edb7eb4f4848546d3d285598374b5d37daae387 libs/locale (boost-1.85.0-2-g5edb7eb)
+2d932ddcb5b05a9b2cc0a9df2d8a6ff88883f2b3 libs/log (boost-1.85.0-3-g2d932dd)
+434a017db4c7abc115d8a8ae08a446b70feb34f2 libs/math (boost-1.85.0-8-g434a017db)
+f607d5154df4a5cc7f5ae014f0796f0b21b8bfc4 libs/msm (boost-1.85.0-6-gf607d51)
+d702a48363997f65fb717346f6694e0703902f8a libs/multi_index (boost-1.84.0-2-gd702a48)
+51e01210078bae160ebc9fc4ede9281928d5b3c1 libs/multiprecision (boost-1.85.0-2-g51e01210)
+6397d04ff55741a29ca2c93975e26226cf773a7d libs/mysql (boost-1.85.0-3-g6397d04f)
+72429c3f48a1e70c08b5bd922ddebf7acddcbfb4 libs/nowide (v10.0.2-315-g72429c3)
+1e3270d8106a59ac0b9c6e317fbfc836d2c66427 libs/outcome (boost-1.85.0-28-g1e3270d8)
+449bf360f7d7a945639710b0fbb670ffde70e772 libs/pfr (before_precise-542-g449bf36)
+406cd3ecf36c19b94b4376241a4b3b43d1eae308 libs/process (boost-1.84.0-12-g406cd3e)
+27f927694547277f845ae855e80b96be252f826c libs/program_options (boost-1.85.0-1-g27f9276)
+b6e1280075fa0f2c71af3c7b89ef2717aa922557 libs/redis (boost-1.85.0-2-gb6e1280)
+351b03d5220510a1b6738cc378659b6d85c8a4da libs/stacktrace (boost_review_2-281-g351b03d)
+a701cafb6be0021cf8e154cab5fc5d680c863f06 libs/timer (boost-1.85.0-1-ga701caf)
+5e6b9291deb55567d41416af1e77c2516dc1250f libs/unordered (boost-1.85.0-2-g5e6b9291)
+ff36c3aa1f82d1d9a55fd006dd47cf380fc517c0 libs/variant2 (boost-1.85.0-4-gff36c3a)
+c11757decf393f6f1cf46f3f70b0bf892cdda5ee libs/wave (boost-1.84.0-9-gc11757d)
+efbf6ce59b4023f7adc9be2fc3875d371c7f52c6 tools/build (converted-master-7425-gefbf6ce59)
Lastique commented 2 months ago

Apparently, git tags in submodules are created manually, as described here:

https://github.com/boostorg/wiki/wiki/Releases%3A-Preparing#for-betafull-release---set-as-released-on-website

At the point of this issue creation, this section did not contain a command to actually checkout the submodules at revisions referenced by the superproject, which means the tags in submodules could be created at incorrect commits. The command has been added now. Also, the tags for Boost 1.85.0 have been fixed.

I'm leaving this issue open as I believe tagging should be done automatically during release CI to eliminate the possibility of errors in the future.