@@ -28,6 +28,7 @@ def print_toolchains_checksums(name):
28
28
template = """\
29
29
cat > "$@" <<'EOF'
30
30
#!/bin/bash
31
+ set -euo pipefail
31
32
32
33
set -o errexit -o nounset -o pipefail
33
34
54
55
55
56
def _commands_for_version (* , python_version , metadata ):
56
57
lines = []
57
- lines += [
58
- "cat <<EOB" , # end of block
59
- " \" {python_version}\" : {{" .format (python_version = python_version ),
60
- " \" url\" : \" {url}\" ," .format (url = metadata ["url" ]),
61
- " \" sha256\" : {" ,
62
- ]
63
-
64
- for platform in metadata ["sha256" ].keys ():
65
- for release_url in get_release_info (platform , python_version )[1 ]:
66
- # Do lines one by one so that the progress is seen better and use cat for ease of quotation
67
- lines += [
68
- "EOB" ,
69
- "cat <<EOB" ,
70
- " \" {platform}\" : \" $$({get_sha256})\" ," .format (
71
- platform = platform ,
72
- get_sha256 = "curl --silent --show-error --location --fail {release_url_sha256}" .format (
73
- release_url = release_url ,
74
- release_url_sha256 = release_url + ".sha256" ,
75
- ),
76
- ),
77
- ]
78
-
58
+ first_platform = metadata ["sha256" ].keys ()[0 ]
59
+ root , _ , _ = get_release_info (first_platform , python_version )[1 ][0 ].rpartition ("/" )
60
+ sha_url = "{}/{}" .format (root , "SHA256SUMS" )
79
61
prefix = metadata ["strip_prefix" ]
80
62
prefix = render .indent (
81
63
render .dict (prefix ) if type (prefix ) == type ({}) else repr (prefix ),
82
64
indent = " " * 8 ,
83
65
).lstrip ()
84
66
85
67
lines += [
68
+ "sha256s=$$(curl --silent --show-error --location --fail {})" .format (sha_url ),
69
+ "cat <<EOB" ,
70
+ " \" {python_version}\" : {{" .format (python_version = python_version ),
71
+ " \" url\" : \" {url}\" ," .format (url = metadata ["url" ]),
72
+ " \" sha256\" : {" ,
73
+ ] + [
74
+ " \" {platform}\" : \" $$({get_sha256})\" ," .format (
75
+ platform = platform ,
76
+ get_sha256 = "echo \" $$sha256s\" | (grep {} || echo ) | awk '{{print $$1}}'" .format (
77
+ release_url .rpartition ("/" )[- 1 ],
78
+ ),
79
+ )
80
+ for platform in metadata ["sha256" ].keys ()
81
+ for release_url in get_release_info (platform , python_version )[1 ]
82
+ ] + [
86
83
" }," ,
87
84
" \" strip_prefix\" : {strip_prefix}," .format (strip_prefix = prefix ),
88
85
" }," ,
0 commit comments