module Gem

def self.freebsd_platform?

def self.freebsd_platform?
  RbConfig::CONFIG["host_os"].to_s.include?("bsd")
end

def self.open_file_with_flock(path, &block)

def self.open_file_with_flock(path, &block)
  flags = File.exist?(path) ? "r+" : "a+"
  File.open(path, flags) do |io|
    begin
      io.flock(File::LOCK_EX)
    rescue Errno::ENOSYS, Errno::ENOTSUP
    end
    yield io
  rescue Errno::ENOLCK # NFS
    if Thread.main != Thread.current
      raise
    else
      File.open(path, flags, &block)
    end
  end
end

def URI(uri) # rubocop:disable Naming/MethodName

rubocop:disable Naming/MethodName
def URI(uri) # rubocop:disable Naming/MethodName
  Bundler::URI(uri)
end

def match_gem?(platform, gem_name)

def match_gem?(platform, gem_name)
  match_platforms?(platform, Gem.platforms)
end

def match_platforms?(platform, platforms)

def match_platforms?(platform, platforms)
  platforms.any? do |local_platform|
    platform.nil? ||
      local_platform == platform ||
      (local_platform != Gem::Platform::RUBY && platform =~ local_platform)
  end
end

def match_spec?(spec)

def match_spec?(spec)
  match_gem?(spec.platform, spec.name)
end