%global glib2_version 2.45.8 %global libxmlb_version 0.1.3 %global libusb_version 1.0.9 %global libcurl_version 7.62.0 %global libjcat_version 0.1.0 %global systemd_version 249 %global json_glib_version 1.1.1 # although we ship a few tiny python files these are utilities that 99.99% # of users do not need -- use this to avoid dragging python onto CoreOS %global __requires_exclude ^%{python3}$ %define alphatag .20241122git %global enable_ci 0 %global enable_tests 1 %global __meson_wrap_mode nodownload # fwupd.efi is only available on these arches %ifarch x86_64 aarch64 %global have_uefi 1 %endif # gpio.h is only available on these arches %ifarch x86_64 aarch64 %global have_gpio 1 %endif # flashrom is only available on these arches %ifarch i686 x86_64 armv7hl aarch64 ppc64le %global have_flashrom 1 %endif %ifarch i686 x86_64 %global have_msr 1 %endif # Until we actually have seen it outside x86 %ifarch i686 x86_64 %global have_thunderbolt 1 %endif # only available recently %if 0%{?fedora} >= 30 %global have_modem_manager 1 %endif Summary: Firmware update daemon Name: fwupd Version: 2.0.2 Release: 0.1161%{?alphatag}%{?dist} License: LGPL-2.1-or-later URL: https://github.com/fwupd/fwupd Source0: http://people.freedesktop.org/~hughsient/releases/%{name}-%{version}.tar.xz BuildRequires: gettext BuildRequires: glib2-devel >= %{glib2_version} BuildRequires: libxmlb-devel >= %{libxmlb_version} BuildRequires: libusb1-devel >= %{libusb_version} BuildRequires: libcurl-devel >= %{libcurl_version} BuildRequires: libjcat-devel >= %{libjcat_version} BuildRequires: polkit-devel >= 0.103 BuildRequires: protobuf-c-devel BuildRequires: python3-packaging BuildRequires: python3-jinja2 BuildRequires: sqlite-devel BuildRequires: systemd >= %{systemd_version} BuildRequires: systemd-devel BuildRequires: libarchive-devel BuildRequires: libcbor-devel BuildRequires: libblkid-devel %if 0%{?rhel} >= 10 || 0%{?fedora} >= 28 BuildRequires: passim-devel %endif BuildRequires: gobject-introspection-devel %ifarch %{valgrind_arches} BuildRequires: valgrind BuildRequires: valgrind-devel %endif BuildRequires: gi-docgen BuildRequires: gnutls-devel BuildRequires: gnutls-utils BuildRequires: meson BuildRequires: json-glib-devel >= %{json_glib_version} BuildRequires: vala %if 0%{?rhel} >= 10 || 0%{?fedora} >= 41 BuildRequires: bash-completion-devel %else BuildRequires: bash-completion %endif BuildRequires: git-core %if 0%{?have_flashrom} BuildRequires: flashrom-devel >= 1.2-2 %endif BuildRequires: libdrm-devel %if 0%{?have_modem_manager} BuildRequires: ModemManager-glib-devel >= 1.10.0 BuildRequires: libqmi-devel >= 1.22.0 BuildRequires: libmbim-devel %endif %if 0%{?have_uefi} BuildRequires: python3 python3-cairo python3-gobject BuildRequires: pango-devel BuildRequires: cairo-devel cairo-gobject-devel BuildRequires: freetype BuildRequires: fontconfig BuildRequires: google-noto-sans-cjk-ttc-fonts BuildRequires: tpm2-tss-devel >= 2.2.3 %endif Requires(post): systemd Requires(preun): systemd Requires(postun): systemd Requires: glib2%{?_isa} >= %{glib2_version} Requires: libxmlb%{?_isa} >= %{libxmlb_version} Requires: libusb1%{?_isa} >= %{libusb_version} Requires: shared-mime-info %if 0%{?rhel} > 7 || 0%{?fedora} > 28 Recommends: python3 %endif Obsoletes: dbxtool < 9 Provides: dbxtool %if 0%{?rhel} > 7 Obsoletes: fwupdate < 11-4 Obsoletes: fwupdate-efi < 11-4 Provides: fwupdate Provides: fwupdate-efi %endif # optional, but a really good idea Recommends: udisks2 Recommends: bluez Recommends: jq %if 0%{?rhel} >= 10 || 0%{?fedora} >= 28 Recommends: passim %endif %if 0%{?have_modem_manager} Recommends: %{name}-plugin-modem-manager %endif %if 0%{?have_flashrom} Recommends: %{name}-plugin-flashrom %endif %if 0%{?have_uefi} Recommends: %{name}-efi Recommends: %{name}-plugin-uefi-capsule-data %endif %description fwupd is a daemon to allow session software to update device firmware. %package devel Summary: Development package for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} Obsoletes: libebitdo-devel < 0.7.5-3 Obsoletes: libdfu-devel < 1.0.0 %description devel Files for development with %{name}. %package tests Summary: Data files for installed tests Requires: %{name}%{?_isa} = %{version}-%{release} %description tests Data files for installed tests. %if 0%{?have_modem_manager} %package plugin-modem-manager Summary: fwupd plugin using ModemManger Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-modem-manager This provides the optional package which is only required on hardware that might have mobile broadband hardware. It is probably not required on servers. %endif %if 0%{?have_flashrom} %package plugin-flashrom Summary: fwupd plugin using flashrom Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-flashrom This provides the optional package which is only required on hardware that can be flashed using flashrom. It is probably not required on servers. %endif %if 0%{?have_uefi} %package plugin-uefi-capsule-data Summary: Localized data for the UEFI UX capsule Requires: %{name}%{?_isa} = %{version}-%{release} %description plugin-uefi-capsule-data This provides the pregenerated BMP artwork for the UX capsule, which allows the "Installing firmware update…" localized text to be shown during a UEFI firmware update operation. This subpackage is probably not required on embedded hardware or server machines. %endif %if 0%{?qubes_packages} %package qubes-dom0 Summary: fwupd wrapper for Qubes OS - dom0 scripts Requires: fwupd >= 2.0.0 Requires: libjcat >= 0.1.6 Requires: python3-packaging Requires: sequoia-sqv %description qubes-dom0 fwupd wrapper for Qubes OS %package qubes-vm Summary: fwupd wrapper for Qubes OS - VM scripts Requires: fwupd >= 2.0.0 Requires: libjcat >= 0.1.6 Requires: python3-packaging %description qubes-vm fwupd wrapper for Qubes OS %endif %prep %autosetup -p1 %build %meson \ %if 0%{?enable_ci} --werror \ -Db_coverage=true \ -Db_sanitize=address,undefined \ %else -Dsupported_build=enabled \ %endif -Dumockdev_tests=disabled \ -Ddocs=enabled \ %if 0%{?enable_tests} -Dtests=true \ %else -Dtests=false \ %endif %if 0%{?have_flashrom} -Dplugin_flashrom=enabled \ %else -Dplugin_flashrom=disabled \ %endif %if 0%{?have_msr} -Dplugin_msr=enabled \ %else -Dplugin_msr=disabled \ %endif %if 0%{?have_gpio} -Dplugin_gpio=enabled \ %else -Dplugin_gpio=disabled \ %endif %if 0%{?have_uefi} -Dplugin_uefi_capsule=enabled \ -Dplugin_uefi_pk=enabled \ -Dplugin_tpm=enabled \ %else -Dplugin_uefi_capsule=disabled \ -Dplugin_uefi_pk=disabled \ -Dplugin_tpm=disabled \ %endif %if 0%{?have_modem_manager} -Dplugin_modem_manager=enabled \ %else -Dplugin_modem_manager=disabled \ %endif %if 0%{?qubes_packages} -Dqubes=true \ %endif -Dman=true \ -Dsystemd_unit_user="" \ -Dbluez=enabled \ -Dplugin_powerd=disabled \ -Dlaunchd=disabled %meson_build %if 0%{?enable_tests} %if 0%{?enable_ci} ./contrib/ci/get_test_firmware.sh %endif %check %meson_test %endif %install %meson_install mkdir -p --mode=0700 $RPM_BUILD_ROOT%{_localstatedir}/lib/fwupd/gnupg # workaround for https://bugzilla.redhat.com/show_bug.cgi?id=1757948 mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/cache/fwupd %find_lang %{name} %post %systemd_post fwupd.service fwupd-refresh.timer %preun %systemd_preun fwupd.service fwupd-refresh.timer %postun %systemd_postun_with_restart fwupd.service fwupd-refresh.timer %triggerun -- fedora-release-common < 39-0.28 # For upgrades from versions before fwupd-refresh.timer was enabled by default systemctl --no-reload preset fwupd-refresh.timer &>/dev/null || : %files -f %{name}.lang %doc README.md %license COPYING %config(noreplace)%{_sysconfdir}/fwupd/fwupd.conf %dir %{_libexecdir}/fwupd %{_libexecdir}/fwupd/fwupd %ifarch i686 x86_64 %{_libexecdir}/fwupd/fwupd-detect-cet %endif %{_bindir}/dbxtool %{_bindir}/fwupdmgr %{_bindir}/fwupdtool %dir %{_sysconfdir}/fwupd %dir %{_sysconfdir}/fwupd/bios-settings.d %{_sysconfdir}/fwupd/bios-settings.d/README.md %dir %{_sysconfdir}/fwupd/remotes.d %config(noreplace)%{_sysconfdir}/fwupd/remotes.d/lvfs.conf %config(noreplace)%{_sysconfdir}/fwupd/remotes.d/lvfs-testing.conf %config(noreplace)%{_sysconfdir}/fwupd/remotes.d/vendor-directory.conf %config(noreplace)%{_sysconfdir}/pki/fwupd %{_sysconfdir}/pki/fwupd-metadata %if 0%{?have_msr} /usr/lib/modules-load.d/fwupd-msr.conf %endif %{_datadir}/dbus-1/system.d/org.freedesktop.fwupd.conf %{_datadir}/bash-completion/completions/fwupdmgr %{_datadir}/bash-completion/completions/fwupdtool %{_datadir}/fish/vendor_completions.d/fwupdmgr.fish %dir %{_datadir}/fwupd %dir %{_datadir}/fwupd/metainfo %{_datadir}/fwupd/metainfo/org.freedesktop.fwupd*.metainfo.xml %dir %{_datadir}/fwupd/remotes.d %dir %{_datadir}/fwupd/remotes.d/vendor %dir %{_datadir}/fwupd/remotes.d/vendor/firmware %{_datadir}/fwupd/remotes.d/vendor/firmware/README.md %{_datadir}/dbus-1/interfaces/org.freedesktop.fwupd.xml %{_datadir}/polkit-1/actions/org.freedesktop.fwupd.policy %{_datadir}/polkit-1/rules.d/org.freedesktop.fwupd.rules %{_datadir}/dbus-1/system-services/org.freedesktop.fwupd.service %{_mandir}/man1/fwupdtool.1* %{_mandir}/man1/dbxtool.* %{_mandir}/man1/fwupdmgr.1* %{_mandir}/man5/* %{_mandir}/man8/* %{_datadir}/metainfo/org.freedesktop.fwupd.metainfo.xml %{_datadir}/icons/hicolor/*/apps/org.freedesktop.fwupd.* %{_datadir}/fwupd/firmware_packager.py %{_datadir}/fwupd/simple_client.py %{_datadir}/fwupd/add_capsule_header.py %{_datadir}/fwupd/install_dell_bios_exe.py %{_unitdir}/fwupd.service %{_unitdir}/fwupd-refresh.service %{_unitdir}/fwupd-refresh.timer %dir %{_localstatedir}/lib/fwupd %dir %{_localstatedir}/cache/fwupd %dir %{_datadir}/fwupd/quirks.d %{_datadir}/fwupd/quirks.d/builtin.quirk.gz %{_datadir}/doc/fwupd/*.html %if 0%{?have_uefi} %config(noreplace)%{_sysconfdir}/grub.d/35_fwupd %endif %{_libdir}/libfwupd.so.3* %{_libdir}/girepository-1.0/Fwupd-2.0.typelib /usr/lib/systemd/system-shutdown/fwupd.shutdown %dir %{_libdir}/fwupd-%{version} %{_libdir}/fwupd-%{version}/libfwupd*.so %ghost %{_localstatedir}/lib/fwupd/gnupg %if 0%{?have_modem_manager} %files plugin-modem-manager %{_libdir}/fwupd-%{version}/libfu_plugin_modem_manager.so %endif %if 0%{?have_flashrom} %files plugin-flashrom %{_libdir}/fwupd-%{version}/libfu_plugin_flashrom.so %endif %if 0%{?have_uefi} %files plugin-uefi-capsule-data %{_datadir}/fwupd/uefi-capsule-ux.tar.xz %endif %files devel %{_datadir}/gir-1.0/Fwupd-2.0.gir %{_datadir}/doc/fwupd/libfwupdplugin %{_datadir}/doc/fwupd/libfwupd %{_datadir}/doc/libfwupdplugin %{_datadir}/doc/libfwupd %{_datadir}/vala/vapi %{_includedir}/fwupd-3 %{_libdir}/libfwupd*.so %{_libdir}/pkgconfig/fwupd.pc %files tests %if 0%{?enable_tests} %{_datadir}/fwupd/host-emulate.d/*.json.gz %dir %{_datadir}/installed-tests/fwupd %{_datadir}/installed-tests/fwupd/tests/* %{_datadir}/installed-tests/fwupd/* %if 0%{?have_uefi} %{_datadir}/installed-tests/fwupd/efi %endif %{_libexecdir}/installed-tests/fwupd/* %{_datadir}/fwupd/remotes.d/fwupd-tests.conf %endif %if 0%{?qubes_packages} %files qubes-vm %{_libexecdir}/qubes-fwupd/fwupd_common_vm.py %{_libexecdir}/qubes-fwupd/fwupd_download_updates.py %files qubes-dom0 %{_datadir}/qubes-fwupd/src/fwupd_receive_updates.py %{_sbindir}/qubes-fwupdmgr %{_datadir}/qubes-fwupd/src/qubes_fwupdmgr.py %{_datadir}/qubes-fwupd/src/qubes_fwupd_common.py %{_datadir}/qubes-fwupd/src/qubes_fwupd_heads.py %{_datadir}/qubes-fwupd/src/qubes_fwupd_update.py %{_datadir}/qubes-fwupd/src/__init__.py %{_datadir}/qubes-fwupd/test/fwupd_logs.py %{_datadir}/qubes-fwupd/test/test_qubes_fwupdmgr.py %{_datadir}/qubes-fwupd/test/test_qubes_fwupd_heads.py %{_datadir}/qubes-fwupd/test/__init__.py %{_datadir}/qubes-fwupd/test/logs/get_devices.log %{_datadir}/qubes-fwupd/test/logs/get_updates.log %{_datadir}/qubes-fwupd/test/logs/help.log %{_datadir}/qubes-fwupd/test/logs/firmware.metainfo.xml %{_datadir}/qubes-fwupd/test/logs/metainfo_name/firmware.metainfo.xml %{_datadir}/qubes-fwupd/test/logs/metainfo_version/firmware.metainfo.xml %endif %changelog %autochangelog