GH-136895: Fixes for pulling LLVM as a release artifact (#141002)

This commit is contained in:
Savannah Ostrowski 2025-11-06 11:58:01 -08:00 committed by GitHub
parent 9bf5100037
commit 42d0140860
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 25 additions and 17 deletions

View file

@ -3,8 +3,8 @@
import argparse
import os
import pathlib
import shutil
import sys
import tarfile
import time
import urllib.error
import urllib.request
@ -56,7 +56,8 @@ def fetch_release(tag, tarball_dir, *, org='python', verbose=False):
def extract_tarball(externals_dir, tarball_path, tag):
output_path = externals_dir / tag
shutil.unpack_archive(os.fspath(tarball_path), os.fspath(output_path))
with tarfile.open(tarball_path) as tf:
tf.extractall(os.fspath(externals_dir))
return output_path
@ -115,6 +116,8 @@ def main():
verbose=args.verbose,
)
extracted = extract_zip(args.externals_dir, zip_path)
if extracted != final_name:
for wait in [1, 2, 3, 5, 8, 0]:
try:
extracted.replace(final_name)
@ -125,7 +128,7 @@ def main():
time.sleep(wait)
else:
print(
f"ERROR: Failed to extract {final_name}.",
f"ERROR: Failed to rename {extracted} to {final_name}.",
"You may need to restart your build",
file=sys.stderr,
)

View file

@ -83,6 +83,11 @@ async def _find_tool(tool: str, llvm_version: str, *, echo: bool = False) -> str
# PCbuild externals:
externals = os.environ.get("EXTERNALS_DIR", _targets.EXTERNALS)
path = os.path.join(externals, _EXTERNALS_LLVM_TAG, "bin", tool)
# On Windows, executables need .exe extension
if os.name == "nt" and not path.endswith(".exe"):
path_with_exe = path + ".exe"
if os.path.exists(path_with_exe):
path = path_with_exe
if await _check_tool_version(path, llvm_version, echo=echo):
return path
# Homebrew-installed executables: