Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package dnf-plugins-core for 
openSUSE:Factory checked in at 2021-11-03 17:26:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dnf-plugins-core (Old)
 and      /work/SRC/openSUSE:Factory/.dnf-plugins-core.new.1890 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "dnf-plugins-core"

Wed Nov  3 17:26:35 2021 rev:18 rq:929012 version:4.0.24

Changes:
--------
--- /work/SRC/openSUSE:Factory/dnf-plugins-core/dnf-plugins-core.changes        
2021-08-27 21:44:56.454042918 +0200
+++ 
/work/SRC/openSUSE:Factory/.dnf-plugins-core.new.1890/dnf-plugins-core.changes  
    2021-11-03 17:27:31.385378477 +0100
@@ -1,0 +2,10 @@
+Wed Nov  3 11:50:23 UTC 2021 - Neal Gompa <ngomp...@gmail.com>
+
+- Update to 4.0.24
+  + [copr] Avoid using deprecated function distro.linux_distribution() 
(rh#2011550)
+  + [copr] don't traceback on empty lines in /etc/os-release
+  + [leaves] Show strongly connected components
+  + [needs-restarting] Fix wrong boot time (rh#1960437)
+  + [playground] Disable playground command, since it doesn't work
+
+-------------------------------------------------------------------

Old:
----
  dnf-plugins-core-4.0.22.tar.gz

New:
----
  dnf-plugins-core-4.0.24.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ dnf-plugins-core.spec ++++++
--- /var/tmp/diff_new_pack.tLIqG8/_old  2021-11-03 17:27:31.801378705 +0100
+++ /var/tmp/diff_new_pack.tLIqG8/_new  2021-11-03 17:27:31.805378707 +0100
@@ -2,7 +2,7 @@
 # spec file for package dnf-plugins-core
 #
 # Copyright (c) 2020 SUSE LLC
-# Copyright (c) 2020-2021 Neal Gompa <ngomp...@gmail.com>.
+# Copyright (c) 2021 Neal Gompa <ngomp...@gmail.com>.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -56,7 +56,7 @@
 #global prerel rc1
 
 Name:           dnf-plugins-core
-Version:        4.0.22
+Version:        4.0.24
 Release:        0
 Summary:        Core Plugins for DNF
 License:        GPL-2.0-or-later

++++++ dnf-plugins-core-4.0.22.tar.gz -> dnf-plugins-core-4.0.24.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnf-plugins-core-4.0.22/AUTHORS 
new/dnf-plugins-core-4.0.24/AUTHORS
--- old/dnf-plugins-core-4.0.22/AUTHORS 2021-06-14 15:29:37.000000000 +0200
+++ new/dnf-plugins-core-4.0.24/AUTHORS 2021-10-21 08:38:48.000000000 +0200
@@ -35,3 +35,4 @@
     Tomas Babej <tomasba...@gmail.com>
     Vladan Kudlac <vladankud...@gmail.com>
     Wieland Hoffmann <themi...@gmail.com>
+    Otto Urpelainen <otu...@iki.fi>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnf-plugins-core-4.0.22/dnf-plugins-core.spec 
new/dnf-plugins-core-4.0.24/dnf-plugins-core.spec
--- old/dnf-plugins-core-4.0.22/dnf-plugins-core.spec   2021-06-14 
15:29:37.000000000 +0200
+++ new/dnf-plugins-core-4.0.24/dnf-plugins-core.spec   2021-10-21 
08:38:48.000000000 +0200
@@ -33,7 +33,7 @@
 %endif
 
 Name:           dnf-plugins-core
-Version:        4.0.22
+Version:        4.0.24
 Release:        1%{?dist}
 Summary:        Core Plugins for DNF
 License:        GPLv2+
@@ -763,6 +763,16 @@
 %endif
 
 %changelog
+* Thu Oct 21 2021 Pavla Kratochvilova <pkrat...@redhat.com> - 4.0.24-1
+- [copr] on CentOS Stream, enable centos stream chroot instead of not epel 8 
(RhBug:1994154)
+- [copr] Avoid using deprecated function distro.linux_distribution() 
(RhBug:2011550)
+- [copr] don't traceback on empty lines in /etc/os-release
+
+* Thu Sep 16 2021 Pavla Kratochvilova <pkrat...@redhat.com> - 4.0.23-1
+- [leaves] Show strongly connected components
+- [needs-restarting] Fix wrong boot time (RhBug:1960437)
+- [playground] Disable playground command, since it doesn't work
+
 * Mon Jun 14 2021 Pavla Kratochvilova <pkrat...@redhat.com> - 4.0.22-1
 - [repomanage] Allow running only with metadata
 - [repomanage] Enhance documentation (RhBug:1898293)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnf-plugins-core-4.0.22/doc/release_notes.rst 
new/dnf-plugins-core-4.0.24/doc/release_notes.rst
--- old/dnf-plugins-core-4.0.22/doc/release_notes.rst   2021-06-14 
15:29:37.000000000 +0200
+++ new/dnf-plugins-core-4.0.24/doc/release_notes.rst   2021-10-21 
08:38:48.000000000 +0200
@@ -22,6 +22,35 @@
 .. contents::
 
 ====================
+4.0.24 Release Notes
+====================
+
+- Bug fixes:
+  - [copr] on CentOS Stream, enable centos stream chroot instead of not epel 8 
(RhBug:1994154)
+  - [copr] Avoid using deprecated function distro.linux_distribution() 
(RhBug:2011550)
+  - [copr] don't traceback on empty lines in /etc/os-release
+
+Bugs fixed in 4.0.24:
+
+* :rhbug:`1994154`
+* :rhbug:`2011550`
+
+====================
+4.0.23 Release Notes
+====================
+
+- New features:
+  - [leaves] Show strongly connected components
+
+- Bug fixes:
+  - [needs-restarting] Fix wrong boot time (RhBug:1960437)
+  - [playground] Disable playground command, since it doesn't work
+
+Bugs fixed in 4.0.23:
+
+* :rhbug:`1960437`
+
+====================
 4.0.22 Release Notes
 ====================
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnf-plugins-core-4.0.22/doc/summaries_cache 
new/dnf-plugins-core-4.0.24/doc/summaries_cache
--- old/dnf-plugins-core-4.0.22/doc/summaries_cache     2021-06-14 
15:29:37.000000000 +0200
+++ new/dnf-plugins-core-4.0.24/doc/summaries_cache     2021-10-21 
08:38:48.000000000 +0200
@@ -626,5 +626,17 @@
     [
         1898293,
         "repomanage --old does not list the oldest package per module"
+    ],
+    [
+        1960437,
+        "needs-restarting calculating wrong boot time"
+    ],
+    [
+        1994154,
+        "wrong baseurl / dnf copr enable / centos stream"
+    ],
+    [
+        2011550,
+        "dnf-plugins-core uses distro.linux_distribution(), deprecated in 
distro 1.6.0"
     ]
 ]
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnf-plugins-core-4.0.22/plugins/copr.py 
new/dnf-plugins-core-4.0.24/plugins/copr.py
--- old/dnf-plugins-core-4.0.22/plugins/copr.py 2021-06-14 15:29:37.000000000 
+0200
+++ new/dnf-plugins-core-4.0.24/plugins/copr.py 2021-10-21 08:38:48.000000000 
+0200
@@ -38,7 +38,11 @@
 # If that fails, attempt to import the deprecated implementation
 # from the platform module.
 try:
-    from distro import linux_distribution, os_release_attr
+    from distro import name, version, codename, os_release_attr
+
+    # Re-implement distro.linux_distribution() to avoid a deprecation warning
+    def linux_distribution():
+        return (name(), version(), codename())
 except ImportError:
     def os_release_attr(_):
         return ""
@@ -50,8 +54,13 @@
             with open('/etc/os-release') as os_release_file:
                 os_release_data = {}
                 for line in os_release_file:
-                    os_release_key, os_release_value = line.rstrip().split('=')
-                    os_release_data[os_release_key] = 
os_release_value.strip('"')
+                    try:
+                        os_release_key, os_release_value = 
line.rstrip().split('=')
+                        os_release_data[os_release_key] = 
os_release_value.strip('"')
+                    except ValueError:
+                        # Skip empty lines and everything that is not a simple
+                        # variable assignment
+                        pass
                 return (os_release_data['NAME'], 
os_release_data['VERSION_ID'], None)
 
 PLUGIN_CONF = 'copr'
@@ -117,6 +126,8 @@
         parser.add_argument('arg', nargs='*')
 
     def configure(self):
+        if self.cli.command.opts.command != "copr":
+            return
         copr_hub = None
         copr_plugin_config = ConfigParser()
         config_files = []
@@ -350,9 +361,10 @@
                     "Re-enable the project to fix this."))
 
     def _list_user_projects(self, user_name):
-        # http://copr.fedorainfracloud.org/api/coprs/ignatenkobrain/
-        api_path = "/api/coprs/{}/".format(user_name)
-        res = self.base.urlopen(self.copr_url + api_path, mode='w+')
+        # 
https://copr.fedorainfracloud.org/api_3/project/list?ownername=ignatenkobrain
+        api_path = "/api_3/project/list?ownername={0}".format(user_name)
+        url = self.copr_url + api_path
+        res = self.base.urlopen(url, mode='w+')
         try:
             json_parse = json.loads(res.read())
         except ValueError:
@@ -362,21 +374,18 @@
         self._check_json_output(json_parse)
         section_text = _("List of {} coprs").format(user_name)
         self._print_match_section(section_text)
-        i = 0
-        while i < len(json_parse["repos"]):
-            msg = "{0}/{1} : ".format(user_name,
-                                      json_parse["repos"][i]["name"])
-            desc = json_parse["repos"][i]["description"]
-            if not desc:
-                desc = _("No description given")
+
+        for item in json_parse["items"]:
+            msg = "{0}/{1} : ".format(user_name, item["name"])
+            desc = item["description"] or _("No description given")
             msg = self.base.output.fmtKeyValFill(ucd(msg), desc)
             print(msg)
-            i += 1
 
     def _search(self, query):
-        # http://copr.fedorainfracloud.org/api/coprs/search/tests/
-        api_path = "/api/coprs/search/{}/".format(query)
-        res = self.base.urlopen(self.copr_url + api_path, mode='w+')
+        # https://copr.fedorainfracloud.org/api_3/project/search?query=tests
+        api_path = "/api_3/project/search?query={}".format(query)
+        url = self.copr_url + api_path
+        res = self.base.urlopen(url, mode='w+')
         try:
             json_parse = json.loads(res.read())
         except ValueError:
@@ -385,16 +394,12 @@
         self._check_json_output(json_parse)
         section_text = _("Matched: {}").format(query)
         self._print_match_section(section_text)
-        i = 0
-        while i < len(json_parse["repos"]):
-            msg = "{0}/{1} : ".format(json_parse["repos"][i]["username"],
-                                      json_parse["repos"][i]["coprname"])
-            desc = json_parse["repos"][i]["description"]
-            if not desc:
-                desc = _("No description given.")
+
+        for item in json_parse["items"]:
+            msg = "{0} : ".format(item["full_name"])
+            desc = item["description"] or _("No description given.")
             msg = self.base.output.fmtKeyValFill(ucd(msg), desc)
             print(msg)
-            i += 1
 
     def _print_match_section(self, text):
         formatted = self.base.output.fmtSection(text)
@@ -431,7 +436,7 @@
             dist = linux_distribution()
         # Get distribution architecture
         distarch = self.base.conf.substitutions['basearch']
-        if "Fedora" in dist:
+        if any([name in dist for name in ["Fedora", "Fedora Linux"]]):
             if "Rawhide" in dist:
                 chroot = ("fedora-rawhide-" + distarch)
             # workaround for enabling repos in Rawhide when VERSION in 
os-release
@@ -456,6 +461,8 @@
                 chroot = ("opensuse-tumbleweed-{}".format(distarch))
             else:
                 chroot = ("opensuse-leap-{0}-{1}".format(dist[1], distarch))
+        elif "CentOS Stream" in dist:
+            chroot = ("centos-stream-{0}-{1}".format(dist[1], distarch))
         else:
             chroot = ("epel-%s-x86_64" % dist[1].split(".", 1)[0])
         return chroot
@@ -619,7 +626,7 @@
 
     @classmethod
     def _check_json_output(cls, json_obj):
-        if json_obj["output"] != "ok":
+        if "error" in json_obj:
             raise dnf.exceptions.Error("{}".format(json_obj["error"]))
 
     @classmethod
@@ -681,6 +688,7 @@
                             choices=['enable', 'disable', 'upgrade'])
 
     def run(self):
+        raise dnf.exceptions.Error("Playground is temporarily unsupported")
         subcommand = self.opts.subcommand[0]
         chroot = self._guess_chroot()
         if subcommand == "enable":
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnf-plugins-core-4.0.22/plugins/leaves.py 
new/dnf-plugins-core-4.0.24/plugins/leaves.py
--- old/dnf-plugins-core-4.0.22/plugins/leaves.py       2021-06-14 
15:29:37.000000000 +0200
+++ new/dnf-plugins-core-4.0.24/plugins/leaves.py       2021-10-21 
08:38:48.000000000 +0200
@@ -72,8 +72,7 @@
     def kosaraju(self, graph, rgraph):
         """
         Run Kosaraju's algorithm to find strongly connected components
-        in the graph, and return the list of nodes in the components
-        without any incoming edges.
+        in the graph, and return the components without any incoming edges.
         """
         N = len(graph)
         rstack = []
@@ -140,7 +139,7 @@
 
             sccredges.difference_update(scc)
             if not sccredges:
-                leaves.extend(scc)
+                leaves.append(scc.copy())
             del scc[:]
             sccredges.clear()
 
@@ -148,8 +147,18 @@
 
     def findleaves(self):
         (packages, depends, rdepends) = self.buildgraph()
-        return [packages[i] for i in self.kosaraju(depends, rdepends)]
+        return [packages[i] for scc in self.kosaraju(depends, rdepends) for i 
in scc]
 
     def run(self):
-        for pkg in sorted(map(str, self.findleaves())):
-            print(pkg)
+        (packages, depends, rdepends) = self.buildgraph()
+        leaves = self.kosaraju(depends, rdepends)
+        for scc in leaves:
+            for i, pkg in enumerate(scc):
+                scc[i] = str(packages[pkg])
+            scc.sort()
+        leaves.sort(key=lambda scc: scc[0])
+        for scc in leaves:
+            mark = '-'
+            for pkg in scc:
+                print("{} {}".format(mark, pkg))
+                mark = ' '
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnf-plugins-core-4.0.22/plugins/needs_restarting.py 
new/dnf-plugins-core-4.0.24/plugins/needs_restarting.py
--- old/dnf-plugins-core-4.0.22/plugins/needs_restarting.py     2021-06-14 
15:29:37.000000000 +0200
+++ new/dnf-plugins-core-4.0.24/plugins/needs_restarting.py     2021-10-21 
08:38:48.000000000 +0200
@@ -199,7 +199,7 @@
 
     @staticmethod
     def get_boot_time():
-        return int(os.stat('/proc/1/cmdline').st_mtime)
+        return int(os.stat('/proc/1').st_mtime)
 
     @staticmethod
     def get_sc_clk_tck():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/dnf-plugins-core-4.0.22/po/CMakeLists.txt 
new/dnf-plugins-core-4.0.24/po/CMakeLists.txt
--- old/dnf-plugins-core-4.0.22/po/CMakeLists.txt       2021-06-14 
15:29:37.000000000 +0200
+++ new/dnf-plugins-core-4.0.24/po/CMakeLists.txt       2021-10-21 
08:38:48.000000000 +0200
@@ -38,6 +38,15 @@
         )
 endif()
 
+add_custom_target(gettext-pot
+    COMMENT "Generating fresh dnf.pot file from sources"
+
+    COMMAND find ./plugins -iname '*.py' |
+        xargs xgettext -F --from-code=UTF-8 --keyword=P_:1,2 --keyword=C_:1c,2 
-c --output=${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_NAME}.pot
+
+    WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+    )
+
 
 IF (GETTEXT_FOUND)
     # this process unfortunately reformats .po files so copy them

Reply via email to