Update to iPXE version to 1.21.1

- Build additional artifacts - ISO, UEFI, etc.
- Set default timeout on shell to fallthrough on failures
- Add ping command (enabling patch renamed to be more generic)
- Update build container to Debian 11
- Add VERSION file

Change-Id: I9476c1d6446f6943dcd084384ba2ae3d96f71128
diff --git a/Makefile b/Makefile
index 759d9ac..60b38d6 100644
--- a/Makefile
+++ b/Makefile
@@ -6,14 +6,19 @@
 SHELL = bash -eu -o pipefail
 
 # iPXE configuration
-IPXE_VERSION ?= v1.20.1
-TARGETS      ?= bin/undionly.kpxe bin/ipxe.usb
-OPTIONS      ?= EMBED=chain.ipxe
-COPY_FILES   ?= chain.ipxe
+IPXE_VERSION  ?= v1.21.1
+TARGETS       ?= bin/undionly.kpxe bin/ipxe.usb bin/ipxe.iso bin/ipxe.pdsk
+TARGETS_EFI32 ?= bin-i386-efi/ipxe.usb
+TARGETS_EFI64 ?= bin-x86_64-efi/ipxe.usb
+OPTIONS       ?= EMBED=chain.ipxe
+COPY_FILES    ?= chain.ipxe
 
 # Build configuration
-OUTDIR       ?= $(shell pwd)/out
-BUILDER      := ipxebuilder-$(shell date +"%Y%m%d%H%M%S")# timestamp for each run
+OUTDIR        ?= $(shell pwd)/out
+BUILDER       := ipxebuilder-$(shell date +"%Y%m%d%H%M%S")# timestamp for each run
+
+# print help by default
+.DEFAULT_GOAL := help
 
 # phony (doesn't make files) targets
 .PHONY: base image clean clean-all license help
@@ -27,16 +32,18 @@
 out:
 	mkdir -p out
 
-base: | ipxe  ## create bas iPXE build container using Docker
+base: | ipxe  ## create base iPXE build container using Docker
 	docker build . -t ipxe-builder:$(IPXE_VERSION)
 
-image: | out base  ## create iPXE binary artifacts using Docker
+image: | out base  ## create iPXE binaries using Docker
 	docker run -v $(OUTDIR):/tmp/out --name $(BUILDER) -d ipxe-builder:$(IPXE_VERSION)
 	for file in $(COPY_FILES); do \
     docker cp $$file $(BUILDER):/ipxe/src/ ;\
   done
 	docker exec -w /ipxe/src $(BUILDER) \
-    bash -c "make -j4 $(TARGETS) $(OPTIONS); cp $(TARGETS) /tmp/out"
+    bash -c "make -j4 $(TARGETS) $(OPTIONS); cp $(TARGETS) /tmp/out; \
+		         make -j4 $(TARGETS_EFI32) $(OPTIONS); cp $(TARGETS_EFI32) /tmp/out/ipxe_efi32.usb; \
+		         make -j4 $(TARGETS_EFI64) $(OPTIONS); cp $(TARGETS_EFI64) /tmp/out/ipxe_efi64.usb"
 	docker rm --force $(BUILDER)
 
 test: image  ## test (currently only runs an image build)
@@ -54,5 +61,5 @@
 help: ## Print help for each target
 	@echo infra-playbooks make targets
 	@echo
-	@grep '^[[:alnum:]_-]*:.* ##' $(MAKEFILE_LIST) \
+	@grep '^[[:alnum:]_-]*:.* ## ' $(MAKEFILE_LIST) \
     | sort | awk 'BEGIN {FS=":.* ## "}; {printf "%-25s %s\n", $$1, $$2};'