From 2a46c9947c03c4dddc672e4920e41caa32b6a322 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Mon, 8 Nov 2021 10:50:24 +0000 Subject: fwupd-efi: add new recipe This is the EFI executable that is used by fwupd when building EFI capsules. Signed-off-by: Ross Burton Signed-off-by: Khem Raj --- meta-oe/recipes-bsp/fwupd/fwupd-efi/cc.patch | 53 ++++++++++++++++++++++++++++ meta-oe/recipes-bsp/fwupd/fwupd-efi_1.1.bb | 34 ++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 meta-oe/recipes-bsp/fwupd/fwupd-efi/cc.patch create mode 100644 meta-oe/recipes-bsp/fwupd/fwupd-efi_1.1.bb diff --git a/meta-oe/recipes-bsp/fwupd/fwupd-efi/cc.patch b/meta-oe/recipes-bsp/fwupd/fwupd-efi/cc.patch new file mode 100644 index 0000000000..ac345f2752 --- /dev/null +++ b/meta-oe/recipes-bsp/fwupd/fwupd-efi/cc.patch @@ -0,0 +1,53 @@ +Change the efi-cc argument to take an array, so that we can pass compiler flags +such as --sysroot. + +In the long term changing the fwupd-efi build to use the standard Meson +CC/LD/etc would be the preferred fix. + +Upstream-Status: Inappropriate [better fix in progress] +Signed-off-by: Ross Burton + +diff --git a/efi/generate_sbat.py b/efi/generate_sbat.py +index e42b365..4831a48 100755 +--- a/efi/generate_sbat.py ++++ b/efi/generate_sbat.py +@@ -7,6 +7,7 @@ + # + # pylint: disable=missing-docstring, invalid-name + ++import shlex + import subprocess + import sys + import argparse +@@ -19,7 +20,7 @@ def _generate_sbat(args): + FWUPD_URL = "https://github.com/fwupd/fwupd" + + subprocess.run( +- [args.cc, "-x", "c", "-c", "-o", args.outfile, "/dev/null"], check=True ++ shlex.split(args.cc) + ["-x", "c", "-c", "-o", args.outfile, "/dev/null"], check=True + ) + + # not specified +diff --git a/efi/meson.build b/efi/meson.build +index 68ea4aa..dcf0d43 100644 +--- a/efi/meson.build ++++ b/efi/meson.build +@@ -184,7 +184,7 @@ o_file5 = custom_target('fwup-sbat.o', + command : [ + join_paths(meson.current_source_dir(), 'generate_sbat.py'), + '@OUTPUT@', +- '--cc', efi_cc, ++ '--cc', ' '.join(efi_cc), + '--objcopy', efi_objcopy, + '--project-name', meson.project_name(), + '--project-version', meson.project_version(), +diff --git a/meson_options.txt b/meson_options.txt +index d869cd2..17ef7fb 100644 +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -1,4 +1,4 @@ +-option('efi-cc', type : 'string', value : 'gcc', description : 'the compiler to use for EFI modules') ++option('efi-cc', type : 'array', value : ['gcc'], description : 'the compiler to use for EFI modules') + option('efi-ld', type : 'string', value : 'ld', description : 'the linker to use for EFI modules') + option('efi-objcopy', type : 'string', value : 'objcopy', description : 'the objcopy utility to use for EFI modules') + option('efi-libdir', type : 'string', description : 'path to the EFI lib directory') diff --git a/meta-oe/recipes-bsp/fwupd/fwupd-efi_1.1.bb b/meta-oe/recipes-bsp/fwupd/fwupd-efi_1.1.bb new file mode 100644 index 0000000000..2165b42293 --- /dev/null +++ b/meta-oe/recipes-bsp/fwupd/fwupd-efi_1.1.bb @@ -0,0 +1,34 @@ +SUMMARY = "EFI executable for fwupd" +LICENSE = "LGPL-2.1+" +LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" + +SRC_URI = "git://github.com/fwupd/fwupd-efi;protocol=https;branch=main \ + file://cc.patch" +SRCREV = "fee1b8f6473cb403b8ae7a56961ba0557e3f3efa" +S = "${WORKDIR}/git" + +DEPENDS = "gnu-efi" + +COMPATIBLE_HOST = "(x86_64.*|i.86.*|aarch64.*|arm.*)-linux" + +inherit meson + +# These should be configured as needed +SBAT_DISTRO_ID ?= "${DISTRO}" +SBAT_DISTRO_SUMMARY ?= "${DISTRO_NAME}" +SBAT_DISTRO_URL ?= "" + +EXTRA_OEMESON += "-Defi-cc="${@meson_array('CC', d)}" \ + -Defi-ld='${HOST_PREFIX}ld' \ + -Defi-objcopy='${OBJCOPY}' \ + -Defi-includedir=${STAGING_INCDIR}/efi \ + -Defi-libdir=${STAGING_LIBDIR} \ + -Defi_sbat_distro_id='${SBAT_DISTRO_ID}' \ + -Defi_sbat_distro_summary='${SBAT_DISTRO_SUMMARY}' \ + -Defi_sbat_distro_url='${SBAT_DISTRO_URL}' \ + -Defi_sbat_distro_pkgname='${PN}' \ + -Defi_sbat_distro_version='${PV}'\ + " + +# The compile assumes GCC at present +TOOLCHAIN = "gcc" -- cgit v1.2.3-54-g00ecf