Skip to content

Commit 2fad5aa

Browse files
authored
Fix utils/download-unpublished-toolchains.py URL parsing (#81939)
Current `.removeprefix` invocation is not resilient against any input preceding the `Toolchain: ` pattern, which means logs that include timestamps (IIUC all of them) can't be parsed. Additionally, for easier testing this script now supports a new `--dry-run` flag that infers toolchain URL, but doesn't download it.
1 parent dd57d4d commit 2fad5aa

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

utils/download-unpublished-toolchains.py

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import argparse
1717
import os
18+
import re
1819
import sys
1920
import tarfile
2021
import urllib.request
@@ -38,7 +39,7 @@ def get_latest_toolchain_url(build_url):
3839
lines = body.split('\n')
3940
toolchain = [x for x in lines if 'Toolchain:' in x]
4041
if len(toolchain) > 0:
41-
toolchain_url = toolchain[0].removeprefix('Toolchain: ')
42+
toolchain_url = re.sub(r'.+Toolchain: (.+)$', r'\1', toolchain[0])
4243
return toolchain_url
4344

4445

@@ -90,6 +91,12 @@ def parse_args():
9091
help="Untar the toolchain in the output directory",
9192
)
9293

94+
parser.add_argument(
95+
"--dry-run",
96+
default=False,
97+
action='store_true',
98+
help="Infer the toolchain URL but don't download it")
99+
93100
return parser.parse_args()
94101

95102

@@ -105,13 +112,15 @@ def main():
105112
if not toolchain_url:
106113
print(f"Error: Unable to find toolchain for {args.platform}.")
107114
return -1
108-
print(f"[Downloading] {toolchain_url}")
109-
output_path = download_toolchain(toolchain_url, args.output_dir)
110-
print(f"[Toolchain] {output_path}")
115+
print(f"[Toolchain URL] {toolchain_url}")
116+
117+
if not args.dry_run:
118+
output_path = download_toolchain(toolchain_url, args.output_dir)
119+
print(f"[Toolchain] {output_path}")
111120

112-
if args.untar:
113-
untar_toolchain(args.output_dir, output_path)
114-
print(f"[Extracted] {args.output_dir}/usr")
121+
if args.untar:
122+
untar_toolchain(args.output_dir, output_path)
123+
print(f"[Extracted] {args.output_dir}/usr")
115124

116125

117126
if __name__ == "__main__":

0 commit comments

Comments
 (0)