bsc#1245451 When forwarding to factory, refer to polkit SR#1294823 (or its forwarded request if it is accepted by then) OBS-URL: https://build.opensuse.org/package/show/system:packagemanager:dnf/dnf5?expand=0&rev=34
942 lines
30 KiB
RPMSpec
942 lines
30 KiB
RPMSpec
#
|
|
# spec file for package dnf5
|
|
#
|
|
# Copyright (c) 2023 Red Hat, Inc.
|
|
# Copyright (c) 2025 Neal Gompa.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
# ========== build options ==========
|
|
|
|
%bcond_with as_microdnf
|
|
%bcond_with as_dnf
|
|
%bcond_with as_yum
|
|
|
|
%bcond_without dnf5daemon_client
|
|
%bcond_without dnf5daemon_server
|
|
%bcond_without libdnf_cli
|
|
%bcond_without dnf5
|
|
%bcond_without dnf5_plugins
|
|
%bcond_without plugin_actions
|
|
%bcond_without plugin_appstream
|
|
%bcond_without plugin_expired_pgp_keys
|
|
%bcond_without python_plugins_loader
|
|
|
|
%bcond_without comps
|
|
%bcond_without modulemd
|
|
%bcond_without zchunk
|
|
|
|
%bcond_with html
|
|
%bcond_without man
|
|
|
|
# openSUSE requires this
|
|
%bcond_without static_libsolv
|
|
|
|
# TODO Go bindings fail to build, disable for now
|
|
%bcond_with go
|
|
%bcond_without perl5
|
|
%bcond_without python3
|
|
%bcond_without ruby
|
|
|
|
# Tests are currently broken: https://github.com/rpm-software-management/dnf5/issues/1893
|
|
%bcond_with tests
|
|
%bcond_with sanitizers
|
|
%bcond_with performance_tests
|
|
%bcond_with dnf5daemon_tests
|
|
|
|
# ========== versions of dependencies ==========
|
|
|
|
%global libmodulemd_version 2.5.0
|
|
%global librepo_version 1.20.0
|
|
%global libsolv_version 0.7.32
|
|
%global sqlite_version 3.35.0
|
|
%global swig_version 4
|
|
%global zchunk_version 0.9.11
|
|
%global libcurl_version 7.62.0
|
|
|
|
# ====== versioned library package names ======
|
|
|
|
%global libprefix libdnf5
|
|
%global libcliprefix libdnf5-cli
|
|
%global libsoversion 2
|
|
%global libclisoversion 2
|
|
|
|
%global libname %{libprefix}_%{libsoversion}
|
|
%global libcliname %{libcliprefix}%{libclisoversion}
|
|
%global devname %{libprefix}-devel
|
|
%global devcliname %{libcliprefix}-devel
|
|
|
|
Name: dnf5
|
|
Version: 5.2.14.0
|
|
Release: 0
|
|
Summary: Next generation RPM package manager
|
|
License: GPL-2.0-or-later
|
|
URL: https://github.com/rpm-software-management/dnf5
|
|
Source0: %{url}/archive/%{version}/dnf5-%{version}.tar.gz
|
|
|
|
# Backports from upstream
|
|
|
|
# Proposed upstream
|
|
|
|
# openSUSE specific fixes
|
|
## Migrate DNF persistent state directory to /usr/lib/sysimage
|
|
Patch1001: dnf5-Use-usr-lib-sysimage-for-the-persistent-state-dir.patch
|
|
## Switch default reposdir to /etc/dnf/repos.d
|
|
Patch1002: dnf5-Switch-default-reposdir-to-etc-dnf-repos.d.patch
|
|
## Disable Werror to fix bindings builds
|
|
Patch1003: dnf5-disable-Werror.patch
|
|
|
|
Requires: %{libcliname}%{?_isa} = %{version}-%{release}
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
Requires: dnf-data
|
|
Recommends: bash-completion
|
|
|
|
%if %{with plugin_expired_pgp_keys}
|
|
Recommends: (libdnf5-plugin-expired-pgp-keys if gpg2)
|
|
%endif
|
|
|
|
%if %{with as_microdnf}
|
|
# We want to replace Micro DNF
|
|
Obsoletes: microdnf < 4
|
|
Provides: microdnf = %{version}-%{release}
|
|
%endif
|
|
|
|
%if %{with as_dnf}
|
|
# We want to replace DNF
|
|
Obsoletes: dnf < 5
|
|
Provides: dnf = %{version}-%{release}
|
|
%endif
|
|
|
|
%if %{with as_yum}
|
|
# We want to replace YUM
|
|
Obsoletes: yum < 5
|
|
Provides: yum = %{version}-%{release}
|
|
%endif
|
|
|
|
Provides: dnf5-command(advisory)
|
|
Provides: dnf5-command(autoremove)
|
|
Provides: dnf5-command(check)
|
|
Provides: dnf5-command(check-upgrade)
|
|
Provides: dnf5-command(clean)
|
|
Provides: dnf5-command(distro-sync)
|
|
Provides: dnf5-command(downgrade)
|
|
Provides: dnf5-command(download)
|
|
Provides: dnf5-command(environment)
|
|
Provides: dnf5-command(group)
|
|
Provides: dnf5-command(history)
|
|
Provides: dnf5-command(info)
|
|
Provides: dnf5-command(install)
|
|
Provides: dnf5-command(leaves)
|
|
Provides: dnf5-command(list)
|
|
Provides: dnf5-command(makecache)
|
|
Provides: dnf5-command(mark)
|
|
Provides: dnf5-command(module)
|
|
Provides: dnf5-command(offline)
|
|
Provides: dnf5-command(provides)
|
|
Provides: dnf5-command(reinstall)
|
|
Provides: dnf5-command(remove)
|
|
Provides: dnf5-command(repo)
|
|
Provides: dnf5-command(repoquery)
|
|
Provides: dnf5-command(search)
|
|
Provides: dnf5-command(swap)
|
|
Provides: dnf5-command(system-upgrade)
|
|
Provides: dnf5-command(upgrade)
|
|
Provides: dnf5-command(versionlock)
|
|
|
|
# ========== build requires ==========
|
|
|
|
BuildRequires: bash-completion-devel
|
|
BuildRequires: cmake
|
|
BuildRequires: doxygen
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: gettext
|
|
BuildRequires: git-core
|
|
BuildRequires: toml11-devel
|
|
BuildRequires: zlib-devel
|
|
BuildRequires: pkgconfig(check)
|
|
BuildRequires: pkgconfig(fmt)
|
|
BuildRequires: pkgconfig(json-c)
|
|
BuildRequires: pkgconfig(libcrypto)
|
|
BuildRequires: pkgconfig(librepo) >= %{librepo_version}
|
|
BuildRequires: pkgconfig(libsolv) >= %{libsolv_version}
|
|
BuildRequires: pkgconfig(libsolvext) >= %{libsolv_version}
|
|
BuildRequires: pkgconfig(rpm) >= 4.17.0
|
|
BuildRequires: pkgconfig(sqlite3) >= %{sqlite_version}
|
|
BuildRequires: pkgconfig(systemd)
|
|
|
|
%if %{with tests}
|
|
BuildRequires: createrepo_c
|
|
BuildRequires: rpm-build
|
|
BuildRequires: pkgconfig(cppunit)
|
|
%endif
|
|
|
|
%if %{with comps}
|
|
BuildRequires: pkgconfig(libcomps)
|
|
%endif
|
|
|
|
%if %{with modulemd}
|
|
BuildRequires: pkgconfig(modulemd-2.0) >= %{libmodulemd_version}
|
|
%endif
|
|
|
|
%if %{with zchunk}
|
|
BuildRequires: pkgconfig(zck) >= %{zchunk_version}
|
|
%endif
|
|
|
|
%if %{with static_libsolv}
|
|
BuildRequires: pkgconfig(bzip2)
|
|
BuildRequires: pkgconfig(liblzma)
|
|
BuildRequires: pkgconfig(libzstd)
|
|
BuildRequires: pkgconfig(zlib)
|
|
%endif
|
|
|
|
%if %{with html} || %{with man}
|
|
#BuildRequires: python3dist(breathe)
|
|
BuildRequires: python3-breathe
|
|
#BuildRequires: python3dist(sphinx) >= 4.1.2
|
|
BuildRequires: python3-Sphinx >= 4.1.2
|
|
#BuildRequires: python3dist(sphinx-rtd-theme)
|
|
BuildRequires: python3-sphinx_rtd_theme
|
|
# requests requires ca-certs to work properly
|
|
BuildRequires: ca-certificates
|
|
BuildRequires: ca-certificates-mozilla
|
|
%endif
|
|
|
|
%if %{with sanitizers}
|
|
BuildRequires: libasan
|
|
BuildRequires: liblsan
|
|
BuildRequires: libubsan
|
|
%endif
|
|
|
|
%if %{with libdnf_cli}
|
|
# required for libdnf5-cli
|
|
BuildRequires: pkgconfig(smartcols)
|
|
%endif
|
|
|
|
%if %{with dnf5_plugins}
|
|
# required for config-manager
|
|
BuildRequires: libcurl-devel >= %{libcurl_version}
|
|
%endif
|
|
|
|
%if %{with dnf5daemon_server}
|
|
# required for dnf5daemon-server
|
|
BuildRequires: pkgconfig(sdbus-c++) >= 0.9.0
|
|
BuildRequires: systemd-rpm-macros
|
|
%if %{with dnf5daemon_tests}
|
|
BuildRequires: dbus-1-daemon
|
|
BuildRequires: polkit
|
|
BuildRequires: python3-devel
|
|
#BuildRequires: python3dist(dbus-python)
|
|
BuildRequires: python3-dbus-python
|
|
%endif
|
|
%endif
|
|
|
|
# ========== language bindings section ==========
|
|
|
|
%if %{with perl5} || %{with ruby} || %{with python3}
|
|
BuildRequires: swig >= %{swig_version}
|
|
%endif
|
|
|
|
%if %{with perl5}
|
|
# required for perl-libdnf5 and perl-libdnf5-cli
|
|
BuildRequires: perl
|
|
%if %{with tests}
|
|
BuildRequires: perl(FindBin)
|
|
BuildRequires: perl(Test::Exception)
|
|
BuildRequires: perl(Test::More)
|
|
BuildRequires: perl(strict)
|
|
BuildRequires: perl(warnings)
|
|
%endif
|
|
%endif
|
|
|
|
%if %{with ruby}
|
|
# required for ruby-libdnf5 and ruby-libdnf5-cli
|
|
BuildRequires: ruby-devel
|
|
BuildRequires: ruby-macros
|
|
%if %{with tests}
|
|
BuildRequires: rubygem(test-unit)
|
|
%endif
|
|
%endif
|
|
|
|
%if %{with python3}
|
|
# required for python3-libdnf5 and python3-libdnf5-cli
|
|
BuildRequires: python3-devel
|
|
%endif
|
|
|
|
%description
|
|
DNF5 is a command-line package manager that automates the process of installing,
|
|
upgrading, configuring, and removing computer programs in a consistent manner.
|
|
It supports RPM packages, modulemd modules, and comps groups & environments.
|
|
|
|
%post
|
|
%systemd_post dnf5-makecache.timer
|
|
|
|
%preun
|
|
%systemd_preun dnf5-makecache.timer
|
|
|
|
%postun
|
|
%systemd_postun_with_restart dnf5-makecache.timer
|
|
|
|
%files -f dnf5.lang
|
|
%{_bindir}/dnf5
|
|
%if %{with as_microdnf}
|
|
%{_bindir}/microdnf
|
|
%endif
|
|
%if %{with as_dnf}
|
|
%{_bindir}/dnf
|
|
%{_mandir}/man?/dnf-*
|
|
%{_unitdir}/dnf-makecache.service
|
|
%{_unitdir}/dnf-makecache.timer
|
|
%endif
|
|
%if %{with as_yum}
|
|
%{_bindir}/yum
|
|
%endif
|
|
|
|
%{_unitdir}/dnf5-makecache.service
|
|
%{_unitdir}/dnf5-makecache.timer
|
|
|
|
%dir %{_sysconfdir}/dnf
|
|
%dir %{_sysconfdir}/dnf/dnf5-aliases.d
|
|
%doc %{_sysconfdir}/dnf/dnf5-aliases.d/README
|
|
%dir %{_sysconfdir}/dnf/dnf5-plugins
|
|
%ghost %attr(0644, root, root) %{_sysconfdir}/dnf/versionlock.toml
|
|
%dir %{_datadir}/dnf5
|
|
%dir %{_datadir}/dnf5/aliases.d
|
|
%config %{_datadir}/dnf5/aliases.d/compatibility.conf
|
|
%dir %{_datadir}/dnf5/dnf5-plugins
|
|
%dir %{_libdir}/dnf5
|
|
%dir %{_libdir}/dnf5/plugins
|
|
%doc %{_libdir}/dnf5/plugins/README
|
|
%dir %{_datadir}/bash-completion/
|
|
%dir %{_datadir}/bash-completion/completions/
|
|
%{_datadir}/bash-completion/completions/dnf5
|
|
%if %{with as_dnf}
|
|
%{_datadir}/bash-completion/completions/dnf
|
|
%endif
|
|
%dir %{_prefix}/lib/sysimage/dnf
|
|
%verify(not md5 size mtime) %ghost %{_prefix}/lib/sysimage/dnf/*
|
|
%license COPYING.md
|
|
%license gpl-2.0.txt
|
|
%{_mandir}/man8/dnf5.8.*
|
|
%{_mandir}/man8/dnf5-advisory.8.*
|
|
%{_mandir}/man8/dnf5-autoremove.8.*
|
|
%{_mandir}/man8/dnf5-check.8.*
|
|
%{_mandir}/man8/dnf5-check-upgrade.8.*
|
|
%{_mandir}/man8/dnf5-clean.8.*
|
|
%{_mandir}/man8/dnf5-distro-sync.8.*
|
|
%{_mandir}/man8/dnf5-downgrade.8.*
|
|
%{_mandir}/man8/dnf5-download.8.*
|
|
%{_mandir}/man8/dnf5-environment.8.*
|
|
%{_mandir}/man8/dnf5-group.8.*
|
|
%{_mandir}/man8/dnf5-history.8.*
|
|
%{_mandir}/man8/dnf5-info.8.*
|
|
%{_mandir}/man8/dnf5-install.8.*
|
|
%{_mandir}/man8/dnf5-leaves.8.*
|
|
%{_mandir}/man8/dnf5-list.8.*
|
|
%{_mandir}/man8/dnf5-makecache.8.*
|
|
%{_mandir}/man8/dnf5-mark.8.*
|
|
%{_mandir}/man8/dnf5-module.8.*
|
|
%{_mandir}/man8/dnf5-offline.8.*
|
|
%{_mandir}/man8/dnf5-provides.8.*
|
|
%{_mandir}/man8/dnf5-reinstall.8.*
|
|
%{_mandir}/man8/dnf5-remove.8.*
|
|
%{_mandir}/man8/dnf5-replay.8.*
|
|
%{_mandir}/man8/dnf5-repo.8.*
|
|
%{_mandir}/man8/dnf5-repoquery.8.*
|
|
%{_mandir}/man8/dnf5-search.8.*
|
|
%{_mandir}/man8/dnf5-swap.8.*
|
|
%{_mandir}/man8/dnf5-system-upgrade.8.*
|
|
%{_mandir}/man8/dnf5-upgrade.8.*
|
|
%{_mandir}/man8/dnf5-versionlock.8.*
|
|
%{_mandir}/man7/dnf5-aliases.7.*
|
|
%{_mandir}/man7/dnf5-caching.7.*
|
|
%{_mandir}/man7/dnf5-changes-from-dnf4.7.*
|
|
%{_mandir}/man7/dnf5-comps.7.*
|
|
%{_mandir}/man7/dnf5-filtering.7.*
|
|
%{_mandir}/man7/dnf5-forcearch.7.*
|
|
%{_mandir}/man7/dnf5-installroot.7.*
|
|
%{_mandir}/man7/dnf5-modularity.7.*
|
|
%{_mandir}/man7/dnf5-specs.7.*
|
|
%{_mandir}/man7/dnf5-system-state.7.*
|
|
%{_mandir}/man5/dnf5.conf.5.*
|
|
%{_mandir}/man5/dnf5.conf-todo.5.*
|
|
%{_mandir}/man5/dnf5.conf-deprecated.5.*
|
|
|
|
%{_unitdir}/dnf5-offline-transaction.service
|
|
%{_unitdir}/dnf5-offline-transaction-cleanup.service
|
|
%dir %{_unitdir}/system-update.target.wants
|
|
%{_unitdir}/system-update.target.wants/dnf5-offline-transaction.service
|
|
|
|
# ========== libdnf5 ==========
|
|
%package -n %{libname}
|
|
Summary: Package management library
|
|
License: LGPL-2.1-or-later
|
|
Requires: libmodulemd2%{?_isa} >= %{libmodulemd_version}
|
|
Requires: librepo0%{?_isa} >= %{librepo_version}
|
|
Requires: libsolv1%{?_isa} >= %{libsolv_version}
|
|
Requires: libsqlite3-0%{?_isa} >= %{sqlite_version}
|
|
|
|
%description -n %{libname}
|
|
Package management library.
|
|
|
|
%ldconfig_scriptlets -n %{libname}
|
|
|
|
%files -n %{libname} -f libdnf5.lang
|
|
%dir %{_libdir}/libdnf5
|
|
%{_libdir}/libdnf5.so.%{libsoversion}
|
|
%license lgpl-2.1.txt
|
|
%ghost %attr(0755, root, root) %dir %{_var}/cache/libdnf5
|
|
%dir %{_prefix}/lib/sysimage/libdnf5
|
|
%attr(0755, root, root) %ghost %dir %{_prefix}/lib/sysimage/libdnf5/comps_groups
|
|
%verify(not md5 size mtime) %attr(0644, root, root) %ghost %{_prefix}/lib/sysimage/libdnf5/environments.toml
|
|
%verify(not md5 size mtime) %attr(0644, root, root) %ghost %{_prefix}/lib/sysimage/libdnf5/groups.toml
|
|
%verify(not md5 size mtime) %attr(0644, root, root) %ghost %{_prefix}/lib/sysimage/libdnf5/modules.toml
|
|
%verify(not md5 size mtime) %attr(0644, root, root) %ghost %{_prefix}/lib/sysimage/libdnf5/nevras.toml
|
|
%attr(0755, root, root) %ghost %dir %{_prefix}/lib/sysimage/libdnf5/offline
|
|
%verify(not md5 size mtime) %attr(0644, root, root) %ghost %{_prefix}/lib/sysimage/libdnf5/offline/offline-transaction-state.toml
|
|
%attr(0755, root, root) %ghost %dir %{_prefix}/lib/sysimage/libdnf5/offline/packages
|
|
%verify(not md5 size mtime) %attr(0644, root, root) %ghost %{_prefix}/lib/sysimage/libdnf5/offline/transaction.json
|
|
%verify(not md5 size mtime) %attr(0644, root, root) %ghost %{_prefix}/lib/sysimage/libdnf5/packages.toml
|
|
%verify(not md5 size mtime) %attr(0644, root, root) %ghost %{_prefix}/lib/sysimage/libdnf5/system.toml
|
|
%verify(not md5 size mtime) %attr(0644, root, root) %ghost %{_prefix}/lib/sysimage/libdnf5/transaction_history.sqlite{,-shm,-wal}
|
|
%dir %{_datadir}/dnf5/libdnf.conf.d
|
|
%dir %{_sysconfdir}/dnf/libdnf5.conf.d
|
|
%dir %{_datadir}/dnf5/repos.override.d
|
|
%dir %{_sysconfdir}/dnf/repos.override.d
|
|
%dir %{_sysconfdir}/dnf/libdnf5-plugins
|
|
%dir %{_libdir}/libdnf5/plugins
|
|
%dir %{_datadir}/dnf5/repos.d
|
|
%dir %{_datadir}/dnf5/vars.d
|
|
|
|
# ========== libdnf5-cli ==========
|
|
|
|
%if %{with libdnf_cli}
|
|
%package -n %{libcliname}
|
|
Summary: Library for working with a terminal in a command-line package manager
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n %{libcliname}
|
|
Library for working with a terminal in a command-line package manager.
|
|
|
|
%ldconfig_scriptlets -n %{libcliname}
|
|
|
|
%files -n %{libcliname} -f libdnf5-cli.lang
|
|
%{_libdir}/libdnf5-cli.so.%{libclisoversion}
|
|
%license COPYING.md
|
|
%license lgpl-2.1.txt
|
|
%endif
|
|
|
|
# ========== dnf5-devel ==========
|
|
|
|
%package -n dnf5-devel
|
|
Summary: Development files for dnf5
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{devcliname}%{?_isa} = %{version}-%{release}
|
|
Requires: %{devname}%{?_isa} = %{version}-%{release}
|
|
Requires: dnf5%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n dnf5-devel
|
|
Develpment files for dnf5.
|
|
|
|
%files -n dnf5-devel
|
|
%{_includedir}/dnf5/
|
|
%license COPYING.md
|
|
%license lgpl-2.1.txt
|
|
|
|
# ========== libdnf5-devel ==========
|
|
|
|
%package -n %{devname}
|
|
Summary: Development files for libdnf
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
Requires: libsolv-devel%{?_isa} >= %{libsolv_version}
|
|
# Do not conflict with libdnf-devel yet, packagekit needs both devel packages for now.
|
|
#Conflicts: libdnf-devel < 5
|
|
|
|
%description -n %{devname}
|
|
Development files for libdnf.
|
|
|
|
%files -n %{devname}
|
|
%{_includedir}/libdnf5/
|
|
%dir %{_libdir}/libdnf5
|
|
%{_libdir}/libdnf5.so
|
|
%{_libdir}/pkgconfig/libdnf5.pc
|
|
%license COPYING.md
|
|
%license lgpl-2.1.txt
|
|
|
|
# ========== libdnf5-cli-devel ==========
|
|
|
|
%package -n %{devcliname}
|
|
Summary: Development files for libdnf5-cli
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libcliname}%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n %{devcliname}
|
|
Development files for libdnf5-cli.
|
|
|
|
%files -n %{devcliname}
|
|
%{_includedir}/libdnf5-cli/
|
|
%{_libdir}/libdnf5-cli.so
|
|
%{_libdir}/pkgconfig/libdnf5-cli.pc
|
|
%license COPYING.md
|
|
%license lgpl-2.1.txt
|
|
|
|
# ========== perl-libdnf5 ==========
|
|
|
|
%if %{with perl5}
|
|
%package -n perl-libdnf5
|
|
Summary: Perl 5 bindings for the libdnf library
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n perl-libdnf5
|
|
Perl 5 bindings for the libdnf library.
|
|
|
|
%files -n perl-libdnf5
|
|
%{perl_vendorarch}/libdnf5
|
|
%{perl_vendorarch}/auto/libdnf5
|
|
%license COPYING.md
|
|
%license lgpl-2.1.txt
|
|
%endif
|
|
|
|
# ========== perl-libdnf5-cli ==========
|
|
|
|
%if %{with perl5} && %{with libdnf_cli}
|
|
%package -n perl-libdnf5-cli
|
|
Summary: Perl 5 bindings for the libdnf5-cli library
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libcliname}%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n perl-libdnf5-cli
|
|
Perl 5 bindings for the libdnf5-cli library.
|
|
|
|
%files -n perl-libdnf5-cli
|
|
%{perl_vendorarch}/libdnf5_cli
|
|
%{perl_vendorarch}/auto/libdnf5_cli
|
|
%license COPYING.md
|
|
%license lgpl-2.1.txt
|
|
%endif
|
|
|
|
# ========== python3-libdnf5 ==========
|
|
|
|
%if %{with python3}
|
|
%package -n python3-libdnf5
|
|
%{?python_provide:%python_provide python3-libdnf}
|
|
Summary: Python 3 bindings for the libdnf library
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n python3-libdnf5
|
|
Python 3 bindings for the libdnf library.
|
|
|
|
%files -n python3-libdnf5
|
|
%{python3_sitearch}/libdnf5
|
|
%{python3_sitearch}/libdnf5-*.dist-info
|
|
%license COPYING.md
|
|
%license lgpl-2.1.txt
|
|
%endif
|
|
|
|
# ========== python3-libdnf5-cli ==========
|
|
|
|
%if %{with python3} && %{with libdnf_cli}
|
|
%package -n python3-libdnf5-cli
|
|
%{?python_provide:%python_provide python3-libdnf5-cli}
|
|
Summary: Python 3 bindings for the libdnf5-cli library
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libcliname}%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n python3-libdnf5-cli
|
|
Python 3 bindings for the libdnf5-cli library.
|
|
|
|
%files -n python3-libdnf5-cli
|
|
%{python3_sitearch}/libdnf5_cli
|
|
%{python3_sitearch}/libdnf5_cli-*.dist-info
|
|
%license COPYING.md
|
|
%license lgpl-2.1.txt
|
|
%endif
|
|
|
|
# ========== ruby-libdnf5 ==========
|
|
|
|
%if %{with ruby}
|
|
%package -n ruby-libdnf5
|
|
Summary: Ruby bindings for the libdnf library
|
|
License: LGPL-2.1-or-later
|
|
Provides: ruby(libdnf) = %{version}-%{release}
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n ruby-libdnf5
|
|
Ruby bindings for the libdnf library.
|
|
|
|
%files -n ruby-libdnf5
|
|
%{rb_vendorarchdir}/libdnf5
|
|
%license COPYING.md
|
|
%license lgpl-2.1.txt
|
|
%endif
|
|
|
|
# ========== ruby-libdnf5-cli ==========
|
|
|
|
%if %{with ruby} && %{with libdnf_cli}
|
|
%package -n ruby-libdnf5-cli
|
|
Summary: Ruby bindings for the libdnf5-cli library
|
|
License: LGPL-2.1-or-later
|
|
Provides: ruby(libdnf_cli) = %{version}-%{release}
|
|
Requires: %{libcliname}%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n ruby-libdnf5-cli
|
|
Ruby bindings for the libdnf5-cli library.
|
|
|
|
%files -n ruby-libdnf5-cli
|
|
%{rb_vendorarchdir}/libdnf5_cli
|
|
%license COPYING.md
|
|
%license lgpl-2.1.txt
|
|
%endif
|
|
|
|
# ========== libdnf5-plugin-actions ==========
|
|
|
|
%if %{with plugin_actions}
|
|
%package -n libdnf5-plugin-actions
|
|
Summary: Libdnf plugin that allows to run actions (external executables) on hooks
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n libdnf5-plugin-actions
|
|
Libdnf plugin that allows to run actions (external executables) on hooks.
|
|
|
|
%files -n libdnf5-plugin-actions -f libdnf5-plugin-actions.lang
|
|
%{_libdir}/libdnf5/plugins/actions.*
|
|
%config(noreplace) %{_sysconfdir}/dnf/libdnf5-plugins/actions.conf
|
|
%dir %{_sysconfdir}/dnf/libdnf5-plugins/actions.d
|
|
%{_mandir}/man8/libdnf5-actions.8.*
|
|
%endif
|
|
|
|
# ========== libdnf5-plugin-appstream ==========
|
|
|
|
%if %{with plugin_appstream}
|
|
%package -n libdnf5-plugin-appstream
|
|
Summary: Libdnf5 plugin to install repo AppStream data
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
BuildRequires: pkgconfig(appstream) >= 0.16
|
|
|
|
%description -n libdnf5-plugin-appstream
|
|
Libdnf5 plugin that installs repository's AppStream data, for repositories which provide them.
|
|
|
|
%files -n libdnf5-plugin-appstream
|
|
%{_libdir}/libdnf5/plugins/appstream.so
|
|
%config(noreplace) %{_sysconfdir}/dnf/libdnf5-plugins/appstream.conf
|
|
%endif
|
|
|
|
# ========== libdnf5-plugin-expired-pgp-keys ==========
|
|
|
|
%if %{with plugin_expired_pgp_keys}
|
|
%package -n libdnf5-plugin-expired-pgp-keys
|
|
Summary: Libdnf5 plugin for detecting and removing expired PGP keys
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
Requires: gpg2
|
|
|
|
%description -n libdnf5-plugin-expired-pgp-keys
|
|
Libdnf5 plugin for detecting and removing expired PGP keys.
|
|
|
|
%files -n libdnf5-plugin-expired-pgp-keys -f libdnf5-plugin-expired-pgp-keys.lang
|
|
%{_libdir}/libdnf5/plugins/expired-pgp-keys.*
|
|
%config(noreplace) %{_sysconfdir}/dnf/libdnf5-plugins/expired-pgp-keys.conf
|
|
%{_mandir}/man8/libdnf5-expired-pgp-keys.8.*
|
|
%endif
|
|
|
|
# ========== python3-libdnf5-plugins-loader ==========
|
|
|
|
%if %{with python_plugins_loader}
|
|
%package -n python3-libdnf5-python-plugins-loader
|
|
Summary: Libdnf plugin that allows loading Python plugins
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
Requires: python3-libdnf5%{?_isa} = %{version}-%{release}
|
|
|
|
%description -n python3-libdnf5-python-plugins-loader
|
|
Libdnf plugin that allows loading Python plugins.
|
|
|
|
%files -n python3-libdnf5-python-plugins-loader
|
|
%{_libdir}/libdnf5/plugins/python_plugins_loader.*
|
|
%dir %{python3_sitelib}/libdnf_plugins/
|
|
%doc %{python3_sitelib}/libdnf_plugins/README
|
|
%endif
|
|
|
|
# ========== dnf5daemon-client ==========
|
|
|
|
%if %{with dnf5daemon_client}
|
|
%package -n dnf5daemon-client
|
|
Summary: Command-line interface for dnf5daemon-server
|
|
License: GPL-2.0-or-later
|
|
Requires: %{libcliname}%{?_isa} = %{version}-%{release}
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
Requires: dnf5daemon-server
|
|
|
|
%description -n dnf5daemon-client
|
|
Command-line interface for dnf5daemon-server.
|
|
|
|
%files -n dnf5daemon-client -f dnf5daemon-client.lang
|
|
%{_bindir}/dnf5daemon-client
|
|
%license COPYING.md
|
|
%license gpl-2.0.txt
|
|
%{_mandir}/man8/dnf5daemon-client.8.*
|
|
%endif
|
|
|
|
# ========== dnf5daemon-server ==========
|
|
|
|
%if %{with dnf5daemon_server}
|
|
%package -n dnf5daemon-server
|
|
Summary: Package management service with a DBus interface
|
|
License: GPL-2.0-or-later
|
|
Requires: %{libcliname}%{?_isa} = %{version}-%{release}
|
|
Requires: %{libname}%{?_isa} = %{version}-%{release}
|
|
Requires: dbus-1-common
|
|
Requires: dnf-data
|
|
Requires: polkit
|
|
|
|
%description -n dnf5daemon-server
|
|
Package management service with a DBus interface.
|
|
|
|
%post -n dnf5daemon-server
|
|
%systemd_post dnf5daemon-server.service
|
|
|
|
%preun -n dnf5daemon-server
|
|
%systemd_preun dnf5daemon-server.service
|
|
|
|
%postun -n dnf5daemon-server
|
|
%systemd_postun_with_restart dnf5daemon-server.service
|
|
|
|
%files -n dnf5daemon-server -f dnf5daemon-server.lang
|
|
%config(noreplace) %{_sysconfdir}/dnf/dnf5daemon-server.conf
|
|
%{_sbindir}/dnf5daemon-server
|
|
%{_unitdir}/dnf5daemon-server.service
|
|
%dir %{_datadir}/dbus-1
|
|
%dir %{_datadir}/dbus-1/system.d
|
|
%dir %{_datadir}/dbus-1/system-services
|
|
%dir %{_datadir}/dbus-1/interfaces
|
|
%{_datadir}/dbus-1/system.d/org.rpm.dnf.v0.conf
|
|
%{_datadir}/dbus-1/system-services/org.rpm.dnf.v0.service
|
|
%{_datadir}/dbus-1/interfaces/org.rpm.dnf.v0.*.xml
|
|
%dir %{_datadir}/polkit-1
|
|
%dir %{_datadir}/polkit-1/actions
|
|
%{_datadir}/polkit-1/actions/org.rpm.dnf.v0.policy
|
|
%license COPYING.md
|
|
%license gpl-2.0.txt
|
|
%{_mandir}/man8/dnf5daemon-server.8.*
|
|
%{_mandir}/man8/dnf5daemon-dbus-api.8.*
|
|
%endif
|
|
|
|
# ========== dnf5-plugins ==========
|
|
|
|
%if %{with dnf5_plugins}
|
|
%package -n dnf5-plugins
|
|
Summary: Plugins for dnf5
|
|
License: LGPL-2.1-or-later
|
|
Requires: %{libcliname}%{?_isa} = %{version}-%{release}
|
|
Requires: dnf5%{?_isa} = %{version}-%{release}
|
|
Requires: libcurl4%{?_isa} >= %{libcurl_version}
|
|
Provides: dnf5-command(builddep)
|
|
Provides: dnf5-command(changelog)
|
|
Provides: dnf5-command(config-manager)
|
|
Provides: dnf5-command(copr)
|
|
Provides: dnf5-command(needs-restarting)
|
|
Provides: dnf5-command(repoclosure)
|
|
Provides: dnf5-command(reposync)
|
|
|
|
%description -n dnf5-plugins
|
|
Core DNF5 plugins that enhance dnf5 with builddep, changelog,
|
|
config-manager, copr, repoclosure, and reposync commands.
|
|
|
|
%files -n dnf5-plugins -f dnf5-plugin-builddep.lang -f dnf5-plugin-changelog.lang -f dnf5-plugin-config-manager.lang -f dnf5-plugin-copr.lang -f dnf5-plugin-needs-restarting.lang -f dnf5-plugin-repoclosure.lang -f dnf5-plugin-reposync.lang
|
|
%{_libdir}/dnf5/plugins/builddep_cmd_plugin.so
|
|
%{_libdir}/dnf5/plugins/changelog_cmd_plugin.so
|
|
%{_libdir}/dnf5/plugins/config-manager_cmd_plugin.so
|
|
%{_libdir}/dnf5/plugins/copr_cmd_plugin.so
|
|
%{_libdir}/dnf5/plugins/needs_restarting_cmd_plugin.so
|
|
%{_libdir}/dnf5/plugins/repoclosure_cmd_plugin.so
|
|
%{_libdir}/dnf5/plugins/reposync_cmd_plugin.so
|
|
%{_mandir}/man8/dnf5-builddep.8.*
|
|
%{_mandir}/man8/dnf5-changelog.8.*
|
|
%{_mandir}/man8/dnf5-config-manager.8.*
|
|
%{_mandir}/man8/dnf5-copr.8.*
|
|
%{_mandir}/man8/dnf5-needs-restarting.8.*
|
|
%{_mandir}/man8/dnf5-repoclosure.8.*
|
|
%{_mandir}/man8/dnf5-reposync.8.*
|
|
%{_datadir}/dnf5/aliases.d/compatibility-plugins.conf
|
|
%{_datadir}/dnf5/aliases.d/compatibility-reposync.conf
|
|
|
|
# ========== dnf5-automatic plugin ==========
|
|
|
|
%package plugin-automatic
|
|
Summary: Package manager - automated upgrades
|
|
License: LGPL-2.1-or-later
|
|
Requires: dnf5%{?_isa} = %{version}-%{release}
|
|
Requires: libcurl4%{?_isa} >= %{libcurl_version}
|
|
Provides: dnf5-command(automatic)
|
|
%if %{with as_dnf}
|
|
Provides: dnf-automatic = %{version}-%{release}
|
|
Obsoletes: dnf-automatic < 5
|
|
%else
|
|
Conflicts: dnf-automatic < 5
|
|
%endif
|
|
|
|
%description plugin-automatic
|
|
Alternative command-line interface "dnf upgrade" suitable to be executed
|
|
automatically and regularly from systemd timers, cron jobs or similar.
|
|
|
|
%files plugin-automatic -f dnf5-plugin-automatic.lang
|
|
%ghost %{_sysconfdir}/motd.d/dnf5-automatic
|
|
%{_libdir}/dnf5/plugins/automatic_cmd_plugin.so
|
|
%{_datadir}/dnf5/dnf5-plugins/automatic.conf
|
|
%ghost %config(noreplace) %{_sysconfdir}/dnf/automatic.conf
|
|
%ghost %config(noreplace) %{_sysconfdir}/dnf/dnf5-plugins/automatic.conf
|
|
%{_mandir}/man8/dnf5-automatic.8.*
|
|
%{_unitdir}/dnf5-automatic.service
|
|
%{_unitdir}/dnf5-automatic.timer
|
|
%{_unitdir}/dnf-automatic.service
|
|
%{_unitdir}/dnf-automatic.timer
|
|
%if %{with as_dnf}
|
|
%{_bindir}/dnf-automatic
|
|
%endif
|
|
|
|
%endif
|
|
|
|
# ========== unpack, build, check & install ==========
|
|
|
|
%prep
|
|
%autosetup -S git_am -n dnf5-%{version}
|
|
|
|
%build
|
|
%cmake \
|
|
-DPERL_INSTALLDIRS=vendor \
|
|
\
|
|
-DENABLE_SOLV_FOCUSNEW=ON \
|
|
-DWITH_SYSTEMD=ON \
|
|
-DWITH_DNF5DAEMON_CLIENT=%{?with_dnf5daemon_client:ON}%{!?with_dnf5daemon_client:OFF} \
|
|
-DWITH_DNF5DAEMON_SERVER=%{?with_dnf5daemon_server:ON}%{!?with_dnf5daemon_server:OFF} \
|
|
-DWITH_LIBDNF5_CLI=%{?with_libdnf_cli:ON}%{!?with_libdnf_cli:OFF} \
|
|
-DWITH_DNF5=%{?with_dnf5:ON}%{!?with_dnf5:OFF} \
|
|
-DWITH_DNF5_OBSOLETES_DNF=OFF \
|
|
-DWITH_PLUGIN_ACTIONS=%{?with_plugin_actions:ON}%{!?with_plugin_actions:OFF} \
|
|
-DWITH_PLUGIN_APPSTREAM=%{?with_plugin_appstream:ON}%{!?with_plugin_appstream:OFF} \
|
|
-DWITH_PLUGIN_EXPIRED_PGP_KEYS=%{?with_plugin_expired_pgp_keys:ON}%{!?with_plugin_expired_pgp_keys:OFF} \
|
|
-DWITH_PYTHON_PLUGINS_LOADER=%{?with_python_plugins_loader:ON}%{!?with_python_plugins_loader:OFF} \
|
|
\
|
|
-DWITH_COMPS=%{?with_comps:ON}%{!?with_comps:OFF} \
|
|
-DWITH_MODULEMD=%{?with_modulemd:ON}%{!?with_modulemd:OFF} \
|
|
-DWITH_ZCHUNK=%{?with_zchunk:ON}%{!?with_zchunk:OFF} \
|
|
\
|
|
-DWITH_STATIC_LIBSOLV=%{?with_static_libsolv:ON}%{!?with_static_libsolv:OFF} \
|
|
\
|
|
-DWITH_HTML=%{?with_html:ON}%{!?with_html:OFF} \
|
|
-DWITH_MAN=%{?with_man:ON}%{!?with_man:OFF} \
|
|
\
|
|
-DWITH_GO=%{?with_go:ON}%{!?with_go:OFF} \
|
|
-DWITH_PERL5=%{?with_perl5:ON}%{!?with_perl5:OFF} \
|
|
-DWITH_PYTHON3=%{?with_python3:ON}%{!?with_python3:OFF} \
|
|
-DWITH_RUBY=%{?with_ruby:ON}%{!?with_ruby:OFF} \
|
|
\
|
|
-DWITH_SANITIZERS=%{?with_sanitizers:ON}%{!?with_sanitizers:OFF} \
|
|
-DWITH_TESTS=%{?with_tests:ON}%{!?with_tests:OFF} \
|
|
-DWITH_PERFORMANCE_TESTS=%{?with_performance_tests:ON}%{!?with_performance_tests:OFF} \
|
|
-DWITH_DNF5DAEMON_TESTS=%{?with_dnf5daemon_tests:ON}%{!?with_dnf5daemon_tests:OFF}
|
|
%cmake_build
|
|
%if %{with man}
|
|
%cmake_build doc-man
|
|
%endif
|
|
|
|
%check
|
|
%if %{with tests}
|
|
%ctest
|
|
%endif
|
|
|
|
%install
|
|
%cmake_install
|
|
|
|
# own dirs and files that dnf5 creates on runtime
|
|
mkdir -p %{buildroot}%{_prefix}/lib/sysimage/dnf
|
|
for files in \
|
|
groups.toml modules.toml nevras.toml packages.toml \
|
|
system.toml transaction_history.sqlite \
|
|
transaction_history.sqlite-shm \
|
|
transaction_history.sqlite-wal userinstalled.toml
|
|
do
|
|
touch %{buildroot}%{_prefix}/lib/sysimage/dnf/$files
|
|
done
|
|
|
|
# own the offline transaction target
|
|
mkdir -p %{buildroot}%{_unitdir}/system-update.target.wants/
|
|
pushd %{buildroot}%{_unitdir}/system-update.target.wants/
|
|
ln -sr ../dnf5-offline-transaction.service
|
|
popd
|
|
|
|
%find_lang dnf5
|
|
%find_lang dnf5-plugin-automatic
|
|
%find_lang dnf5-plugin-builddep
|
|
%find_lang dnf5-plugin-changelog
|
|
%find_lang dnf5-plugin-config-manager
|
|
%find_lang dnf5-plugin-copr
|
|
%find_lang dnf5-plugin-needs-restarting
|
|
%find_lang dnf5-plugin-repoclosure
|
|
%find_lang dnf5-plugin-reposync
|
|
%find_lang dnf5daemon-client
|
|
%find_lang dnf5daemon-server
|
|
%find_lang libdnf5
|
|
%find_lang libdnf5-cli
|
|
%find_lang libdnf5-plugin-actions
|
|
%find_lang libdnf5-plugin-expired-pgp-keys
|
|
|
|
# Let's not replace what dnf-data offers just yet..
|
|
rm %{buildroot}%{_sysconfdir}/dnf/dnf.conf
|
|
|
|
%if %{with as_microdnf}
|
|
ln -sr %{buildroot}%{_bindir}/dnf5 %{buildroot}%{_bindir}/microdnf
|
|
%endif
|
|
%if %{with as_dnf}
|
|
ln -sr %{buildroot}%{_bindir}/dnf5 %{buildroot}%{_bindir}/dnf
|
|
ln -sr %{buildroot}%{_datadir}/bash-completion/completions/dnf5 %{buildroot}%{_datadir}/bash-completion/completions/dnf
|
|
for file in %{buildroot}%{_mandir}/man[578]/dnf5[-.]*; do
|
|
dir=$(dirname $file)
|
|
filename=$(basename $file)
|
|
ln -sr $file $dir/${filename/dnf5/dnf}
|
|
done
|
|
ln -sr %{buildroot}%{_unitdir}/dnf5-makecache.service %{buildroot}%{_unitdir}/dnf-makecache.service
|
|
ln -sr %{buildroot}%{_unitdir}/dnf5-makecache.timer %{buildroot}%{_unitdir}/dnf-makecache.timer
|
|
%else
|
|
rm %{buildroot}%{_bindir}/dnf-automatic
|
|
%endif
|
|
|
|
# own dirs and files that dnf5 creates on runtime
|
|
mkdir -p %{buildroot}%{_prefix}/lib/sysimage/libdnf5
|
|
for file in \
|
|
environments.toml groups.toml modules.toml nevras.toml packages.toml \
|
|
system.toml \
|
|
transaction_history.sqlite transaction_history.sqlite-shm \
|
|
transaction_history.sqlite-wal
|
|
do
|
|
touch %{buildroot}%{_prefix}/lib/sysimage/libdnf5/$file
|
|
done
|
|
mkdir -p %{buildroot}%{_prefix}/lib/sysimage/libdnf5/comps_groups
|
|
mkdir -p %{buildroot}%{_prefix}/lib/sysimage/libdnf5/offline
|
|
touch %{buildroot}%{_sysconfdir}/dnf/versionlock.toml
|
|
|
|
%if %{with as_yum}
|
|
ln -sr %{buildroot}%{_bindir}/dnf5 %{buildroot}%{_bindir}/yum
|
|
%endif
|
|
|
|
# Do not deliver polkit rule allowing privileged actions for wheel (bsc#1245451)
|
|
rm -rf %{buildroot}%{_datadir}/polkit-1/rules.d
|
|
|
|
%changelog
|