code: def putintopackageroot(target, source, env, pkgroot, honor_install_location=1):
      
      # make sure the packageroot is a Dir object.
      if SCons.Util.is_String(pkgroot):  pkgroot=env.Dir(pkgroot)
      if not SCons.Util.is_List(source): source=[source]
  
      new_source = []
      for file in source:
          if SCons.Util.is_String(file): file = env.File(file)
  
          if file.is_under(pkgroot):
              new_source.append(file)
          else:
              if file.GetTag('PACKAGING_INSTALL_LOCATION') and\
                         honor_install_location:
                  new_name=make_path_relative(file.GetTag('PACKAGING_INSTALL_LOCATION'))
              else:
                  new_name=make_path_relative(file.get_path())
  
              new_file=pkgroot.File(new_name)
              new_file=env.CopyAs(new_file, file)[0]
              copy_attr(file, new_file)
              new_source.append(new_file)
  
      return (target, new_source)
docs: Uses the CopyAs builder to copy all source files to the directory given
      in pkgroot.
  
      If honor_install_location is set and the copied source file has an
      PACKAGING_INSTALL_LOCATION attribute, the PACKAGING_INSTALL_LOCATION is
      used as the new name of the source file under pkgroot.
  
      The source file will not be copied if it is already under the the pkgroot
      directory.
  
      All attributes of the source file will be copied to the new file.