diff options
-rw-r--r-- | src/engine/SCons/Node/FS.py | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index a0a7a44..3d70c7c 100644 --- a/src/engine/SCons/Node/FS.py +++ b/src/engine/SCons/Node/FS.py @@ -1974,6 +1974,18 @@ class File(Base): # # + def is_up_to_date(self, node=None, bi=None): + """Returns if the node is up-to-date with respect to stored + BuildInfo. The default is to compare it against our own + previously stored BuildInfo, but the stored BuildInfo from another + Node (typically one in a Repository) can be used instead.""" + if bi is None: + if node is None: + node = self + bi = node.get_stored_info() + new = self.get_binfo() + return new == bi + def current(self, calc=None): self.binfo = self.gen_binfo(calc) return self._cur2() @@ -1986,20 +1998,16 @@ class File(Base): r = self.rfile() if r != self: # ...but there is one in a Repository... - old = r.get_stored_info() - new = self.get_binfo() - if new == old: + if self.is_up_to_date(r): # ...and it's even up-to-date... if self._local: # ...and they'd like a local copy. LocalCopy(self, r, None) - self.store_info(new) + self.store_info(self.get_binfo()) return 1 return None else: - old = self.get_stored_info() - new = self.get_binfo() - return (new == old) + return self.is_up_to_date() def rfile(self): "__cacheable__" |