Skip to content

Commit 2ca8603

Browse files
Fix for windows
1 parent 27a91ac commit 2ca8603

File tree

1 file changed

+19
-22
lines changed

1 file changed

+19
-22
lines changed

PCbuild/get_external.py

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,10 @@ def fetch_release(tag, tarball_dir, *, org='python', verbose=False):
5555

5656

5757
def extract_tarball(externals_dir, tarball_path, tag):
58-
# Extract to externals_dir and return the path to the first top-level directory
58+
output_path = externals_dir / tag
5959
with tarfile.open(tarball_path) as tf:
60-
# Get the first top-level directory name from the tarball
61-
members = tf.getmembers()
62-
if not members:
63-
raise ValueError(f"Tarball {tarball_path} is empty")
64-
top_level_dir = members[0].name.split('/')[0]
6560
tf.extractall(os.fspath(externals_dir))
66-
return externals_dir / top_level_dir
61+
return output_path
6762

6863

6964
def extract_zip(externals_dir, zip_path):
@@ -121,21 +116,23 @@ def main():
121116
verbose=args.verbose,
122117
)
123118
extracted = extract_zip(args.externals_dir, zip_path)
124-
for wait in [1, 2, 3, 5, 8, 0]:
125-
try:
126-
extracted.replace(final_name)
127-
break
128-
except PermissionError as ex:
129-
retry = f" Retrying in {wait}s..." if wait else ""
130-
print(f"Encountered permission error '{ex}'.{retry}", file=sys.stderr)
131-
time.sleep(wait)
132-
else:
133-
print(
134-
f"ERROR: Failed to extract {final_name}.",
135-
"You may need to restart your build",
136-
file=sys.stderr,
137-
)
138-
sys.exit(1)
119+
120+
if extracted != final_name:
121+
for wait in [1, 2, 3, 5, 8, 0]:
122+
try:
123+
extracted.replace(final_name)
124+
break
125+
except PermissionError as ex:
126+
retry = f" Retrying in {wait}s..." if wait else ""
127+
print(f"Encountered permission error '{ex}'.{retry}", file=sys.stderr)
128+
time.sleep(wait)
129+
else:
130+
print(
131+
f"ERROR: Failed to rename {extracted} to {final_name}.",
132+
"You may need to restart your build",
133+
file=sys.stderr,
134+
)
135+
sys.exit(1)
139136

140137

141138
if __name__ == '__main__':

0 commit comments

Comments
 (0)