[calm - Cygwin server-side packaging maintenance script] branch master, updated. 20230209-75-gd561703

Jon Turney jturney@sourceware.org
Mon Mar 25 21:59:55 GMT 2024




https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=d561703e8d4234f6d67eb50ebaa6ec4bf5ed4896

commit d561703e8d4234f6d67eb50ebaa6ec4bf5ed4896
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Mon Mar 25 21:57:22 2024 +0000

    Preparations for python3.5 removal

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=73f09ddd6f19c8300e85e80570c7d1d05a675303

commit 73f09ddd6f19c8300e85e80570c7d1d05a675303
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sun Mar 24 22:22:38 2024 +0000

    Improve fix-requires-by-linkage tool to allow it to run on entire relarea
    
    Also: allow replacing an existing dependency (e.g python3 -> python35)
    Also: don't spam with objdump warnings for symlinks

https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=db2f6141ef2aa1ff553354eba26a4bb72d7fafc0

commit db2f6141ef2aa1ff553354eba26a4bb72d7fafc0
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date:   Sun Mar 24 16:52:53 2024 +0000

    Support an easy way to trigger a relarea rescan via a .touch file
    
    This will be used by vault and scan-relarea


Diff:
---
 calm/calm.py                    |  2 +-
 calm/fix-requires-by-linkage.py | 22 +++++++++++++++++-----
 calm/past_mistakes.py           |  5 +++++
 3 files changed, 23 insertions(+), 6 deletions(-)

diff --git a/calm/calm.py b/calm/calm.py
index 65e75dc..cf4e397 100755
--- a/calm/calm.py
+++ b/calm/calm.py
@@ -758,7 +758,7 @@ def do_daemon(args, state):
                         if path.startswith(args.rel_area):
                             # ignore sha512.sum and modifications to setup.*
                             # files in the arch directory
-                            if (filename != 'sha512.sum') and (path.count(os.path.sep) > depth):
+                            if (filename != 'sha512.sum') and ((path.count(os.path.sep) > depth) or filename == ".touch"):
                                 action |= Event.read_relarea
                         elif path.startswith(args.stagingdir):
                             action |= Event.read_uploads
diff --git a/calm/fix-requires-by-linkage.py b/calm/fix-requires-by-linkage.py
index 9f50c29..7de5f3f 100644
--- a/calm/fix-requires-by-linkage.py
+++ b/calm/fix-requires-by-linkage.py
@@ -59,13 +59,16 @@ def fix_one_hint(args, dirpath, hintfile, tf):
         if args.requires in requires:
             return
 
-    # check if this package installs linked the specified DLL, and if
-    # so, add to the requires, if not already present
+    # check if this package installs executables linked to the specified DLL,
+    # and if so, add to the requires, if not already present
     exe = False
 
     try:
         with xtarfile.open(os.path.join(dirpath, tf), mode='r') as a:
             for m in a.getmembers():
+                if not m.isfile():
+                    continue
+
                 if re.search(r'\.(exe|dll)$', m.name):
                     logging.info('Found executable %s' % m.name)
                     a.extract(m)
@@ -82,6 +85,8 @@ def fix_one_hint(args, dirpath, hintfile, tf):
     if exe:
         requires = hints.get('requires', '').split()
         if args.requires not in requires:
+            if args.replace and args.replace in requires:
+                requires.remove(args.replace)
             requires.append(args.requires)
             requires = sorted(requires)
             modified = True
@@ -94,7 +99,8 @@ def fix_one_hint(args, dirpath, hintfile, tf):
     # write updated hints
     shutil.copy2(pn, pn + '.bak')
     hint.hint_file_write(pn, hints)
-    # os.system('/usr/bin/diff -uBZ %s %s' % (pn + '.bak', pn))
+    if args.verbose:
+        os.system('/usr/bin/diff -uBZ %s %s' % (pn + '.bak', pn))
 
 
 def fix_hints(args):
@@ -108,7 +114,12 @@ def fix_hints(args):
 
                 pn = root.rsplit('-', 2)[0]
 
-                if pn not in args.package:
+                # is pn in the list of packages (if specified)?
+                if args.package and (pn not in args.package):
+                    continue
+
+                # it is pointless to check for adding a self-dependency
+                if pn == args.requires:
                     continue
 
                 logging.info('Checking %s' % root)
@@ -126,9 +137,10 @@ if __name__ == "__main__":
     parser = argparse.ArgumentParser(description='Add DEPATOM to requires: of packages which contain an executable linked with DLL')
     parser.add_argument('dll', metavar='DLL', help='DLL to check for linkage')
     parser.add_argument('requires', metavar='DEPATOM', help='require to add')
-    parser.add_argument('package', metavar='PACKAGE', action='extend', nargs='+', help='packages to check')
+    parser.add_argument('package', metavar='PACKAGE', action='extend', nargs='*', help='packages to check')
     parser.add_argument('-v', '--verbose', action='count', dest='verbose', help='verbose output', default=0)
     parser.add_argument('--releasearea', action='store', metavar='DIR', help="release directory (default: " + relarea_default + ")", default=relarea_default, dest='relarea')
+    parser.add_argument('--replace', action='store', metavar='DEPATOM', help="replace existing DEPATOM if present")
     (args) = parser.parse_args()
 
     if args.verbose:
diff --git a/calm/past_mistakes.py b/calm/past_mistakes.py
index bd3d844..e1bef6b 100644
--- a/calm/past_mistakes.py
+++ b/calm/past_mistakes.py
@@ -168,6 +168,10 @@ historical_provides = [
 # we use regex patterns to match version provides which might have been expired,
 # or not uploaded yet.
 nonexistent_provides = historical_provides + [
+    # python3
+    'python35-gi',
+    'glade3',
+    # python2
     'python2',
     'python2-devel',
     'python27',
@@ -199,6 +203,7 @@ nonexistent_provides = historical_provides + [
     'python2-cython',
     'python2-wheel',
     'python2-cairo-devel',
+    # general
     '_windows',
     r'perl5_\d+',
     r'ruby_\d+',



More information about the Cygwin-apps-cvs mailing list