diff --git a/.dnf.metadata b/.dnf.metadata new file mode 100644 index 0000000..cb4f5fb --- /dev/null +++ b/.dnf.metadata @@ -0,0 +1 @@ +2b22746950312972466fb32d74c79ca42a367cf7 SOURCES/dnf-2.7.5-modularity-6.tar.gz diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..20da192 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/dnf-2.7.5-modularity-6.tar.gz diff --git a/README.md b/README.md deleted file mode 100644 index 98f42b4..0000000 --- a/README.md +++ /dev/null @@ -1,4 +0,0 @@ -The master branch has no content - -Look at the c7 branch if you are working with CentOS-7, or the c4/c5/c6 branch for CentOS-4, 5 or 6 -If you find this file in a distro specific branch, it means that no content has been checked in yet diff --git a/SOURCES/0001-Allow-to-set-cacheonly-from-commands-and-conf-RhBug-.patch b/SOURCES/0001-Allow-to-set-cacheonly-from-commands-and-conf-RhBug-.patch new file mode 100644 index 0000000..703ad04 --- /dev/null +++ b/SOURCES/0001-Allow-to-set-cacheonly-from-commands-and-conf-RhBug-.patch @@ -0,0 +1,32 @@ +From bc11bf599ce3102656fa42b0ad0a6c7270822f30 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Mon, 27 Nov 2017 14:35:32 +0100 +Subject: [PATCH 1/3] Allow to set cacheonly from commands and conf + (RhBug:1492036) + +The formal code reacts only to --cacheonly option. + +https://bugzilla.redhat.com/show_bug.cgi?id=1492036 +--- + dnf/cli/cli.py | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +diff --git a/dnf/cli/cli.py b/dnf/cli/cli.py +index f60cdced..11fbed31 100644 +--- a/dnf/cli/cli.py ++++ b/dnf/cli/cli.py +@@ -741,7 +741,10 @@ class Cli(object): + if not os.getegid() == 0: + raise dnf.exceptions.Error(_('This command has to be run under the root user.')) + +- if not demands.cacheonly: ++ if demands.cacheonly or self.base.conf.cacheonly: ++ self.base.conf.cacheonly = True ++ repos.all()._md_only_cached = True ++ else: + if demands.freshest_metadata: + for repo in repos.iter_enabled(): + repo._md_expire_cache() +-- +2.13.6 + diff --git a/SOURCES/0002-Remove-redundant-conf-option-cacheonly.patch b/SOURCES/0002-Remove-redundant-conf-option-cacheonly.patch new file mode 100644 index 0000000..8005180 --- /dev/null +++ b/SOURCES/0002-Remove-redundant-conf-option-cacheonly.patch @@ -0,0 +1,25 @@ +From 777df1098f4215edb8339a56c1807c9217715142 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Mon, 27 Nov 2017 14:38:08 +0100 +Subject: [PATCH 2/3] Remove redundant conf option cacheonly + +The option was defined twice in "dnf.conf". +--- + dnf/conf/config.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/dnf/conf/config.py b/dnf/conf/config.py +index f0c39665..f2098fc6 100644 +--- a/dnf/conf/config.py ++++ b/dnf/conf/config.py +@@ -778,7 +778,6 @@ class MainConf(BaseConfig): + # runtime only options + self._add_option('downloadonly', BoolOption(False, runtimeonly=True)) + self._add_option('ignorearch', BoolOption(False)) +- self._add_option('cacheonly', BoolOption(False)) + + @property + def get_reposdir(self): +-- +2.13.6 + diff --git a/SOURCES/0003-Remove-unnecessary-code-for-set-cacheonly.patch b/SOURCES/0003-Remove-unnecessary-code-for-set-cacheonly.patch new file mode 100644 index 0000000..2be79b0 --- /dev/null +++ b/SOURCES/0003-Remove-unnecessary-code-for-set-cacheonly.patch @@ -0,0 +1,44 @@ +From aebbc222b85a7949a705360ea51b7c987126c2d8 Mon Sep 17 00:00:00 2001 +From: Jaroslav Mracek +Date: Tue, 28 Nov 2017 09:21:40 +0100 +Subject: [PATCH 3/3] Remove unnecessary code for set cacheonly + +Attribute repo._md_only_cached is set on different place during +_progress_demands(). +--- + dnf/repo.py | 5 ----- + tests/test_cli.py | 2 -- + 2 files changed, 7 deletions(-) + +diff --git a/dnf/repo.py b/dnf/repo.py +index e9ce597e..75a11a47 100644 +--- a/dnf/repo.py ++++ b/dnf/repo.py +@@ -858,11 +858,6 @@ class Repo(dnf.conf.RepoConf): + else: + return self._try_revive_by_repomd() + +- def _configure_from_options(self, opts): +- if getattr(opts, 'cacheonly', None): +- self._md_only_cached = True +- super(Repo, self)._configure_from_options(opts) +- + def disable(self): + # :api + self.enabled = False +diff --git a/tests/test_cli.py b/tests/test_cli.py +index f4ea27ee..8963783a 100644 +--- a/tests/test_cli.py ++++ b/tests/test_cli.py +@@ -136,8 +136,6 @@ class CliTest(TestCase): + self.assertTrue(self.base.repos['comb'].enabled) + self.assertFalse(self.base.repos["comb"].gpgcheck) + self.assertFalse(self.base.repos["comb"].repo_gpgcheck) +- self.assertEqual(self.base.repos["comb"]._sync_strategy, +- dnf.repo.SYNC_ONLY_CACHE) + + def test_configure_repos_expired(self, _): + """Ensure that --cacheonly beats the expired status.""" +-- +2.13.6 + diff --git a/SOURCES/0005-compatibility-gpgme.patch b/SOURCES/0005-compatibility-gpgme.patch new file mode 100644 index 0000000..3f7d402 --- /dev/null +++ b/SOURCES/0005-compatibility-gpgme.patch @@ -0,0 +1,118 @@ +diff --git a/dnf/crypto.py b/dnf/crypto.py +index a1839eefe..24a13ed6f 100644 +--- a/dnf/crypto.py ++++ b/dnf/crypto.py +@@ -26,12 +26,64 @@ + import dnf.pycomp + import dnf.util + import dnf.yum.misc +-import gpg + import io + import logging + import os + import tempfile + ++try: ++ from gpg import Context ++ from gpg import Data ++except ImportError: ++ import gpgme ++ ++ ++ class Context(object): ++ def __init__(self): ++ self.__dict__["ctx"] = gpgme.Context() ++ ++ def __enter__(self): ++ return self ++ ++ def __exit__(self, type, value, tb): ++ pass ++ ++ @property ++ def armor(self): ++ return self.ctx.armor ++ ++ @armor.setter ++ def armor(self, value): ++ self.ctx.armor = value ++ ++ def op_import(self, key_fo): ++ if isinstance(key_fo, basestring): ++ key_fo = io.BytesIO(key_fo) ++ self.ctx.import_(key_fo) ++ ++ def op_export(self, pattern, mode, keydata): ++ self.ctx.export(pattern, keydata) ++ ++ def __getattr__(self, name): ++ return getattr(self.ctx, name) ++ ++ ++ class Data(object): ++ def __init__(self): ++ self.__dict__["buf"] = io.BytesIO() ++ ++ def __enter__(self): ++ return self ++ ++ def __exit__(self, type, value, tb): ++ pass ++ ++ def read(self): ++ return self.buf.getvalue() ++ ++ def __getattr__(self, name): ++ return getattr(self.buf, name) ++ + + GPG_HOME_ENV = 'GNUPGHOME' + logger = logging.getLogger('dnf') +@@ -67,7 +119,7 @@ def keyids_from_pubring(gpgdir): + if not os.path.exists(gpgdir): + return [] + +- with pubring_dir(gpgdir), gpg.Context() as ctx: ++ with pubring_dir(gpgdir), Context() as ctx: + keyids = [] + for k in ctx.keylist(): + subkey = _extract_signing_subkey(k) +@@ -101,7 +153,7 @@ def pubring_dir(pubring_dir): + def rawkey2infos(key_fo): + pb_dir = tempfile.mkdtemp() + keyinfos = [] +- with pubring_dir(pb_dir), gpg.Context() as ctx: ++ with pubring_dir(pb_dir), Context() as ctx: + ctx.op_import(key_fo) + for key in ctx.keylist(): + subkey = _extract_signing_subkey(key) +@@ -110,7 +162,7 @@ def rawkey2infos(key_fo): + keyinfos.append(Key(key, subkey)) + ctx.armor = True + for info in keyinfos: +- with gpg.Data() as sink: ++ with Data() as sink: + ctx.op_export(info.id_, 0, sink) + sink.seek(0, os.SEEK_SET) + info.raw_key = sink.read() +diff --git a/dnf/yum/misc.py b/dnf/yum/misc.py +index 97f8be94d..248bff884 100644 +--- a/dnf/yum/misc.py ++++ b/dnf/yum/misc.py +@@ -32,7 +32,6 @@ + import dnf.i18n + import errno + import glob +-import gpg + import gzip + import hashlib + import io +@@ -278,7 +277,7 @@ def import_key_to_pubring(rawkey, keyid, gpgdir=None, make_ro_copy=True): + if not os.path.exists(gpgdir): + os.makedirs(gpgdir) + +- with dnf.crypto.pubring_dir(gpgdir), gpg.Context() as ctx: ++ with dnf.crypto.pubring_dir(gpgdir), dnf.crypto.Context() as ctx: + # import the key + with open(os.path.join(gpgdir, 'gpg.conf'), 'wb') as fp: + fp.write(b'') diff --git a/SOURCES/0006-util-Correctly-source-errno.EEXIST.patch b/SOURCES/0006-util-Correctly-source-errno.EEXIST.patch new file mode 100644 index 0000000..20b5437 --- /dev/null +++ b/SOURCES/0006-util-Correctly-source-errno.EEXIST.patch @@ -0,0 +1,33 @@ +From 199fc9cb11ff004fc752b58b7177aaf8d7fcedfd Mon Sep 17 00:00:00 2001 +From: Neal Gompa +Date: Sat, 3 Mar 2018 12:44:54 -0500 +Subject: [PATCH] util: Correctly source errno.EEXIST + +--- + dnf/util.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/dnf/util.py b/dnf/util.py +index ab7fd279..d0f1a4f2 100644 +--- a/dnf/util.py ++++ b/dnf/util.py +@@ -28,6 +28,7 @@ from functools import reduce + import dnf + import dnf.const + import dnf.pycomp ++import errno + import itertools + import librepo + import locale +@@ -120,7 +121,7 @@ def ensure_dir(dname): + try: + os.makedirs(dname, mode=0o755) + except OSError as e: +- if e.errno != os.errno.EEXIST or not os.path.isdir(dname): ++ if e.errno != errno.EEXIST or not os.path.isdir(dname): + raise e + + def empty(iterable): +-- +2.17.0 + diff --git a/SOURCES/0007-fix-tests.patch b/SOURCES/0007-fix-tests.patch new file mode 100644 index 0000000..3ce9a76 --- /dev/null +++ b/SOURCES/0007-fix-tests.patch @@ -0,0 +1,28 @@ +diff --git a/tests/test_history_undo.py b/tests/test_history_undo.py +index 5c7e423c..a551336b 100644 +--- a/tests/test_history_undo.py ++++ b/tests/test_history_undo.py +@@ -30,6 +30,7 @@ from dnf.transaction import (ERASE, DOWNGRADE, INSTALL, REINSTALL, + from hawkey import split_nevra + from tests.support import mock_sack, Base, ObjectMatcher + from unittest import TestCase ++import tempfile + + class BaseTest(TestCase): + """Unit tests of dnf.Base.""" +@@ -60,6 +61,7 @@ class BaseTest(TestCase): + def setUp(self): + """Prepare the test fixture.""" + self._base = Base() ++ self._base.conf.persistdir = tempfile.mkdtemp() + self._base._sack = mock_sack('main', 'updates') + + def test_history_undo_operations_downgrade(self): +@@ -113,6 +115,7 @@ class BaseTest(TestCase): + def test_history_undo_operations_erase_twoavailable(self): + """Test history_undo_operations with an erase available in two repos.""" + base = Base() ++ base.conf.persistdir = tempfile.mkdtemp() + base._sack = mock_sack('main', 'search') + operations = NEVRAOperations() + operations.add('Erase', 'lotus-3-16.x86_64') diff --git a/SPECS/dnf.spec b/SPECS/dnf.spec new file mode 100644 index 0000000..512bf90 --- /dev/null +++ b/SPECS/dnf.spec @@ -0,0 +1,984 @@ +# 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: 17%{?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 +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 +* Mon Jul 23 2018 Marek Blaha - 2.7.5-17 +- Rename yum4 subpackage to nextgen-yum4 +- Correct Source0 URL + +* Tue May 29 2018 Martin Hatina - 2.7.5-16 +- Apply util-Correctly-source-errno.EEXIST patch + +* Mon May 28 2018 Martin Hatina - 2.7.5-15 +- Do not require libdnf + +* Fri May 25 2018 Martin Hatina - 2.7.5-14 +- Fix patch applying. + +* Fri May 25 2018 Martin Hatina - 2.7.5-13 +- Rebase to dnf from dnf-2-modularity-6 release. + +* Wed Apr 18 2018 Daniel Mach - 2.7.5-12 +- Fix defaults loading. + +* Tue Apr 17 2018 Martin Hatina - 2.7.5-11 +- Rebase to dnf from dnf-2-modularity-4 release. + +* Mon Mar 26 2018 Martin Hatina - 2.7.5-10 +- Require libmodulemd. + +* Mon Mar 26 2018 Martin Hatina - 2.7.5-9 +- Rebase to dnf from dnf-2-modularity-3 release. + +* Mon Feb 12 2018 Daniel Mach - 2.7.5-8 +- Rebase to dnf from dnf-2-modularity branch. + +* Thu Feb 08 2018 Igor Gnatenko - 2.7.5-7 +- Demote deltarpm to weak dependencies + +* Wed Feb 07 2018 Fedora Release Engineering - 2.7.5-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Wed Jan 03 2018 Igor Gnatenko - 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 - 2.7.5-4 +- Fix problem with demands.cacheonly that caused problems for system-upgrade + +* Tue Nov 07 2017 Igor Gnatenko - 2.7.5-3 +- Remove platform-python subpackage + +* Fri Oct 27 2017 Igor Gnatenko - 2.7.5-2 +- Enable usage of rich deps for NM integration + +* Wed Oct 18 2017 Igor Gnatenko - 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 - 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 - 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 - 2.7.2-1 +- Update to 2.7.2-1 +- Added new option ``--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 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 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 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 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 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 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 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 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 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 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 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 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 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 2.0.0-0.rc2.1 +- See http://dnf.readthedocs.io/en/latest/release_notes.html + +* Thu Sep 29 2016 Michal Luscon 2.0.0-0.rc1.1 +- See http://dnf.readthedocs.io/en/latest/release_notes.html +