packages/dracut/dracut-install-support-ZSTD-compressed-firmware.patch
2023-07-24 19:45:26 +02:00

51 lines
1.9 KiB
Diff

From 9d8387ed803dfc3e8b97d2e415a15083774d7ac6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=BD=D0=B0=D0=B1?= <nabijaczleweli@nabijaczleweli.xyz>
Date: Tue, 26 Apr 2022 17:32:32 +0200
Subject: [PATCH] feat(dracut-install): support ZSTD-compressed firmware with
.zst suffix
Coming in 5.19:
https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/commit/?h=driver-core-next&id=23cfbc6ec44e5e80d5522976ff45ffcdcddfb230
Signed-off-by: Laurent Carlier <lordheavym@gmail.com>
---
src/install/dracut-install.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/install/dracut-install.c b/src/install/dracut-install.c
index c8b25733..6025bd67 100644
--- a/src/install/dracut-install.c
+++ b/src/install/dracut-install.c
@@ -1371,18 +1371,20 @@ static int install_all(int argc, char **argv)
static int install_firmware_fullpath(const char *fwpath)
{
- const char *fw;
- _cleanup_free_ char *fwpath_xz = NULL;
- fw = fwpath;
+ const char *fw = fwpath;
+ _cleanup_free_ char *fwpath_compressed = NULL;
struct stat sb;
int ret;
if (stat(fwpath, &sb) != 0) {
- _asprintf(&fwpath_xz, "%s.xz", fwpath);
- if (stat(fwpath_xz, &sb) != 0) {
- log_debug("stat(%s) != 0", fwpath);
- return 1;
+ _asprintf(&fwpath_compressed, "%s.zst", fwpath);
+ if (access(fwpath_compressed, F_OK) != 0) {
+ strcpy(fwpath_compressed + strlen(fwpath) + 1, "xz");
+ if (access(fwpath_compressed, F_OK) != 0) {
+ log_debug("stat(%s) != 0", fwpath);
+ return 1;
+ }
}
- fw = fwpath_xz;
+ fw = fwpath_compressed;
}
ret = dracut_install(fw, fw, false, false, true);
if (ret == 0) {
--
2.41.0