[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>
pull/373/head
Michael Brown 2021-05-12 14:37:57 +01:00
parent 62f732207e
commit d7bc9e9d67
3 changed files with 11 additions and 11 deletions

View File

@ -182,6 +182,12 @@ REQUIRE_OBJECT ( efi_image );
#ifdef IMAGE_SDI #ifdef IMAGE_SDI
REQUIRE_OBJECT ( sdi ); REQUIRE_OBJECT ( sdi );
#endif #endif
#ifdef IMAGE_ZLIB
REQUIRE_OBJECT ( zlib );
#endif
#ifdef IMAGE_GZIP
REQUIRE_OBJECT ( gzip );
#endif
/* /*
* Drag in all requested commands * Drag in all requested commands
@ -284,9 +290,6 @@ REQUIRE_OBJECT ( cert_cmd );
#ifdef IMAGE_MEM_CMD #ifdef IMAGE_MEM_CMD
REQUIRE_OBJECT ( image_mem_cmd ); REQUIRE_OBJECT ( image_mem_cmd );
#endif #endif
#ifdef IMAGE_ARCHIVE_CMD
REQUIRE_OBJECT ( image_archive_cmd );
#endif
/* /*
* Drag in miscellaneous objects * Drag in miscellaneous objects

View File

@ -31,9 +31,6 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
PROVIDE_REQUIRING_SYMBOL(); PROVIDE_REQUIRING_SYMBOL();
#ifdef IMAGE_ZLIB #ifdef IMAGE_ARCHIVE_CMD
REQUIRE_OBJECT ( zlib ); REQUIRE_OBJECT ( image_archive_cmd );
#endif
#ifdef IMAGE_GZIP
REQUIRE_OBJECT ( gzip );
#endif #endif

View File

@ -117,8 +117,8 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
#define IMAGE_PNG /* PNG image support */ #define IMAGE_PNG /* PNG image support */
#define IMAGE_DER /* DER image support */ #define IMAGE_DER /* DER image support */
#define IMAGE_PEM /* PEM image support */ #define IMAGE_PEM /* PEM image support */
#define IMAGE_ZLIB /* ZLIB image support */ //#define IMAGE_ZLIB /* ZLIB image support */
#define IMAGE_GZIP /* GZIP image support */ //#define IMAGE_GZIP /* GZIP image support */
/* /*
* Command-line commands to include * Command-line commands to include
@ -158,7 +158,7 @@ FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
//#define NTP_CMD /* NTP commands */ //#define NTP_CMD /* NTP commands */
//#define CERT_CMD /* Certificate management commands */ //#define CERT_CMD /* Certificate management commands */
//#define IMAGE_MEM_CMD /* Read memory command */ //#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 * ROM-specific options