Blob Blame History Raw
# default dependencies
%global hawkey_version 0.11.1
%global librepo_version 1.8.1
%global libcomps_version 0.1.8
%global libmodulemd_version 1.4.0
%global python_smartcols_version 0.3.0
%global rpm_version 4.14.0

# conflicts
%global conflicts_dnf_plugins_core_version 2.1.3

# override dependencies for rhel 7
%if 0%{?rhel} == 7
    %global rpm_version 4.11.3-32
%endif

%if 0%{?rhel} == 7 && 0%{?centos}
    %global rpm_version 4.11.3-25.el7.centos.1
%endif

# override dependencies for fedora 26
%if 0%{?fedora} == 26
    %global rpm_version 4.13.0.1-7
%endif


%if 0%{?rhel} && 0%{?rhel} <= 7
%bcond_with python3
%else
%bcond_without python3
%endif

%if 0%{?rhel} >= 8
%bcond_with python2
%else
%bcond_without python2
%endif

# configurable name for the compat yum package
%global yum_subpackage_name %{name}-yum

# provide yum4 on rhel <= 7 to avoid conflict with existing yum
%if 0%{?rhel} && 0%{?rhel} <= 7
    %global yum_subpackage_name nextgen-yum4
%endif

# provide yum on rhel >= 8, it replaces old yum
%if 0%{?rhel} && 0%{?rhel} >= 8
    %global yum_subpackage_name yum
%endif


# paths
%global confdir %{_sysconfdir}/%{name}
%global pluginconfpath %{confdir}/plugins

%if %{with python2}
    %global py2pluginpath %{python2_sitelib}/%{name}-plugins
%endif

%if %{with python3}
    %global py3pluginpath %{python3_sitelib}/%{name}-plugins
%endif

# Use the same directory of the main package for subpackage licence and docs
%global _docdir_fmt %{name}


%global pkg_summary     Package manager
%global pkg_description Utility that allows users to manage packages on their systems. \
It supports RPMs, modules and comps groups & environments.

Name:           dnf
Version:        2.7.5
Release:        19%{?dist}
Summary:        %{pkg_summary}
# For a breakdown of the licensing, see PACKAGE-LICENSING
License:        GPLv2+ and GPLv2 and GPL
URL:            https://github.com/rpm-software-management/dnf
Source0:        %{url}/archive/%{version}-modularity-6/%{name}-%{version}-modularity-6.tar.gz
Patch0:         0001-Allow-to-set-cacheonly-from-commands-and-conf-RhBug-.patch
Patch1:         0002-Remove-redundant-conf-option-cacheonly.patch
Patch2:         0003-Remove-unnecessary-code-for-set-cacheonly.patch
Patch3:         0005-compatibility-gpgme.patch
Patch4:         0006-util-Correctly-source-errno.EEXIST.patch
Patch5:         0007-fix-tests.patch
Patch6:         0008-system-and-cmdline-repos-hotfixes.patch
Patch7:         0009-Allow-usage-of--C-and-with-modified-cachedir-RhBug1643129.patch
Patch8:         0010-Fix-priority-cachedir-priority-with---cacheonly.patch

BuildArch:      noarch
BuildRequires:  cmake
BuildRequires:  gettext
# Documentation
BuildRequires:  %{_bindir}/sphinx-build
BuildRequires:  systemd
BuildRequires:  bash-completion
%if %{with python3}
Requires:       python3-%{name} = %{version}-%{release}
%else
Requires:       python2-%{name} = %{version}-%{release}
%endif
%if 0%{?rhel} && 0%{?rhel} <= 7
Requires:       python-dbus
Requires:       %{_bindir}/sqlite3
%else
%if %{with python3}
Recommends:     (python3-dbus if NetworkManager)
%else
Recommends:     (python2-dbus if NetworkManager)
%endif
Recommends:     (%{_bindir}/sqlite3 if bash-completion)
%endif
%{?systemd_requires}
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)
Provides:       dnf-command(upgrade-to)
Conflicts:      python2-dnf-plugins-core < %{conflicts_dnf_plugins_core_version}
Conflicts:      python3-dnf-plugins-core < %{conflicts_dnf_plugins_core_version}

%description
%{pkg_description}

%package data
Summary:        Common data and configuration files for DNF
Requires:       libreport-filesystem
Obsoletes:      %{name}-conf <= %{version}-%{release}
Provides:       %{name}-conf = %{version}-%{release}

%description data
Common data and configuration files for DNF

%package -n %{yum_subpackage_name}
Requires:       %{name} = %{version}-%{release}
Summary:        %{pkg_summary}
%if 0%{?fedora}
Conflicts:      yum
%endif

%description -n %{yum_subpackage_name}
%{pkg_description}

%if %{with python2}
%package -n python2-%{name}
Summary:        Python 2 interface to DNF
%{?python_provide:%python_provide python2-%{name}}
BuildRequires:  python2-devel
BuildRequires:  python2-hawkey >= %{hawkey_version}
BuildRequires:  python2-libcomps >= %{libcomps_version}
BuildRequires:  python-librepo >= %{librepo_version}
BuildRequires:  python2-nose
%if (0%{?rhel} && 0%{?rhel} <= 7)
BuildRequires:  pygpgme
Requires:       pygpgme
%else
BuildRequires:  python2-gpg
Requires:       python2-gpg
%endif
BuildRequires:  pyliblzma
Requires:       pyliblzma
Requires:       %{name}-data = %{version}-%{release}
%if 0%{?fedora} || 0%{?centos}
Requires:       deltarpm
%endif
Requires:       python2-hawkey >= %{hawkey_version}
Requires:       python2-libcomps >= %{libcomps_version}
Requires:       python-librepo >= %{librepo_version}
BuildRequires:  libmodulemd >= %{libmodulemd_version}
Requires:       libmodulemd >= %{libmodulemd_version}
BuildRequires:  python2-smartcols >= %{python_smartcols_version}
Requires:       python2-smartcols >= %{python_smartcols_version}
%if 0%{?rhel} && 0%{?rhel} <= 7
BuildRequires:  python-iniparse
Requires:       python-iniparse
BuildRequires:  rpm-python >= %{rpm_version}
Requires:       rpm-python >= %{rpm_version}
BuildRequires:  python-gobject-base
Requires:       python-gobject-base
%else
BuildRequires:  python2-iniparse
Requires:       python2-iniparse
BuildRequires:  python2-rpm >= %{rpm_version}
Requires:       python2-rpm >= %{rpm_version}
Recommends:     rpm-plugin-systemd-inhibit
BuildRequires:  python2-gobject-base
Requires:       python2-gobject-base
%endif

%description -n python2-%{name}
Python 2 interface to DNF.
%endif  # %%{with python2}

%if %{with python3}
%package -n python3-%{name}
Summary:        Python 3 interface to DNF
%{?python_provide:%python_provide python3-%{name}}
BuildRequires:  python3-devel
BuildRequires:  python3-hawkey >= %{hawkey_version}
BuildRequires:  python3-iniparse
BuildRequires:  python3-libcomps >= %{libcomps_version}
BuildRequires:  python3-librepo >= %{librepo_version}
BuildRequires:  python3-nose
BuildRequires:  python3-gpg
Requires:       python3-gpg
Requires:       %{name}-data = %{version}-%{release}
%if 0%{?fedora} || 0%{?centos}
Requires:       deltarpm
%endif
Requires:       python3-hawkey >= %{hawkey_version}
Requires:       python3-iniparse
Requires:       python3-libcomps >= %{libcomps_version}
Requires:       python3-librepo >= %{librepo_version}
BuildRequires:  python3-rpm >= %{rpm_version}
Requires:       python3-rpm >= %{rpm_version}
%if 0%{?rhel} && 0%{?rhel} <= 7
Requires:       rpm-plugin-systemd-inhibit
%else
Recommends:     rpm-plugin-systemd-inhibit
BuildRequires:  libmodulemd >= %{libmodulemd_version}
Requires:       libmodulemd >= %{libmodulemd_version}
BuildRequires:  python3-gobject-base
Requires:       python3-gobject-base
BuildRequires:  python3-smartcols >= %{python_smartcols_version}
Requires:       python3-smartcols >= %{python_smartcols_version}
%endif

%description -n python3-%{name}
Python 3 interface to DNF.
%endif

%package automatic
Summary:        %{pkg_summary} - automated upgrades
BuildRequires:  systemd
Requires:       %{name} = %{version}-%{release}
%{?systemd_requires}

%description automatic
Systemd units that can periodically download package upgrades and apply them.


%prep
%autosetup -p1 -n %{name}-%{version}-modularity-6
mkdir build-py2
mkdir build-py3


%build
%if %{with python2}
    pushd build-py2
    %cmake .. -DPYTHON_DESIRED:str=2
    %make_build
    make doc-man
    popd
%endif

%if %{with python3}
    pushd build-py3
    %cmake .. -DPYTHON_DESIRED:str=3
    %make_build
    make doc-man
    popd
%endif


%install
%if %{with python2}
    pushd build-py2
    %make_install
    popd
%endif

%if %{with python3}
    pushd build-py3
    %make_install
    popd
%endif

%find_lang %{name}
mkdir -p %{buildroot}%{confdir}/vars
mkdir -p %{buildroot}%{pluginconfpath}/
%if %{with python2}
mkdir -p %{buildroot}%{py2pluginpath}/
%endif
%if %{with python3}
mkdir -p %{buildroot}%{py3pluginpath}/__pycache__/
%endif
mkdir -p %{buildroot}%{confdir}/modules.d
mkdir -p %{buildroot}%{confdir}/modules.defaults.d
ln -sr  %{buildroot}%{confdir}/%{name}.conf %{buildroot}%{_sysconfdir}/yum.conf
mkdir -p %{buildroot}%{_localstatedir}/log/
mkdir -p %{buildroot}%{_var}/cache/dnf/
touch %{buildroot}%{_localstatedir}/log/%{name}.log
%if %{with python3}
ln -sr %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/dnf
mv %{buildroot}%{_bindir}/dnf-automatic-3 %{buildroot}%{_bindir}/dnf-automatic
ln -sr  %{buildroot}%{_bindir}/dnf-3 %{buildroot}%{_bindir}/yum
%else
ln -sr %{buildroot}%{_bindir}/dnf-2 %{buildroot}%{_bindir}/dnf
mv %{buildroot}%{_bindir}/dnf-automatic-2 %{buildroot}%{_bindir}/dnf-automatic
%if 0%{?rhel} && 0%{?rhel} <= 7
ln -sr  %{buildroot}%{_bindir}/dnf-2 %{buildroot}%{_bindir}/yum4
ln -sr  %{buildroot}%{_mandir}/man8/dnf.8.gz %{buildroot}%{_mandir}/man8/yum4.8.gz
rm -f %{buildroot}%{_mandir}/man8/yum.8.gz
%else
ln -sr  %{buildroot}%{_bindir}/dnf-2 %{buildroot}%{_bindir}/yum
%endif
%endif
rm -vf %{buildroot}%{_bindir}/dnf-automatic-*


%check
%if %{with python2}
    pushd build-py2
    ctest -VV
    popd
%endif

%if %{with python3}
    pushd build-py3
    ctest -VV
    popd
%endif


%post
%systemd_post dnf-makecache.timer

%preun
%systemd_preun dnf-makecache.timer

%postun
%systemd_postun_with_restart dnf-makecache.timer


%post automatic
%systemd_post dnf-automatic.timer
%systemd_post dnf-automatic-notifyonly.timer
%systemd_post dnf-automatic-download.timer
%systemd_post dnf-automatic-install.timer

%preun automatic
%systemd_preun dnf-automatic.timer
%systemd_preun dnf-automatic-notifyonly.timer
%systemd_preun dnf-automatic-download.timer
%systemd_preun dnf-automatic-install.timer

%postun automatic
%systemd_postun_with_restart dnf-automatic.timer
%systemd_postun_with_restart dnf-automatic-notifyonly.timer
%systemd_postun_with_restart dnf-automatic-download.timer
%systemd_postun_with_restart dnf-automatic-install.timer


%files -f %{name}.lang
%{_bindir}/%{name}
%if 0%{?rhel} && 0%{?rhel} <= 7
%{_sysconfdir}/bash_completion.d/%{name}
%else
%dir %{_datadir}/bash-completion
%dir %{_datadir}/bash-completion/completions
%{_datadir}/bash-completion/completions/%{name}
%endif
%{_mandir}/man8/%{name}.8*
%{_mandir}/man8/yum2dnf.8*
%{_unitdir}/%{name}-makecache.service
%{_unitdir}/%{name}-makecache.timer
%{_var}/cache/%{name}/

%files data
%license COPYING PACKAGE-LICENSING
%doc AUTHORS README.rst
%dir %{confdir}
%dir %{confdir}/modules.d
%dir %{confdir}/modules.defaults.d
%dir %{pluginconfpath}
%dir %{confdir}/protected.d
%dir %{confdir}/vars
%config(noreplace) %{confdir}/%{name}.conf
%config(noreplace) %{confdir}/protected.d/%{name}.conf
%config(noreplace) %{_sysconfdir}/logrotate.d/%{name}
%ghost %{_localstatedir}/log/hawkey.log
%ghost %{_localstatedir}/log/%{name}.log
%ghost %{_localstatedir}/log/%{name}.librepo.log
%ghost %{_localstatedir}/log/%{name}.rpm.log
%ghost %{_localstatedir}/log/%{name}.plugin.log
%ghost %{_sharedstatedir}/%{name}
%ghost %{_sharedstatedir}/%{name}/groups.json
%ghost %{_sharedstatedir}/%{name}/yumdb
%ghost %{_sharedstatedir}/%{name}/history
%{_mandir}/man5/%{name}.conf.5*
%{_tmpfilesdir}/%{name}.conf
%{_sysconfdir}/libreport/events.d/collect_dnf.conf

%files -n %{yum_subpackage_name}
%if "%{yum_subpackage_name}" == "yum"
%{_bindir}/yum
%{_sysconfdir}/yum.conf
%{_mandir}/man5/yum.conf.5.*
%{_mandir}/man8/yum.8*
%endif

%if "%{yum_subpackage_name}" == "nextgen-yum4"
%{_bindir}/yum4
%{_mandir}/man8/yum4.8*
%exclude %{_sysconfdir}/yum.conf
%exclude %{_mandir}/man5/yum.conf.5.*
%exclude %{_mandir}/man8/yum.8*
%endif

%if "%{yum_subpackage_name}" == "%{name}-yum"
%{_sysconfdir}/yum.conf
%{_bindir}/yum
%{_mandir}/man5/yum.conf.5*
%{_mandir}/man8/yum.8*
%endif

%if %{with python2}
%files -n python2-%{name}
%{_bindir}/%{name}-2
%exclude %{python2_sitelib}/%{name}/automatic
%{python2_sitelib}/%{name}/
%dir %{py2pluginpath}
%endif

%if %{with python3}
%files -n python3-%{name}
%{_bindir}/%{name}-3
%exclude %{python3_sitelib}/%{name}/automatic
%{python3_sitelib}/%{name}/
%dir %{py3pluginpath}
%dir %{py3pluginpath}/__pycache__
%endif

%files automatic
%{_bindir}/%{name}-automatic
%config(noreplace) %{confdir}/automatic.conf
%{_mandir}/man8/%{name}.automatic.8*
%{_unitdir}/%{name}-automatic.service
%{_unitdir}/%{name}-automatic.timer
%{_unitdir}/%{name}-automatic-notifyonly.service
%{_unitdir}/%{name}-automatic-notifyonly.timer
%{_unitdir}/%{name}-automatic-download.service
%{_unitdir}/%{name}-automatic-download.timer
%{_unitdir}/%{name}-automatic-install.service
%{_unitdir}/%{name}-automatic-install.timer
%if %{with python3}
%{python3_sitelib}/%{name}/automatic/
%else
%{python2_sitelib}/%{name}/automatic/
%endif

%changelog
* Thu Nov 08 2018 Jaroslav Mracek <jmracek@redhat.com> - 2.7.5-19
- Backport patches for RHBZ#1643129 from upstream dnf-2-modularity

* Mon Sep 24 2018 Marek Blaha <mblaha@redhat.com> - 2.7.5-18
- Exclude system and commandline pkg from filtering (RhBug:1630226)

* Mon Jul 23 2018 Marek Blaha <mblaha@redhat.com> - 2.7.5-17
- Rename yum4 subpackage to nextgen-yum4
- Correct Source0 URL

* Tue May 29 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-16
- Apply util-Correctly-source-errno.EEXIST patch

* Mon May 28 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-15
- Do not require libdnf

* Fri May 25 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-14
- Fix patch applying.

* Fri May 25 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-13
- Rebase to dnf from dnf-2-modularity-6 release.

* Wed Apr 18 2018 Daniel Mach <dmach@redhat.com> - 2.7.5-12
- Fix defaults loading.

* Tue Apr 17 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-11
- Rebase to dnf from dnf-2-modularity-4 release.

* Mon Mar 26 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-10
- Require libmodulemd.

* Mon Mar 26 2018 Martin Hatina <mhatina@redhat.com> - 2.7.5-9
- Rebase to dnf from dnf-2-modularity-3 release.

* Mon Feb 12 2018 Daniel Mach <dmach@redhat.com> - 2.7.5-8
- Rebase to dnf from dnf-2-modularity branch.

* Thu Feb 08 2018 Igor Gnatenko <ignatenko@redhat.com> - 2.7.5-7
- Demote deltarpm to weak dependencies

* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2.7.5-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Wed Jan 03 2018 Igor Gnatenko <ignatenko@redhat.com> - 2.7.5-5
- Use %%systemd_requires
- Update Python 2 dependency declarations to new packaging standards
  (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3)

* Wed Nov 29 2017 Jaroslav Mracek <jmracek@redhat.com> - 2.7.5-4
- Fix problem with demands.cacheonly that caused problems for system-upgrade

* Tue Nov 07 2017 Igor Gnatenko <ignatenko@redhat.com> - 2.7.5-3
- Remove platform-python subpackage

* Fri Oct 27 2017 Igor Gnatenko <ignatenko@redhat.com> - 2.7.5-2
- Enable usage of rich deps for NM integration

* Wed Oct 18 2017 Igor Gnatenko <ignatenko@redhat.com> - 2.7.5-1
- Improve performance for excludes and includes handling (RHBZ #1500361)
- Fixed problem of handling checksums for local repositories (RHBZ #1502106)
- Fix traceback when using dnf.Base.close() (RHBZ #1503575)

* Mon Oct 16 2017 Jaroslav Mracek <jmracek@redhat.com> - 2.7.4-1
- Update to 2.7.4-1
- Enhanced performance for excludes and includes handling
- Solved memory leaks at time of closing of dnf.Base()
- Resolves: rhbz#1480979 - I thought it abnormal that dnf crashed.
- Resolves: rhbz#1461423 - Memory leak in python-dnf
- Resolves: rhbz#1499564 - dnf list installed crashes
- Resolves: rhbz#1499534 - dnf-2 is much slower than dnf-1 when handling groups
- Resolves: rhbz#1499623 - Mishandling stderr vs stdout (dnf search, dnf repoquery)

* Fri Oct 06 2017 Igor Gnatenko <ignatenko@redhat.com> - 2.7.3-1
- Fix URL detection (RHBZ #1472847)
- Do not remove downloaded files with --destdir option (RHBZ #1498426)
- Fix handling of conditional packages in comps (RHBZ #1427144)

* Mon Oct 02 2017 Jaroslav Mracek <jmracek@redhat.com> - 2.7.2-1
- Update to 2.7.2-1
- Added new option ``--comment=<comment>`` that adds a comment to transaction in history
- :meth:`dnf.Base.pre_configure_plugin` configure plugins by running their pre_configure() method
- Added pre_configure() methotd for plugins and commands to configure dnf before repos are loaded
- Resolves: rhbz#1421478 - dnf repository-packages: error: unrecognized arguments: -x rust-rpm-macros
- Resolves: rhbz#1491560 - 'dnf check' reports spurious "has missing requires of" errors
- Resolves: rhbz#1465292 - DNF remove protected duplicate package
- Resolves: rhbz#1279001 - [RFE] Missing dnf --downloaddir option
- Resolves: rhbz#1212341 - [RFE] Allow plugins to override the core configuration
- Resolves: rhbz#1299482 - mock --init fails with message "Failed calculating RPMDB checksum"
- Resolves: rhbz#1488398 - dnf upstream tests failures on f26
- Resolves: rhbz#1192811 - dnf whatprovides should show which provides matched a pattern
- Resolves: rhbz#1288845 - "dnf provides" wildcard matching is unreliable (not all packages with matches listed)
- Resolves: rhbz#1473933 - [abrt] dnf-automatic: resolved(): rpm_conf.py:58:resolved:AttributeError: 'Rpmconf' object has no attribute '_interactive'
- Resolves: rhbz#1237349 - dnf autoremove not removing what dnf list extras shows
- Resolves: rhbz#1470050 - the 'priority=' option in /etc/yum.repos.d/*.repo is not respected
- Resolves: rhbz#1347927 - dnf --cacheonly downloads packages
- Resolves: rhbz#1478115 - [abrt] dnf: _hcmd_undo(): __init__.py:888:_hcmd_undo:IndexError: list index out of range
- Resolves: rhbz#1461171 -  RFE: support --advisory= with install
- Resolves: rhbz#1448874 - "dnf needs-restarting" vanished from bash completion
- Resolves: rhbz#1495116 - Dnf version fails with traceback in container

* Mon Aug 07 2017 Jaroslav Mracek <jmracek@redhat.com> 2.6.3-1
- Fix problem with dnf.Package().remote_location() (RhBug:1476215) (Jaroslav
  Mracek)
- Change behavior of -C according to documentation (RhBug:1473964) (Jaroslav
  Mracek)
- It should prevent to ask attribute of None (RhBug:1359482) (Jaroslav Mracek)
- Solve a problems with --arch options (RhBug:1476834) (Jaroslav Mracek)
- Use security plugin code for dnf-automatic (Jaroslav Mracek)
- Fix unicode error for python2 (Jaroslav Mracek)
- Inform about packages installed for group (Jaroslav Mracek)
- Provide info if pkg is removed due to dependency (RhBug:1244755) (Jaroslav
  Mracek)
- Unify format of %%{_mandir} paths in dnf.spec (Jaroslav Mracek)
- Remove test_yumlayer.py as unneeded test (Jaroslav Mracek)
- Provide yum4 package for rhel7 build (Jaroslav Mracek)
- Make yum compatible layer very minimal (RhBug:1476748) (Jaroslav Mracek)
- Remove metadata_expire from yum compatible layer (Jaroslav Mracek)
- Remove keepcache from yum compatibility layer (Jaroslav Mracek)
- Remove options from yum conf (Jaroslav Mracek)
- Remove unused functionality from  yum compatible layer (Jaroslav Mracek)
- Add deplist command for dnf (Jaroslav Mracek)
- Fix problems with --downloaddir options (RhBug:1476464) (Jaroslav Mracek)
- Move description of --forcearch into proper place (Jaroslav Mracek)
- Provide description of --downloaddir option (Jaroslav Mracek)
- Fix if in spec file (Jaroslav Mracek)
- Add description of "test" tsflags (Jaroslav Mracek)
- Enable import gpg_keys with tsflag test (RhBug:1464192) (Jaroslav Mracek)
- Keep old reason when undoing erase (RhBug:1463107) (Eduard Čuba)
- spec: eliminate other weak dependencies for el<=7 (Igor Gnatenko)
- spec: do not strongly require inhibit plugin (Igor Gnatenko)
- Inform that packages are only downloaded (RhBug:1426196) (Jaroslav Mracek)
- Move releasever check after the etc/dnf/vars substitutions. (Alexander
  Kanavin)
- Provide substitution for Repodict.add_new_repo() (RhBug:1457507) (Jaroslav
  Mracek)

* Mon Jul 24 2017 Jaroslav Mracek <jmracek@redhat.com> 2.6.2-1
- Remove autodeglob optimization (Jaroslav Rohel)
- Integrate --destdir with --destdir from download plugin (Ondřej Sojka)
- Add CLI option --destdir (RhBug:1279001) (Ondřej Sojka)
- Add myself to the AUTHORS file (Nathaniel McCallum)
- Add the --forcearch CLI flag (Nathaniel McCallum)
- Add 'ignorearch' option (Nathaniel McCallum)
- Provide an API for setting 'arch' and 'basearch' (Nathaniel McCallum)
- Add nevra forms for repoquery command (Jaroslav Rohel)
- Fix UnicodeDecodeError during checkSig() on non UTF-8 locale (RhBug:1397848)
  (Jaroslav Rohel)
- Add dnf option --noautoremove (RhBug:1361424) (Jaroslav Mracek)
- Add group argument for mark command (Jaroslav Mracek)
- Report problems for each pkg during gpgcheck (RhBug:1387925) (Jaroslav
  Mracek)
- fix minor spelling mistakes (René Genz)
- Print warning when wrong delimiter in cache (RhBug:1332099) (Vítek Hoch)
- Fix the loading of config for dnf-automatic command_email (RhBug:1470116)
  (Jaroslav Rohel)
- Enable download progress bar if redirected output (RhBug:1161950) (Jaroslav
  Mracek)
- Support short abbrevations of commands (RhBug:1320254) (Vítek Hoch)
- Remove unused variables kwargs (Jaroslav Mracek)
- Not reinstall packages if install from repository-pkgs used (Jaroslav Mracek)
- bump dnf version to 2.6.0 (Igor Gnatenko)
- spec: use python2- prefix for hawkey (Igor Gnatenko)
- spec: use sphinx-build binary rather than package name (Igor Gnatenko)
- spec: python-bugzilla is not needed for building (Igor Gnatenko)
- spec: fix instructions about generating tarball (Igor Gnatenko)
- po: Update translations (Igor Gnatenko)
- Add an example of installation without weak-deps  (RhBug:1424723) (Jaroslav
  Mracek)
- Add detection if mirrorlist is used for metalink (Jaroslav Mracek)
- Rename variable (Jaroslav Mracek)
- Add --groupmember option to repoquery (RhBug:1462486) (Jaroslav Mracek)
- Check checksum for local repositories (RhBug:1314405) (Jaroslav Mracek)
- Spelling fixes (Ville Skyttä)
- repoquery --obsoletes prints obsoletes (RhBug:1457368) (Matěj Cepl)
- Provide pkg name hint for icase (RhBug:1339280) (RhBug:1138978) (Jaroslav
  Mracek)
- Return only latest pkgs for "dnf list upgrades" (RhBug:1423472) (Jaroslav
  Mracek)
- cleanup code not executed in case of exception (Marek Blaha)
- Allow to modify message for user confirmation (Jaroslav Mracek)
- Add autocheck_running_kernel config option (Štěpán Smetana)
- Inform about skipped packages for group install (RhBug:1427365) (Jaroslav
  Mracek)
- Remove group remove unneeded pkgs (RhBug:1398871) (RhBug:1432312) (Jaroslav
  Mracek)
- po: update translations (Igor Gnatenko)

* Mon Jun 12 2017 Jaroslav Mracek <jmracek@redhat.com> 2.5.1-1
- bump version to 2.5.1 + update release notes (Jaroslav Mracek)
- Fix: dnf update --refresh fails for repo_gpgcheck=1 (RhBug:1456419) (Daniel
  Mach)
- Don't try to cut datetime message (Jaroslav Rohel)
- Use localized datetime format (RhBug:1445021) (Jaroslav Rohel)
- Work with locale date (Jaroslav Rohel)
- Use ISO 8601 time format in logfile (Jaroslav Rohel)
- Add unitest to prevent callbacks breakage (Jaroslav Mracek)
- Provide compatibility for tools that do not use total_drpms (Jaroslav Mracek)
- Requires strict usage of repoquery --recursive (Jaroslav Mracek)
- Fix output for --resolve with --installed for repoquery (Jaroslav Mracek)
- Remove unnecessary inheritance of yum conf options (Martin Hatina)
- Remove alwaysprompt option support (RhBug:1400714) (Jaroslav Rohel)
- Allow to install groups with multilib_policy=all (RhBug:1250702) (Jaroslav
  Mracek)
- Redesign Base.install() to provide alternatives (Jaroslav Mracek)
- Report excludes includes into logger.debug (RhBug:1381988) (Jaroslav Mracek)
- Provide new API to parse string to NEVRA () (Jaroslav Mracek)
- Add more repoquery querytags (Jaroslav Rohel)
- Not hide tracebacks (Jaroslav Mracek)
- Solve error handling for get attr in yumdb (RhBug:1397848) (Jaroslav Mracek)
- Provide a better error if throttle to low (RhBug:1321407) (Jaroslav Mracek)
- Change timeout to 30s (RhBug:1291867) (Jaroslav Mracek)
- Add pre_transaction hook for plugins (Jaroslav Rohel)
- Not download metadata if "dnf history [info|list|userinstalled]" (Jaroslav
  Mracek)
- Not download metadata if "dnf repo-pkgs <repo> list --installed" (Jaroslav
  Mracek)
- Not download metadata if "dnf list --installed" (RhBug:1372895) (Jaroslav
  Mracek)
- Format pkg str for repoquery --tree due to -qf (RhBug:1444751) (Jaroslav
  Mracek)

* Mon May 22 2017 Jaroslav Mracek <jmracek@redhat.com> 2.5.0-1
- Update release notes (Jaroslav Mracek)
- Change documentation for history --userinstalled (RhBug:1370062) (Jaroslav
  Mracek)
- Change example to install plugin using versionlock (Jaroslav Mracek)
- Remove unused method Goal.best_run_diff() (Jaroslav Mracek)
- Change recommendations if some problems appear (RhBug:1293067) (Jaroslav
  Mracek)
- Report problems for goals with optional=True (Jaroslav Mracek)
- Format resolve problem messages in method in dnf.util (Jaroslav Mracek)
- Enhance reports about broken dep (RhBug:1398040)(RhBug:1393814) (Jaroslav
  Mracek)
- search: do not generate error if not match anything (RhBug:1342157) (Jaroslav
  Rohel)
- Check if any plugin is removed in transaction (RhBug:1379906) (Jaroslav
  Mracek)
- Show progress for DRPM (RhBug:1198975) (Jaroslav Mracek)
- Fix disabledplugin option (Iavael)
- [history]: fixed info command merged output (Eduard Čuba)

* Thu May 11 2017 Jaroslav Mracek <jmracek@redhat.com> 2.4.1-1
- bump version to 2.4.1 + update release notes (Jaroslav Mracek)
- goal: do not mark weak dependencies as userinstalled (Igor Gnatenko)
- fix typo in supplements (RhBug:1446756) (Igor Gnatenko)
- Describe present behavior of installonly_limit conf option (Jaroslav Mracek)
- Reset all transaction for groups if Base.reset() (RhBug:1446432) (Jaroslav
  Mracek)
- Explain how add negative num for --latest-limit (RhBug:1446641) (Jaroslav
  Mracek)
- trivial: don't duplicate option names (Igor Gnatenko)
- Add support for --userinstalled for repoquery command (RhBug:1278124)
  (Jaroslav Rohel)
- Fix header of search result sections (RhBug:1301868) (Jaroslav Rohel)
- Filter out src for get_best_selector (Jaroslav Mracek)
- Add minor changes in formating of documentation (Jaroslav Mracek)

* Tue May 02 2017 Jaroslav Mracek <jmracek@redhat.com> 2.4.0-1
- po: Update translations (Igor Gnatenko)
- po: Update translations (Igor Gnatenko)
- introduce '--enableplugin' option (Martin Hatina)
- Improve detection of file patterns (Jaroslav Mracek)
- Add method _get_nevra_solution() for subject (Jaroslav Mracek)
- Do not add "*" into query filter in _nevra_to_filters() (Jaroslav Mracek)
- Remove usage of nevra_possibilities_real() (Jaroslav Mracek)
- Increase performance for downgrade_to() (Jaroslav Mracek)
- Add additional keys for get_best_query() (Jaroslav Mracek)
- Increase performance for get_best_selector() (Jaroslav Mracek)
- Increase performance for get_best_query() (Jaroslav Mracek)
- Fix "Package" text translation (RhBug:1302935) (Jaroslav Rohel)
- Create a warning if releasever is None (Jaroslav Mracek)
- Adds cost, excludepkgs, and includepkgs to Doc (RhBug:1248684) (Jaroslav
  Mracek)
- Change auto-detection of releasever in empty installroot (Jaroslav Mracek)
- Do not load system repo for makecache command (RhBug:1441636) (Jaroslav
  Mracek)
- Do not raise assertion if group inst and rmv pkgs (RhBug:1438438) (Jaroslav
  Mracek)
- yum layer using python3 (Martin Hatina)
- Filter url protocols for baseurl in Package.remote_location (Jaroslav Mracek)
- Add armv5tl to arm basearch (Neal Gompa)
- Setup additional parameters for handler for remote packages (Jaroslav Mracek)
- Use same method for user/password setting of every librepo.handle (Jaroslav
  Mracek)
- Fix PEP8 violations and remove unused import (Jaroslav Mracek)
- Handle unknown file size in download progress (Jaroslav Mracek)
- Allow to delete cashed files from command line by clean command (Jaroslav
  Mracek)
- Save command line packages into chachedir (RhBug:1256313) (Jaroslav Mracek)
- Add progress bar for download of commandline pkgs (RhBug:1161950) (Jaroslav
  Mracek)
- Fix minor typo Closes: #781 Approved by: ignatenkobrain (Yuri Chornoivan)
- Mark unremoved packages as failed (RhBug:1421244) (Jaroslav Mracek)

* Mon Apr 10 2017 Jaroslav Mracek <jmracek@redhat.com> 2.3.0-1
- update release notes (Jaroslav Mracek)
- po: Update translations (Igor Gnatenko)
- Add require of subcommand for repo-pkgs command (Jaroslav Rohel)
- shell: Fix commands initialization (Jaroslav Rohel)
- po: Update translations (Igor Gnatenko)
- Add support for --location for repoquery command (RhBug:1290137) (Jaroslav
  Mracek)
- Add support of --recursive with --resolve in repoquery (Jaroslav Mracek)
- Add --recursive option for repoquery (Jaroslav Mracek)
- Add --whatconflicts for repoquery (Jaroslav Mracek)
- Add support for multiple options for repoquery (Jaroslav Mracek)
- Add multiple format option for repoquery (Jaroslav Mracek)
- Fix problem with "dnf repoquery --querytags" (Jaroslav Mracek)
- Add support of 3 options into updateinfo command (Jaroslav Mracek)
- Add inheritance of reason for obsoleting packages (Jaroslav Mracek)
- Mark installonlypkgs correctly as user installed (RhBug:1349314) (Jaroslav
  Mracek)
- Solve a problem with None names in callbacks (Jaroslav Mracek)
- Solve a problem for callbacks (Jaroslav Mracek)
- Revert "remove: CLI: --randomwait" (RhBug:1247122) (Ondřej Sojka)
- po: update translations (Igor Gnatenko)
- po: update translations (Igor Gnatenko)
- Set strings for translations (RhBug:1298717) (Jaroslav Mracek)

* Mon Mar 27 2017 Jaroslav Mracek <jmracek@redhat.com> 2.2.0-1
- bump version to 2.2.0 + update release notes (Jaroslav Mracek)
- Add documentation of new API callback actions (RhBug:1411432) (Jaroslav
  Mracek)
- Fix python2 doesn't have e.__traceback__ attribute (Jaroslav Mracek)
- Do not report erasing package as None. (Jaroslav Mracek)
- Display scriplet for transaction (RhBug:1411423) (RhBug:1406130) (Jaroslav
  Mracek)
- Add support for rpmcallbacks (Jaroslav Mracek)
- AUTHORS: updated (Jaroslav Rohel)
- Not show expiration check if no repo enabled (RhBug:1369212) (Jaroslav
  Mracek)
- Fix changelog in dnf spec file (Jaroslav Mracek)
- po: update translations (Igor Gnatenko)
- Add myself (mhatina) to AUTHORS (Martin Hatina)
- po: Update translations (Igor Gnatenko)

* Tue Mar 21 2017 Jaroslav Mracek <jmracek@redhat.com> 2.1.1-1
- bump version to 2.1.1 + update release notes (Jaroslav Mracek)
- Sync the translation with locale (Jaroslav Rohel)
- Disable exceptions in logging (Jaroslav Rohel)
- Fix severity info in "updateinfo info" (Jaroslav Mracek)
- Add help for shell commands (Jaroslav Rohel)
- shell: no crash if missing args (Jaroslav Rohel)
- proper check of releasever, when using installroot (RhBug:1417542) (Martin
  Hatina)
- Inform about "Cache was expired" with "dnf clean" (RhBug:1401446) (Jaroslav
  Mracek)
- crypto: port to the official gpgme bindings (Igor Gnatenko)
- Fix doc example for `fill_sack` method (Lubomír Sedlář)
- po: update translations (Igor Gnatenko)
- Not try to install src package (RhBug:1416699) (Jaroslav Mracek)
- Add usage for add_new_repo() with repofrompath option (Jaroslav Mracek)
- Add new API add_new_repo() in RepoDict() (RhBug:1427132) (Jaroslav Mracek)
- docs: adds documentation for dnf-automatic's Command and CommandEmail
  emitters. (rhn)
- docs: fixes typo in section description in automatic (rhn)
- Adds new emitters for dnf-automatic. (rhn)
- po: update translations (Igor Gnatenko)
- Ensure that callback will not kill dnf transaction (Jaroslav Mracek)
- Ensure that name will be not requested on None (RhBug:1397047) (Jaroslav
  Mracek)
- Python 3.6 invalid escape sequence deprecation fix (Ville Skyttä)
- display severity information in updateinfo (#741) (Michael Mraka)
- po: update translations (Igor Gnatenko)
- Add --nodocs option for dnf (RhBug:1379628) (Jaroslav Mracek)
- Replace passive plugin noroot (Jaroslav Mracek)
- Fix incorrect formating of string for logger.info (Jaroslav Mracek)
- Not print help if empty line in script for shell command (Jaroslav Mracek)
- Run fill_sack after all repos have changed status (Jaroslav Mracek)
- Remove Hawkey object from repo if rerun of dnf.fill_sack (Jaroslav Mracek)
- util/on_metered_connection: be more polite to failures (Igor Gnatenko)
- cosmetic: i18n: rewording of 'Login user' (RhBug:1424939) (Jan Silhan)
- Fix problem with --whatprovides in repoquery (RhBug:1396992) (Jaroslav
  Mracek)
- Add -a and --all option for repoquery (RhBug:1412970) (Jaroslav Mracek)
- Change camel-case of output of grouplist (Jaroslav Mracek)
- Minor correction in release notes (Jaroslav Mracek)
- Minor correction in release notes (Jaroslav Mracek)

* Thu Feb 16 2017 Jaroslav Mracek <jmracek@redhat.com> 2.1.0-1
- bump version to 2.1.0 + update release notes (Jaroslav Mracek)
- Fix problem with --recent option in repoquery (Jaroslav Mracek)
- Fix problem with duplicated --obsoletes (RhBug:1421835) (Jaroslav Mracek)
- Python 3.6 invalid escape sequence deprecation fixes (Ville Skyttä)
- Add --repoid as alias for --repo (Jaroslav Mracek)
- introduce dnf.base.Base.update_cache() (Martin Hatina)
- Try to install uninstalled packages if group installed (Jaroslav Mracek)
- Enable search of provides in /usr/(s)bin (RgBug:1421618) (Jaroslav Mracek)
- style: ignore E261 (Igor Gnatenko)
- makecache: do not run on metered connections (RhBug:1415711) (Igor Gnatenko)
- change '--disableplugins' to '--disableplugin' (Martin Hatina)
- cosmetic: removed unused import (Jan Silhan)
- show hint how to display why package was skipped (RhBug:1417627) (Jan Silhan)
- spec: add information how to obtain archive (Igor Gnatenko)
- fix messages (UX) (Jaroslav Rohel)
- zanata update (Jan Silhan)

* Thu Feb 09 2017 Jaroslav Mracek <jmracek@redhat.com> 2.0.1-1
- bump version to 2.0.1 + update release notes (Jaroslav Mracek)
- introduce cli 'obsoletes' option (Martin Hatina)
- swap tids if they are in wrong order (RhBug:1409361) (Michael Mraka)
- Disable shell command recursion (Jaroslav Rohel)
- Honor additional arguments for DNF shell repo list command (Jaroslav Rohel)
- don't traceback when bug title is not set (Michael Mraka)
- introducing list-security, info-security etc. commands (Michael Mraka)
- Add lsedlar to contributors list (Lubomír Sedlář)
- Return just name from Package.source_name (Lubomír Sedlář)
- introduce dnf.conf.config.MainConf.exclude() (Martin Hatina)
- systemd: Disable daemons on ostree-managed systems (Colin Walters)
- introduced dnf.base.Base.autoremove() (RhBug:1414512) (Martin Hatina)
- po: update translations (Igor Gnatenko)
- build: use relative directory for translations (Igor Gnatenko)
- Temporary eliminate a problem with install remove loop (Jaroslav Mracek)
- Handle info message when DRPM wastes data (RhBug:1238808) (Daniel
  Aleksandersen)
- Fix output for better translation (RhBug:1386085) (Abhijeet Kasurde)
- yum layer refactored (Martin Hatina)
- return values changed to match yum's (Martin Hatina)
- Reword sentence after removing package (RhBug:1286553) (Abhijeet Kasurde)
- Minor documentation revisions (Mark Szymanski)
- Minor code fix (Abhijeet Kasurde)
- automatic: email emitter date header (David Greenhouse)
- Solve problem when no repo and only rpms with upgrade command (Jaroslav
  Mracek)
- bash_completion: use system-python if it's available (Igor Gnatenko)
- spec: use system-python for dnf-yum as well (Igor Gnatenko)
- comps/groups: fix tests (Michal Luscon)
- comps: adjust group_upgrade to new CompsTransPkg style (Michal Luscon)
- groups: refactored installation (RhBug:1337731, RhBug:1336879) (Michal
  Luscon)
- Increase requirement for hawkey (Jaroslav Mracek)
- Change reporting problems for downgradePkgs() (Jaroslav Mracek)
- Use selector for base.package_upgrade() (Jaroslav Mracek)
- Add usage of selectors for base.package_install() (Jaroslav Mracek)
- Use selector for base.package_downgrade() (Jaroslav Mracek)
- Redirect base.downgrade() to base.downgrade_to() (Jaroslav Mracek)
- Enable wildcard for downgrade command (RhBug:1173349) (Jaroslav Mracek)
- Refactor downgrade cmd behavior (RhBug:1329617)(RhBug:1283255) (Jaroslav
  Mracek)
- Redirect logger.info into stderr for repolist (RhBug:1369411) (Jaroslav
  Mracek)
- Redirect logger.info into stderr for repoquery (RhBug:1243393) (Jaroslav
  Mracek)
- Add possibility for commands to redirect logger (Jaroslav Mracek)
- Put information about metadata expiration into stdout (Jaroslav Mracek)
- Change warning about added repo into info (RhBug:1243393) (Jaroslav Mracek)
- Move grouplist output from logger into stdout (Jaroslav Mracek)
- let repo exclude work the same way as global exclude (Michael Mraka)
- Fix wrong assumptions about metalinks (RhBug:1411349) (Jaroslav Mracek)
- handle --disablerepo/--enablerepo properly with strict (RhBug:1345976)
  (Štěpán Smetana)
- Add fix to notify user about no repos (RhBug:1369212) (Abhijeet Kasurde)
- Add information about "hidden" option in dnf doc (RhBug:1349247) (Abhijeet
  Kasurde)
- Fix for 'history package-list' (Amit Upadhye)
- Enable multiple args for repoquery -f (RhBug:1403930) (Jaroslav Mracek)
- Set default repo.name as repo._section (Jaroslav Mracek)
- Create from self.forms value forms in cmd.run() (Jaroslav Mracek)
- Add description of swap command into documentation (Jaroslav Mracek)
- Add swap command (RhBug:1403465) (RhBug:1110780) (Jaroslav Mracek)
- Solve a problem with shell when empty line or EOF (Jaroslav Mracek)
- shell: add history of commands (RhBug:1405333) (Michal Luscon)
- Add info if no files with repoquery -l (RhBug:1254879) (Jaroslav Mracek)
- po: update translations (Igor Gnatenko)
- po: migrate to zanata python client and trivial fixes in build (Igor
  Gnatenko)
- po: include all possible languages from zanata (Igor Gnatenko)
- po: include comments for translations (Igor Gnatenko)
- shell: catch exceptions from depsolving (Michal Luscon)
- shell: update documentation (Michal Luscon)
- shell: add transaction reset cmd (Michal Luscon)
- shell: add transaction resolve cmd (Michal Luscon)
- shell: provide rewritable demands for cmds (Michal Luscon)
- shell: catch tracebacks from shlex (Michal Luscon)
- shell: handle ctrl+D more gracefully (Michal Luscon)
- groups: set demands in configure instead of run (Michal Luscon)
- shell: implement config cmd (Michal Luscon)
- shell: add help (Michal Luscon)
- shell: make alias repo list -> repolist (Michal Luscon)
- shell: catch exceptions from do_transaction (Michal Luscon)
- shell: resolve transaction in ts run (Michal Luscon)
- shell: add default value for internal methods argument (Michal Luscon)
- shell: create run alias for ts run (Michal Luscon)
- shell: add ts list cmd (Michal Luscon)
- shell: refill sack after every successful repo cmd (Michal Luscon)
- shell: allow running multiple transaction in one session (Michal Luscon)
- shell: add ts command (Michal Luscon)
- shell: catch cmd parsing and run exceptions (Michal Luscon)
- shell: allow to run scripts (Michal Luscon)
- shell: add repo cmd (Michal Luscon)
- shell: add resolving + transaction run support (Michal Luscon)
- shell: implement quit method (Michal Luscon)
- shell: add custom cmds stubs (Michal Luscon)
- shell: implement basic logic (Michal Luscon)
- shell: register new cmd (Michal Luscon)

* Wed Dec 14 2016 Michal Luscon <mluscon@redhat.com> 2.0.0-1
- tests: catch ModuleNotFoundError as well (Igor Gnatenko)
- Switch out automatic service for automatic-download and automatic-install
  (Pat Riehecky)
- Make upgrade-to alias for upgrade (RhBug:1327999) (Jaroslav Mracek)
- skip appending an empty option (RhBug: 1400081) (Michael Mraka)
- Add description of nevra foems for commands and autoremove args (Jaroslav
  Mracek)
- Add support of arguments nevra forms for autoremove command (Jaroslav Mracek)
- Add nevra forms for remove command (Jaroslav Mracek)
- Add nevra forms for install command (Jaroslav Mracek)
- add bin/yum into .gitignore (Michal Luscon)
- clean: acquire all locks before cleaning (RhBug:1293782) (Michal Luscon)
- Change hawkey version requirement (Jaroslav Mracek)
- Add information for translators (RhBug:1386078) (Jaroslav Mracek)
- Change info to warning for clean repoquery output (RhBug:1358245) (Jaroslav
  Mracek)
- Add description of pkg flag for Query (RhBug:1243393) (Jaroslav Mracek)
- Add minor changes in documentation (Jaroslav Mracek)
- Do not always overwrite the name with the repo ID (Neal Gompa)

* Fri Dec 02 2016 Martin Hatina <mhatina@redhat.com> 2.0.0-0.rc2.1
- See http://dnf.readthedocs.io/en/latest/release_notes.html

* Thu Sep 29 2016 Michal Luscon <mluscon@redhat.com> 2.0.0-0.rc1.1
- See http://dnf.readthedocs.io/en/latest/release_notes.html