diff options
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-bsp/fwupd')
4 files changed, 214 insertions, 0 deletions
diff --git a/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd-efi/cc.patch b/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd-efi/cc.patch new file mode 100644 index 0000000000..ac345f2752 --- /dev/null +++ b/meta-openembedded/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 <ross.burton@arm.com> + +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-openembedded/meta-oe/recipes-bsp/fwupd/fwupd-efi_1.1.bb b/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd-efi_1.1.bb new file mode 100644 index 0000000000..2165b42293 --- /dev/null +++ b/meta-openembedded/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" diff --git a/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd/run-ptest b/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd/run-ptest new file mode 100755 index 0000000000..dbc0fc32a2 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd/run-ptest @@ -0,0 +1,6 @@ +#! /bin/sh + +# Don't run all of the fwupd tests, as fwupd/fwupdmgr.test needs a custom +# /etc/fwupd/daemon.conf with DisabledPlugins unset. + +gnome-desktop-testing-runner fwupd/fwupd.test diff --git a/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd_1.7.3.bb b/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd_1.7.3.bb new file mode 100644 index 0000000000..b02e8caa27 --- /dev/null +++ b/meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd_1.7.3.bb @@ -0,0 +1,121 @@ +SUMMARY = "A simple daemon to allow session software to update firmware" +LICENSE = "LGPL-2.1+" +LIC_FILES_CHKSUM = "file://COPYING;md5=4fbd65380cdd255951079008b364516c" + +DEPENDS = "glib-2.0 libxmlb json-glib sqlite3 libjcat gcab vala-native" + +SRC_URI = "https://github.com/${BPN}/${BPN}/releases/download/${PV}/${BP}.tar.xz \ + file://run-ptest" +SRC_URI[sha256sum] = "109dacc16ed0db71eb08b852e96b070b8c2c53516a3071b9d0683acd8ecd42d9" + +UPSTREAM_CHECK_URI = "https://github.com/${BPN}/${BPN}/releases" + +# Machine-specific as we examine MACHINE_FEATURES to decide whether to build the UEFI plugins +PACKAGE_ARCH = "${MACHINE_ARCH}" + +inherit meson vala gobject-introspection systemd bash-completion pkgconfig gi-docgen ptest manpages + +GIDOCGEN_MESON_OPTION = 'docs' +GIDOCGEN_MESON_ENABLE_FLAG = 'docgen' +GIDOCGEN_MESON_DISABLE_FLAG = 'none' + +PACKAGECONFIG ??= "curl gnutls gudev gusb \ + ${@bb.utils.filter('DISTRO_FEATURES', 'bluetooth polkit', d)} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'systemd offline', '', d)} \ + ${@bb.utils.contains('MACHINE_FEATURES', 'efi', 'plugin_uefi_capsule plugin_uefi_pk', '', d)} \ + ${@bb.utils.contains('PTEST_ENABLED', '1', 'tests plugin_dummy', '', d)} \ + hsi \ + plugin_acpi_phat \ + plugin_amt \ + plugin_bcm57xx \ + plugin_emmc \ + plugin_ep963x \ + plugin_fastboot \ + plugin_flashrom \ + plugin_intel_spi \ + plugin_logitech_bulkcontroller \ + plugin_modem_manager \ + plugin_msr \ + plugin_nitrokey \ + plugin_nvme \ + plugin_parade_lspcon \ + plugin_pixart_rf \ + plugin_platform_integrity \ + plugin_realtek_mst \ + plugin_redfish \ + plugin_synaptics_mst \ + plugin_synaptics_rmi \ + plugin_thunderbolt \ + plugin_upower \ + sqlite" + +PACKAGECONFIG[bluetooth] = "-Dbluez=true,-Dbluez=false" +PACKAGECONFIG[compat-cli] = "-Dcompat_cli=true,-Dcompat_cli=false" +PACKAGECONFIG[consolekit] = "-Dconsolekit=true,-Dconsolekit=false,consolekit" +PACKAGECONFIG[curl] = "-Dcurl=true,-Dcurl=false,curl" +PACKAGECONFIG[firmware-packager] = "-Dfirmware-packager=true,-Dfirmware-packager=false" +PACKAGECONFIG[fish-completion] = "-Dfish_completion=true,-Dfish_completion=false" +PACKAGECONFIG[gnutls] = "-Dgnutls=true,-Dgnutls=false,gnutls" +PACKAGECONFIG[gudev] = "-Dgudev=true,-Dgudev=false,libgudev" +PACKAGECONFIG[gusb] = "-Dgusb=true,-Dgusb=false,libgusb" +PACKAGECONFIG[hsi] = "-Dhsi=true,-Dhsi=false" +PACKAGECONFIG[libarchive] = "-Dlibarchive=true,-Dlibarchive=false,libarchive" +PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false" +PACKAGECONFIG[metainfo] = "-Dmetainfo=true,-Dmetainfo=false" +PACKAGECONFIG[offline] = "-Doffline=true,-Doffline=false" +PACKAGECONFIG[polkit] = "-Dpolkit=true,-Dpolkit=false,polkit" +PACKAGECONFIG[sqlite] = "-Dsqlite=true,-Dsqlite=false,sqlite3" +PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd" +PACKAGECONFIG[tests] = "-Dtests=true,-Dtests=false,gcab-native" + + +# TODO plugins-all meta-option that expands to all plugin_*? +PACKAGECONFIG[plugin_acpi_phat] = "-Dplugin_acpi_phat=true,-Dplugin_acpi_phat=false" +PACKAGECONFIG[plugin_amt] = "-Dplugin_amt=true,-Dplugin_amt=false" +PACKAGECONFIG[plugin_bcm57xx] = "-Dplugin_bcm57xx=true,-Dplugin_bcm57xx=false" +PACKAGECONFIG[plugin_cfu] = "-Dplugin_cfu=true,-Dplugin_cfu=false" +PACKAGECONFIG[plugin_dell] = "-Dplugin_dell=true,-Dplugin_dell=false,libsmbios" +PACKAGECONFIG[plugin_dummy] = "-Dplugin_dummy=true,-Dplugin_dummy=false" +PACKAGECONFIG[plugin_emmc] = "-Dplugin_emmc=true,-Dplugin_emmc=false" +PACKAGECONFIG[plugin_ep963x] = "-Dplugin_ep963x=true,-Dplugin_ep963x=false" +PACKAGECONFIG[plugin_fastboot] = "-Dplugin_fastboot=true,-Dplugin_fastboot=false" +PACKAGECONFIG[plugin_flashrom] = "-Dplugin_flashrom=true,-Dplugin_flashrom=false,flashrom" +PACKAGECONFIG[plugin_intel_spi] = "-Dplugin_intel_spi=true -Dlzma=true,-Dplugin_intel_spi=false -Dlzma=false,xz" +PACKAGECONFIG[plugin_logitech_bulkcontroller] = "-Dplugin_logitech_bulkcontroller=true,-Dplugin_logitech_bulkcontroller=false,protobuf-c-native protobuf-c" +PACKAGECONFIG[plugin_modem_manager] = "-Dplugin_modem_manager=true,-Dplugin_modem_manager=false,libqmi modemmanager" +PACKAGECONFIG[plugin_msr] = "-Dplugin_msr=true,-Dplugin_msr=false,cpuid" +PACKAGECONFIG[plugin_nitrokey] = "-Dplugin_nitrokey=true,-Dplugin_nitrokey=false" +PACKAGECONFIG[plugin_nvme] = "-Dplugin_nvme=true,-Dplugin_nvme=false" +PACKAGECONFIG[plugin_parade_lspcon] = "-Dplugin_parade_lspcon=true,-Dplugin_parade_lspcon=false" +PACKAGECONFIG[plugin_pixart_rf] = "-Dplugin_pixart_rf=true,-Dplugin_pixart_rf=false" +PACKAGECONFIG[plugin_platform_integrity] = "-Dplugin_platform_integrity=true,-Dplugin_platform_integrity=false" +PACKAGECONFIG[plugin_powerd] = "-Dplugin_powerd=true,-Dplugin_powerd=false" +PACKAGECONFIG[plugin_realtek_mst] = "-Dplugin_realtek_mst=true,-Dplugin_realtek_mst=false" +PACKAGECONFIG[plugin_redfish] = "-Dplugin_redfish=true,-Dplugin_redfish=false" +PACKAGECONFIG[plugin_synaptics_mst] = "-Dplugin_synaptics_mst=true,-Dplugin_synaptics_mst=false" +PACKAGECONFIG[plugin_synaptics_rmi] = "-Dplugin_synaptics_rmi=true,-Dplugin_synaptics_rmi=false" +PACKAGECONFIG[plugin_thunderbolt] = "-Dplugin_thunderbolt=true,-Dplugin_thunderbolt=false" +PACKAGECONFIG[plugin_tpm] = "-Dplugin_tpm=true,-Dplugin_tpm=false,tpm2-tss" +# Turn off the capsule splash as it needs G-I at buildtime, which isn't currently supported +PACKAGECONFIG[plugin_uefi_capsule] = "-Dplugin_uefi_capsule=true -Dplugin_uefi_capsule_splash=false,-Dplugin_uefi_capsule=false,efivar fwupd-efi" +PACKAGECONFIG[plugin_uefi_pk] = "-Dplugin_uefi_pk=true,-Dplugin_uefi_pk=false" +PACKAGECONFIG[plugin_upower] = "-Dplugin_upower=true,-Dplugin_upower=false" + +# Always disable these plugins on non-x86 platforms as they don't compile or are useless +DISABLE_NON_X86 = "plugin_amt plugin_intel_spi plugin_msr plugin_thunderbolt" +DISABLE_NON_X86:x86 = "" +DISABLE_NON_X86:x86-64 = "" +PACKAGECONFIG:remove = "${DISABLE_NON_X86}" + +FILES:${PN} += "${libdir}/fwupd-plugins-* \ + ${systemd_unitdir} \ + ${datadir}/fish \ + ${datadir}/metainfo \ + ${datadir}/icons \ + ${datadir}/dbus-1 \ + ${datadir}/polkit-1 \ + ${nonarch_libdir}/modules-load.d" + +FILES:${PN}-ptest += "${libexecdir}/installed-tests/ \ + ${datadir}/installed-tests/" +RDEPENDS:${PN}-ptest += "gnome-desktop-testing" |