From 1ab0e4c9d0b1d59fe243f70e6a77cee4a1bc052b Mon Sep 17 00:00:00 2001 From: Ian Jackson Date: Tue, 8 Jun 2021 18:24:06 +0100 Subject: [PATCH] make-release: Poll crates.io in the hope of making release reliable Signed-off-by: Ian Jackson --- make-release | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/make-release b/make-release index 9823a4c3..04dcedb7 100755 --- a/make-release +++ b/make-release @@ -23,6 +23,9 @@ esac keyid=0x559AE46C2D6B6D3265E7CBA1E3E3392348B50D39 +cratesio_raw_url=\ +https://raw.githubusercontent.com/rust-lang/crates.io-index/master + branch="$2" dryrun () { echo "WOULD $*"; } @@ -93,6 +96,24 @@ $dryrun git tag -s -u "$keyid" -m "Otter v$version" $tag $dryrun git push chiark $tag $dryrun git push origin $tag +#---------- oh woe cargo ---------- + +# https://github.com/rust-lang/cargo/issues/9507 +wait_for_crates_io () { + local p=$1 + local delay=1 + local url="$cratesio_raw_url/${p:0:2}/${p:2:2}/$p" + printf >&2 "waiting for upload of %s to take effect" "$p" + while sleep $delay; do + printf >&2 . + local got=$( + curl -sS "$url" | jq '.vers | select(. == "'"$version"'")' + ) + if [ "x$got" != x ]; then break; fi + delay=$(( $delay * 11 / 10 + 1 )) + done + echo >&2 'done\n' +} for cargo_dir in $cargo_order; do $dryrun_no_more_cargo \ @@ -102,6 +123,14 @@ for cargo_dir in $cargo_order; do | xargs -0r rm -- cd $cargo_dir; cargo publish $cargo_dryrun " + + cargo_package=$( + sed -n '/^name *=/ { s/^name *= *"\(.*\)" *$/\1/; p; q }' \ + <$cargo_dir/Cargo.toml + ) + + wait_for_crates_io "$cargo_package" + dryrun_no_more_cargo=$dryrun done -- 2.30.2