From a60ae04dbd27dde7b036eb2d09efe0c6943d8040 Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sat, 8 Aug 2026 19:11:55 +0200 Subject: [PATCH] package/snagboot: bump to version 2.6.1 Changelog 2.5..2.6: treewide: Migrate documentation to readthedocs Emit more specific error messages for USB permission-based access issues Add unit tests snagflash: Support compressed input files, e.g. *.wic.bz2 Refactor fastboot-uboot logic to factor out common code and improve logging Automatically detect when oem_run isn't supported by U-Boot, and fallback to ucmd snagrecover: Support Renesas RZ/N1 platforms Support SoC model aliases, and add i.MX8MP alias Handle relative path prefixes with the -F syntax Changelog 2.6..2.6.1: snagrecover: Correct i.MX93 ROM code recovery which doesn't support control endpoint HID commands Add multi-board support to AM335x recovery setup script Add i.MX7Solo support treewide: Fix broken links in documentation Drop Python 3.9 support Add CI for Python 3.14 One packaging-related change is that Snagboot would now unconditionally import the bzip2, gzip and lzma Python modules, which are not necessarily available. Since these are only needed when compressed images are provided as input, we submitted a patch upstream to make those imports only when compressed files are provided as input, relaxing those dependencies. Signed-off-by: Thomas Petazzoni Signed-off-by: Julien Olivain --- ...utils.py-import-compression-modules-.patch | 57 +++++++++++++++++++ package/snagboot/snagboot.hash | 2 +- package/snagboot/snagboot.mk | 2 +- 3 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 package/snagboot/0001-src-snagrecover-utils.py-import-compression-modules-.patch 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