@@ -1489,6 +1489,7 @@ F: package/apcupsd/
F: package/bpftool/
F: package/cloudflared/
F: package/exfatprogs/
+F: package/fwupd/
F: package/fwupd-efi/
F: package/fxdiv/
F: package/gensio/
@@ -520,6 +520,7 @@ endmenu
source "package/fmtools/Config.in"
source "package/freeipmi/Config.in"
source "package/freescale-imx/Config.in"
+ source "package/fwupd/Config.in"
source "package/fwupd-efi/Config.in"
source "package/fxload/Config.in"
source "package/gcnano-binaries/Config.in"
new file mode 100644
@@ -0,0 +1,35 @@
+From a784ef9b904778b511a6284f46d983906939de6c Mon Sep 17 00:00:00 2001
+From: James Hilliard <james.hilliard1@gmail.com>
+Date: Thu, 18 Jul 2024 09:44:15 -0600
+Subject: [PATCH] Only require udevdir when gudev support is enabled
+
+Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
+Upstream: https://github.com/fwupd/fwupd/commit/a784ef9b904778b511a6284f46d983906939de6c
+---
+ meson.build | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/meson.build b/meson.build
+index 22282d73e..f49d08d29 100644
+--- a/meson.build
++++ b/meson.build
+@@ -273,10 +273,12 @@ if build_daemon
+ if not polkit.found()
+ warning('Polkit is disabled, the daemon will allow ALL client actions')
+ endif
+- udevdir = get_option('udevdir')
+- if udevdir == '' and host_machine.system() == 'linux'
+- udev = dependency('udev')
+- udevdir = udev.get_variable(pkgconfig: 'udevdir')
++ if gudev.found()
++ udevdir = get_option('udevdir')
++ if udevdir == '' and host_machine.system() == 'linux'
++ udev = dependency('udev')
++ udevdir = udev.get_variable(pkgconfig: 'udevdir')
++ endif
+ endif
+ endif
+ libm = cc.find_library('m', required: false)
+--
+2.34.1
+
new file mode 100644
@@ -0,0 +1,19 @@
+config BR2_PACKAGE_FWUPD
+ bool "fwupd"
+ depends on !BR2_STATIC_LIBS # libxmlb
+ depends on BR2_USE_WCHAR # libglib2
+ depends on BR2_TOOLCHAIN_HAS_THREADS # libglib2
+ depends on BR2_USE_MMU # libglib2
+ select BR2_PACKAGE_LIBGLIB2
+ select BR2_PACKAGE_LIBJCAT
+ select BR2_PACKAGE_LIBXMLB
+ select BR2_PACKAGE_ZLIB
+ help
+ Fwupd is a simple daemon to allow session software
+ to update device firmware on your local machine.
+
+ https://fwupd.org/
+
+comment "fwupd needs a toolchain w/ wchar, threads, dynamic library"
+ depends on BR2_USE_MMU
+ depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
new file mode 100644
@@ -0,0 +1,3 @@
+# Locally calculated
+sha256 b86a2d7fe1b6cc0ac4f75f3351a78cb3c225880c9e20b932fa078ef472e9fcb2 fwupd-1.9.20.tar.xz
+sha256 dc626520dcd53a22f727af3ee42c770e56c97a64fe3adb063799d8ab032fe551 COPYING
new file mode 100644
@@ -0,0 +1,208 @@
+################################################################################
+#
+# fwupd
+#
+################################################################################
+
+FWUPD_VERSION = 1.9.20
+FWUPD_SITE = https://github.com/fwupd/fwupd/releases/download/$(FWUPD_VERSION)
+FWUPD_SOURCE = fwupd-$(FWUPD_VERSION).tar.xz
+FWUPD_LICENSE = LGPL-2.1+
+FWUPD_LICENSE_FILES = COPYING
+FWUPD_DEPENDENCIES = \
+ host-pkgconf \
+ host-python-jinja2 \
+ libglib2 \
+ libjcat \
+ libxmlb \
+ zlib
+
+FWUPD_CONF_OPTS = \
+ -Dstatic_analysis=false \
+ -Dconsolekit=disabled \
+ -Dfirmware-packager=true \
+ -Ddocs=disabled \
+ -Dlvfs=true \
+ -Dman=false \
+ -Dgusb=disabled \
+ -Dpassim=disabled \
+ -Dp2p_policy=none \
+ -Dcbor=disabled \
+ -Dplugin_acpi_phat=enabled \
+ -Dplugin_cfu=disabled \
+ -Dplugin_ep963x=enabled \
+ -Dplugin_fastboot=disabled \
+ -Dplugin_logitech_bulkcontroller=disabled \
+ -Dplugin_logitech_scribe=disabled \
+ -Dplugin_logitech_tap=disabled \
+ -Dplugin_pixart_rf=enabled \
+ -Dplugin_tpm=disabled \
+ -Dplugin_uefi_capsule=enabled \
+ -Dplugin_uefi_capsule_splash=false \
+ -Dplugin_nitrokey=enabled \
+ -Dplugin_mtd=enabled \
+ -Dplugin_intel_me=enabled \
+ -Dplugin_upower=enabled \
+ -Dplugin_powerd=enabled \
+ -Dqubes=false \
+ -Dsupported_build=enabled \
+ -Dlaunchd=disabled \
+ -Dtests=false \
+ -Dmetainfo=true \
+ -Dfish_completion=false \
+ -Dcompat_cli=false \
+ -Dthinklmi_compat=false \
+ -Dpython="$(HOST_DIR)/bin/python3"
+
+ifeq ($(BR2_PACKAGE_GOBJECT_INTROSPECTION),y)
+FWUPD_DEPENDENCIES += gobject-introspection
+FWUPD_CONF_OPTS += -Dintrospection=enabled
+else
+FWUPD_CONF_OPTS += -Dintrospection=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_LIBARCHIVE),y)
+FWUPD_DEPENDENCIES += libarchive
+FWUPD_CONF_OPTS += -Dlibarchive=enabled
+else
+FWUPD_CONF_OPTS += -Dlibarchive=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_LIBGUDEV),y)
+FWUPD_DEPENDENCIES += libgudev
+FWUPD_CONF_OPTS += \
+ -Dgudev=enabled \
+ -Dplugin_android_boot=enabled \
+ -Dplugin_bcm57xx=enabled \
+ -Dplugin_emmc=enabled \
+ -Dplugin_gpio=enabled \
+ -Dplugin_igsc=enabled \
+ -Dplugin_kinetic_dp=enabled \
+ -Dplugin_parade_lspcon=enabled \
+ -Dplugin_realtek_mst=enabled \
+ -Dplugin_synaptics_mst=enabled \
+ -Dplugin_mediatek_scaler=enabled \
+ -Dplugin_scsi=enabled \
+ -Dplugin_nvme=enabled \
+ -Dplugin_uf2=enabled
+else
+FWUPD_CONF_OPTS += \
+ -Dgudev=disabled \
+ -Dplugin_android_boot=disabled \
+ -Dplugin_bcm57xx=disabled \
+ -Dplugin_emmc=disabled \
+ -Dplugin_gpio=disabled \
+ -Dplugin_igsc=disabled \
+ -Dplugin_kinetic_dp=disabled \
+ -Dplugin_parade_lspcon=disabled \
+ -Dplugin_realtek_mst=disabled \
+ -Dplugin_synaptics_mst=disabled \
+ -Dplugin_mediatek_scaler=disabled \
+ -Dplugin_scsi=disabled \
+ -Dplugin_nvme=disabled \
+ -Dplugin_uf2=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)
+FWUPD_DEPENDENCIES += bluez5_utils
+FWUPD_CONF_OPTS += -Dbluez=enabled
+else
+FWUPD_CONF_OPTS += -Dbluez=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_POLKIT),y)
+FWUPD_DEPENDENCIES += polkit
+FWUPD_CONF_OPTS += -Dpolkit=enabled
+else
+FWUPD_CONF_OPTS += -Dpolkit=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_GNUTLS),y)
+FWUPD_DEPENDENCIES += gnutls
+FWUPD_CONF_OPTS += -Dgnutls=enabled -Dplugin_uefi_pk=enabled
+else
+FWUPD_CONF_OPTS += -Dgnutls=disabled -Dplugin_uefi_pk=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_SQLITE),y)
+FWUPD_DEPENDENCIES += sqlite
+FWUPD_CONF_OPTS += -Dsqlite=enabled
+else
+FWUPD_CONF_OPTS += -Dsqlite=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_XZ),y)
+FWUPD_DEPENDENCIES += xz
+FWUPD_CONF_OPTS += -Dlzma=enabled
+ifeq ($(BR2_i386)$(BR2_x86_64),y)
+FWUPD_CONF_OPTS += -Dplugin_intel_spi=true
+else
+FWUPD_CONF_OPTS += -Dplugin_intel_spi=false
+endif
+else
+FWUPD_CONF_OPTS += -Dlzma=disabled -Dplugin_intel_spi=false
+endif
+
+ifeq ($(BR2_PACKAGE_LIBDRM_AMDGPU)$(BR2_PACKAGE_LIBGUDEV),yy)
+FWUPD_DEPENDENCIES += libdrm libgudev
+FWUPD_CONF_OPTS += -Dplugin_amdgpu=enabled
+else
+FWUPD_CONF_OPTS += -Dplugin_amdgpu=disabled
+endif
+
+ifeq ($(BR2_i386)$(BR2_x86_64),y)
+FWUPD_CONF_OPTS += -Dplugin_cpu=enabled -Dplugin_msr=enabled -Dhsi=enabled
+else
+FWUPD_CONF_OPTS += -Dplugin_cpu=disabled -Dplugin_msr=disabled -Dhsi=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_GNUTLS)$(BR2_PACKAGE_LIBGUDEV),yy)
+FWUPD_DEPENDENCIES += gnutls libgudev
+FWUPD_CONF_OPTS += -Dplugin_synaptics_rmi=enabled
+else
+FWUPD_CONF_OPTS += -Dplugin_synaptics_rmi=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_LIBCURL),y)
+FWUPD_DEPENDENCIES += libcurl
+FWUPD_CONF_OPTS += -Dplugin_redfish=enabled -Dcurl=enabled
+else
+FWUPD_CONF_OPTS += -Dplugin_redfish=disabled -Dcurl=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_LIBGUDEV)$(BR2_PACKAGE_LIBMBIM)$(BR2_PACKAGE_LIBQMI)$(BR2_PACKAGE_MODEM_MANAGER),yyyy)
+FWUPD_DEPENDENCIES += libgudev libmbim libqmi modem-manager
+FWUPD_CONF_OPTS += -Dplugin_modem_manager=enabled
+else
+FWUPD_CONF_OPTS += -Dplugin_modem_manager=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_FLASHROM),y)
+FWUPD_DEPENDENCIES += flashrom
+FWUPD_CONF_OPTS += -Dplugin_flashrom=enabled
+else
+FWUPD_CONF_OPTS += -Dplugin_flashrom=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_SYSTEMD),y)
+FWUPD_DEPENDENCIES += systemd
+FWUPD_CONF_OPTS += -Dsystemd=enabled -Delogind=enabled -Doffline=enabled
+else
+FWUPD_CONF_OPTS += -Dsystemd=disabled -Delogind=disabled -Doffline=disabled
+endif
+
+ifeq ($(BR2_PACKAGE_FWUPD_EFI),y)
+FWUPD_DEPENDENCIES += fwupd-efi
+FWUPD_CONF_OPTS += -Defi_binary=true
+else
+FWUPD_CONF_OPTS += -Defi_binary=false
+endif
+
+ifeq ($(BR2_PACKAGE_BASH_COMPLETION),y)
+FWUPD_DEPENDENCIES += bash-completion
+FWUPD_CONF_OPTS += -Dbash_completion=true
+else
+FWUPD_CONF_OPTS += -Dbash_completion=false
+endif
+
+$(eval $(meson-package))
Signed-off-by: James Hilliard <james.hilliard1@gmail.com> --- Changes v3 -> v4: - add patch removing udevdir requirement Changes v2 -> v3: - set udevdir so that we don't need to depend on udev - add missing host-python-jinja2 build dependency - only set -Doffline=enabled when systemd is enabled --- DEVELOPERS | 1 + package/Config.in | 1 + ...devdir-when-gudev-support-is-enabled.patch | 35 +++ package/fwupd/Config.in | 19 ++ package/fwupd/fwupd.hash | 3 + package/fwupd/fwupd.mk | 208 ++++++++++++++++++ 6 files changed, 267 insertions(+) create mode 100644 package/fwupd/0001-Only-require-udevdir-when-gudev-support-is-enabled.patch create mode 100644 package/fwupd/Config.in create mode 100644 package/fwupd/fwupd.hash create mode 100644 package/fwupd/fwupd.mk