[calm - Cygwin server-side packaging maintenance script] branch master, updated. 20230209-79-g886e9b7
Jon Turney
jturney@sourceware.org
Sun Mar 31 14:45:55 GMT 2024
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=886e9b7b74ccfa0d70faf14f4eca90a29dd6ce16
commit 886e9b7b74ccfa0d70faf14f4eca90a29dd6ce16
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Sun Mar 31 15:24:29 2024 +0100
Expire python34 left-overs
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=27a2ad89d1a7be564ae4e8965b6c3dd087c04499
commit 27a2ad89d1a7be564ae4e8965b6c3dd087c04499
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Sat Mar 30 20:20:08 2024 +0000
Ignore InotifyError exceptions
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/calm.git;h=56719ceaa0ce8dba4d7d2a24430fd697909fe0ef
commit 56719ceaa0ce8dba4d7d2a24430fd697909fe0ef
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Wed Mar 27 13:46:56 2024 +0000
Only consider files in fix-requires-by-path
This makes it practical to use complex regex e.g. ending with a negative
lookahead.
Diff:
---
calm/calm.py | 51 ++++++++++++++++++++++++--------------------
calm/fix-requires-by-path.py | 8 +++++--
calm/package.py | 7 +++---
calm/past_mistakes.py | 3 +--
4 files changed, 38 insertions(+), 31 deletions(-)
diff --git a/calm/calm.py b/calm/calm.py
index cf4e397..ab118ee 100755
--- a/calm/calm.py
+++ b/calm/calm.py
@@ -745,29 +745,34 @@ def do_daemon(args, state):
saw_events = False
depth = args.rel_area.count(os.path.sep) + 1
- # It would be nice to use inotify.adaptor's timeout feature so
- # we go at least a few seconds without events, to ensure that we
- # don't start processing in the middle of a flurry of events.
- # Unfortunately, that goes back to waiting for the full
- # block_duration_s if timeout hasn't expired...
- for event in i.event_gen(yield_nones=True):
- if event is not None:
- logging.debug("inotify event %s" % str(event))
- saw_events = True
- (_, type_names, path, filename) = event
- 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) or filename == ".touch"):
- action |= Event.read_relarea
- elif path.startswith(args.stagingdir):
- action |= Event.read_uploads
- elif (path.startswith(args.homedir)) and (filename == "!ready"):
- action |= Event.read_uploads
- else:
- # None means no more events are currently available, so
- # break to process actions
- break
+ try:
+ # It would be nice to use inotify.adaptor's timeout feature so
+ # we go at least a few seconds without events, to ensure that we
+ # don't start processing in the middle of a flurry of events.
+ # Unfortunately, that goes back to waiting for the full
+ # block_duration_s if timeout hasn't expired...
+ for event in i.event_gen(yield_nones=True):
+ if event is not None:
+ logging.debug("inotify event %s" % str(event))
+ saw_events = True
+ (_, type_names, path, filename) = event
+ 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) or filename == ".touch"):
+ action |= Event.read_relarea
+ elif path.startswith(args.stagingdir) and (filename != 'tmp'):
+ action |= Event.read_uploads
+ elif (path.startswith(args.homedir)) and (filename == "!ready"):
+ action |= Event.read_uploads
+ else:
+ # None means no more events are currently available, so
+ # break to process actions
+ break
+ except inotify.calls.InotifyError:
+ # can occur if a just created directory is (re)moved before
+ # we set a watch on it
+ pass
if not saw_events:
if time.time() > next_scan_time:
diff --git a/calm/fix-requires-by-path.py b/calm/fix-requires-by-path.py
index 4fa9e65..0efe087 100644
--- a/calm/fix-requires-by-path.py
+++ b/calm/fix-requires-by-path.py
@@ -42,6 +42,10 @@ from . import hint
def fix_one_hint(args, dirpath, hintfile, tf):
pn = os.path.join(dirpath, hintfile)
+ # avoid pointlessly checking to add a self-dependency
+ if pn == args.requires:
+ return
+
hints = hint.hint_file_parse(pn, hint.pvr)
hints.pop('parse-warnings', None)
@@ -57,13 +61,13 @@ def fix_one_hint(args, dirpath, hintfile, tf):
if args.requires in requires:
return
- # check if this package installs anything with the specified path, and if
+ # check if this package installs any files with the specified path, and if
# so, add to the requires, if not already present
ivp = False
try:
with xtarfile.open(os.path.join(dirpath, tf), mode='r') as a:
- ivp = any(re.match(args.path, m) for m in a.getnames())
+ ivp = any((m.isfile() and re.match(args.path, m.name)) for m in a.getmembers())
except tarfile.ReadError:
pass
diff --git a/calm/package.py b/calm/package.py
index 3b530cb..860bc64 100755
--- a/calm/package.py
+++ b/calm/package.py
@@ -1636,10 +1636,9 @@ def mark_fn(packages, po, v, certain_age, vault_requests):
# - if package depends on anything in expired_provides
#
requires = po.version_hints[v].get('depends', '').split(', ')
- if re.match(r'^python(|2|27)[-_]', pn):
- if any(ep in requires for ep in past_mistakes.expired_provides) or po.obsolete:
- logging.debug("package '%s' version '%s' not retained as it requires a provide known to be expired" % (pn, v))
- return Freshness.stale
+ if any(ep in requires for ep in past_mistakes.expired_provides):
+ logging.debug("package '%s' version '%s' not retained as it requires a provide known to be expired" % (pn, v))
+ return Freshness.conditional
# - explicitly marked as 'noretain'
#
diff --git a/calm/past_mistakes.py b/calm/past_mistakes.py
index e1bef6b..7f4e8ea 100644
--- a/calm/past_mistakes.py
+++ b/calm/past_mistakes.py
@@ -256,8 +256,7 @@ substitute_dependency = {
# provides: which don't exist and packages which require them should be expired
expired_provides = [
- 'python2',
- 'python27',
+ 'python34',
]
# empty source packages
More information about the Cygwin-apps-cvs
mailing list