class Bundler::Source::Path

def generate_bin(spec, options = {})

def generate_bin(spec, options = {})
  gem_dir = Pathname.new(spec.full_gem_path)
  # Some gem authors put absolute paths in their gemspec
  # and we have to save them from themselves
  spec.files = spec.files.map do |path|
    next path unless /\A#{Pathname::SEPARATOR_PAT}/.match?(path)
    next if File.directory?(path)
    begin
      Pathname.new(path).relative_path_from(gem_dir).to_s
    rescue ArgumentError
      path
    end
  end.compact
  installer = Path::Installer.new(
    spec,
    :env_shebang => false,
    :disable_extensions => options[:disable_extensions],
    :build_args => options[:build_args],
    :bundler_extension_cache_path => extension_cache_path(spec)
  )
  installer.post_install
rescue Gem::InvalidSpecificationException => e
  Bundler.ui.warn "\n#{spec.name} at #{spec.full_gem_path} did not have a valid gemspec.\n" \
                  "This prevents bundler from installing bins or native extensions, but " \
                  "that may not affect its functionality."
  if !spec.extensions.empty? && !spec.email.empty?
    Bundler.ui.warn "If you need to use this package without installing it from a gem " \
                    "repository, please contact #{spec.email} and ask them " \
                    "to modify their .gemspec so it can work with `gem build`."
  end
  Bundler.ui.warn "The validation message from RubyGems was:\n  #{e.message}"
end