mirror of
https://git.proxmox.com/git/fwupd
synced 2025-08-05 02:54:45 +00:00

This refactors the code as it was getting very confusing; before FuSmbios was reading both SMBIOS and the kernel-provided DT -- and various things were injecting overrides in three different place. To properly support FDT remove one layer of indirection. This also lets us use the compatible strings to enable plugins specifying the flag _REQUIRE_HWID -- which means we only load the plugin if it's got a chance of working. e.g. [aspeed,ast2500]
501 lines
13 KiB
RPMSpec
501 lines
13 KiB
RPMSpec
%global glib2_version 2.45.8
|
|
%global libxmlb_version 0.1.3
|
|
%global libgusb_version 0.3.5
|
|
%global libcurl_version 7.61.0
|
|
%global libjcat_version 0.1.0
|
|
%global systemd_version 231
|
|
%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 #ALPHATAG#
|
|
|
|
%global enable_ci 0
|
|
%global enable_tests 1
|
|
%global enable_dummy 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
|
|
|
|
# libsmbios is only available on x86
|
|
%ifarch x86_64
|
|
%global have_dell 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: #VERSION#
|
|
Release: 0.#BUILD#%{?alphatag}%{?dist}
|
|
License: LGPLv2+
|
|
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: libgcab1-devel
|
|
BuildRequires: libgudev1-devel
|
|
BuildRequires: libgusb-devel >= %{libgusb_version}
|
|
BuildRequires: libcurl-devel >= %{libcurl_version}
|
|
BuildRequires: libjcat-devel >= %{libjcat_version}
|
|
BuildRequires: polkit-devel >= 0.103
|
|
BuildRequires: protobuf-c-devel
|
|
BuildRequires: python3-packaging
|
|
BuildRequires: sqlite-devel
|
|
BuildRequires: systemd >= %{systemd_version}
|
|
BuildRequires: systemd-devel
|
|
BuildRequires: libarchive-devel
|
|
BuildRequires: libcbor-devel
|
|
BuildRequires: gobject-introspection-devel
|
|
BuildRequires: gcab
|
|
%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
|
|
BuildRequires: bash-completion
|
|
BuildRequires: git-core
|
|
%if 0%{?have_flashrom}
|
|
BuildRequires: flashrom-devel >= 1.2-2
|
|
%endif
|
|
|
|
%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: efivar-devel >= 33
|
|
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
|
|
|
|
%if 0%{?have_dell}
|
|
BuildRequires: efivar-devel >= 33
|
|
BuildRequires: libsmbios-devel >= 2.3.0
|
|
%endif
|
|
|
|
Requires(post): systemd
|
|
Requires(preun): systemd
|
|
Requires(postun): systemd
|
|
|
|
Requires: glib2%{?_isa} >= %{glib2_version}
|
|
Requires: libxmlb%{?_isa} >= %{libxmlb_version}
|
|
Requires: libgusb%{?_isa} >= %{libgusb_version}
|
|
Requires: shared-mime-info
|
|
|
|
%if 0%{?rhel} > 7 || 0%{?fedora} > 28
|
|
Recommends: python3
|
|
%endif
|
|
|
|
Obsoletes: fwupd-sign < 0.1.6
|
|
Obsoletes: libebitdo < 0.7.5-3
|
|
Obsoletes: libdfu < 1.0.0
|
|
Obsoletes: fwupd-labels < 1.1.0-1
|
|
|
|
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_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: gcab
|
|
Requires: fwupd >= 1.5.7
|
|
Requires: libjcat >= 0.1.6
|
|
|
|
%description qubes-dom0
|
|
fwupd wrapper for Qubes OS
|
|
|
|
%package qubes-vm
|
|
Summary: fwupd wrapper for Qubes OS - VM scripts
|
|
Requires: gcab
|
|
Requires: fwupd >= 1.5.7
|
|
Requires: libjcat >= 0.1.6
|
|
|
|
%description qubes-vm
|
|
fwupd wrapper for Qubes OS
|
|
%endif
|
|
|
|
%prep
|
|
%autosetup -p1
|
|
|
|
%build
|
|
|
|
%meson \
|
|
%if 0%{?enable_ci}
|
|
--werror \
|
|
%endif
|
|
-Ddocs=enabled \
|
|
%if 0%{?enable_tests}
|
|
-Dtests=true \
|
|
%else
|
|
-Dtests=false \
|
|
%endif
|
|
%if 0%{?enable_dummy}
|
|
-Dplugin_dummy=true \
|
|
%else
|
|
-Dplugin_dummy=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 \
|
|
-Defi_binary=false \
|
|
%else
|
|
-Dplugin_uefi_capsule=disabled \
|
|
-Dplugin_uefi_pk=disabled \
|
|
-Dplugin_tpm=disabled \
|
|
%endif
|
|
%if 0%{?have_dell}
|
|
-Dplugin_dell=enabled \
|
|
%else
|
|
-Dplugin_dell=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 \
|
|
-Dbluez=enabled \
|
|
-Dplugin_powerd=disabled \
|
|
-Dsupported_build=enabled
|
|
|
|
%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
|
|
|
|
# change vendor-installed remotes to use the default keyring type
|
|
for fn in /etc/fwupd/remotes.d/*.conf; do
|
|
if grep -q "Keyring=gpg" "$fn"; then
|
|
sed -i 's/Keyring=gpg/#Keyring=pkcs/g' "$fn";
|
|
fi
|
|
done
|
|
|
|
%preun
|
|
%systemd_preun fwupd.service
|
|
|
|
%postun
|
|
%systemd_postun_with_restart fwupd.service
|
|
|
|
%files -f %{name}.lang
|
|
%doc README.md AUTHORS
|
|
%license COPYING
|
|
%config(noreplace)%{_sysconfdir}/fwupd/daemon.conf
|
|
%if 0%{?have_uefi}
|
|
%config(noreplace)%{_sysconfdir}/fwupd/uefi_capsule.conf
|
|
%endif
|
|
%config(noreplace)%{_sysconfdir}/fwupd/redfish.conf
|
|
%if 0%{?have_thunderbolt}
|
|
%config(noreplace)%{_sysconfdir}/fwupd/thunderbolt.conf
|
|
%endif
|
|
%dir %{_libexecdir}/fwupd
|
|
%{_libexecdir}/fwupd/fwupd
|
|
%ifarch i686 x86_64
|
|
%{_libexecdir}/fwupd/fwupd-detect-cet
|
|
%endif
|
|
%{_libexecdir}/fwupd/fwupdoffline
|
|
%if 0%{?have_uefi}
|
|
%{_bindir}/fwupdate
|
|
%endif
|
|
%{_bindir}/dfu-tool
|
|
%if 0%{?have_uefi}
|
|
%{_bindir}/dbxtool
|
|
%endif
|
|
%{_bindir}/fwupdmgr
|
|
%{_bindir}/fwupdtool
|
|
%{_bindir}/fwupdagent
|
|
%dir %{_sysconfdir}/fwupd
|
|
%dir %{_sysconfdir}/fwupd/bios-settings.d
|
|
%{_sysconfdir}/fwupd/bios-settings.d/README.md
|
|
%dir %{_sysconfdir}/fwupd/remotes.d
|
|
%if 0%{?have_dell}
|
|
%config(noreplace)%{_sysconfdir}/fwupd/remotes.d/dell-esrt.conf
|
|
%endif
|
|
%config(noreplace)%{_sysconfdir}/fwupd/remotes.d/lvfs.conf
|
|
%config(noreplace)%{_sysconfdir}/fwupd/remotes.d/lvfs-testing.conf
|
|
%config(noreplace)%{_sysconfdir}/fwupd/remotes.d/vendor.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
|
|
%config(noreplace)%{_sysconfdir}/fwupd/msr.conf
|
|
%endif
|
|
%{_datadir}/dbus-1/system.d/org.freedesktop.fwupd.conf
|
|
%{_datadir}/bash-completion/completions/fwupdmgr
|
|
%{_datadir}/bash-completion/completions/fwupdtool
|
|
%{_datadir}/bash-completion/completions/fwupdagent
|
|
%{_datadir}/fish/vendor_completions.d/fwupdmgr.fish
|
|
%{_datadir}/fwupd/metainfo/org.freedesktop.fwupd*.metainfo.xml
|
|
%if 0%{?have_dell}
|
|
%{_datadir}/fwupd/remotes.d/dell-esrt/metadata.xml
|
|
%endif
|
|
%{_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/fwupdagent.1*
|
|
%{_mandir}/man1/dfu-tool.1*
|
|
%if 0%{?have_uefi}
|
|
%{_mandir}/man1/dbxtool.*
|
|
%endif
|
|
%{_mandir}/man1/fwupdmgr.1*
|
|
%if 0%{?have_uefi}
|
|
%{_mandir}/man1/fwupdate.1*
|
|
%endif
|
|
%{_datadir}/metainfo/org.freedesktop.fwupd.metainfo.xml
|
|
%{_datadir}/icons/hicolor/scalable/apps/org.freedesktop.fwupd.svg
|
|
%{_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-offline-update.service
|
|
%{_unitdir}/fwupd.service
|
|
%{_unitdir}/fwupd-refresh.service
|
|
%{_unitdir}/fwupd-refresh.timer
|
|
%{_presetdir}/fwupd-refresh.preset
|
|
%{_unitdir}/system-update.target.wants/
|
|
%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}
|
|
%{_sysconfdir}/grub.d/35_fwupd
|
|
%endif
|
|
%{_libdir}/libfwupd.so.2*
|
|
%{_libdir}/girepository-1.0/Fwupd-2.0.typelib
|
|
/usr/lib/udev/rules.d/*.rules
|
|
/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-1
|
|
%{_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/fwupd-tests.xml
|
|
%{_datadir}/installed-tests/fwupd/*.test
|
|
%{_datadir}/installed-tests/fwupd/*.cab
|
|
%{_datadir}/installed-tests/fwupd/*.sh
|
|
%{_datadir}/installed-tests/fwupd/*.zip
|
|
%if 0%{?have_uefi}
|
|
%{_datadir}/installed-tests/fwupd/efi
|
|
%endif
|
|
%{_datadir}/installed-tests/fwupd/chassis_type
|
|
%{_datadir}/installed-tests/fwupd/sys_vendor
|
|
%{_datadir}/fwupd/device-tests/*.json
|
|
%{_libexecdir}/installed-tests/fwupd/*
|
|
%dir %{_sysconfdir}/fwupd/remotes.d
|
|
%config(noreplace)%{_sysconfdir}/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
|
|
%{_libexecdir}/qubes-fwupd/fwupd_usbvm_validate.py
|
|
|
|
%files qubes-dom0
|
|
%{_datadir}/qubes-fwupd/src/fwupd_receive_updates.py
|
|
/usr/sbin/qubes-fwupdmgr
|
|
%{_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
|
|
* #LONGDATE# Richard Hughes <richard@hughsie.com> #VERSION#-0.#BUILD##ALPHATAG#
|
|
- Update from git
|