[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