summaryrefslogtreecommitdiff
path: root/meta-openembedded/meta-oe/recipes-bsp/fwupd
diff options
context:
space:
mode:
Diffstat (limited to 'meta-openembedded/meta-oe/recipes-bsp/fwupd')
-rw-r--r--meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd-efi/cc.patch53
-rw-r--r--meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd-efi_1.1.bb34
-rwxr-xr-xmeta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd/run-ptest6
-rw-r--r--meta-openembedded/meta-oe/recipes-bsp/fwupd/fwupd_1.7.3.bb121
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"