From a72d848edee769113da98ebe96f9d5df212f3583 Mon Sep 17 00:00:00 2001 From: stevenknight Date: Sat, 21 Jan 2006 18:09:35 +0000 Subject: [PATCH] Refactor NodeInfo decisions in anticipation of bigger refctoring. git-svn-id: http://scons.tigris.org/svn/scons/trunk@1413 fdb21ef1-2011-0410-befe-b5e4ea1792b1 --- src/engine/SCons/Node/FS.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/engine/SCons/Node/FS.py b/src/engine/SCons/Node/FS.py index a0a7a449..3d70c7cf 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__" -- 2.26.2