diff --git a/package/snagboot/0001-src-snagrecover-utils.py-import-compression-modules-.patch b/package/snagboot/0001-src-snagrecover-utils.py-import-compression-modules-.patch new file mode 100644 index 0000000000..ea92c0caa2 --- /dev/null +++ b/package/snagboot/0001-src-snagrecover-utils.py-import-compression-modules-.patch @@ -0,0 +1,57 @@ +From fa60aaf200eb1e6d31124ac3e7631e9e5458d145 Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sat, 8 Aug 2026 19:03:52 +0200 +Subject: [PATCH] src/snagrecover/utils.py: import compression modules when + needed + +Commit 4f98bdec5ebeb13d9f851f848c3bd0086ef31eeb ("snagflash: Support +on-the-fly decompression of input files") has added unconditional +imports of lzma, bz2 and gzip Python modules, even if compressed input +files are not used. + +Switch to dynamic imports where these modules are only imported +on-demand. This allows to relax the need to have support for those +modules in Python, which can be helpful in environments such as +Buildroot where dependencies are kept to a minimum. + +Upstream: https://github.com/bootlin/snagboot/pull/95 +[Thomas: upstream version is different as upstream master branch also +supports zstd compression, which wasn't supported as of v2.6.1 of +snagboot] +Signed-off-by: Thomas Petazzoni +--- + src/snagrecover/utils.py | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/snagrecover/utils.py b/src/snagrecover/utils.py +index 8d240f6..dfe7d23 100644 +--- a/src/snagrecover/utils.py ++++ b/src/snagrecover/utils.py +@@ -16,9 +16,7 @@ from snagrecover.usb import SnagbootUSBContext + import yaml + import importlib.resources + +-import lzma +-import bz2 +-import gzip ++from math import ceil + + USB_RETRIES = 9 + USB_INTERVAL = 1 +@@ -47,10 +45,13 @@ def open_compressed_file(path: str, mode): + comp = get_compression_method(path) + + if comp == "xz": ++ import lzma + file = lzma.open(path, mode) + elif comp == "bz2": ++ import bz2 + file = bz2.open(path, mode) + elif comp == "gz": ++ import gzip + file = gzip.open(path, mode) + else: + return open(path, mode) +-- +2.55.0 + diff --git a/package/snagboot/snagboot.hash b/package/snagboot/snagboot.hash index 6fff4c94c1..09d765d9f5 100644 --- a/package/snagboot/snagboot.hash +++ b/package/snagboot/snagboot.hash @@ -1,3 +1,3 @@ # Locally calculated -sha256 03b3793feb9d926f5cb4f1c89f7a22075247fe91942c7be13065b6b62029376e snagboot-2.5.tar.gz +sha256 0b94184d9668c46cc2cf11002772ddb2fe06542f4f96cc6884342b5561d84b8d snagboot-2.6.1.tar.gz sha256 8177f97513213526df2cf6184d8ff986c675afb514d4e68a404010521b880643 LICENSE diff --git a/package/snagboot/snagboot.mk b/package/snagboot/snagboot.mk index 64b8b6fcc9..b3f699e988 100644 --- a/package/snagboot/snagboot.mk +++ b/package/snagboot/snagboot.mk @@ -4,7 +4,7 @@ # ################################################################################ -SNAGBOOT_VERSION = 2.5 +SNAGBOOT_VERSION = 2.6.1 SNAGBOOT_SITE = $(call github,bootlin,snagboot,v$(SNAGBOOT_VERSION)) SNAGBOOT_LICENSE = GPL-2.0 SNAGBOOT_LICENSE_FILES = LICENSE