| %global glib2_version 2.68.0 |
| %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 |
| |
| # to use this feature use `rpmbuild -ba fwupd.spec --with=libfwupdcompat` |
| %bcond_with libfwupdcompat |
| %if %{with libfwupdcompat} || 0%{?rhel} |
| %global libfwupd_19x_version 31 |
| %endif |
| |
| # 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 #ALPHATAG# |
| |
| %global enable_ci 0 |
| %global enable_tests 1 |
| %global __meson_wrap_mode nodownload |
| |
| %if 0%{?fedora} >= 30 || 0%{?rhel} >= 10 |
| %global have_gi_docgen 1 |
| %endif |
| |
| # fwupd.efi is only available on these arches |
| %ifarch x86_64 aarch64 riscv64 |
| %global have_uefi 1 |
| %endif |
| |
| # flashrom is only available on these arches |
| %ifarch i686 x86_64 armv7hl aarch64 ppc64le riscv64 |
| %global have_flashrom 1 |
| %endif |
| |
| %ifarch i686 x86_64 |
| %global have_msr 1 |
| %endif |
| |
| # only available recently |
| %if 0%{?fedora} >= 30 |
| %global have_modem_manager 1 |
| %endif |
| |
| %if 0%{?fedora} |
| %global have_passim 1 |
| %endif |
| |
| Summary: Firmware update daemon |
| Name: fwupd |
| Version: #VERSION# |
| Release: 0.#BUILD#%{?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 |
| %if 0%{?libfwupd_19x_version} |
| Source1: https://github.com/fwupd/%{name}-efi/archive/refs/tags/1.7.tar.gz |
| Source2: https://github.com/fwupd/%{name}/releases/download/1.9.%{libfwupd_19x_version}/%{name}-1.9.%{libfwupd_19x_version}.tar.xz |
| %endif |
| |
| BuildRequires: gettext |
| BuildRequires: hwdata |
| 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 |
| BuildRequires: readline-devel |
| BuildRequires: libmnl-devel |
| %if 0%{?have_passim} |
| BuildRequires: passim-devel |
| %endif |
| BuildRequires: gobject-introspection-devel |
| %ifarch %{valgrind_arches} |
| BuildRequires: valgrind |
| BuildRequires: valgrind-devel |
| %endif |
| %if 0%{?have_gi_docgen} |
| BuildRequires: gi-docgen |
| %endif |
| BuildRequires: gnutls-devel |
| BuildRequires: gnutls-utils |
| BuildRequires: meson |
| BuildRequires: json-glib-devel >= %{json_glib_version} |
| BuildRequires: vala |
| BuildRequires: pkgconfig(bash-completion) |
| BuildRequires: git-core |
| %if 0%{?have_flashrom} |
| BuildRequires: flashrom-devel >= 1.2-2 |
| %endif |
| BuildRequires: libdrm-devel |
| # For fu-polkit-test |
| BuildRequires: polkit |
| |
| %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: shared-mime-info |
| |
| # deliberately has no _isa as libusbx in RHEL-9 does not include it |
| Requires: libusb1 >= %{libusb_version} |
| |
| %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%{?have_passim} |
| 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 |
| |
| # the EFI helper |
| %if 0%{?libfwupd_19x_version} |
| mkdir -p subprojects/fwupd-efi |
| tar xfvs %{SOURCE1} -C subprojects/fwupd-efi --strip-components=1 |
| cd subprojects/fwupd-efi |
| cd - |
| %endif |
| |
| # and the old version for libfwupd1 |
| %if 0%{?libfwupd_19x_version} |
| tar xfs %{SOURCE2} |
| %endif |
| |
| %build |
| |
| %if 0%{?libfwupd_19x_version} |
| cd fwupd-1.9.%{libfwupd_19x_version} |
| %meson \ |
| -Dbuild=library \ |
| -Ddocs=disabled \ |
| -Dcbor=disabled \ |
| -Dpolkit=disabled \ |
| -Dtests=false \ |
| -Dbash_completion=false \ |
| -Dplugin_msr=disabled \ |
| -Dintrospection=disabled \ |
| -Dlaunchd=disabled |
| %meson_build |
| cd - |
| %endif |
| |
| %meson \ |
| %if 0%{?enable_ci} |
| --werror \ |
| -Db_coverage=true \ |
| -Db_sanitize=address,undefined \ |
| %else |
| -Dsupported_build=enabled \ |
| %endif |
| -Dumockdev_tests=disabled \ |
| %if 0%{?have_gi_docgen} |
| -Ddocs=enabled \ |
| %else |
| -Ddocs=disabled \ |
| %endif |
| %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_modem_manager} |
| -Dplugin_modem_manager=enabled \ |
| %else |
| -Dplugin_modem_manager=disabled \ |
| %endif |
| %if 0%{?have_passim} |
| -Dpassim=enabled \ |
| %else |
| -Dpassim=disabled \ |
| %endif |
| %if 0%{?qubes_packages} |
| -Dqubes=true \ |
| %endif |
| -Dman=true \ |
| -Dsystemd_unit_user="" \ |
| -Dbluez=enabled |
| |
| %meson_build |
| |
| %if 0%{?enable_tests} |
| %if 0%{?enable_ci} |
| ./contrib/ci/get_test_firmware.sh |
| %endif |
| %check |
| %meson_test |
| %endif |
| |
| %install |
| |
| %if 0%{?libfwupd_19x_version} |
| cd fwupd-1.9.%{libfwupd_19x_version} |
| %meson_install |
| cd - |
| %endif |
| |
| %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 x86_64 |
| %{_libexecdir}/fwupd/fwupd-detect-cet |
| %endif |
| %if 0%{?have_uefi} |
| %{_bindir}/dbxtool |
| %endif |
| %{_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 |
| /usr/lib/modules-load.d/fwupd-i2c.conf |
| %{_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* |
| %if 0%{?have_uefi} |
| %{_mandir}/man1/dbxtool.* |
| %endif |
| %{_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 |
| %if 0%{?have_gi_docgen} |
| %{_datadir}/doc/fwupd/*.html |
| %endif |
| %if 0%{?have_uefi} |
| %config(noreplace)%{_sysconfdir}/grub.d/35_fwupd |
| %endif |
| %if 0%{?libfwupd_19x_version} |
| %{_libdir}/libfwupd.so.2* |
| %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 |
| %if 0%{?have_gi_docgen} |
| %{_datadir}/doc/fwupd/libfwupdplugin |
| %{_datadir}/doc/fwupd/libfwupd |
| %{_datadir}/doc/libfwupdplugin |
| %{_datadir}/doc/libfwupd |
| %endif |
| %{_datadir}/vala/vapi |
| %if 0%{?libfwupd_19x_version} |
| %{_includedir}/fwupd-1 |
| %endif |
| %{_includedir}/fwupd-3 |
| %{_libdir}/libfwupd.so |
| %{_libdir}/pkgconfig/fwupd.pc |
| |
| %files tests |
| %if 0%{?enable_tests} |
| %{_datadir}/fwupd/host-emulate.d/*.json.gz |
| %{_datadir}/installed-tests/fwupd |
| %{_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 |