diff options
author | Greg Ward <gward@python.net> | 2000-01-09 22:48:59 (GMT) |
---|---|---|
committer | Greg Ward <gward@python.net> | 2000-01-09 22:48:59 (GMT) |
commit | 7b7679eb79a7ad7766881b05fab0681850f79a6f (patch) | |
tree | dc3bec12a0db3ab4378efed68a2d022b5094f8f1 | |
parent | c9f3187be20631a2bbbce9d9d582beda148a2025 (diff) | |
download | cpython-7b7679eb79a7ad7766881b05fab0681850f79a6f.zip cpython-7b7679eb79a7ad7766881b05fab0681850f79a6f.tar.gz cpython-7b7679eb79a7ad7766881b05fab0681850f79a6f.tar.bz2 |
'newer_group()' can now deal with missing files, in a way specified by
the 'missing' parameter.
-rw-r--r-- | Lib/distutils/util.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/Lib/distutils/util.py b/Lib/distutils/util.py index 4f93cd4..953c2e2 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 |