diff options
author | Michael Brown <mcb30@ipxe.org> | 2021-05-12 14:37:57 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2021-05-12 14:50:34 +0100 |
commit | d7bc9e9d67c2e7a4d2006d2c48485b3265aea038 (patch) | |
tree | 60fac3a69815dba47ec3f9af67c15a7420bb5fea | |
parent | 62f732207e7cbd226a11b85581c2c33e1e6be409 (diff) | |
download | ipxe-d7bc9e9d67c2e7a4d2006d2c48485b3265aea038.zip ipxe-d7bc9e9d67c2e7a4d2006d2c48485b3265aea038.tar.gz ipxe-d7bc9e9d67c2e7a4d2006d2c48485b3265aea038.tar.bz2 |
[image] Support archive image formats independently of "imgextract" command
Support for the zlib and gzip archive image formats is currently
included only if the IMAGE_ARCHIVE_CMD is used to enable the
"imgextract" command.
The ability to transparently execute a single-member archive image
without using the "imgextract" command renders this unintuitive: a
user wanting to gain the ability to boot a gzip-compressed kernel
image would expect to have to enable IMAGE_GZIP rather than
IMAGE_ARCHIVE_CMD.
Reverse the inclusion logic, so that archive image formats must now be
enabled explicitly (via IMAGE_GZIP and/or IMAGE_ZLIB), with the
archive image management commands dragged in as needed if any archive
image formats are enabled. The archive image management commands may
be explicitly disabled via IMAGE_ARCHIVE_CMD if necessary.
This matches the behaviour of IBMGMT_CMD and similar options, where
the relevant commands are included only when something else already
drags in the underlying feature.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r-- | src/config/config.c | 9 | ||||
-rw-r--r-- | src/config/config_archive.c | 7 | ||||
-rw-r--r-- | src/config/general.h | 6 |
3 files changed, 11 insertions, 11 deletions
diff --git a/src/config/config.c b/src/config/config.c index dd1fceb..a818661 100644 --- a/src/config/config.c +++ b/src/config/config.c @@ -182,6 +182,12 @@ REQUIRE_OBJECT ( efi_image ); #ifdef IMAGE_SDI REQUIRE_OBJECT ( sdi ); #endif +#ifdef IMAGE_ZLIB +REQUIRE_OBJECT ( zlib ); +#endif +#ifdef IMAGE_GZIP +REQUIRE_OBJECT ( gzip ); +#endif /* * Drag in all requested commands @@ -284,9 +290,6 @@ REQUIRE_OBJECT ( cert_cmd ); #ifdef IMAGE_MEM_CMD REQUIRE_OBJECT ( image_mem_cmd ); #endif -#ifdef IMAGE_ARCHIVE_CMD -REQUIRE_OBJECT ( image_archive_cmd ); -#endif /* * Drag in miscellaneous objects diff --git a/src/config/config_archive.c b/src/config/config_archive.c index 84f21b9..746fc7e 100644 --- a/src/config/config_archive.c +++ b/src/config/config_archive.c @@ -31,9 +31,6 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); PROVIDE_REQUIRING_SYMBOL(); -#ifdef IMAGE_ZLIB -REQUIRE_OBJECT ( zlib ); -#endif -#ifdef IMAGE_GZIP -REQUIRE_OBJECT ( gzip ); +#ifdef IMAGE_ARCHIVE_CMD +REQUIRE_OBJECT ( image_archive_cmd ); #endif diff --git a/src/config/general.h b/src/config/general.h index fcfbaf5..2d15f50 100644 --- a/src/config/general.h +++ b/src/config/general.h @@ -117,8 +117,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); #define IMAGE_PNG /* PNG image support */ #define IMAGE_DER /* DER image support */ #define IMAGE_PEM /* PEM image support */ -#define IMAGE_ZLIB /* ZLIB image support */ -#define IMAGE_GZIP /* GZIP image support */ +//#define IMAGE_ZLIB /* ZLIB image support */ +//#define IMAGE_GZIP /* GZIP image support */ /* * Command-line commands to include @@ -158,7 +158,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); //#define NTP_CMD /* NTP commands */ //#define CERT_CMD /* Certificate management commands */ //#define IMAGE_MEM_CMD /* Read memory command */ -//#define IMAGE_ARCHIVE_CMD /* Archive image management commands */ +#define IMAGE_ARCHIVE_CMD /* Archive image management commands */ /* * ROM-specific options |