fs/squashfs: Add option to compress with extreme options

mksquashfs allows to tweak many compressions parameters. Currently they
can't be changed from kmenu. Leaving out potential space savings.

This adds the option to enable a set of predetermined compression
options. This option is enabled by default for lz4 since lz4 currently
implicitly added the extreme to it in the makefile. So this aids in
keeping backward compatibility.

Signed-off-by: Linus Kaschulla <linus@cosmos-ink.net>
[yann.morin.1998@free.fr:
  - fix check-package
  - change the default code-style, add the legacy comment
  - always add the qstriped string, as it's empty when not used
]
Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
This commit is contained in:
Linus Kaschulla 2022-05-17 03:24:59 +00:00 committed by Yann E. MORIN
parent 555f8dfd6e
commit d9c144d5f5
2 changed files with 29 additions and 2 deletions

View File

@ -89,4 +89,30 @@ config BR2_TARGET_ROOTFS_SQUASHFS4_ZSTD
endchoice
config BR2_TARGET_ROOTFS_SQUASHFS_EXTREME_COMP
bool "extreme compression when available"
default y if BR2_TARGET_ROOTFS_SQUASHFS4_LZ4 # legacy
help
Use options to increase compression ration as much as
possible, like using architecture-specific options, at
the cost of time when assembling the filesystem image.
For example:
- with gzip and lzo, use -Xcompression-level 9
- with xz use arch-specific bcj (branch-call-jump) filters
- with zstd use -Xcompression-level 22
- and more
config BR2_TARGET_ROOTFS_SQUASHFS_COMP_OPTS
string
default "-Xcompression-level 9" if BR2_TARGET_ROOTFS_SQUASHFS4_GZIP
default "-Xcompression-level 9" if BR2_TARGET_ROOTFS_SQUASHFS4_LZO
default "-Xhc" if BR2_TARGET_ROOTFS_SQUASHFS4_LZ4
default "-Xbcj arm,armthumb" if BR2_TARGET_ROOTFS_SQUASHFS4_XZ && (BR2_arm || BR_aarch64)
default "-Xbcj powerpc" if BR2_TARGET_ROOTFS_SQUASHFS4_XZ && (BR2_powerpc || BR2_powerpc64)
default "-Xbcj sparc" if BR2_TARGET_ROOTFS_SQUASHFS4_XZ && (BR2_sparc || BR2_sparc64)
default "-Xbcj x86" if BR2_TARGET_ROOTFS_SQUASHFS4_XZ && (BR2_i386 || BR2_x86_64)
default "-Xcompression-level 22" if BR2_TARGET_ROOTFS_SQUASHFS4_ZSTD
depends on BR2_TARGET_ROOTFS_SQUASHFS_EXTREME_COMP
endif

View File

@ -9,14 +9,15 @@ ROOTFS_SQUASHFS_DEPENDENCIES = host-squashfs
ROOTFS_SQUASHFS_ARGS = \
-noappend \
-processors $(PARALLEL_JOBS) \
-b $(call qstrip,$(BR2_TARGET_ROOTFS_SQUASHFS_BS))
-b $(call qstrip,$(BR2_TARGET_ROOTFS_SQUASHFS_BS)) \
$(call qstrip,$(BR2_TARGET_ROOTFS_SQUASHFS_COMP_OPTS))
ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS_PAD),)
ROOTFS_SQUASHFS_ARGS += -nopad
endif
ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZ4),y)
ROOTFS_SQUASHFS_ARGS += -comp lz4 -Xhc
ROOTFS_SQUASHFS_ARGS += -comp lz4
else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZO),y)
ROOTFS_SQUASHFS_ARGS += -comp lzo
else ifeq ($(BR2_TARGET_ROOTFS_SQUASHFS4_LZMA),y)