Starting in Python 3.12, extracting files from tarballs without a filter
specified generates a DeprecationWarning [0].
For Python >= 3.12, specify the `fully_trusted_filter` filter which
replicates the behavior from previous versions.
This filter also makes sense as we should be able to trust the tarball
the maintainers generate after the hash has been verified.
[0]: https://docs.python.org/3/library/tarfile.html#tarfile-extraction-filter
Signed-off-by: Vincent Fazio <vfazio@xes-inc.com>
Link: https://lore.kernel.org/r/20241107205001.574426-1-vfazio@xes-inc.com
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
def wrapper(self):
# Just-in-time import of tarfile and urllib.request so these are
# not required for Yocto to build a vendored or linked package
+ import sys
import tarfile
from tempfile import TemporaryDirectory
from urllib.request import urlretrieve
# Unpack the downloaded tarball
log.info(f"unpacking: {tarball_filename}")
with tarfile.open(downloaded_tarball) as f:
- f.extractall(temp_dir)
+ if sys.version_info < (3, 12):
+ f.extractall(temp_dir)
+ else:
+ f.extractall(temp_dir, filter=tarfile.fully_trusted_filter)
# Copy the include and lib directories we need to build libgpiod
base_dir = path.join(temp_dir, f"libgpiod-{LIBGPIOD_VERSION}")