Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package scons for openSUSE:Factory checked 
in at 2025-04-02 17:05:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/scons (Old)
 and      /work/SRC/openSUSE:Factory/.scons.new.1907 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "scons"

Wed Apr  2 17:05:35 2025 rev:52 rq:1265575 version:4.9.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/scons/scons.changes      2025-03-16 
18:58:52.945211804 +0100
+++ /work/SRC/openSUSE:Factory/.scons.new.1907/scons.changes    2025-04-02 
17:06:17.563567295 +0200
@@ -1,0 +2,7 @@
+Sat Mar 29 22:51:55 UTC 2025 - Andreas Stieger <andreas.stie...@gmx.de>
+
+- SCons 4.9.1:
+  * Fix CacheDir initialization code failed on Python 3.7
+  * developer visible fixes and changes for other platforms
+
+-------------------------------------------------------------------

Old:
----
  SCons-4.9.0.tar.gz

New:
----
  SCons-4.9.1.tar.gz

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

Other differences:
------------------
++++++ scons.spec ++++++
--- /var/tmp/diff_new_pack.08zzvg/_old  2025-04-02 17:06:18.463605001 +0200
+++ /var/tmp/diff_new_pack.08zzvg/_new  2025-04-02 17:06:18.463605001 +0200
@@ -2,7 +2,7 @@
 # spec file for package scons
 #
 # Copyright (c) 2025 SUSE LLC
-# Copyright (c) 2024 Andreas Stieger <andreas.stie...@gmx.de>
+# Copyright (c) 2025 Andreas Stieger <andreas.stie...@gmx.de>
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -20,7 +20,7 @@
 %define pythons python3
 %{?sle15_python_module_pythons}
 Name:           scons
-Version:        4.9.0
+Version:        4.9.1
 Release:        0
 Summary:        Replacement for Make
 License:        MIT

++++++ SCons-4.9.0.tar.gz -> SCons-4.9.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scons-4.9.0/PKG-INFO new/scons-4.9.1/PKG-INFO
--- old/scons-4.9.0/PKG-INFO    2025-03-02 23:34:06.363333000 +0100
+++ new/scons-4.9.1/PKG-INFO    2025-03-28 23:25:07.689819000 +0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.2
+Metadata-Version: 2.4
 Name: SCons
-Version: 4.9.0
+Version: 4.9.1
 Summary: Open Source next-generation build tool.
 Author-email: William Deegan <b...@baddogconsulting.com>
 License: MIT
@@ -33,6 +33,7 @@
 Requires-Python: >=3.7
 Description-Content-Type: text/x-rst
 License-File: LICENSE
+Dynamic: license-file
 
 SCons - a Software Construction Tool
 ####################################
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scons-4.9.0/SCons/CacheDir.py 
new/scons-4.9.1/SCons/CacheDir.py
--- old/scons-4.9.0/SCons/CacheDir.py   2024-12-22 00:20:04.000000000 +0100
+++ new/scons-4.9.1/SCons/CacheDir.py   2025-03-27 19:31:55.000000000 +0100
@@ -27,6 +27,7 @@
 import atexit
 import json
 import os
+import shutil
 import stat
 import sys
 import tempfile
@@ -76,7 +77,6 @@
 
 def CacheRetrieveString(target, source, env) -> str:
     t = target[0]
-    fs = t.fs
     cd = env.get_CacheDir()
     cachedir, cachefile = cd.cachepath(t)
     if t.fs.exists(cachefile):
@@ -210,21 +210,44 @@
             return False
 
         try:
-            tempdir = 
tempfile.TemporaryDirectory(dir=os.path.dirname(directory))
+            # TODO: Python 3.7. See comment below.
+            # tempdir = 
tempfile.TemporaryDirectory(dir=os.path.dirname(directory))
+            tempdir = tempfile.mkdtemp(dir=os.path.dirname(directory))
         except OSError as e:
             msg = "Failed to create cache directory " + path
             raise SCons.Errors.SConsEnvironmentError(msg) from e
-        self._add_config(tempdir.name)
-        with tempdir:
-            try:
-                os.rename(tempdir.name, directory)
-                return True
-            except Exception as e:
-                # did someone else get there first?
-                if os.path.isdir(directory):
-                    return False
-                msg = "Failed to create cache directory " + path
-                raise SCons.Errors.SConsEnvironmentError(msg) from e
+
+        # TODO: Python 3.7: the context manager raises exception on cleanup
+        #    if the temporary was moved successfully (File Not Found).
+        #    Fixed in 3.8+. In the replacement below we manually clean up if
+        #    the move failed as mkdtemp() does not. TemporaryDirectory's
+        #    cleanup is more sophisitcated so prefer when we can use it.
+        # self._add_config(tempdir.name)
+        # with tempdir:
+        #     try:
+        #         os.replace(tempdir.name, directory)
+        #         return True
+        #     except OSError as e:
+        #         # did someone else get there first?
+        #         if os.path.isdir(directory):
+        #             return False  # context manager cleans up
+        #         msg = "Failed to create cache directory " + path
+        #         raise SCons.Errors.SConsEnvironmentError(msg) from e
+
+        self._add_config(tempdir)
+        try:
+            os.replace(tempdir, directory)
+            return True
+        except OSError as e:
+            # did someone else get there first? attempt cleanup.
+            if os.path.isdir(directory):
+                try:
+                    shutil.rmtree(tempdir)
+                except Exception:  # we tried, don't worry about it
+                    pass
+                return False
+            msg = "Failed to create cache directory " + path
+            raise SCons.Errors.SConsEnvironmentError(msg) from e
 
     def _readconfig(self, path: str) -> None:
         """Read the cache config from *path*.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scons-4.9.0/SCons/Tool/docbook/__init__.py 
new/scons-4.9.1/SCons/Tool/docbook/__init__.py
--- old/scons-4.9.0/SCons/Tool/docbook/__init__.py      2024-09-22 
03:25:14.000000000 +0200
+++ new/scons-4.9.1/SCons/Tool/docbook/__init__.py      2025-03-27 
19:31:55.000000000 +0100
@@ -157,16 +157,22 @@
 # TODO: Set minimum version of saxon-xslt to be 8.x (lower than this only 
supports xslt 1.0.
 #       see: https://saxon.sourceforge.net/saxon6.5.5/
 #       see: https://saxon.sourceforge.net/
-xsltproc_com = {'xsltproc' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o 
$TARGET $DOCBOOK_XSL $SOURCE',
-                'saxon' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET 
$DOCBOOK_XSL $SOURCE $DOCBOOK_XSLTPROCPARAMS',
-                # Note if saxon-xslt is version 5.5 the proper arguments are: 
(swap order of docbook_xsl and source)
-                #  'saxon-xslt' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o 
$TARGET $SOURCE $DOCBOOK_XSL  $DOCBOOK_XSLTPROCPARAMS',
-                'saxon-xslt' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o 
$TARGET $DOCBOOK_XSL $SOURCE $DOCBOOK_XSLTPROCPARAMS',
-                'xalan' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -q -out 
$TARGET -xsl $DOCBOOK_XSL -in $SOURCE'}
-xmllint_com = {'xmllint' : '$DOCBOOK_XMLLINT $DOCBOOK_XMLLINTFLAGS --xinclude 
$SOURCE > $TARGET'}
-fop_com = {'fop' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -fo $SOURCE -pdf $TARGET',
-           'xep' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -valid -fo $SOURCE -pdf 
$TARGET',
-           'jw' : '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -f docbook -b pdf $SOURCE -o 
$TARGET'}
+xsltproc_com = {
+    'xsltproc': '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET 
$DOCBOOK_XSL $SOURCE',
+    'saxon': '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET $DOCBOOK_XSL 
$SOURCE $DOCBOOK_XSLTPROCPARAMS',
+    # Note if saxon-xslt is version 5.5 the proper arguments are: (swap order 
of docbook_xsl and source)
+    #  'saxon-xslt' : '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET 
$SOURCE $DOCBOOK_XSL  $DOCBOOK_XSLTPROCPARAMS',
+    'saxon-xslt': '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -o $TARGET 
$DOCBOOK_XSL $SOURCE $DOCBOOK_XSLTPROCPARAMS',
+    'xalan': '$DOCBOOK_XSLTPROC $DOCBOOK_XSLTPROCFLAGS -q -out $TARGET -xsl 
$DOCBOOK_XSL -in $SOURCE',
+}
+xmllint_com = {
+    'xmllint': '$DOCBOOK_XMLLINT $DOCBOOK_XMLLINTFLAGS --xinclude $SOURCE > 
$TARGET'
+}
+fop_com = {
+    'fop': '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -fo $SOURCE -pdf $TARGET',
+    'xep': '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -valid -fo $SOURCE -pdf $TARGET',
+    'jw': '$DOCBOOK_FOP $DOCBOOK_FOPFLAGS -f docbook -b pdf $SOURCE -o 
$TARGET',
+}
 
 def __detect_cl_tool(env, chainkey, cdict, cpriority=None) -> None:
     """
@@ -180,11 +186,11 @@
             cpriority = cdict.keys()
         for cltool in cpriority:
             if __debug_tool_location:
-                print("DocBook: Looking for %s"%cltool)
+                print(f"DocBook: Looking for {cltool}")
             clpath = env.WhereIs(cltool)
             if clpath:
                 if __debug_tool_location:
-                    print("DocBook: Found:%s"%cltool)
+                    print(f"DocBook: Found:{cltool}")
                 env[chainkey] = clpath
                 if not env[chainkey + 'COM']:
                     env[chainkey + 'COM'] = cdict[cltool]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scons-4.9.0/SCons/Util/__init__.py 
new/scons-4.9.1/SCons/Util/__init__.py
--- old/scons-4.9.0/SCons/Util/__init__.py      2024-11-20 19:52:33.000000000 
+0100
+++ new/scons-4.9.1/SCons/Util/__init__.py      2025-03-27 19:31:55.000000000 
+0100
@@ -1297,36 +1297,70 @@
     return print_time
 
 
-def wait_for_process_to_die(pid) -> None:
+def wait_for_process_to_die(pid: int) -> None:
     """
-    Wait for specified process to die, or alternatively kill it
-    NOTE: This function operates best with psutil pypi package
+    Wait for the specified process to die.
+
     TODO: Add timeout which raises exception
     """
     # wait for the process to fully killed
     try:
         import psutil  # pylint: disable=import-outside-toplevel
         while True:
+            # TODO: this should use psutil.process_exists() or 
psutil.Process.wait()
+            # The psutil docs explicitly recommend against using 
process_iter()/pids()
+            # for checking the existence of a process.
             if pid not in [proc.pid for proc in psutil.process_iter()]:
                 break
             time.sleep(0.1)
     except ImportError:
         # if psutil is not installed we can do this the hard way
-        while True:
-            if sys.platform == 'win32':
-                import ctypes  # pylint: disable=import-outside-toplevel
-                PROCESS_QUERY_INFORMATION = 0x1000
-                processHandle = 
ctypes.windll.kernel32.OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)
-                if processHandle == 0:
-                    break
-                ctypes.windll.kernel32.CloseHandle(processHandle)
-                time.sleep(0.1)
-            else:
-                try:
-                    os.kill(pid, 0)
-                except OSError:
-                    break
-                time.sleep(0.1)
+        _wait_for_process_to_die_non_psutil(pid, timeout=-1.0)
+
+
+def _wait_for_process_to_die_non_psutil(pid: int, timeout: float = 60.0) -> 
None:
+    start_time = time.time()
+    while True:
+        if not _is_process_alive(pid):
+            break
+        if timeout >= 0.0 and time.time() - start_time > timeout:
+            raise TimeoutError(f"timed out waiting for process {pid}")
+        time.sleep(0.1)
+
+
+if sys.platform == 'win32':
+    def _is_process_alive(pid: int) -> bool:
+        import ctypes  # pylint: disable=import-outside-toplevel
+        PROCESS_QUERY_INFORMATION = 0x1000
+        STILL_ACTIVE = 259
+
+        processHandle = 
ctypes.windll.kernel32.OpenProcess(PROCESS_QUERY_INFORMATION, 0, pid)
+        if processHandle == 0:
+            return False
+
+        # OpenProcess() may successfully return a handle even for terminated
+        # processes when something else in the system is still holding a
+        # reference to their handle.  Call GetExitCodeProcess() to check if the
+        # process has already exited.
+        try:
+            exit_code = ctypes.c_ulong()
+            success = ctypes.windll.kernel32.GetExitCodeProcess(
+                    processHandle, ctypes.byref(exit_code))
+            if success:
+                return exit_code.value == STILL_ACTIVE
+        finally:
+            ctypes.windll.kernel32.CloseHandle(processHandle)
+
+        return True
+
+else:
+    def _is_process_alive(pid: int) -> bool:
+        try:
+            os.kill(pid, 0)
+            return True
+        except OSError:
+            return False
+
 
 # From: 
https://stackoverflow.com/questions/1741972/how-to-use-different-formatters-with-the-same-logging-handler-in-python
 class DispatchingFormatter(Formatter):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scons-4.9.0/SCons/__init__.py 
new/scons-4.9.1/SCons/__init__.py
--- old/scons-4.9.0/SCons/__init__.py   2025-03-02 23:33:50.000000000 +0100
+++ new/scons-4.9.1/SCons/__init__.py   2025-03-28 23:25:05.000000000 +0100
@@ -1,9 +1,9 @@
-__version__="4.9.0"
+__version__="4.9.1"
 __copyright__="Copyright (c) 2001 - 2025 The SCons Foundation"
 __developer__="bdbaddog"
-__date__="Sun, 02 Mar 2025 14:33:49 -0700"
+__date__="Fri, 28 Mar 2025 15:25:00 -0700"
 __buildsys__="M1Dog2021"
-__revision__="f6f2fd98b2a94871b506e517873af4d6faf04ed9"
-__build__="f6f2fd98b2a94871b506e517873af4d6faf04ed9"
+__revision__="dfd6b7e45985eb73462d2efa878651c92745099c"
+__build__="dfd6b7e45985eb73462d2efa878651c92745099c"
 # make sure compatibility is always in place
 import SCons.compat  # noqa
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scons-4.9.0/SCons.egg-info/PKG-INFO 
new/scons-4.9.1/SCons.egg-info/PKG-INFO
--- old/scons-4.9.0/SCons.egg-info/PKG-INFO     2025-03-02 23:34:06.000000000 
+0100
+++ new/scons-4.9.1/SCons.egg-info/PKG-INFO     2025-03-28 23:25:07.000000000 
+0100
@@ -1,6 +1,6 @@
-Metadata-Version: 2.2
+Metadata-Version: 2.4
 Name: SCons
-Version: 4.9.0
+Version: 4.9.1
 Summary: Open Source next-generation build tool.
 Author-email: William Deegan <b...@baddogconsulting.com>
 License: MIT
@@ -33,6 +33,7 @@
 Requires-Python: >=3.7
 Description-Content-Type: text/x-rst
 License-File: LICENSE
+Dynamic: license-file
 
 SCons - a Software Construction Tool
 ####################################
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scons-4.9.0/scons-time.1 new/scons-4.9.1/scons-time.1
--- old/scons-4.9.0/scons-time.1        2025-03-02 23:34:01.000000000 +0100
+++ new/scons-4.9.1/scons-time.1        2025-03-27 19:44:36.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: SCONS-TIME
 .\"    Author: [see the "AUTHORS" section]
 .\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\"      Date: 03/02/2025
-.\"    Manual: SCons 4.9.0
-.\"    Source: SCons 4.9.0
+.\"      Date: 03/27/2025
+.\"    Manual: SCons 4.9.1
+.\"    Source: SCons 4.9.1
 .\"  Language: English
 .\"
-.TH "SCONS\-TIME" "1" "03/02/2025" "SCons 4\&.9\&.0" "SCons 4\&.9\&.0"
+.TH "SCONS\-TIME" "1" "03/27/2025" "SCons 4\&.9\&.1" "SCons 4\&.9\&.1"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scons-4.9.0/scons.1 new/scons-4.9.1/scons.1
--- old/scons-4.9.0/scons.1     2025-03-02 23:34:04.000000000 +0100
+++ new/scons-4.9.1/scons.1     2025-03-27 19:44:39.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: SCONS
 .\"    Author: The SCons Development Team
 .\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\"      Date: <pubdate>Released Sun, 02 Mar 2025 14:33:49 -0700</pubdate>
-.\"    Manual: SCons 4.9.0
-.\"    Source: SCons 4.9.0 Version 4.9.0
+.\"      Date: <pubdate>Released Thu, 27 Mar 2025 11:44:24 -0700</pubdate>
+.\"    Manual: SCons 4.9.1
+.\"    Source: SCons 4.9.1 Version 4.9.1
 .\"  Language: English
 .\"
-.TH "SCONS" "1" "<pubdate>Released Sun, 02 Mar 2025 14:33:49 -0700</pubdate>" 
"SCons 4\&.9\&.0 Version 4.9.0" "SCons 4\&.9\&.0"
+.TH "SCONS" "1" "<pubdate>Released Thu, 27 Mar 2025 11:44:24 -0700</pubdate>" 
"SCons 4\&.9\&.1 Version 4.9.1" "SCons 4\&.9\&.1"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/scons-4.9.0/sconsign.1 new/scons-4.9.1/sconsign.1
--- old/scons-4.9.0/sconsign.1  2025-03-02 23:34:04.000000000 +0100
+++ new/scons-4.9.1/sconsign.1  2025-03-27 19:44:39.000000000 +0100
@@ -2,12 +2,12 @@
 .\"     Title: SCONSIGN
 .\"    Author: [see the "AUTHORS" section]
 .\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
-.\"      Date: 03/02/2025
-.\"    Manual: SCons 4.9.0
-.\"    Source: SCons 4.9.0
+.\"      Date: 03/27/2025
+.\"    Manual: SCons 4.9.1
+.\"    Source: SCons 4.9.1
 .\"  Language: English
 .\"
-.TH "SCONSIGN" "1" "03/02/2025" "SCons 4\&.9\&.0" "SCons 4\&.9\&.0"
+.TH "SCONSIGN" "1" "03/27/2025" "SCons 4\&.9\&.1" "SCons 4\&.9\&.1"
 .\" -----------------------------------------------------------------
 .\" * Define some portability stuff
 .\" -----------------------------------------------------------------

Reply via email to