diff mbox series

[for-4.1,v4,11/12] Makefile: install the edk2 firmware images and their descriptors

Message ID 20190409230022.6462-12-lersek@redhat.com
State New
Headers show
Series bundle edk2 platform firmware with QEMU | expand

Commit Message

Laszlo Ersek April 9, 2019, 11 p.m. UTC
Decompress and install the edk2 firmware blobs as part of "make install",
unless blob installation was disabled with configure's "--disable-blobs"
option.

Additionally, decompress the blobs as a pre-requisite for building softmmu
binaries -- this is helpful for both "make check" and other ad-hoc tests
one might want to run in the build directory.

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
---

Notes:
    v4:
    
    - no change
    
    v3:
    
    - pick up Michal's R-b
    
    - pick up Phil's R-b
    
    - pick up Michael's R-b
    
    - Decompress fd.bz2 files with bzip2 rather than fd.xz files with xz, so
      that decompression at "make install" time succeed on older build OSes
      too [Peter]. Note that "BUNZIP2" matches the name of the actual
      command "bunzip2" (i.e. it is sensible), and that it consists of 7
      characters, satisfying the quiet-command limit.
    
    - do not pick up Phil's T-b, consequently
    
    - do not pick up Igor's T-b for the same reason
    
    v2:
    
    - adapt to tracking the edk2 flash device files in compressed form [Dan,
      Michael, Phil]
    
    - do not pick up Michal's and Michael's R-b's due to the above change

 configure  |  1 +
 Makefile   | 29 +++++++++++++++++++-
 .gitignore |  1 +
 3 files changed, 30 insertions(+), 1 deletion(-)

Comments

Philippe Mathieu-Daudé April 10, 2019, 10:18 a.m. UTC | #1
On 4/10/19 1:00 AM, Laszlo Ersek wrote:
> Decompress and install the edk2 firmware blobs as part of "make install",
> unless blob installation was disabled with configure's "--disable-blobs"
> option.
> 
> Additionally, decompress the blobs as a pre-requisite for building softmmu
> binaries -- this is helpful for both "make check" and other ad-hoc tests
> one might want to run in the build directory.
> 
> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>

Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>

Note that this job (with install) on Travis takes <30min:
https://travis-ci.org/philmd/qemu/jobs/518117217

> ---
> 
> Notes:
>     v4:
>     
>     - no change
>     
>     v3:
>     
>     - pick up Michal's R-b
>     
>     - pick up Phil's R-b
>     
>     - pick up Michael's R-b
>     
>     - Decompress fd.bz2 files with bzip2 rather than fd.xz files with xz, so
>       that decompression at "make install" time succeed on older build OSes
>       too [Peter]. Note that "BUNZIP2" matches the name of the actual
>       command "bunzip2" (i.e. it is sensible), and that it consists of 7
>       characters, satisfying the quiet-command limit.
>     
>     - do not pick up Phil's T-b, consequently
>     
>     - do not pick up Igor's T-b for the same reason
>     
>     v2:
>     
>     - adapt to tracking the edk2 flash device files in compressed form [Dan,
>       Michael, Phil]
>     
>     - do not pick up Michal's and Michael's R-b's due to the above change
> 
>  configure  |  1 +
>  Makefile   | 29 +++++++++++++++++++-
>  .gitignore |  1 +
>  3 files changed, 30 insertions(+), 1 deletion(-)
> 
> diff --git a/configure b/configure
> index 1c563a70276a..e1ad87b697e0 100755
> --- a/configure
> +++ b/configure
> @@ -7892,6 +7892,7 @@ for bios_file in \
>      $source_path/pc-bios/*.img \
>      $source_path/pc-bios/openbios-* \
>      $source_path/pc-bios/u-boot.* \
> +    $source_path/pc-bios/edk2-*.fd.bz2 \
>      $source_path/pc-bios/palcode-*
>  do
>      LINKS="$LINKS pc-bios/$(basename $bios_file)"
> diff --git a/Makefile b/Makefile
> index 04a0d4505085..626a04d305cc 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -296,6 +296,10 @@ ui/input-keymap-%.c: $(KEYCODEMAP_GEN) $(KEYCODEMAP_CSV) $(SRC_PATH)/ui/Makefile
>  $(KEYCODEMAP_GEN): .git-submodule-status
>  $(KEYCODEMAP_CSV): .git-submodule-status
>  
> +edk2-decompressed = $(basename $(wildcard pc-bios/edk2-*.fd.bz2))
> +pc-bios/edk2-%.fd: pc-bios/edk2-%.fd.bz2
> +	$(call quiet-command,bzip2 -d -c $< > $@,"BUNZIP2",$<)
> +
>  # Don't try to regenerate Makefile or configure
>  # We don't generate any of them
>  Makefile: ;
> @@ -445,6 +449,7 @@ $(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
>  $(SOFTMMU_SUBDIR_RULES): $(crypto-obj-y)
>  $(SOFTMMU_SUBDIR_RULES): $(io-obj-y)
>  $(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
> +$(SOFTMMU_SUBDIR_RULES): $(edk2-decompressed)
>  
>  subdir-%:
>  	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
> @@ -633,6 +638,7 @@ clean:
>  		! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
>  		! -path ./roms/edk2/BaseTools/Source/Python/UPT/Dll/sqlite3.dll \
>  		-exec rm {} +
> +	rm -f $(edk2-decompressed)
>  	rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
>  	rm -f fsdev/*.pod scsi/*.pod
>  	rm -f qemu-img-cmds.h
> @@ -723,9 +729,14 @@ spapr-rtas.bin slof.bin skiboot.lid \
>  palcode-clipper \
>  u-boot.e500 u-boot-sam460-20100605.bin \
>  qemu_vga.ndrv \
> +edk2-licenses.txt \
>  hppa-firmware.img
> +
> +DESCS=50-edk2-i386-secure.json 50-edk2-x86_64-secure.json \
> +60-edk2-aarch64.json 60-edk2-arm.json 60-edk2-i386.json 60-edk2-x86_64.json
>  else
>  BLOBS=
> +DESCS=
>  endif
>  
>  # Note that we manually filter-out the non-Sphinx documentation which
> @@ -786,7 +797,8 @@ endif
>  
>  ICON_SIZES=16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512
>  
> -install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir
> +install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir \
> +	$(if $(INSTALL_BLOBS),$(edk2-decompressed))
>  ifneq ($(TOOLS),)
>  	$(call install-prog,$(subst qemu-ga,qemu-ga$(EXESUF),$(TOOLS)),$(DESTDIR)$(bindir))
>  endif
> @@ -808,6 +820,21 @@ ifneq ($(BLOBS),)
>  	set -e; for x in $(BLOBS); do \
>  		$(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \
>  	done
> +endif
> +ifdef INSTALL_BLOBS
> +	set -e; for x in $(edk2-decompressed); do \
> +		$(INSTALL_DATA) $$x "$(DESTDIR)$(qemu_datadir)"; \
> +	done
> +endif
> +ifneq ($(DESCS),)
> +	$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/firmware"
> +	set -e; tmpf=$$(mktemp); trap 'rm -f -- "$$tmpf"' EXIT; \
> +	for x in $(DESCS); do \
> +		sed -e 's,@DATADIR@,$(DESTDIR)$(qemu_datadir),' \
> +			"$(SRC_PATH)/pc-bios/descriptors/$$x" > "$$tmpf"; \
> +		$(INSTALL_DATA) "$$tmpf" \
> +			"$(DESTDIR)$(qemu_datadir)/firmware/$$x"; \
> +	done
>  endif
>  	for s in $(ICON_SIZES); do \
>  		mkdir -p "$(DESTDIR)/$(qemu_icondir)/hicolor/$${s}/apps"; \
> diff --git a/.gitignore b/.gitignore
> index 8f782218044e..fd6e6c38c7b9 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -97,6 +97,7 @@
>  *.gcno
>  *.gcov
>  /pc-bios/bios-pq/status
> +/pc-bios/edk2-*.fd
>  /pc-bios/vgabios-pq/status
>  /pc-bios/optionrom/linuxboot.asm
>  /pc-bios/optionrom/linuxboot.bin
>
diff mbox series

Patch

diff --git a/configure b/configure
index 1c563a70276a..e1ad87b697e0 100755
--- a/configure
+++ b/configure
@@ -7892,6 +7892,7 @@  for bios_file in \
     $source_path/pc-bios/*.img \
     $source_path/pc-bios/openbios-* \
     $source_path/pc-bios/u-boot.* \
+    $source_path/pc-bios/edk2-*.fd.bz2 \
     $source_path/pc-bios/palcode-*
 do
     LINKS="$LINKS pc-bios/$(basename $bios_file)"
diff --git a/Makefile b/Makefile
index 04a0d4505085..626a04d305cc 100644
--- a/Makefile
+++ b/Makefile
@@ -296,6 +296,10 @@  ui/input-keymap-%.c: $(KEYCODEMAP_GEN) $(KEYCODEMAP_CSV) $(SRC_PATH)/ui/Makefile
 $(KEYCODEMAP_GEN): .git-submodule-status
 $(KEYCODEMAP_CSV): .git-submodule-status
 
+edk2-decompressed = $(basename $(wildcard pc-bios/edk2-*.fd.bz2))
+pc-bios/edk2-%.fd: pc-bios/edk2-%.fd.bz2
+	$(call quiet-command,bzip2 -d -c $< > $@,"BUNZIP2",$<)
+
 # Don't try to regenerate Makefile or configure
 # We don't generate any of them
 Makefile: ;
@@ -445,6 +449,7 @@  $(SOFTMMU_SUBDIR_RULES): $(block-obj-y)
 $(SOFTMMU_SUBDIR_RULES): $(crypto-obj-y)
 $(SOFTMMU_SUBDIR_RULES): $(io-obj-y)
 $(SOFTMMU_SUBDIR_RULES): config-all-devices.mak
+$(SOFTMMU_SUBDIR_RULES): $(edk2-decompressed)
 
 subdir-%:
 	$(call quiet-command,$(MAKE) $(SUBDIR_MAKEFLAGS) -C $* V="$(V)" TARGET_DIR="$*/" all,)
@@ -633,6 +638,7 @@  clean:
 		! -path ./roms/edk2/ArmPkg/Library/GccLto/liblto-arm.a \
 		! -path ./roms/edk2/BaseTools/Source/Python/UPT/Dll/sqlite3.dll \
 		-exec rm {} +
+	rm -f $(edk2-decompressed)
 	rm -f $(filter-out %.tlb,$(TOOLS)) $(HELPERS-y) qemu-ga TAGS cscope.* *.pod *~ */*~
 	rm -f fsdev/*.pod scsi/*.pod
 	rm -f qemu-img-cmds.h
@@ -723,9 +729,14 @@  spapr-rtas.bin slof.bin skiboot.lid \
 palcode-clipper \
 u-boot.e500 u-boot-sam460-20100605.bin \
 qemu_vga.ndrv \
+edk2-licenses.txt \
 hppa-firmware.img
+
+DESCS=50-edk2-i386-secure.json 50-edk2-x86_64-secure.json \
+60-edk2-aarch64.json 60-edk2-arm.json 60-edk2-i386.json 60-edk2-x86_64.json
 else
 BLOBS=
+DESCS=
 endif
 
 # Note that we manually filter-out the non-Sphinx documentation which
@@ -786,7 +797,8 @@  endif
 
 ICON_SIZES=16x16 24x24 32x32 48x48 64x64 128x128 256x256 512x512
 
-install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir
+install: all $(if $(BUILD_DOCS),install-doc) install-datadir install-localstatedir \
+	$(if $(INSTALL_BLOBS),$(edk2-decompressed))
 ifneq ($(TOOLS),)
 	$(call install-prog,$(subst qemu-ga,qemu-ga$(EXESUF),$(TOOLS)),$(DESTDIR)$(bindir))
 endif
@@ -808,6 +820,21 @@  ifneq ($(BLOBS),)
 	set -e; for x in $(BLOBS); do \
 		$(INSTALL_DATA) $(SRC_PATH)/pc-bios/$$x "$(DESTDIR)$(qemu_datadir)"; \
 	done
+endif
+ifdef INSTALL_BLOBS
+	set -e; for x in $(edk2-decompressed); do \
+		$(INSTALL_DATA) $$x "$(DESTDIR)$(qemu_datadir)"; \
+	done
+endif
+ifneq ($(DESCS),)
+	$(INSTALL_DIR) "$(DESTDIR)$(qemu_datadir)/firmware"
+	set -e; tmpf=$$(mktemp); trap 'rm -f -- "$$tmpf"' EXIT; \
+	for x in $(DESCS); do \
+		sed -e 's,@DATADIR@,$(DESTDIR)$(qemu_datadir),' \
+			"$(SRC_PATH)/pc-bios/descriptors/$$x" > "$$tmpf"; \
+		$(INSTALL_DATA) "$$tmpf" \
+			"$(DESTDIR)$(qemu_datadir)/firmware/$$x"; \
+	done
 endif
 	for s in $(ICON_SIZES); do \
 		mkdir -p "$(DESTDIR)/$(qemu_icondir)/hicolor/$${s}/apps"; \
diff --git a/.gitignore b/.gitignore
index 8f782218044e..fd6e6c38c7b9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -97,6 +97,7 @@ 
 *.gcno
 *.gcov
 /pc-bios/bios-pq/status
+/pc-bios/edk2-*.fd
 /pc-bios/vgabios-pq/status
 /pc-bios/optionrom/linuxboot.asm
 /pc-bios/optionrom/linuxboot.bin