[openwrt/openwrt] tools: Add gzip-libdeflate advanced compressor
LEDE Commits
lede-commits at lists.infradead.org
Mon Jan 2 01:37:31 PST 2023
svanheule pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/a51ca085bff2f8c6155f18bb767fe2d053bbc90d
commit a51ca085bff2f8c6155f18bb767fe2d053bbc90d
Author: Markus Stockhausen <markus.stockhausen at gmx.de>
AuthorDate: Tue Jul 26 13:44:48 2022 +0200
tools: Add gzip-libdeflate advanced compressor
Several devices provide U-Boot versions with only gzip compressed kernel
support (e.g. Realtek switches). This compression method produces larger
images than lzma. To save space on flash and avoid going the hard way with
lzma-loader we can make use of enhanced gzip tool based on libdeflate
compression library from https://github.com/ebiggers/libdeflate. It
keeps 100% deflate/gzip compatibility while improving compression ratio.
The image can be unpacked by the default inflate routines inside U-Boot.
Signed-off-by: Markus Stockhausen <markus.stockhausen at gmx.de>
[Switched to v1.15 and made it work with cmake]
Signed-off-by: Olliver Schinagl <oliver at schinagl.nl>
Reviewed-by: Robert Marko <robimarko at gmail.com>
Reviewed-by: Rosen Penev <rosenp at gmail.com>
Reviewed-by: Sander Vanheule <sander at svanheule.net>
---
include/image-commands.mk | 5 +++++
tools/Makefile | 2 ++
tools/libdeflate/Makefile | 31 +++++++++++++++++++++++++++++++
3 files changed, 38 insertions(+)
diff --git a/include/image-commands.mk b/include/image-commands.mk
index 074e40e4e8..15084093d2 100644
--- a/include/image-commands.mk
+++ b/include/image-commands.mk
@@ -306,6 +306,11 @@ define Build/fit
@mv $@.new $@
endef
+define Build/libdeflate-gzip
+ $(STAGING_DIR_HOST)/bin/libdeflate-gzip -f -12 -c $@ $(1) > $@.new
+ @mv $@.new $@
+endef
+
define Build/gzip
$(STAGING_DIR_HOST)/bin/gzip -f -9n -c $@ $(1) > $@.new
@mv $@.new $@
diff --git a/tools/Makefile b/tools/Makefile
index 6300180d3f..c7c7d00756 100644
--- a/tools/Makefile
+++ b/tools/Makefile
@@ -36,6 +36,7 @@ tools-y += findutils
tools-y += firmware-utils
tools-y += flex
tools-y += gengetopt
+tools-y += libdeflate
tools-y += libressl
tools-y += libtool
tools-y += lzma
@@ -88,6 +89,7 @@ $(curdir)/genext2fs/compile := $(curdir)/libtool/compile
$(curdir)/gengetopt/compile := $(curdir)/libtool/compile
$(curdir)/gmp/compile := $(curdir)/libtool/compile
$(curdir)/isl/compile := $(curdir)/gmp/compile
+$(curdir)/libdeflate/compile := $(curdir)/cmake/compile
$(curdir)/libressl/compile := $(curdir)/pkgconf/compile
$(curdir)/libtool/compile := $(curdir)/automake/compile $(curdir)/missing-macros/compile
$(curdir)/lzma-old/compile := $(curdir)/zlib/compile
diff --git a/tools/libdeflate/Makefile b/tools/libdeflate/Makefile
new file mode 100644
index 0000000000..d30a8ca674
--- /dev/null
+++ b/tools/libdeflate/Makefile
@@ -0,0 +1,31 @@
+#
+# Copyright (C) 2022 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=libdeflate
+PKG_VERSION:=1.15
+PKG_RELEASE:=1
+
+PKG_SOURCE_URL:=https://github.com/ebiggers/libdeflate.git
+PKG_SOURCE_PROTO:=git
+PKG_SOURCE_VERSION:=v$(PKG_VERSION)
+PKG_MIRROR_HASH:=122feff4543541b547dc89e832adf262c81911ae1acbccdc591f0353a85b600a
+
+include $(INCLUDE_DIR)/host-build.mk
+include $(INCLUDE_DIR)/cmake.mk
+
+define Host/Install
+ $(INSTALL_BIN) $(HOST_BUILD_DIR)/programs/libdeflate-gzip $(STAGING_DIR_HOST)/bin/
+ $(LN) libdeflate-gzip $(STAGING_DIR_HOST)/bin/libdeflate-gunzip
+endef
+
+define Host/Clean
+ rm -f $(STAGING_DIR_HOST)/bin/libdeflate-gzip
+ rm -f $(STAGING_DIR_HOST)/bin/libdeflate-gunzip
+endef
+
+$(eval $(call HostBuild))
More information about the lede-commits
mailing list