def generate_copy_in(src_base_path, dst_base_path)
      src_base_path = ::File.expand_path(src_base_path)
      dst_base_path = ::File.expand_path(dst_base_path)
      copy_in = []
      recursive_generate_copy_in(copy_in, src_base_path)

      src_base_path += '/'
      src_base_path_len = src_base_path.length
      dst_base_path += '/'
      copy_in.inject({}) do |h, src_path|
        h[src_path] = ::File.join(dst_base_path, src_path[src_base_path_len..-1])
        h
      end
    end
def generate_copy_in(src_base_path, dst_base_path)
      src_base_path = ::File.expand_path(src_base_path)
      dst_base_path = ::File.expand_path(dst_base_path)
      copy_in = []
      recursive_generate_copy_in(copy_in, src_base_path)

      src_base_path += '/'
      src_base_path_len = src_base_path.length
      dst_base_path += '/'
      copy_in.inject({}) do |h, src_path|
        h[src_path] = ::File.join(dst_base_path, src_path[src_base_path_len..-1])
        h
      end
    end
need to enumerate files relative to the cookbook directory because we
 have no idea what the metadata script will attempt to consume from the
 files available in its repository. it may even attempt to manipulate
 files in the system or go out to the network, which may or may not be
 allowed by the conditions of the jail.

 some cookbooks (for Windows, especially) will have large binaries
 included in the repository. we don't want to spend time copying these
 files into jail so limit the files that metadata can reference by size.
 presumably the jail would also be limiting disk space so it is important
 to avoid this source of failure.

 again, the user can work around these contraints by generating his own
 metadata and checking it into the repository.

 @return [Hash] path_map as map of source to destination file paths