[RFC 1/2] Add hidden option FEATURE_HAVE_SEAMLESS_COMPRESSION

Kang-Che Sung explorer09 at gmail.com
Fri Feb 17 11:20:55 UTC 2017


All applets that allow seamless compression now automatically select
FEATURE_HAVE_SEAMLESS_COMPRESSION, and FEATURE_SEAMLESS_* now depend on
this.

This means that "Make tar, rpm, modprobe etc understand ... data"
questions will no longer be asked if there are no applets requiring it.

Currently the applets that select FEATURE_HAVE_SEAMLESS_COMPRESSION
are: zcat, dpkg, dpkg_deb, rpm, rpm2cpio, tar, loadfont, fbsplash, man,
depmod, insmod, modinfo and modprobe.

I hope this will help tracking which of the applets will use seamless
compression more easily.

Signed-off-by: Kang-Che Sung <explorer09 at gmail.com>
---
 archival/Config.src      | 12 ++++++++++++
 archival/bbunzip.c       |  1 +
 archival/dpkg.c          |  1 +
 archival/dpkg_deb.c      |  1 +
 archival/rpm.c           |  1 +
 archival/rpm2cpio.c      |  1 +
 archival/tar.c           |  1 +
 console-tools/loadfont.c |  1 +
 miscutils/fbsplash.c     |  1 +
 miscutils/man.c          |  1 +
 modutils/depmod.c        |  1 +
 modutils/insmod.c        |  1 +
 modutils/modinfo.c       |  1 +
 modutils/modprobe.c      |  1 +
 14 files changed, 25 insertions(+)

diff --git a/archival/Config.src b/archival/Config.src
index 0c97f3d7c..82c8c40eb 100644
--- a/archival/Config.src
+++ b/archival/Config.src
@@ -5,25 +5,37 @@
 
 menu "Archival Utilities"
 
+config FEATURE_HAVE_SEAMLESS_COMPRESSION
+	bool
+	default n
+	#help
+	#  This is automatically selected if any applet that supports seamless
+	#  compression is enabled.
+
 config FEATURE_SEAMLESS_XZ
 	bool "Make tar, rpm, modprobe etc understand .xz data"
 	default y
+	depends on FEATURE_HAVE_SEAMLESS_COMPRESSION
 
 config FEATURE_SEAMLESS_LZMA
 	bool "Make tar, rpm, modprobe etc understand .lzma data"
 	default y
+	depends on FEATURE_HAVE_SEAMLESS_COMPRESSION
 
 config FEATURE_SEAMLESS_BZ2
 	bool "Make tar, rpm, modprobe etc understand .bz2 data"
 	default y
+	depends on FEATURE_HAVE_SEAMLESS_COMPRESSION
 
 config FEATURE_SEAMLESS_GZ
 	bool "Make tar, rpm, modprobe etc understand .gz data"
 	default y
+	depends on FEATURE_HAVE_SEAMLESS_COMPRESSION
 
 config FEATURE_SEAMLESS_Z
 	bool "Make tar, rpm, modprobe etc understand .Z data"
 	default n  # it is ancient
+	depends on FEATURE_HAVE_SEAMLESS_COMPRESSION
 
 INSERT
 
diff --git a/archival/bbunzip.c b/archival/bbunzip.c
index 0e2a261f0..cb7c9dfd2 100644
--- a/archival/bbunzip.c
+++ b/archival/bbunzip.c
@@ -305,6 +305,7 @@ int uncompress_main(int argc UNUSED_PARAM, char **argv)
 //config:	bool "zcat"
 //config:	default y
 //config:	select FEATURE_GZIP_DECOMPRESS
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION # zcat uses seamless magic
 //config:	help
 //config:	  Alias to "gunzip -c".
 //config:
diff --git a/archival/dpkg.c b/archival/dpkg.c
index f133299e3..f24192161 100644
--- a/archival/dpkg.c
+++ b/archival/dpkg.c
@@ -29,6 +29,7 @@
 //config:config DPKG
 //config:	bool "dpkg"
 //config:	default y
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	select FEATURE_SEAMLESS_GZ
 //config:	help
 //config:	  dpkg is a medium-level tool to install, build, remove and manage
diff --git a/archival/dpkg_deb.c b/archival/dpkg_deb.c
index ebbc7f035..5890587c2 100644
--- a/archival/dpkg_deb.c
+++ b/archival/dpkg_deb.c
@@ -8,6 +8,7 @@
 //config:config DPKG_DEB
 //config:	bool "dpkg_deb"
 //config:	default y
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	select FEATURE_SEAMLESS_GZ
 //config:	help
 //config:	  dpkg-deb unpacks and provides information about Debian archives.
diff --git a/archival/rpm.c b/archival/rpm.c
index 83160f975..9582cf2d2 100644
--- a/archival/rpm.c
+++ b/archival/rpm.c
@@ -10,6 +10,7 @@
 //config:config RPM
 //config:	bool "rpm"
 //config:	default y
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	help
 //config:	  Mini RPM applet - queries and extracts RPM packages.
 
diff --git a/archival/rpm2cpio.c b/archival/rpm2cpio.c
index 7057570f5..aa23e10b4 100644
--- a/archival/rpm2cpio.c
+++ b/archival/rpm2cpio.c
@@ -10,6 +10,7 @@
 //config:config RPM2CPIO
 //config:	bool "rpm2cpio"
 //config:	default y
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	help
 //config:	  Converts a RPM file into a CPIO archive.
 
diff --git a/archival/tar.c b/archival/tar.c
index b1d58a2df..a6e55591e 100644
--- a/archival/tar.c
+++ b/archival/tar.c
@@ -44,6 +44,7 @@
 //config:config TAR
 //config:	bool "tar"
 //config:	default y
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	help
 //config:	  tar is an archiving program. It's commonly used with gzip to
 //config:	  create compressed archives. It's probably the most widely used
diff --git a/console-tools/loadfont.c b/console-tools/loadfont.c
index 29f723ec0..5e6bd695a 100644
--- a/console-tools/loadfont.c
+++ b/console-tools/loadfont.c
@@ -20,6 +20,7 @@
 //config:	bool "setfont"
 //config:	default y
 //config:	select PLATFORM_LINUX
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	help
 //config:	  Allows to load console screen map. Useful for i18n.
 //config:
diff --git a/miscutils/fbsplash.c b/miscutils/fbsplash.c
index fc6c9b953..0a89c792e 100644
--- a/miscutils/fbsplash.c
+++ b/miscutils/fbsplash.c
@@ -24,6 +24,7 @@
 //config:	bool "fbsplash"
 //config:	default y
 //config:	select PLATFORM_LINUX
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	help
 //config:	  Shows splash image and progress bar on framebuffer device.
 //config:	  Can be used during boot phase of an embedded device. ~2kb.
diff --git a/miscutils/man.c b/miscutils/man.c
index 6a636f1ec..d5491a7d8 100644
--- a/miscutils/man.c
+++ b/miscutils/man.c
@@ -5,6 +5,7 @@
 //config:config MAN
 //config:	bool "man"
 //config:	default y
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	help
 //config:	  Format and display manual pages.
 
diff --git a/modutils/depmod.c b/modutils/depmod.c
index b7965ebd2..99cadd2be 100644
--- a/modutils/depmod.c
+++ b/modutils/depmod.c
@@ -11,6 +11,7 @@
 //config:	bool "depmod"
 //config:	default y
 //config:	select PLATFORM_LINUX
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	help
 //config:	  depmod generates modules.dep (and potentially modules.alias
 //config:	  and modules.symbols) that contain dependency information
diff --git a/modutils/insmod.c b/modutils/insmod.c
index 8526979eb..9afd52933 100644
--- a/modutils/insmod.c
+++ b/modutils/insmod.c
@@ -10,6 +10,7 @@
 //config:	bool "insmod"
 //config:	default y
 //config:	select PLATFORM_LINUX
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	help
 //config:	  insmod is used to load specified modules in the running kernel.
 
diff --git a/modutils/modinfo.c b/modutils/modinfo.c
index aa641ad54..90a51ad26 100644
--- a/modutils/modinfo.c
+++ b/modutils/modinfo.c
@@ -9,6 +9,7 @@
 //config:	bool "modinfo"
 //config:	default y
 //config:	select PLATFORM_LINUX
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	help
 //config:	  Show information about a Linux Kernel module
 
diff --git a/modutils/modprobe.c b/modutils/modprobe.c
index a6224fa63..14ebffd54 100644
--- a/modutils/modprobe.c
+++ b/modutils/modprobe.c
@@ -11,6 +11,7 @@
 //config:	bool "modprobe"
 //config:	default y
 //config:	select PLATFORM_LINUX
+//config:	select FEATURE_HAVE_SEAMLESS_COMPRESSION
 //config:	help
 //config:	  Handle the loading of modules, and their dependencies on a high
 //config:	  level.
-- 
2.11.0



More information about the busybox mailing list