summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2021-05-12 15:37:57 +0200
committerMichael Brown2021-05-12 15:50:34 +0200
commitd7bc9e9d67c2e7a4d2006d2c48485b3265aea038 (patch)
tree60fac3a69815dba47ec3f9af67c15a7420bb5fea
parent[image] Propagate trust flag to extracted archive images (diff)
downloadipxe-d7bc9e9d67c2e7a4d2006d2c48485b3265aea038.tar.gz
ipxe-d7bc9e9d67c2e7a4d2006d2c48485b3265aea038.tar.xz
ipxe-d7bc9e9d67c2e7a4d2006d2c48485b3265aea038.zip
[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.c9
-rw-r--r--src/config/config_archive.c7
-rw-r--r--src/config/general.h6
3 files changed, 11 insertions, 11 deletions
diff --git a/src/config/config.c b/src/config/config.c
index dd1fceb9..a8186613 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 84f21b95..746fc7e4 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 fcfbaf5e..2d15f500 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