mirror of https://gitlab.com/qemu-project/qemu
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
#
|
|
# SPDX-License-Identifier: GPL-2.0-or-later
|
|
#
|
|
"""Delete stale assets from the download cache of the functional tests"""
|
|
|
|
import os
|
|
import stat
|
|
import sys
|
|
import time
|
|
from pathlib import Path
|
|
|
|
|
|
cache_dir_env = os.getenv('QEMU_TEST_CACHE_DIR')
|
|
if cache_dir_env:
|
|
cache_dir = Path(cache_dir_env, "download")
|
|
else:
|
|
cache_dir = Path(Path("~").expanduser(), ".cache", "qemu", "download")
|
|
|
|
if not cache_dir.exists():
|
|
print(f"Cache dir {cache_dir} does not exist!", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
os.chdir(cache_dir)
|
|
|
|
for file in cache_dir.iterdir():
|
|
# Only consider the files that use a sha256 as filename:
|
|
if len(file.name) != 64:
|
|
continue
|
|
|
|
try:
|
|
timestamp = int(file.with_suffix(".stamp").read_text())
|
|
except FileNotFoundError:
|
|
# Assume it's an old file that was already in the cache before we
|
|
# added the code for evicting stale assets. Use the release date
|
|
# of QEMU v10.1 as a default timestamp.
|
|
timestamp = time.mktime((2025, 8, 26, 0, 0, 0, 0, 0, 0))
|
|
|
|
age = time.time() - timestamp
|
|
|
|
# Delete files older than half of a year (183 days * 24h * 60m * 60s)
|
|
if age > 15811200:
|
|
print(f"Removing {cache_dir}/{file.name}.")
|
|
file.chmod(stat.S_IWRITE)
|
|
file.unlink()
|