Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package pssh for openSUSE:Factory checked in 
at 2026-10-23 20:29:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pssh (Old)
 and      /work/SRC/openSUSE:Factory/.pssh.new.2252680 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "pssh"

Fri Oct 23 20:29:57 2026 rev:6 rq:1392036 version:2.3.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/pssh/pssh.changes        2025-12-16 
16:03:53.638169991 +0100
+++ /work/SRC/openSUSE:Factory/.pssh.new.2252680/pssh.changes   2026-10-23 
20:31:38.538989836 +0200
@@ -1,0 +2,22 @@
+Sun Oct 11 14:05:58 UTC 2026 - Andrea Manzini <[email protected]>
+
+- Update to 2.3.6 (was git snapshot 2.3.4+git10.d4909c9):
+  * Add pscp --download to fetch files from the hosts in parallel
+  * Add pssh --no-headers and prsync --inline
+  * Print error output on stderr when using the print option (-P)
+  * Fix IPv6 host addresses, port handling and hostname case
+- Use the upstream v2.3.6 release tag tarball instead of a tar_scm
+  snapshot:
+  * Add pssh-2.3.6.tar.gz
+  * Remove pssh-2.3.4+git10.d4909c9.tar.xz, _service, _servicedata
+- Install the man pages in %install: upstream's setup.cfg no
+  longer installs them
+- Add %check smoke test (--version of each command); upstream's
+  test/test.py needs live ssh hosts
+- Rebase patches for the new sources:
+  * 0002-Add-quiet-option.patch
+  * 0003-Fix-order-of-command-statuses-returned-by-the-Manage.patch
+  * 0008-openSUSE-add-C-pcmk_nodes-option-to-get-list-of-node.patch
+- Spec cleanup: drop Group tags and the pkg_version define
+
+-------------------------------------------------------------------

Old:
----
  _service
  _servicedata
  pssh-2.3.4+git10.d4909c9.tar.xz

New:
----
  pssh-2.3.6.tar.gz

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

Other differences:
------------------
++++++ pssh.spec ++++++
--- /var/tmp/diff_new_pack.JZg8Vo/_old  2026-10-23 20:31:39.297021625 +0200
+++ /var/tmp/diff_new_pack.JZg8Vo/_new  2026-10-23 20:31:39.300021751 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package pssh
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,20 +16,17 @@
 #
 
 
-%define pkg_version 2.3.4
 %define pythons python3
 %if ! %{defined python3_sitelib}
-%define python3_sitelib /usr/lib/python3.6/site-packages/
+%define python3_sitelib %{_prefix}/lib/python3.6/site-packages/
 %endif
-
 Name:           pssh
-Version:        2.3.4+git10.d4909c9
+Version:        2.3.6
 Release:        0
 Summary:        Parallel SSH to control large numbers of Machines 
simultaneously
 License:        BSD-3-Clause
-Group:          Productivity/Clustering/Computing
 URL:            https://github.com/lilydjwg/pssh
-Source:         pssh-%{version}.tar.xz
+Source:         
https://github.com/lilydjwg/pssh/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
 # PATCH-FIX-OPENSUSE 0001-Remove-shebangs-from-library-files.patch 
[email protected] -- remove
 # shebangs from library files
 Patch1:         0001-Remove-shebangs-from-library-files.patch
@@ -62,7 +59,6 @@
 
 %package -n python-pssh
 Summary:        Python Module for Parallel SSH
-Group:          Development/Libraries/Python
 Requires:       openssh
 Requires:       rsync
 
@@ -81,8 +77,17 @@
 
 %install
 %pyproject_install
+# setup.cfg (2.3.5+) no longer installs the man pages
+install -Dpm 0644 -t %{buildroot}%{_mandir}/man1 man/man1/*.1
 %fdupes %{buildroot}%{python3_sitelib}
 
+%check
+# upstream's test/test.py needs live ssh hosts: smoke-test the CLIs only
+export PYTHONPATH=%{buildroot}%{python3_sitelib}
+for t in pssh pscp prsync pslurp pnuke; do
+  %{buildroot}%{_bindir}/$t --version
+done
+
 %files
 %doc AUTHORS ChangeLog
 %license COPYING
@@ -104,6 +109,6 @@
 %files -n python-pssh
 %license COPYING
 %doc AUTHORS ChangeLog
-%{python3_sitelib}/%{name}-%{pkg_version}.dist-info
+%{python3_sitelib}/%{name}-%{version}.dist-info
 %{python3_sitelib}/%{name}lib
 

++++++ 0002-Add-quiet-option.patch ++++++
--- /var/tmp/diff_new_pack.JZg8Vo/_old  2026-10-23 20:31:39.324022758 +0200
+++ /var/tmp/diff_new_pack.JZg8Vo/_new  2026-10-23 20:31:39.327022884 +0200
@@ -9,8 +9,6 @@
  psshlib/task.py | 16 +++++++++++-----
  3 files changed, 25 insertions(+), 7 deletions(-)
 
-diff --git a/man/man1/pssh.1 b/man/man1/pssh.1
-index e50efc78e84e..122e253793d8 100644
 --- a/man/man1/pssh.1
 +++ b/man/man1/pssh.1
 @@ -7,7 +7,7 @@ pssh \(em parallel ssh program
@@ -22,7 +20,7 @@
  .RB [ \-h
  .IR hosts_file ]
  .RB [ \-H
-@@ -31,7 +31,7 @@ pssh \(em parallel ssh program
+@@ -33,7 +33,7 @@ pssh \(em parallel ssh program
  .I command ...
  
  .B pssh \-I
@@ -31,7 +29,7 @@
  .RB [ \-h
  .IR hosts_file ]
  .RB [ \-H
-@@ -237,6 +237,15 @@ and
+@@ -252,6 +252,15 @@ and
  options.
  
  .TP
@@ -47,11 +45,9 @@
  .B \-I
  .PD 0
  .TP
-diff --git a/psshlib/cli.py b/psshlib/cli.py
-index c342cde47dad..58bd9332ce3d 100644
 --- a/psshlib/cli.py
 +++ b/psshlib/cli.py
-@@ -45,6 +45,8 @@ def common_parser():
+@@ -47,6 +47,8 @@ def common_parser():
              metavar='OPTION', help='SSH option (OPTIONAL)')
      parser.add_option('-v', '--verbose', dest='verbose', action='store_true',
              help='turn on warning and diagnostic messages (OPTIONAL)')
@@ -60,7 +56,7 @@
      parser.add_option('-A', '--askpass', dest='askpass', action='store_true',
              help='Ask for a password (OPTIONAL)')
      parser.add_option('-x', '--extra-args', action='callback', type='string',
-@@ -66,6 +68,7 @@ def common_defaults(**kwargs):
+@@ -70,6 +72,7 @@ def common_defaults(**kwargs):
              ('errdir', 'PSSH_ERRDIR'),
              ('timeout', 'PSSH_TIMEOUT'),
              ('verbose', 'PSSH_VERBOSE'),
@@ -68,11 +64,9 @@
              ('print_out', 'PSSH_PRINT'),
              ('askpass', 'PSSH_ASKPASS'),
              ('inline', 'PSSH_INLINE'),
-diff --git a/psshlib/task.py b/psshlib/task.py
-index f8052563f9e9..0c74db517ae4 100644
 --- a/psshlib/task.py
 +++ b/psshlib/task.py
-@@ -56,6 +56,7 @@ class Task(object):
+@@ -60,6 +60,7 @@ class Task(object):
  
          # Set options.
          self.verbose = opts.verbose
@@ -80,7 +74,7 @@
          try:
              self.print_out = bool(opts.print_out)
          except AttributeError:
-@@ -188,7 +189,10 @@ class Task(object):
+@@ -199,7 +200,10 @@ class Task(object):
              buf = os.read(fd, BUFFER_SIZE)
              if buf:
                  if self.inline or self.inline_stdout:
@@ -92,28 +86,25 @@
                  if self.outfile:
                      self.writer.write(self.outfile, buf)
                  if self.print_out:
-@@ -264,10 +268,11 @@ class Task(object):
-             failure = "[FAILURE]"
-             stderr = "Stderr: "
-         host = self.pretty_host
--        if self.failures:
--            print(' '.join((progress, tstamp, failure, host, error)))
--        else:
--            print(' '.join((progress, tstamp, success, host)))
-+        if not self.quiet:
-+            if self.failures:
-+                print(' '.join((progress, tstamp, failure, host, error)))
-+            else:
-+                print(' '.join((progress, tstamp, success, host)))
+@@ -282,10 +286,11 @@ class Task(object):
+                 failure = "[FAILURE]"
+                 stderr = "Stderr: "
+             host = self.pretty_host
+-            if self.failures:
+-                print(' '.join((progress, tstamp, failure, host, error)))
+-            else:
+-                print(' '.join((progress, tstamp, success, host)))
++            if not self.quiet:
++                if self.failures:
++                    print(' '.join((progress, tstamp, failure, host, error)))
++                else:
++                    print(' '.join((progress, tstamp, success, host)))
+         else:
+             stderr = ''
          # NOTE: The extra flushes are to ensure that the data is output in
-         # the correct order with the C implementation of io.
-         if self.outputbuffer:
-@@ -286,3 +291,4 @@ class Task(object):
+@@ -306,3 +311,4 @@ class Task(object):
              except AttributeError:
                  sys.stdout.write(self.errorbuffer)
  
 +# vim:ts=4:sw=4:et:
--- 
-1.8.4
-
 

++++++ 0003-Fix-order-of-command-statuses-returned-by-the-Manage.patch ++++++
--- /var/tmp/diff_new_pack.JZg8Vo/_old  2026-10-23 20:31:39.340023429 +0200
+++ /var/tmp/diff_new_pack.JZg8Vo/_new  2026-10-23 20:31:39.343023555 +0200
@@ -7,19 +7,17 @@
  psshlib/manager.py | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
-diff --git a/psshlib/manager.py b/psshlib/manager.py
-index 7dbf4e377116..06e1cf31a010 100644
 --- a/psshlib/manager.py
 +++ b/psshlib/manager.py
-@@ -8,6 +8,7 @@
+@@ -8,6 +8,7 @@ import signal
  import sys
  import threading
  import queue
 +import copy
  
  from psshlib.askpass_server import PasswordServer
- from psshlib import psshutil
-@@ -42,6 +43,7 @@
+ 
+@@ -41,6 +42,7 @@ class Manager(object):
          self.next_nodenum = 0
          self.numnodes = 0
          self.tasks = []
@@ -27,7 +25,7 @@
          self.running = []
          self.done = []
  
-@@ -49,6 +51,7 @@
+@@ -48,6 +50,7 @@ class Manager(object):
  
      def run(self):
          """Processes tasks previously added with add_task."""
@@ -35,7 +33,7 @@
          try:
              if self.outdir or self.errdir:
                  writer = Writer(self.outdir, self.errdir, self.fileappend)
-@@ -87,7 +90,7 @@
+@@ -86,7 +89,7 @@ class Manager(object):
              writer.signal_quit()
              writer.join()
  

++++++ 0008-openSUSE-add-C-pcmk_nodes-option-to-get-list-of-node.patch ++++++
--- /var/tmp/diff_new_pack.JZg8Vo/_old  2026-10-23 20:31:39.360024268 +0200
+++ /var/tmp/diff_new_pack.JZg8Vo/_new  2026-10-23 20:31:39.363024393 +0200
@@ -14,8 +14,6 @@
  psshlib/psshutil.py | 30 ++++++++++++++++++++++++++++++
  7 files changed, 49 insertions(+), 5 deletions(-)
 
-diff --git a/bin/pnuke b/bin/pnuke
-index 884ac25a1d35..ec314f3858e8 100755
 --- a/bin/pnuke
 +++ b/bin/pnuke
 @@ -40,7 +40,7 @@ def parse_args():
@@ -34,11 +32,9 @@
 +    if opts.pcmk_nodes:
 +        hosts += psshutil.get_pcmk_nodes()
      do_pnuke(hosts, pattern, opts)
-diff --git a/bin/prsync b/bin/prsync
-index 5e25786a90e8..d7868c87a945 100755
 --- a/bin/prsync
 +++ b/bin/prsync
-@@ -52,7 +52,7 @@ def parse_args():
+@@ -55,7 +55,7 @@ def parse_args():
      if len(args) < 2:
          parser.error('Remote path not specified.')
  
@@ -47,18 +43,16 @@
          parser.error('Hosts not specified.')
  
      return opts, args
-@@ -117,4 +117,6 @@ if __name__ == "__main__":
+@@ -131,4 +131,6 @@ if __name__ == "__main__":
      if opts.host_strings:
          for s in opts.host_strings:
              hosts.extend(psshutil.parse_host_string(s, 
default_user=opts.user))
 +    if opts.pcmk_nodes:
 +        hosts += psshutil.get_pcmk_nodes()
      do_prsync(hosts, local, remote, opts)
-diff --git a/bin/pscp b/bin/pscp
-index d569be7d5404..4408913ce077 100755
 --- a/bin/pscp
 +++ b/bin/pscp
-@@ -47,7 +47,7 @@ def parse_args():
+@@ -52,7 +52,7 @@ def parse_args():
      if len(args) < 2:
          parser.error('Remote path not specified.')
  
@@ -67,18 +61,16 @@
          parser.error('Hosts not specified.')
  
      return opts, args
-@@ -102,4 +102,6 @@ if __name__ == "__main__":
+@@ -122,4 +122,6 @@ if __name__ == "__main__":
      if opts.host_strings:
          for s in opts.host_strings:
              hosts.extend(psshutil.parse_host_string(s, 
default_user=opts.user))
 +    if opts.pcmk_nodes:
 +        hosts += psshutil.get_pcmk_nodes()
      do_pscp(hosts, localargs, remote, opts)
-diff --git a/bin/pslurp b/bin/pslurp
-index c7dece656f1b..0f17b5bc87d9 100755
 --- a/bin/pslurp
 +++ b/bin/pslurp
-@@ -52,7 +52,7 @@ def parse_args():
+@@ -51,7 +51,7 @@ def parse_args():
      if len(args) > 2:
          parser.error('Extra arguments given after the local path.')
  
@@ -87,18 +79,16 @@
          parser.error('Hosts not specified.')
  
      return opts, args
-@@ -126,4 +126,6 @@ if __name__ == "__main__":
+@@ -122,4 +122,6 @@ if __name__ == "__main__":
      if opts.host_strings:
          for s in opts.host_strings:
              hosts.extend(psshutil.parse_host_string(s, 
default_user=opts.user))
 +    if opts.pcmk_nodes:
 +        hosts += psshutil.get_pcmk_nodes()
      do_pslurp(hosts, remote, local, opts)
-diff --git a/bin/pssh b/bin/pssh
-index 5b6c2a5e4661..cf02f40c2fbd 100755
 --- a/bin/pssh
 +++ b/bin/pssh
-@@ -54,7 +54,7 @@ def parse_args():
+@@ -55,7 +55,7 @@ def parse_args():
      if len(args) == 0 and not opts.send_input:
          parser.error('Command not specified.')
  
@@ -107,7 +97,7 @@
          parser.error('Hosts not specified.')
  
      return opts, args
-@@ -112,6 +112,10 @@ if __name__ == "__main__":
+@@ -113,6 +113,10 @@ if __name__ == "__main__":
          _, e, _ = sys.exc_info()
          sys.stderr.write('Could not open hosts file: %s\n' % e.strerror)
          sys.exit(1)
@@ -118,8 +108,6 @@
      if opts.host_strings:
          for s in opts.host_strings:
              hosts.extend(psshutil.parse_host_string(s, 
default_user=opts.user))
-diff --git a/psshlib/cli.py b/psshlib/cli.py
-index 611fadb6eb16..09e2571f3c6c 100644
 --- a/psshlib/cli.py
 +++ b/psshlib/cli.py
 @@ -31,6 +31,8 @@ def common_parser():
@@ -131,11 +119,9 @@
      parser.add_option('-l', '--user', dest='user',
              help='username (OPTIONAL)')
      parser.add_option('-p', '--par', dest='par', type='int',
-diff --git a/psshlib/psshutil.py b/psshlib/psshutil.py
-index 6c67f667637e..274b3b92546c 100644
 --- a/psshlib/psshutil.py
 +++ b/psshlib/psshutil.py
-@@ -5,6 +5,7 @@
+@@ -4,6 +4,7 @@
  import re
  import sys
  import fnmatch
@@ -143,8 +129,8 @@
  
  HOST_FORMAT = 'Host format is [user@]host[:port] [user]'
  
-@@ -98,6 +99,33 @@ def parse_host(host, default_user=None, default_port=None):
-         host, port = host.rsplit(':', 1)
+@@ -99,4 +100,31 @@ def parse_host(host, default_user=None,
+         host = host[1:-1]
      return (host, port, user)
  
 +def get_pcmk_nodes():
@@ -175,15 +161,4 @@
 +        hosts.append((a[1], None, None))
 +    return hosts
  
- def set_cloexec(filelike):
-     """Sets the underlying filedescriptor to automatically close on exec.
-@@ -106,3 +134,5 @@ def set_cloexec(filelike):
-     not require the close_fds option.
-     """
-     fcntl.fcntl(filelike.fileno(), fcntl.FD_CLOEXEC, 1)
-+
-+# vim:ts=4:sw=4:et:
--- 
-1.8.4
-
 

Reply via email to