qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 07/10] roms: build edk2 firmware binaries and va


From: Philippe Mathieu-Daudé
Subject: Re: [Qemu-devel] [PATCH 07/10] roms: build edk2 firmware binaries and variable store templates
Date: Sun, 10 Mar 2019 16:10:27 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1

Hi Laszlo,

On 3/9/19 5:48 PM, Philippe Mathieu-Daudé wrote:
> On 3/9/19 1:48 AM, Laszlo Ersek wrote:
>> Add the "efi" target to "Makefile".
>>
>> Introduce "Makefile.edk2" for building and cleaning the firmware images
>> and varstore templates.
>>
>> Collect the common bits from the recipes in the helper script
>> "edk2-build.sh".
>>
>> Signed-off-by: Laszlo Ersek <address@hidden>
>> ---
>>  roms/Makefile      |   5 +
>>  roms/Makefile.edk2 | 138 ++++++++++++++++++++
>>  roms/edk2-build.sh |  55 ++++++++
>>  3 files changed, 198 insertions(+)
>>
>> diff --git a/roms/Makefile b/roms/Makefile
>> index 2e83ececa25a..054b432834ba 100644
>> --- a/roms/Makefile
>> +++ b/roms/Makefile
>> @@ -61,6 +61,7 @@ default:
>>      @echo "  skiboot        -- update skiboot.lid"
>>      @echo "  u-boot.e500    -- update u-boot.e500"
>>      @echo "  u-boot.sam460  -- update u-boot.sam460"
>> +    @echo "  efi            -- update UEFI (edk2) platform firmware"
>>  
>>  bios: build-seabios-config-seabios-128k build-seabios-config-seabios-256k
>>      cp seabios/builds/seabios-128k/bios.bin ../pc-bios/bios.bin
>> @@ -143,6 +144,9 @@ skiboot:
>>      $(MAKE) -C skiboot CROSS=$(powerpc64_cross_prefix)
>>      cp skiboot/skiboot.lid ../pc-bios/skiboot.lid
>>  
>> +efi: edk2-basetools
>> +    $(MAKE) -f Makefile.edk2
>> +
>>  clean:
>>      rm -rf seabios/.config seabios/out seabios/builds
>>      $(MAKE) -C sgabios clean
>> @@ -153,3 +157,4 @@ clean:
>>      rm -rf u-boot/build.e500
>>      $(MAKE) -C u-boot-sam460ex distclean
>>      $(MAKE) -C skiboot clean
>> +    $(MAKE) -f Makefile.edk2 clean
>> diff --git a/roms/Makefile.edk2 b/roms/Makefile.edk2
>> new file mode 100644
>> index 000000000000..ad6fff044cd6
>> --- /dev/null
>> +++ b/roms/Makefile.edk2
>> @@ -0,0 +1,138 @@
>> +# Makefile for building firmware binaries and variable store templates for a
>> +# number of virtual platforms in edk2.
>> +#
>> +# Copyright (C) 2019, Red Hat, Inc.
>> +#
>> +# This program and the accompanying materials are licensed and made 
>> available
>> +# under the terms and conditions of the BSD License that accompanies this
>> +# distribution. The full text of the license may be found at
>> +# <http://opensource.org/licenses/bsd-license.php>.
>> +#
>> +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 
>> WITHOUT
>> +# WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
>> +
>> +toolchain = $(shell source ./edk2-funcs.sh && qemu_edk2_get_toolchain $(1))

Well I finally figured out why building on Ubuntu fails. It default
shell is dash, and 'source' is a bash builtin command. The portable
equivalent is '.' (dot).

The fix is:

-- >8 --
-toolchain = $(shell source ./edk2-funcs.sh && qemu_edk2_get_toolchain $(1))
+toolchain = $(shell . ./edk2-funcs.sh && qemu_edk2_get_toolchain $(1))
---

With this hunk:
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
Tested-by: Philippe Mathieu-Daudé <address@hidden>

>> +
>> +licenses := \
>> +    edk2/License.txt \
>> +    edk2/OvmfPkg/License.txt \
>> +    edk2/CryptoPkg/Library/OpensslLib/openssl/LICENSE
>> +
>> +# The "edk2-arm-vars.fd" varstore template is suitable for aarch64 as well.
>> +# Similarly, the "edk2-i386-vars.fd" varstore template is suitable for 
>> x86_64
>> +# as well, independently of "secure" too.
>> +all: \
>> +    ../pc-bios/edk2-aarch64-code.fd \
>> +    ../pc-bios/edk2-arm-code.fd \
>> +    ../pc-bios/edk2-i386-code.fd \
>> +    ../pc-bios/edk2-i386-secure-code.fd \
>> +    ../pc-bios/edk2-x86_64-code.fd \
>> +    ../pc-bios/edk2-x86_64-secure-code.fd \
>> +    \
>> +    ../pc-bios/edk2-arm-vars.fd \
>> +    ../pc-bios/edk2-i386-vars.fd \
>> +    \
>> +    ../pc-bios/edk2-licenses.txt
>> +
>> +submodules:
>> +    cd edk2 && git submodule update --init --force
>> +
>> +# See notes on the ".NOTPARALLEL" target and the "+" indicator in
>> +# "tests/uefi-test-tools/Makefile".
>> +.NOTPARALLEL:
>> +
>> +../pc-bios/edk2-aarch64-code.fd: submodules
>> +    +./edk2-build.sh \
>> +            aarch64 \
>> +            --arch=AARCH64 \
>> +            --platform=ArmVirtPkg/ArmVirtQemu.dsc \
>> +            -D NETWORK_IP6_ENABLE \
>> +            -D HTTP_BOOT_ENABLE
>> +    cp edk2/Build/ArmVirtQemu-AARCH64/DEBUG_$(call 
>> toolchain,aarch64)/FV/QEMU_EFI.fd \
>> +            $@
>> +    truncate --size=64M $@
> [...]
> 
> Trying on Ubuntu I get:
> 
> $ make -C roms efi
> [...]
> Fd File Name:QEMU_EFI
> (/home/phil/source/qemu/roms/edk2/Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/FV/QEMU_EFI.fd)
> Fd File Name:QEMU_VARS
> (/home/phil/source/qemu/roms/edk2/Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/FV/QEMU_VARS.fd)
> GUID cross reference file can be found at
> /home/phil/source/qemu/roms/edk2/Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/FV/Guid.xref
> - Done -
> Build end time: 16:33:29, Mar.09 2019
> Build total time: 00:03:35
> cp edk2/Build/ArmVirtQemu-AARCH64/DEBUG_/FV/QEMU_EFI.fd \
>       ../pc-bios/edk2-aarch64-code.fd
> cp: cannot stat 'edk2/Build/ArmVirtQemu-AARCH64/DEBUG_/FV/QEMU_EFI.fd':
> No such file or directory
> Makefile.edk2:45: recipe for target '../pc-bios/edk2-aarch64-code.fd' failed
> make[1]: *** [../pc-bios/edk2-aarch64-code.fd] Error 1
> make[1]: Leaving directory '/home/phil/source/qemu/roms'
> Makefile:148: recipe for target 'efi' failed
> make: *** [efi] Error 2
> make: Leaving directory '/home/phil/source/qemu/roms'
> 
> The edk2-build.sh script source edksetup.sh, then you call the
> 'toolchain' command out of the edk2-build.sh script, but here
> the edksetup.sh setup is no more effective.

I was wrong, it is sourced. See self-reply at top of this post.

Regards,

Phil.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]