Hello community, here is the log from the commit of package dnf-plugins-core for openSUSE:Factory checked in at 2020-02-27 16:57:45 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dnf-plugins-core (Old) and /work/SRC/openSUSE:Factory/.dnf-plugins-core.new.26092 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dnf-plugins-core" Thu Feb 27 16:57:45 2020 rev:12 rq:779945 version:4.0.14 Changes: -------- --- /work/SRC/openSUSE:Factory/dnf-plugins-core/dnf-plugins-core.changes 2020-01-19 20:58:35.864086815 +0100 +++ /work/SRC/openSUSE:Factory/.dnf-plugins-core.new.26092/dnf-plugins-core.changes 2020-02-27 16:57:46.858851981 +0100 @@ -1,0 +2,9 @@ +Thu Feb 27 14:17:50 UTC 2020 - Neal Gompa <ngomp...@gmail.com> + +- Update to version 4.0.14 + + Fix conflict for dnf download --resolve (rh#1787908) + + config-manager calls parser error when without options (rh#1782822) + + Update reposync.py with --norepopath option + + Fix: don't open stdin if versionlock is missing (rh#1785563) + +------------------------------------------------------------------- Old: ---- dnf-plugins-core-4.0.13.tar.gz New: ---- dnf-plugins-core-4.0.14.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dnf-plugins-core.spec ++++++ --- /var/tmp/diff_new_pack.NAWT7T/_old 2020-02-27 16:57:48.778855190 +0100 +++ /var/tmp/diff_new_pack.NAWT7T/_new 2020-02-27 16:57:48.778855190 +0100 @@ -57,7 +57,7 @@ #global prerel rc1 Name: dnf-plugins-core -Version: 4.0.13 +Version: 4.0.14 Release: 0 Summary: Core Plugins for DNF License: GPL-2.0+ ++++++ dnf-plugins-core-4.0.13.tar.gz -> dnf-plugins-core-4.0.14.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dnf-plugins-core-4.0.13/dnf-plugins-core.spec new/dnf-plugins-core-4.0.14/dnf-plugins-core.spec --- old/dnf-plugins-core-4.0.13/dnf-plugins-core.spec 2020-01-15 10:53:42.000000000 +0100 +++ new/dnf-plugins-core-4.0.14/dnf-plugins-core.spec 2020-02-24 15:33:41.000000000 +0100 @@ -31,7 +31,7 @@ %endif Name: dnf-plugins-core -Version: 4.0.13 +Version: 4.0.14 Release: 1%{?dist} Summary: Core Plugins for DNF License: GPLv2+ @@ -740,6 +740,12 @@ %endif %changelog +* Mon Feb 24 2020 Aleš Matěj <ama...@redhat.com> - 4.0.14-1 +- Fix conflict for dnf download --resolve (RhBug:1787908) +- config-manager calls parser error when without options (RhBug:1782822) +- Update reposync.py with --norepopath option +- Fix: don't open stdin if versionlock is missing (RhBug:1785563) + * Wed Jan 15 2020 Aleš Matěj <ama...@redhat.com> - 4.0.13-1 - Fix: config_manager respect config file location during save - Redesign reposync --latest for modular system (RhBug:1775434) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dnf-plugins-core-4.0.13/doc/release_notes.rst new/dnf-plugins-core-4.0.14/doc/release_notes.rst --- old/dnf-plugins-core-4.0.13/doc/release_notes.rst 2020-01-15 10:53:42.000000000 +0100 +++ new/dnf-plugins-core-4.0.14/doc/release_notes.rst 2020-02-24 15:33:41.000000000 +0100 @@ -22,6 +22,21 @@ .. contents:: ==================== +4.0.14 Release Notes +==================== + +- Fix conflict for dnf download --resolve (RhBug:1787908) +- config-manager calls parser error when without options (RhBug:1782822) +- Update reposync.py with --norepopath option +- Fix: don't open stdin if versionlock is missing (RhBug:1785563) + +Bugs fixed in 4.0.14: + +* :rhbug:`1787908` +* :rhbug:`1782822` +* :rhbug:`1785563` + +==================== 4.0.13 Release Notes ==================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dnf-plugins-core-4.0.13/doc/reposync.rst new/dnf-plugins-core-4.0.14/doc/reposync.rst --- old/dnf-plugins-core-4.0.13/doc/reposync.rst 2020-01-15 10:53:42.000000000 +0100 +++ new/dnf-plugins-core-4.0.14/doc/reposync.rst 2020-02-24 15:33:41.000000000 +0100 @@ -41,6 +41,9 @@ ``-p <download-path>, --download-path=<download-path>`` Root path under which the downloaded repositories are stored, relative to the current working directory. Defaults to the current working directory. Every downloaded repository has a subdirectory named after its ID under this path. + +``--norepopath`` + Don't add the reponame to the download path. Can only be used when syncing a single repository (default is to add the reponame). ``--download-metadata`` Download all repository metadata. Downloaded copy is instantly usable as a repository, no need to run createrepo_c on it. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dnf-plugins-core-4.0.13/doc/summaries_cache new/dnf-plugins-core-4.0.14/doc/summaries_cache --- old/dnf-plugins-core-4.0.13/doc/summaries_cache 2020-01-15 10:53:42.000000000 +0100 +++ new/dnf-plugins-core-4.0.14/doc/summaries_cache 2020-02-24 15:33:41.000000000 +0100 @@ -538,5 +538,17 @@ [ 1774103, "The '--delete' option when used with reposync command deletes the packages immediately after download." + ], + [ + 1787908, + "dnf treats identical package in two repositories (testing/stable) as conflicting request" + ], + [ + 1782822, + "dnf config-manager prints nothing and exits with 0" + ], + [ + 1785563, + "When using versionlock with -q option ALL outputs are dismissed" ] ] \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dnf-plugins-core-4.0.13/plugins/config_manager.py new/dnf-plugins-core-4.0.14/plugins/config_manager.py --- old/dnf-plugins-core-4.0.13/plugins/config_manager.py 2020-01-15 10:53:42.000000000 +0100 +++ new/dnf-plugins-core-4.0.14/plugins/config_manager.py 2020-02-24 15:33:41.000000000 +0100 @@ -60,6 +60,19 @@ demands = self.cli.demands demands.available_repos = True + # if no argument was passed then error + if (not (self.opts.add_repo != [] or + self.opts.save or + self.opts.dump or + self.opts.dump_variables or + self.opts.set_disabled or + self.opts.set_enabled) ): + self.cli.optparser.error(_("one of the following arguments is required: {}") + .format(' '.join([ + "--save", "--add-repo", + "--dump", "--dump-variables", + "--enable", "--disable"]))) + if (self.opts.save or self.opts.set_enabled or self.opts.set_disabled or self.opts.add_repo): demands.root_user = True diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dnf-plugins-core-4.0.13/plugins/copr.py new/dnf-plugins-core-4.0.14/plugins/copr.py --- old/dnf-plugins-core-4.0.13/plugins/copr.py 2020-01-15 10:53:42.000000000 +0100 +++ new/dnf-plugins-core-4.0.14/plugins/copr.py 2020-02-24 15:33:41.000000000 +0100 @@ -217,7 +217,7 @@ try: chroot = self.opts.arg[1] except IndexError: - chroot = self._guess_chroot(self.chroot_config) + chroot = self._guess_chroot() # commands without defined copr_username/copr_projectname if subcommand == "search": @@ -393,24 +393,23 @@ raise dnf.exceptions.Error( _('This command has to be run under the root user.')) - @staticmethod - def _guess_chroot(chroot_config): + def _guess_chroot(self): """ Guess which chroot is equivalent to this machine """ # FIXME Copr should generate non-specific arch repo - dist = chroot_config + dist = self.chroot_config if dist is None or (dist[0] is False) or (dist[1] is False): dist = linux_distribution() + # Get distribution architecture + distarch = self.base.conf.substitutions['basearch'] if "Fedora" in dist: - # x86_64 because repo-file is same for all arch - # ($basearch is used) if "Rawhide" in dist: - chroot = ("fedora-rawhide-x86_64") + chroot = ("fedora-rawhide-" + distarch) # workaround for enabling repos in Rawhide when VERSION in os-release # contains a name other than Rawhide elif "rawhide" in os_release_attr("redhat_support_product_version"): - chroot = ("fedora-rawhide-x86_64") + chroot = ("fedora-rawhide-" + distarch) else: - chroot = ("fedora-{}-x86_64".format(dist[1])) + chroot = ("fedora-{0}-{1}".format(dist[1], distarch)) elif "Mageia" in dist: # Get distribution architecture (Mageia does not use $basearch) distarch = rpm.expandMacro("%{distro_arch}") @@ -433,7 +432,7 @@ def _download_repo(self, project_name, repo_filename, chroot=None): if chroot is None: - chroot = self._guess_chroot(self.chroot_config) + chroot = self._guess_chroot() short_chroot = '-'.join(chroot.split('-')[:2]) arch = chroot.split('-')[2] api_path = "/coprs/{0}/repo/{1}/dnf.repo?arch={2}".format(project_name, short_chroot, arch) @@ -610,7 +609,7 @@ def run(self): subcommand = self.opts.subcommand[0] - chroot = self._guess_chroot(self.chroot_config) + chroot = self._guess_chroot() if subcommand == "enable": self._cmd_enable(chroot) logger.info(_("Playground repositories successfully enabled.")) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dnf-plugins-core-4.0.13/plugins/download.py new/dnf-plugins-core-4.0.14/plugins/download.py --- old/dnf-plugins-core-4.0.13/plugins/download.py 2020-01-15 10:53:42.000000000 +0100 +++ new/dnf-plugins-core-4.0.14/plugins/download.py 2020-02-24 15:33:41.000000000 +0100 @@ -249,21 +249,20 @@ def _get_packages_with_deps(self, pkg_specs, source=False): """Get packages matching pkg_specs and the deps.""" pkgs = self._get_packages(pkg_specs) - goal = hawkey.Goal(self.base.sack) + pkg_set = set(pkgs) for pkg in pkgs: + goal = hawkey.Goal(self.base.sack) goal.install(pkg) - rc = goal.run() - if rc: - new_pkgs = goal.list_installs() + goal.list_upgrades() - for pkg in pkgs: - if pkg not in new_pkgs: - new_pkgs += [pkg] - return new_pkgs - else: - msg = [_('Error in resolve of packages:')] - logger.warning("\n ".join(msg + [str(pkg) for pkg in pkgs])) - logger.warning(dnf.util._format_resolve_problems(goal.problem_rules())) - return [] + rc = goal.run() + if rc: + pkg_set.update(goal.list_installs()) + pkg_set.update(goal.list_upgrades()) + else: + msg = [_('Error in resolve of packages:')] + logger.warning("\n ".join(msg + [str(pkg) for pkg in pkgs])) + logger.warning(dnf.util._format_resolve_problems(goal.problem_rules())) + return [] + return pkg_set @staticmethod def _get_source_packages(pkgs): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dnf-plugins-core-4.0.13/plugins/reposync.py new/dnf-plugins-core-4.0.14/plugins/reposync.py --- old/dnf-plugins-core-4.0.13/plugins/reposync.py 2020-01-15 10:53:42.000000000 +0100 +++ new/dnf-plugins-core-4.0.14/plugins/reposync.py 2020-02-24 15:33:41.000000000 +0100 @@ -71,6 +71,8 @@ help=_('download only newest packages per-repo')) parser.add_argument('-p', '--download-path', default='./', help=_('where to store downloaded repositories')) + parser.add_argument('--norepopath', default=False, action='store_true', + help=_("Don't add the reponame to the download path.")) parser.add_argument('--metadata-path', help=_('where to store downloaded repository metadata. ' 'Defaults to the value of --download-path.')) @@ -102,6 +104,10 @@ if self.opts.source: repos.enable_source_repos() + if len(list(repos.iter_enabled())) > 1 and self.opts.norepopath: + raise dnf.cli.CliError( + _("Can't use --norepopath with multiple repositories")) + for repo in repos.iter_enabled(): repo._repo.expire() repo.deltarpm = False @@ -148,7 +154,8 @@ self.delete_old_local_packages(repo, pkglist) def repo_target(self, repo): - return _pkgdir(self.opts.destdir or self.opts.download_path, repo.id) + return _pkgdir(self.opts.destdir or self.opts.download_path, + repo.id if not self.opts.norepopath else '') def metadata_target(self, repo): if self.opts.metadata_path: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dnf-plugins-core-4.0.13/plugins/versionlock.py new/dnf-plugins-core-4.0.14/plugins/versionlock.py --- old/dnf-plugins-core-4.0.13/plugins/versionlock.py 2020-01-15 10:53:42.000000000 +0100 +++ new/dnf-plugins-core-4.0.14/plugins/versionlock.py 2020-02-24 15:33:41.000000000 +0100 @@ -77,9 +77,6 @@ logger.debug(NO_VERSIONLOCK) return - if not locklist_fn: - raise dnf.exceptions.Error(NO_LOCKLIST) - excludes_query = self.base.sack.query().filter(empty=True) locked_query = self.base.sack.query().filter(empty=True) locked_names = set() @@ -179,12 +176,16 @@ logger.info("%s %s", EXISTING_SPEC, entry) elif cmd == 'list': for pat in _read_locklist(): - logger.info(pat) + print(pat) elif cmd == 'clear': + if not locklist_fn: + raise dnf.exceptions.Error(NO_LOCKLIST) with open(locklist_fn, 'w') as f: # open in write mode truncates file pass elif cmd == 'delete': + if not locklist_fn: + raise dnf.exceptions.Error(NO_LOCKLIST) dirname = os.path.dirname(locklist_fn) (out, tmpfilename) = tempfile.mkstemp(dir=dirname, suffix='.tmp') locked_specs = _read_locklist() @@ -192,7 +193,7 @@ with os.fdopen(out, 'w', -1) as out: for ent in locked_specs: if _match(ent, self.opts.package): - logger.info("%s %s", DELETING_SPEC, ent) + print("%s %s" % (DELETING_SPEC, ent)) count += 1 continue out.write(ent) @@ -207,6 +208,8 @@ def _read_locklist(): locklist = [] try: + if not locklist_fn: + raise dnf.exceptions.Error(NO_LOCKLIST) with open(locklist_fn) as llfile: for line in llfile.readlines(): if line.startswith('#') or line.strip() == '': @@ -243,18 +246,22 @@ pkgs = subj.get_best_query(base.sack, with_nevra=True, with_provides=False, with_filenames=False) if not pkgs: - logger.info("%s %s", NOTFOUND_SPEC, pat) + print("%s %s" % (NOTFOUND_SPEC, pat)) for pkg in pkgs: specs.add(pkgtup2spec(*pkg.pkgtup)) if specs: - with open(locklist_fn, 'a') as f: - f.write(comment) - for spec in specs: - logger.info("%s %s", info, spec) - f.write("%s%s\n" % (prefix, spec)) - + try: + if not locklist_fn: + raise dnf.exceptions.Error(NO_LOCKLIST) + with open(locklist_fn, 'a') as f: + f.write(comment) + for spec in specs: + print("%s %s" % (info, spec)) + f.write("%s%s\n" % (prefix, spec)) + except IOError as e: + raise dnf.exceptions.Error(NOT_READABLE % e) def _match(ent, patterns): ent = ent.lstrip('!') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/dnf-plugins-core-4.0.13/rel-eng/packages/dnf-plugins-core new/dnf-plugins-core-4.0.14/rel-eng/packages/dnf-plugins-core --- old/dnf-plugins-core-4.0.13/rel-eng/packages/dnf-plugins-core 2020-01-15 10:53:42.000000000 +0100 +++ new/dnf-plugins-core-4.0.14/rel-eng/packages/dnf-plugins-core 2020-02-24 15:33:41.000000000 +0100 @@ -1 +1 @@ -4.0.13-1 ./ +4.0.14-1 ./