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 ./


Reply via email to