From 7b7679eb79a7ad7766881b05fab0681850f79a6f Mon Sep 17 00:00:00 2001 From: Greg Ward Date: Sun, 9 Jan 2000 22:48:59 +0000 Subject: [PATCH] 'newer_group()' can now deal with missing files, in a way specified by the 'missing' parameter. --- Lib/distutils/util.py | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py index 4f93cd44d5..953c2e26e2 100644 --- a/Lib/distutils/util.py +++ b/Lib/distutils/util.py @@ -120,11 +120,18 @@ def newer_pairwise (sources, targets): # newer_pairwise () -def newer_group (sources, target): +def newer_group (sources, target, missing='error'): """Return true if 'target' is out-of-date with respect to any file listed in 'sources'. In other words, if 'target' exists and is newer than every file in 'sources', return false; otherwise - return true.""" + return true. 'missing' controls what we do when a source file is + missing; the default ("error") is to blow up with an OSError from + inside 'stat()'; if it is "ignore", we silently drop any missing + source files; if it is "newer", any missing source files make us + assume that 'target' is out-of-date (this is handy in "dry-run" + mode: it'll make you pretend to carry out commands that wouldn't + work because inputs are missing, but that doesn't matter because + you're not actually going to run the commands).""" # If the target doesn't even exist, then it's definitely out-of-date. if not os.path.exists (target): @@ -137,6 +144,14 @@ def newer_group (sources, target): from stat import ST_MTIME target_mtime = os.stat (target)[ST_MTIME] for source in sources: + if not os.path.exists (source): + if missing == 'error': # blow up when we stat() the file + pass + elif missing == 'ignore': # missing source dropped from + continue # target's dependency list + elif missing == 'newer': # missing source means target is + return 1 # out-of-date + source_mtime = os.stat(source)[ST_MTIME] if source_mtime > target_mtime: return 1 -- 2.40.0