code: def get_binfo(self):
          
          try:
              return self.binfo
          except AttributeError:
              pass
  
          binfo = self.new_binfo()
          self.binfo = binfo
  
          executor = self.get_executor()
          ignore_set = self.ignore_set
  
          if self.has_builder():
              binfo.bact = str(executor)
              binfo.bactsig = SCons.Util.MD5signature(executor.get_contents())
  
          if self._specific_sources:
              sources = [ s for s in self.sources if not s in ignore_set]
  
          else:
              sources = executor.get_unignored_sources(self, self.ignore)
  
          seen = set()
          binfo.bsources = [s for s in sources if s not in seen and not seen.add(s)]
          binfo.bsourcesigs = [s.get_ninfo() for s in binfo.bsources]
  
  
          binfo.bdepends = self.depends
          binfo.bdependsigs = [d.get_ninfo() for d in self.depends if d not in ignore_set]
  
          binfo.bimplicit = self.implicit or []
          binfo.bimplicitsigs = [i.get_ninfo() for i in binfo.bimplicit if i not in ignore_set]
  
  
          return binfo
docs: Fetch a node's build information.
  
          node - the node whose sources will be collected
          cache - alternate node to use for the signature cache
          returns - the build signature
  
          This no longer handles the recursive descent of the
          node's children's signatures.  We expect that they're
          already built and updated by someone else, if that's
          what's wanted.