code: def copy_func(dest, src, symlinks=True):
      
  
      dest = str(dest)
      src = str(src)
  
      SCons.Node.FS.invalidate_node_memos(dest)
      if SCons.Util.is_List(src) and os.path.isdir(dest):
          for file in src:
              shutil.copy2(file, dest)
          return 0
      elif os.path.islink(src):
          if symlinks:
              return os.symlink(os.readlink(src), dest)
          else:
              return copy_func(dest, os.path.realpath(src))
      elif os.path.isfile(src):
          shutil.copy2(src, dest)
          return 0
      else:
          shutil.copytree(src, dest, symlinks)
          # copytree returns None in python2 and destination string in python3
          # A error is raised in both cases, so we can just return 0 for success
          return 0
docs: If symlinks (is true), then a symbolic link will be
      shallow copied and recreated as a symbolic link; otherwise, copying
      a symbolic link will be equivalent to copying the symbolic link's
      final target regardless of symbolic link depth.