All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2 0/6] Introduce EDK2 firmware builds
@ 2020-07-26 10:05 D. Olsson
  2020-07-27 14:57 ` Erico Nunes
  0 siblings, 1 reply; 4+ messages in thread
From: D. Olsson @ 2020-07-26 10:05 UTC (permalink / raw)
  To: buildroot

Hi all,

Here is a more simplified and somewhat cleaner revision of the series
introducing the ability to build EDK2 UEFI firmware in Buildroot.

This series is introducing the EDK2 bootloader package which can build
firmware for five different platforms, targeting both x86-64 and AArch64.

 * QEMU x86-64 pc machine
 * QEMU aarch64 virt machine, booting directly from flash
 * QEMU aarch64 virt machine, booting via kernel protocol
 * QEMU aarch64 sbsa-ref machine
 * ARM FVP vexpress machine

The EDK2 build system is very particular and includes different
dependencies and a lot of custom scripting, which has lead to these design
decisions when building these Buildroot packages:

 * EDK2 needs to rely on Git submodules because its dependencies are not
   easy to build separately
 * Each platform is a specific configuration option (instead of a string)
   because they require slightly different packages etc.

To keep it simple, this series no longer introduce the concept of "SBBR"
Although, the firmware build with ATF + EDK2 + ACPI is mostly compliant
with SBBR.

Dick Olsson (6):
  package/edk2-platforms: new package
  boot/edk2: new package
  configs/aarch64_efi_defconfig: build the EDK2 firmware from source
  configs/pc_x86_64_defconfig: build the EDK2 firmware from source
  boot/arm-trusted-firmware: add EDK2 as BL33 option
  configs/qemu_aarch64_sbsa_defconfig: new config for QEMU sbsa-ref

 board/aarch64-efi/readme.txt                  |   8 +-
 board/pc/readme.txt                           |   9 +-
 board/qemu/aarch64-sbsa/genimage.cfg          |  25 ++++
 board/qemu/aarch64-sbsa/linux.fragment        |   1 +
 board/qemu/aarch64-sbsa/post-image.sh         |  18 +++
 board/qemu/aarch64-sbsa/readme.txt            |  34 +++++
 boot/Config.in                                |   1 +
 boot/arm-trusted-firmware/Config.in           |  15 ++-
 .../arm-trusted-firmware.mk                   |   8 ++
 boot/edk2/Config.in                           |  68 ++++++++++
 boot/edk2/edk2.hash                           |   3 +
 boot/edk2/edk2.mk                             | 117 ++++++++++++++++++
 configs/aarch64_efi_defconfig                 |   2 +
 configs/pc_x86_64_efi_defconfig               |   2 +
 configs/qemu_aarch64_sbsa_defconfig           |  40 ++++++
 package/Config.in.host                        |   1 +
 package/edk2-platforms/Config.in.host         |   8 ++
 package/edk2-platforms/edk2-platforms.hash    |   2 +
 package/edk2-platforms/edk2-platforms.mk      |  12 ++
 19 files changed, 363 insertions(+), 11 deletions(-)
 create mode 100644 board/qemu/aarch64-sbsa/genimage.cfg
 create mode 100644 board/qemu/aarch64-sbsa/linux.fragment
 create mode 100755 board/qemu/aarch64-sbsa/post-image.sh
 create mode 100644 board/qemu/aarch64-sbsa/readme.txt
 create mode 100644 boot/edk2/Config.in
 create mode 100644 boot/edk2/edk2.hash
 create mode 100644 boot/edk2/edk2.mk
 create mode 100644 configs/qemu_aarch64_sbsa_defconfig
 create mode 100644 package/edk2-platforms/Config.in.host
 create mode 100644 package/edk2-platforms/edk2-platforms.hash
 create mode 100644 package/edk2-platforms/edk2-platforms.mk

-- 
2.20.1

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v2 0/6] Introduce EDK2 firmware builds
  2020-07-26 10:05 [Buildroot] [PATCH v2 0/6] Introduce EDK2 firmware builds D. Olsson
@ 2020-07-27 14:57 ` Erico Nunes
  2020-07-31 11:41   ` D. Olsson
  2020-12-19 18:24   ` D. Olsson
  0 siblings, 2 replies; 4+ messages in thread
From: Erico Nunes @ 2020-07-27 14:57 UTC (permalink / raw)
  To: buildroot

Hello,

(sorry to reply to this cover letter, looks like some of the e-mails
from this series did not reach me...)


On Sun, Jul 26, 2020 at 12:06 PM D. Olsson <hi@senzilla.io> wrote:
>
> Hi all,
>
> Here is a more simplified and somewhat cleaner revision of the series
> introducing the ability to build EDK2 UEFI firmware in Buildroot.
>
> This series is introducing the EDK2 bootloader package which can build
> firmware for five different platforms, targeting both x86-64 and AArch64.
>
>  * QEMU x86-64 pc machine
>  * QEMU aarch64 virt machine, booting directly from flash
>  * QEMU aarch64 virt machine, booting via kernel protocol
>  * QEMU aarch64 sbsa-ref machine
>  * ARM FVP vexpress machine
>
> The EDK2 build system is very particular and includes different
> dependencies and a lot of custom scripting, which has lead to these design
> decisions when building these Buildroot packages:
>
>  * EDK2 needs to rely on Git submodules because its dependencies are not
>    easy to build separately
>  * Each platform is a specific configuration option (instead of a string)
>    because they require slightly different packages etc.
>
> To keep it simple, this series no longer introduce the concept of "SBBR"
> Although, the firmware build with ATF + EDK2 + ACPI is mostly compliant
> with SBBR.
>
> Dick Olsson (6):
>   package/edk2-platforms: new package
>   boot/edk2: new package

I tried to build edk2 with the defconfig changes on the aarch64_efi
and pc efi defconfigs, but it failed to build some host tool with:

gcc  -c  -I .. -I ../Include/Common -I ../Include/ -I
../Include/IndustryStandard -I ../Common/ -I .. -I . -I
../Include/X64/ -MD -fshort-wchar -fno-strict-aliasing -fwrapv
-fno-delete-null-pointer-checks -Wall -Werror
-Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict
-Wno-unused-result -nostdlib -g -O2  GenFv.c -o GenFv.o
gcc  -c  -I .. -I ../Include/Common -I ../Include/ -I
../Include/IndustryStandard -I ../Common/ -I .. -I . -I
../Include/X64/ -MD -fshort-wchar -fno-strict-aliasing -fwrapv
-fno-delete-null-pointer-checks -Wall -Werror
-Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict
-Wno-unused-result -nostdlib -g -O2  GenFvInternalLib.c -o
GenFvInternalLib.o
GenFvInternalLib.c:19:10: fatal error: uuid/uuid.h: No such file or directory
   19 | #include <uuid/uuid.h>

or

gcc -o ../bin/GenFw   GenFw.o ElfConvert.o Elf32Convert.o
Elf64Convert.o -L../libs -lCommon -luuid
/usr/bin/ld: cannot find -luuid


Looks like libuuid comes from util-linux and host-util-linux was even
built in Buildroot with libuuid enabled.
So apparently the edk2 host build is missing the flags from Buildroot
to build host tools?

Then I noticed that edk2 doesn't have a host package while some host
tools are built. Maybe it's not absolutely required if it adds too
much complexity, but is this intentional?

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v2 0/6] Introduce EDK2 firmware builds
  2020-07-27 14:57 ` Erico Nunes
@ 2020-07-31 11:41   ` D. Olsson
  2020-12-19 18:24   ` D. Olsson
  1 sibling, 0 replies; 4+ messages in thread
From: D. Olsson @ 2020-07-31 11:41 UTC (permalink / raw)
  To: buildroot

Hi Erico,

On Monday, 27 July 2020 16:57, Erico Nunes <nunes.erico@gmail.com> wrote:

> I tried to build edk2 with the defconfig changes on the aarch64_efi
> and pc efi defconfigs, but it failed to build some host tool with:
>
> gcc -c -I .. -I ../Include/Common -I ../Include/ -I
> ../Include/IndustryStandard -I ../Common/ -I .. -I . -I
> ../Include/X64/ -MD -fshort-wchar -fno-strict-aliasing -fwrapv
> -fno-delete-null-pointer-checks -Wall -Werror
> -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict
> -Wno-unused-result -nostdlib -g -O2 GenFv.c -o GenFv.o
> gcc -c -I .. -I ../Include/Common -I ../Include/ -I
> ../Include/IndustryStandard -I ../Common/ -I .. -I . -I
> ../Include/X64/ -MD -fshort-wchar -fno-strict-aliasing -fwrapv
> -fno-delete-null-pointer-checks -Wall -Werror
> -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict
> -Wno-unused-result -nostdlib -g -O2 GenFvInternalLib.c -o
> GenFvInternalLib.o
> GenFvInternalLib.c:19:10: fatal error: uuid/uuid.h: No such file or directory
> 19 | #include <uuid/uuid.h>

Thanks for catching this! I was able to reproduce this issue when building
on a newly provisioned host. Not sure why I've been missing this before!

> Looks like libuuid comes from util-linux and host-util-linux was even
> built in Buildroot with libuuid enabled.
> So apparently the edk2 host build is missing the flags from Buildroot
> to build host tools?
>
> Then I noticed that edk2 doesn't have a host package while some host
> tools are built. Maybe it's not absolutely required if it adds too
> much complexity, but is this intentional?

This wasn't an intentional design decision. I'll look into how to best
solve this.


Thanks!

D. Olsson
PGP: 8204A8CD

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH v2 0/6] Introduce EDK2 firmware builds
  2020-07-27 14:57 ` Erico Nunes
  2020-07-31 11:41   ` D. Olsson
@ 2020-12-19 18:24   ` D. Olsson
  1 sibling, 0 replies; 4+ messages in thread
From: D. Olsson @ 2020-12-19 18:24 UTC (permalink / raw)
  To: buildroot

This should be fixed in v3 of the patch series that I submitted yesterday. Let me know if you find any other issues.

On the missing email, spam filters sometimes take my emails...

D. Olsson
PGP: 8204A8CD

On Mon, Jul 27, 2020 at 16:57, Erico Nunes <nunes.erico@gmail.com> wrote:

> Hello,
>
> (sorry to reply to this cover letter, looks like some of the e-mails
> from this series did not reach me...)
>
> On Sun, Jul 26, 2020 at 12:06 PM D. Olsson <hi@senzilla.io> wrote:
>>
>> Hi all,
>>
>> Here is a more simplified and somewhat cleaner revision of the series
>> introducing the ability to build EDK2 UEFI firmware in Buildroot.
>>
>> This series is introducing the EDK2 bootloader package which can build
>> firmware for five different platforms, targeting both x86-64 and AArch64.
>>
>> * QEMU x86-64 pc machine
>> * QEMU aarch64 virt machine, booting directly from flash
>> * QEMU aarch64 virt machine, booting via kernel protocol
>> * QEMU aarch64 sbsa-ref machine
>> * ARM FVP vexpress machine
>>
>> The EDK2 build system is very particular and includes different
>> dependencies and a lot of custom scripting, which has lead to these design
>> decisions when building these Buildroot packages:
>>
>> * EDK2 needs to rely on Git submodules because its dependencies are not
>> easy to build separately
>> * Each platform is a specific configuration option (instead of a string)
>> because they require slightly different packages etc.
>>
>> To keep it simple, this series no longer introduce the concept of "SBBR"
>> Although, the firmware build with ATF + EDK2 + ACPI is mostly compliant
>> with SBBR.
>>
>> Dick Olsson (6):
>> package/edk2-platforms: new package
>> boot/edk2: new package
>
> I tried to build edk2 with the defconfig changes on the aarch64_efi
> and pc efi defconfigs, but it failed to build some host tool with:
>
> gcc -c -I .. -I ../Include/Common -I ../Include/ -I
> ../Include/IndustryStandard -I ../Common/ -I .. -I . -I
> ../Include/X64/ -MD -fshort-wchar -fno-strict-aliasing -fwrapv
> -fno-delete-null-pointer-checks -Wall -Werror
> -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict
> -Wno-unused-result -nostdlib -g -O2 GenFv.c -o GenFv.o
> gcc -c -I .. -I ../Include/Common -I ../Include/ -I
> ../Include/IndustryStandard -I ../Common/ -I .. -I . -I
> ../Include/X64/ -MD -fshort-wchar -fno-strict-aliasing -fwrapv
> -fno-delete-null-pointer-checks -Wall -Werror
> -Wno-deprecated-declarations -Wno-stringop-truncation -Wno-restrict
> -Wno-unused-result -nostdlib -g -O2 GenFvInternalLib.c -o
> GenFvInternalLib.o
> GenFvInternalLib.c:19:10: fatal error: uuid/uuid.h: No such file or directory
> 19 | #include <uuid/uuid.h>
>
> or
>
> gcc -o ../bin/GenFw GenFw.o ElfConvert.o Elf32Convert.o
> Elf64Convert.o -L../libs -lCommon -luuid
> /usr/bin/ld: cannot find -luuid
>
> Looks like libuuid comes from util-linux and host-util-linux was even
> built in Buildroot with libuuid enabled.
> So apparently the edk2 host build is missing the flags from Buildroot
> to build host tools?
>
> Then I noticed that edk2 doesn't have a host package while some host
> tools are built. Maybe it's not absolutely required if it adds too
> much complexity, but is this intentional?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20201219/81dc612b/attachment.html>

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-12-19 18:24 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-26 10:05 [Buildroot] [PATCH v2 0/6] Introduce EDK2 firmware builds D. Olsson
2020-07-27 14:57 ` Erico Nunes
2020-07-31 11:41   ` D. Olsson
2020-12-19 18:24   ` D. Olsson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.