Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package dnf for openSUSE:Factory checked in at 2026-01-23 17:30:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dnf (Old) and /work/SRC/openSUSE:Factory/.dnf.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dnf" Fri Jan 23 17:30:58 2026 rev:42 rq:1328526 version:4.23.0 Changes: -------- --- /work/SRC/openSUSE:Factory/dnf/dnf.changes 2025-03-20 19:23:59.183143872 +0100 +++ /work/SRC/openSUSE:Factory/.dnf.new.1928/dnf.changes 2026-01-23 17:31:05.305065551 +0100 @@ -1,0 +2,5 @@ +Tue Jan 20 21:27:50 UTC 2026 - Neal Gompa <[email protected]> + +- Add logic to support coexistence with dnf5 being the primary DNF implementation + +------------------------------------------------------------------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dnf.spec ++++++ --- /var/tmp/diff_new_pack.YL1QmU/_old 2026-01-23 17:31:08.529199317 +0100 +++ /var/tmp/diff_new_pack.YL1QmU/_new 2026-01-23 17:31:08.533199483 +0100 @@ -2,7 +2,7 @@ # spec file for package dnf # # Copyright (c) 2024 SUSE LLC -# Copyright (c) 2021-2023 Neal Gompa <[email protected]>. +# Copyright (c) 2021-2026 Neal Gompa <[email protected]>. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -44,6 +44,16 @@ %global yum_subpackage_name dnf-yum %endif +# De-conflict dnf with dnf5 and allow dnf5 +# to replace dnf as primary implementation +%bcond_without dnf5_obsoletes_dnf + +%if %{with dnf5_obsoletes_dnf} +%global dnf_package_name dnf4 +%else +%global dnf_package_name dnf +%endif + # Tests fail (possibly due to failures in libdnf tests on SUSE) # Until those are resolved, these will remain disabled %bcond_with tests @@ -73,6 +83,9 @@ BuildRequires: python3-bugzilla BuildRequires: systemd-rpm-macros BuildRequires: pkgconfig(bash-completion) +BuildArch: noarch + +%if %{without dnf5_obsoletes_dnf} Requires: python3-dnf = %{version}-%{release} Recommends: %{yum_subpackage_name} Recommends: dnf-plugins-core @@ -100,16 +113,55 @@ Provides: dnf-command(search) Provides: dnf-command(updateinfo) Provides: dnf-command(upgrade) -BuildArch: noarch %{?systemd_ordering} +%endif %description DNF is a package manager for RPM systems that was forked from Yum. Among the many improvements, it uses libsolv as a dependency resolver. +%if %{with dnf5_obsoletes_dnf} +%package -n %{dnf_package_name} +Summary: Package manager forked from Yum, using libsolv as a dependency resolver +Requires: python3-dnf = %{version}-%{release} +Recommends: %{yum_subpackage_name} +Recommends: dnf-plugins-core +Conflicts: dnf-plugins-core < %{min_plugins_core} +Provides: dnf-command(alias) +Provides: dnf-command(autoremove) +Provides: dnf-command(check-update) +Provides: dnf-command(clean) +Provides: dnf-command(distro-sync) +Provides: dnf-command(downgrade) +Provides: dnf-command(group) +Provides: dnf-command(history) +Provides: dnf-command(info) +Provides: dnf-command(install) +Provides: dnf-command(list) +Provides: dnf-command(makecache) +Provides: dnf-command(mark) +Provides: dnf-command(provides) +Provides: dnf-command(reinstall) +Provides: dnf-command(remove) +Provides: dnf-command(repolist) +Provides: dnf-command(repoquery) +Provides: dnf-command(repository-packages) +Provides: dnf-command(search) +Provides: dnf-command(updateinfo) +Provides: dnf-command(upgrade) +%{?systemd_ordering} + +%description -n %{dnf_package_name} +DNF is a package manager for RPM systems that was forked from Yum. Among the +many improvements, it uses libsolv as a dependency resolver. +%endif + %package data Summary: Common data and configuration files for DNF Group: System/Packages +%if %{with dnf5_obsoletes_dnf} +Requires: /etc/dnf/dnf.conf +%endif Obsoletes: dnf-conf < 4.4.2 Provides: dnf-conf = %{version}-%{release} Recommends: logrotate @@ -186,7 +238,7 @@ %description -n python3-dnf This package provides the Python 3 interface to DNF. -%lang_package +%lang_package -n %{dnf_package_name} %package automatic Summary: Alternative CLI to "dnf upgrade" suitable for automatic, regular execution @@ -231,7 +283,7 @@ mkdir -p %{buildroot}%{_var}/cache/dnf touch %{buildroot}%{_localstatedir}/log/%{name}.log - +%if %{without dnf5_obsoletes_dnf} ln -sr %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/dnf ln -sr %{buildroot}%{_datadir}/bash-completion/completions/dnf-3 %{buildroot}%{_datadir}/bash-completion/completions/dnf for file in %{buildroot}%{_mandir}/man[578]/dnf4[-.]*; do @@ -239,15 +291,37 @@ filename=$(basename $file) mv $file $dir/${filename/dnf4/dnf} done +%endif ln -sr %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/dnf4 +%if %{without dnf5_obsoletes_dnf} mv %{buildroot}%{_bindir}/dnf-automatic-3 %{buildroot}%{_bindir}/dnf-automatic +%endif rm -vf %{buildroot}%{_bindir}/dnf-automatic-* +%if %{without dnf5_obsoletes_dnf} # Create protected.d file for dnf echo "dnf" > %{buildroot}%{confdir}/protected.d/dnf.conf +%endif -%if %{with as_yum} +%if %{with dnf5_obsoletes_dnf} +rm %{buildroot}%{confdir}/automatic.conf +rm %{buildroot}%{confdir}/%{name}.conf +rm %{buildroot}%{_mandir}/man8/%{name}-automatic.8* +rm %{buildroot}%{_mandir}/man8/yum2dnf.8* +rm %{buildroot}%{_unitdir}/%{name}-automatic.service +rm %{buildroot}%{_unitdir}/%{name}-automatic.timer +rm %{buildroot}%{_unitdir}/%{name}-automatic-notifyonly.service +rm %{buildroot}%{_unitdir}/%{name}-automatic-notifyonly.timer +rm %{buildroot}%{_unitdir}/%{name}-automatic-download.service +rm %{buildroot}%{_unitdir}/%{name}-automatic-download.timer +rm %{buildroot}%{_unitdir}/%{name}-automatic-install.service +rm %{buildroot}%{_unitdir}/%{name}-automatic-install.timer +rm %{buildroot}%{_unitdir}/%{name}-makecache.service +rm %{buildroot}%{_unitdir}/%{name}-makecache.timer +%endif + +%if %{with as_yum} && %{without dnf5_obsoletes_dnf} ln -sr %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/yum mkdir -p %{buildroot}%{_sysconfdir}/yum ln -sr %{buildroot}%{confdir}/%{name}.conf %{buildroot}%{_sysconfdir}/yum/yum.conf @@ -256,7 +330,8 @@ ln -sr %{buildroot}%{confdir}/repos.d %{buildroot}%{_sysconfdir}/yum/repos.d ln -sr %{buildroot}%{confdir}/vars %{buildroot}%{_sysconfdir}/yum/vars %else -# We don't want this just yet... +rm %{buildroot}%{_mandir}/man[158]/yum* +# We don't want this... rm -f %{buildroot}%{confdir}/protected.d/yum.conf %endif @@ -275,20 +350,27 @@ popd %endif -%files +%files -n %{dnf_package_name} %license COPYING PACKAGE-LICENSING %doc AUTHORS README.rst %{_bindir}/dnf4 +%dir %{_var}/cache/dnf +%if %{without dnf5_obsoletes_dnf} %{_bindir}/dnf %{_mandir}/man8/dnf.8* %{_mandir}/man8/yum2dnf.8* %{_mandir}/man7/dnf.modularity.7* %{_mandir}/man5/dnf-transaction-json.5* -%dir %{_var}/cache/dnf %{_unitdir}/dnf-makecache.service %{_unitdir}/dnf-makecache.timer +%else +%{_mandir}/man8/dnf4.8* +%{_mandir}/man5/dnf4.conf.5* +%{_mandir}/man7/dnf4.modularity.7* +%{_mandir}/man5/dnf4-transaction-json.5* +%endif -%files lang -f %{name}.lang +%files -n %{dnf_package_name}-lang -f %{name}.lang %files data %license COPYING PACKAGE-LICENSING @@ -301,9 +383,11 @@ %dir %{confdir}/protected.d %dir %{confdir}/repos.d %dir %{confdir}/vars -%config(noreplace) %{confdir}/%{name}.conf %config(noreplace) %{confdir}/aliases.d/zypper.conf +%if %{without dnf5_obsoletes_dnf} +%config(noreplace) %{confdir}/%{name}.conf %config(noreplace) %{confdir}/protected.d/%{name}.conf +%endif %config(noreplace) %{_sysconfdir}/logrotate.d/%{name} %ghost %{_localstatedir}/log/hawkey.log %ghost %{_localstatedir}/log/%{name}.log @@ -315,11 +399,14 @@ %ghost %{persistdir}/yumdb %ghost %{persistdir}/history %ghost %{_sharedstatedir}/%{name} +%if %{without dnf5_obsoletes_dnf} +%{_mandir}/man5/dnf.conf.5.* %{_datadir}/bash-completion/completions/dnf +%endif %{_datadir}/bash-completion/completions/dnf-3 -%{_mandir}/man5/dnf.conf.5.* %{_tmpfilesdir}/dnf.conf +%if %{without dnf5_obsoletes_dnf} %files -n %{yum_subpackage_name} %license COPYING PACKAGE-LICENSING %doc AUTHORS README.rst @@ -337,6 +424,7 @@ %{_sysconfdir}/yum/vars %config(noreplace) %{confdir}/protected.d/yum.conf %endif +%endif %files -n python3-dnf %license COPYING PACKAGE-LICENSING @@ -347,6 +435,7 @@ %{python3_sitelib}/dnf-*.dist-info/ %dir %{py3pluginpath} +%if %{without dnf5_obsoletes_dnf} %files automatic %license COPYING PACKAGE-LICENSING %doc AUTHORS @@ -380,6 +469,7 @@ %postun automatic %systemd_postun_with_restart %{name}-automatic.timer %{name}-automatic-notifyonly.timer %{name}-automatic-download.timer %{name}-automatic-install.timer +%endif %pretrans -n %{name}-data -p <lua> -- Migrate DNF state data to /usr/lib/sysimage if it is still in /var/lib
