mirror of
https://github.com/PlaneQuery/OpenAirframes.git
synced 2026-05-01 23:35:14 +02:00
try less strict tar extract for 2025-10-15 and other days that fail
This commit is contained in:
@@ -260,7 +260,6 @@ def extract_split_archive(file_paths: list, extract_dir: str) -> bool:
|
|||||||
stdin=cat_proc.stdout,
|
stdin=cat_proc.stdout,
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
stderr=subprocess.PIPE,
|
stderr=subprocess.PIPE,
|
||||||
check=True
|
|
||||||
)
|
)
|
||||||
cat_proc.stdout.close()
|
cat_proc.stdout.close()
|
||||||
cat_stderr = cat_proc.stderr.read().decode() if cat_proc.stderr else ""
|
cat_stderr = cat_proc.stderr.read().decode() if cat_proc.stderr else ""
|
||||||
@@ -269,6 +268,24 @@ def extract_split_archive(file_paths: list, extract_dir: str) -> bool:
|
|||||||
if cat_stderr:
|
if cat_stderr:
|
||||||
print(f"cat stderr: {cat_stderr}")
|
print(f"cat stderr: {cat_stderr}")
|
||||||
|
|
||||||
|
tar_stderr = result.stderr.decode() if result.stderr else ""
|
||||||
|
if result.returncode != 0:
|
||||||
|
# GNU tar exits non-zero for format issues that BSD tar silently
|
||||||
|
# tolerates (e.g. trailing junk after the last valid entry).
|
||||||
|
# Check whether files were actually extracted before giving up.
|
||||||
|
extracted_items = os.listdir(extract_dir)
|
||||||
|
if extracted_items:
|
||||||
|
print(f"[WARN] tar exited {result.returncode} but extracted "
|
||||||
|
f"{len(extracted_items)} items — treating as success")
|
||||||
|
if tar_stderr:
|
||||||
|
print(f"tar stderr: {tar_stderr}")
|
||||||
|
else:
|
||||||
|
print(f"Failed to extract split archive (tar exit {result.returncode})")
|
||||||
|
if tar_stderr:
|
||||||
|
print(f"tar stderr: {tar_stderr}")
|
||||||
|
shutil.rmtree(extract_dir, ignore_errors=True)
|
||||||
|
return False
|
||||||
|
|
||||||
print(f"Successfully extracted archive to {extract_dir}")
|
print(f"Successfully extracted archive to {extract_dir}")
|
||||||
|
|
||||||
# Delete tar files immediately after extraction
|
# Delete tar files immediately after extraction
|
||||||
@@ -285,11 +302,9 @@ def extract_split_archive(file_paths: list, extract_dir: str) -> bool:
|
|||||||
print(f"Disk space after tar deletion: {free_gb:.1f}GB free")
|
print(f"Disk space after tar deletion: {free_gb:.1f}GB free")
|
||||||
|
|
||||||
return True
|
return True
|
||||||
except subprocess.CalledProcessError as e:
|
except Exception as e:
|
||||||
stderr_output = e.stderr.decode() if e.stderr else ""
|
|
||||||
print(f"Failed to extract split archive: {e}")
|
print(f"Failed to extract split archive: {e}")
|
||||||
if stderr_output:
|
shutil.rmtree(extract_dir, ignore_errors=True)
|
||||||
print(f"tar stderr: {stderr_output}")
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user