mirror of
https://github.com/ruby/ruby.git
synced 2025-09-21 11:33:58 +02:00
Merge RubyGems-3.3.17 and Bundler-2.3.17
This commit is contained in:
parent
a01f5ad1ec
commit
7ef68dd74a
67 changed files with 496 additions and 652 deletions
|
@ -251,8 +251,10 @@ module Bundler
|
||||||
remembered_negative_flag_deprecation("no-deployment")
|
remembered_negative_flag_deprecation("no-deployment")
|
||||||
|
|
||||||
require_relative "cli/install"
|
require_relative "cli/install"
|
||||||
|
Bundler.settings.temporary(:no_install => false) do
|
||||||
Install.new(options.dup).run
|
Install.new(options.dup).run
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
map aliases_for("install")
|
map aliases_for("install")
|
||||||
|
|
||||||
|
@ -297,8 +299,10 @@ module Bundler
|
||||||
def update(*gems)
|
def update(*gems)
|
||||||
SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
|
SharedHelpers.major_deprecation(2, "The `--force` option has been renamed to `--redownload`") if ARGV.include?("--force")
|
||||||
require_relative "cli/update"
|
require_relative "cli/update"
|
||||||
|
Bundler.settings.temporary(:no_install => false) do
|
||||||
Update.new(options, gems).run
|
Update.new(options, gems).run
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
desc "show GEM [OPTIONS]", "Shows all gems that are part of the bundle, or the path to a given gem"
|
desc "show GEM [OPTIONS]", "Shows all gems that are part of the bundle, or the path to a given gem"
|
||||||
long_desc <<-D
|
long_desc <<-D
|
||||||
|
|
|
@ -14,7 +14,7 @@ module Bundler
|
||||||
Bundler.settings.set_command_option_if_given :cache_path, options["cache-path"]
|
Bundler.settings.set_command_option_if_given :cache_path, options["cache-path"]
|
||||||
|
|
||||||
setup_cache_all
|
setup_cache_all
|
||||||
install unless Bundler.settings[:no_install]
|
install
|
||||||
|
|
||||||
# TODO: move cache contents here now that all bundles are locked
|
# TODO: move cache contents here now that all bundles are locked
|
||||||
custom_path = Bundler.settings[:path] if options[:path]
|
custom_path = Bundler.settings[:path] if options[:path]
|
||||||
|
|
|
@ -161,6 +161,8 @@ module Bundler
|
||||||
|
|
||||||
Bundler.settings.set_command_option_if_given :no_prune, options["no-prune"]
|
Bundler.settings.set_command_option_if_given :no_prune, options["no-prune"]
|
||||||
|
|
||||||
|
Bundler.settings.set_command_option_if_given :no_install, options["no-install"]
|
||||||
|
|
||||||
Bundler.settings.set_command_option_if_given :clean, options["clean"]
|
Bundler.settings.set_command_option_if_given :clean, options["clean"]
|
||||||
|
|
||||||
normalize_groups if options[:without] || options[:with]
|
normalize_groups if options[:without] || options[:with]
|
||||||
|
|
|
@ -78,7 +78,7 @@ module Bundler
|
||||||
end
|
end
|
||||||
|
|
||||||
def x64_mingw?
|
def x64_mingw?
|
||||||
Gem.win_platform? && Bundler.local_platform != Gem::Platform::RUBY && Bundler.local_platform.os == "mingw32" && Bundler.local_platform.cpu == "x64"
|
Gem.win_platform? && Bundler.local_platform != Gem::Platform::RUBY && Bundler.local_platform.os.start_with?("mingw") && Bundler.local_platform.cpu == "x64"
|
||||||
end
|
end
|
||||||
|
|
||||||
(KNOWN_MINOR_VERSIONS + KNOWN_MAJOR_VERSIONS).each do |version|
|
(KNOWN_MINOR_VERSIONS + KNOWN_MAJOR_VERSIONS).each do |version|
|
||||||
|
|
|
@ -122,7 +122,7 @@ module Bundler
|
||||||
end
|
end
|
||||||
|
|
||||||
def expanded_platforms
|
def expanded_platforms
|
||||||
@expanded_platforms ||= @platforms.map {|pl| PLATFORM_MAP[pl] }.compact.uniq
|
@expanded_platforms ||= @platforms.map {|pl| PLATFORM_MAP[pl] }.compact.flatten.uniq
|
||||||
end
|
end
|
||||||
|
|
||||||
def should_include?
|
def should_include?
|
||||||
|
|
|
@ -29,8 +29,11 @@ module Bundler
|
||||||
Bundler.ui.error error.message
|
Bundler.ui.error error.message
|
||||||
Bundler.ui.trace error.orig_exception
|
Bundler.ui.trace error.orig_exception
|
||||||
when BundlerError
|
when BundlerError
|
||||||
Bundler.ui.error error.message, :wrap => true
|
if Bundler.ui.debug?
|
||||||
Bundler.ui.trace error
|
Bundler.ui.trace error
|
||||||
|
else
|
||||||
|
Bundler.ui.error error.message, :wrap => true
|
||||||
|
end
|
||||||
when Thor::Error
|
when Thor::Error
|
||||||
Bundler.ui.error error.message
|
Bundler.ui.error error.message
|
||||||
when LoadError
|
when LoadError
|
||||||
|
|
|
@ -10,6 +10,7 @@ module Bundler
|
||||||
[Gem::Platform.new("universal-mingw32"), Gem::Platform.new("universal-mingw32")],
|
[Gem::Platform.new("universal-mingw32"), Gem::Platform.new("universal-mingw32")],
|
||||||
[Gem::Platform.new("x64-mingw32"), Gem::Platform.new("x64-mingw32")],
|
[Gem::Platform.new("x64-mingw32"), Gem::Platform.new("x64-mingw32")],
|
||||||
[Gem::Platform.new("x86_64-mingw32"), Gem::Platform.new("x64-mingw32")],
|
[Gem::Platform.new("x86_64-mingw32"), Gem::Platform.new("x64-mingw32")],
|
||||||
|
[Gem::Platform.new("x64-mingw-ucrt"), Gem::Platform.new("x64-mingw-ucrt")],
|
||||||
[Gem::Platform.new("mingw32"), Gem::Platform.new("x86-mingw32")],
|
[Gem::Platform.new("mingw32"), Gem::Platform.new("x86-mingw32")],
|
||||||
].freeze
|
].freeze
|
||||||
|
|
||||||
|
|
|
@ -192,11 +192,7 @@ module Bundler
|
||||||
specs += base if base
|
specs += base if base
|
||||||
found = specs.select do |spec|
|
found = specs.select do |spec|
|
||||||
next true if spec.source.is_a?(Source::Gemspec)
|
next true if spec.source.is_a?(Source::Gemspec)
|
||||||
if base # allow all platforms when searching from a lockfile
|
|
||||||
dependency.matches_spec?(spec)
|
dependency.matches_spec?(spec)
|
||||||
else
|
|
||||||
dependency.matches_spec?(spec) && Gem::Platform.match_spec?(spec)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
found
|
found
|
||||||
|
|
|
@ -12,6 +12,7 @@ module Bundler
|
||||||
end
|
end
|
||||||
File.open File.join(bundler_path, "setup.rb"), "w" do |file|
|
File.open File.join(bundler_path, "setup.rb"), "w" do |file|
|
||||||
file.puts "require 'rbconfig'"
|
file.puts "require 'rbconfig'"
|
||||||
|
file.puts define_path_helpers
|
||||||
file.puts reverse_rubygems_kernel_mixin
|
file.puts reverse_rubygems_kernel_mixin
|
||||||
paths.each do |path|
|
paths.each do |path|
|
||||||
if Pathname.new(path).absolute?
|
if Pathname.new(path).absolute?
|
||||||
|
@ -29,14 +30,20 @@ module Bundler
|
||||||
@specs.map do |spec|
|
@specs.map do |spec|
|
||||||
next if spec.name == "bundler"
|
next if spec.name == "bundler"
|
||||||
Array(spec.require_paths).map do |path|
|
Array(spec.require_paths).map do |path|
|
||||||
gem_path(path, spec).sub(version_dir, '#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}')
|
gem_path(path, spec).
|
||||||
|
sub(version_dir, '#{RUBY_ENGINE}/#{Gem.ruby_api_version}').
|
||||||
|
sub(extensions_dir, 'extensions/\k<platform>/#{Gem.extension_api_version}')
|
||||||
# This is a static string intentionally. It's interpolated at a later time.
|
# This is a static string intentionally. It's interpolated at a later time.
|
||||||
end
|
end
|
||||||
end.flatten.compact
|
end.flatten.compact
|
||||||
end
|
end
|
||||||
|
|
||||||
def version_dir
|
def version_dir
|
||||||
"#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}"
|
"#{RUBY_ENGINE}/#{Gem.ruby_api_version}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def extensions_dir
|
||||||
|
%r{extensions/(?<platform>[^/]+)/#{Regexp.escape(Gem.extension_api_version)}}
|
||||||
end
|
end
|
||||||
|
|
||||||
def bundler_path
|
def bundler_path
|
||||||
|
@ -55,6 +62,26 @@ module Bundler
|
||||||
raise Gem::InvalidSpecificationException.new(error_message)
|
raise Gem::InvalidSpecificationException.new(error_message)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def define_path_helpers
|
||||||
|
<<~'END'
|
||||||
|
unless defined?(Gem)
|
||||||
|
module Gem
|
||||||
|
def self.ruby_api_version
|
||||||
|
RbConfig::CONFIG["ruby_version"]
|
||||||
|
end
|
||||||
|
|
||||||
|
def self.extension_api_version
|
||||||
|
if 'no' == RbConfig::CONFIG['ENABLE_SHARED']
|
||||||
|
"#{ruby_api_version}-static"
|
||||||
|
else
|
||||||
|
ruby_api_version
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
END
|
||||||
|
end
|
||||||
|
|
||||||
def reverse_rubygems_kernel_mixin
|
def reverse_rubygems_kernel_mixin
|
||||||
<<~END
|
<<~END
|
||||||
kernel = (class << ::Kernel; self; end)
|
kernel = (class << ::Kernel; self; end)
|
||||||
|
|
|
@ -84,7 +84,7 @@ module Bundler
|
||||||
else
|
else
|
||||||
ruby_platform_materializes_to_ruby_platform? ? self : Dependency.new(name, version)
|
ruby_platform_materializes_to_ruby_platform? ? self : Dependency.new(name, version)
|
||||||
end
|
end
|
||||||
platform_object = Gem::Platform.new(platform)
|
platform_object = ruby_platform_materializes_to_ruby_platform? ? Gem::Platform.new(platform) : Gem::Platform.local
|
||||||
candidates = source.specs.search(search_object)
|
candidates = source.specs.search(search_object)
|
||||||
same_platform_candidates = candidates.select do |spec|
|
same_platform_candidates = candidates.select do |spec|
|
||||||
MatchPlatform.platforms_match?(spec.platform, platform_object)
|
MatchPlatform.platforms_match?(spec.platform, platform_object)
|
||||||
|
@ -152,7 +152,7 @@ module Bundler
|
||||||
# explicitly add a more specific platform.
|
# explicitly add a more specific platform.
|
||||||
#
|
#
|
||||||
def ruby_platform_materializes_to_ruby_platform?
|
def ruby_platform_materializes_to_ruby_platform?
|
||||||
!Bundler.most_specific_locked_platform?(Gem::Platform::RUBY) || Bundler.settings[:force_ruby_platform]
|
!Bundler.most_specific_locked_platform?(generic_local_platform) || Bundler.settings[:force_ruby_platform]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -41,7 +41,7 @@ Specify version requirements(s) for the added gem\.
|
||||||
Specify the group(s) for the added gem\. Multiple groups should be separated by commas\.
|
Specify the group(s) for the added gem\. Multiple groups should be separated by commas\.
|
||||||
.
|
.
|
||||||
.TP
|
.TP
|
||||||
\fB\-\-source\fR, , \fB\-s\fR
|
\fB\-\-source\fR, \fB\-s\fR
|
||||||
Specify the source for the added gem\.
|
Specify the source for the added gem\.
|
||||||
.
|
.
|
||||||
.TP
|
.TP
|
||||||
|
|
|
@ -27,7 +27,7 @@ bundle add rails --group "development, test"
|
||||||
* `--group`, `-g`:
|
* `--group`, `-g`:
|
||||||
Specify the group(s) for the added gem. Multiple groups should be separated by commas.
|
Specify the group(s) for the added gem. Multiple groups should be separated by commas.
|
||||||
|
|
||||||
* `--source`, , `-s`:
|
* `--source`, `-s`:
|
||||||
Specify the source for the added gem.
|
Specify the source for the added gem.
|
||||||
|
|
||||||
* `--require`, `-r`:
|
* `--require`, `-r`:
|
||||||
|
|
|
@ -15,7 +15,6 @@ module Bundler
|
||||||
return true if Gem::Platform::RUBY == gemspec_platform
|
return true if Gem::Platform::RUBY == gemspec_platform
|
||||||
return true if local_platform == gemspec_platform
|
return true if local_platform == gemspec_platform
|
||||||
gemspec_platform = Gem::Platform.new(gemspec_platform)
|
gemspec_platform = Gem::Platform.new(gemspec_platform)
|
||||||
return true if GemHelpers.generic(gemspec_platform) === local_platform
|
|
||||||
return true if gemspec_platform === local_platform
|
return true if gemspec_platform === local_platform
|
||||||
|
|
||||||
false
|
false
|
||||||
|
|
|
@ -284,7 +284,7 @@ module Bundler
|
||||||
if specs_matching_requirement.any?
|
if specs_matching_requirement.any?
|
||||||
specs = specs_matching_requirement
|
specs = specs_matching_requirement
|
||||||
matching_part = requirement_label
|
matching_part = requirement_label
|
||||||
requirement_label = "#{requirement_label} #{requirement.__platform}"
|
requirement_label = "#{requirement_label}' with platform '#{requirement.__platform}"
|
||||||
end
|
end
|
||||||
|
|
||||||
message = String.new("Could not find gem '#{requirement_label}'#{extra_message} in #{source}#{cache_message}.\n")
|
message = String.new("Could not find gem '#{requirement_label}'#{extra_message} in #{source}#{cache_message}.\n")
|
||||||
|
|
|
@ -216,11 +216,12 @@ module Gem
|
||||||
require "rubygems/platform"
|
require "rubygems/platform"
|
||||||
|
|
||||||
class Platform
|
class Platform
|
||||||
JAVA = Gem::Platform.new("java") unless defined?(JAVA)
|
JAVA = Gem::Platform.new("java")
|
||||||
MSWIN = Gem::Platform.new("mswin32") unless defined?(MSWIN)
|
MSWIN = Gem::Platform.new("mswin32")
|
||||||
MSWIN64 = Gem::Platform.new("mswin64") unless defined?(MSWIN64)
|
MSWIN64 = Gem::Platform.new("mswin64")
|
||||||
MINGW = Gem::Platform.new("x86-mingw32") unless defined?(MINGW)
|
MINGW = Gem::Platform.new("x86-mingw32")
|
||||||
X64_MINGW = Gem::Platform.new("x64-mingw32") unless defined?(X64_MINGW)
|
X64_MINGW = [Gem::Platform.new("x64-mingw32"),
|
||||||
|
Gem::Platform.new("x64-mingw-ucrt")].freeze
|
||||||
end
|
end
|
||||||
|
|
||||||
Platform.singleton_class.module_eval do
|
Platform.singleton_class.module_eval do
|
||||||
|
|
|
@ -160,6 +160,8 @@ module Bundler
|
||||||
raise GemNotFound, "Could not find #{spec.file_name} for installation" unless path
|
raise GemNotFound, "Could not find #{spec.file_name} for installation" unless path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
return if Bundler.settings[:no_install]
|
||||||
|
|
||||||
if requires_sudo?
|
if requires_sudo?
|
||||||
install_path = Bundler.tmp(spec.full_name)
|
install_path = Bundler.tmp(spec.full_name)
|
||||||
bin_path = install_path.join("bin")
|
bin_path = install_path.join("bin")
|
||||||
|
|
|
@ -12,17 +12,19 @@ module Bundler
|
||||||
end
|
end
|
||||||
|
|
||||||
def for(dependencies, check = false, match_current_platform = false)
|
def for(dependencies, check = false, match_current_platform = false)
|
||||||
handled = []
|
# dep.name => [list, of, deps]
|
||||||
|
handled = Hash.new {|h, k| h[k] = [] }
|
||||||
deps = dependencies.dup
|
deps = dependencies.dup
|
||||||
specs = []
|
specs = []
|
||||||
|
|
||||||
loop do
|
loop do
|
||||||
break unless dep = deps.shift
|
break unless dep = deps.shift
|
||||||
next if handled.any? {|d| d.name == dep.name && (match_current_platform || d.__platform == dep.__platform) } || dep.name == "bundler"
|
next if handled[dep.name].any? {|d| match_current_platform || d.__platform == dep.__platform } || dep.name == "bundler"
|
||||||
|
|
||||||
handled << dep
|
# use a hash here to ensure constant lookup time in the `any?` call above
|
||||||
|
handled[dep.name] << dep
|
||||||
|
|
||||||
specs_for_dep = spec_for_dependency(dep, match_current_platform)
|
specs_for_dep = specs_for_dependency(dep, match_current_platform)
|
||||||
if specs_for_dep.any?
|
if specs_for_dep.any?
|
||||||
specs.concat(specs_for_dep)
|
specs.concat(specs_for_dep)
|
||||||
|
|
||||||
|
@ -171,12 +173,13 @@ module Bundler
|
||||||
@specs.sort_by(&:name).each {|s| yield s }
|
@specs.sort_by(&:name).each {|s| yield s }
|
||||||
end
|
end
|
||||||
|
|
||||||
def spec_for_dependency(dep, match_current_platform)
|
def specs_for_dependency(dep, match_current_platform)
|
||||||
specs_for_platforms = lookup[dep.name]
|
specs_for_name = lookup[dep.name]
|
||||||
if match_current_platform
|
if match_current_platform
|
||||||
GemHelpers.select_best_platform_match(specs_for_platforms.select {|s| Gem::Platform.match_spec?(s) }, Bundler.local_platform)
|
GemHelpers.select_best_platform_match(specs_for_name.select {|s| Gem::Platform.match_spec?(s) }, Bundler.local_platform)
|
||||||
else
|
else
|
||||||
GemHelpers.select_best_platform_match(specs_for_platforms, dep.__platform)
|
specs_for_name_and_platform = GemHelpers.select_best_platform_match(specs_for_name, dep.__platform)
|
||||||
|
specs_for_name_and_platform.any? ? specs_for_name_and_platform : specs_for_name
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
# frozen_string_literal: false
|
# frozen_string_literal: false
|
||||||
|
|
||||||
module Bundler
|
module Bundler
|
||||||
VERSION = "2.3.16".freeze
|
VERSION = "2.3.17".freeze
|
||||||
|
|
||||||
def self.bundler_major_version
|
def self.bundler_major_version
|
||||||
@bundler_major_version ||= VERSION.split(".").first.to_i
|
@bundler_major_version ||= VERSION.split(".").first.to_i
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
require 'rbconfig'
|
require 'rbconfig'
|
||||||
|
|
||||||
module Gem
|
module Gem
|
||||||
VERSION = "3.3.16".freeze
|
VERSION = "3.3.17".freeze
|
||||||
end
|
end
|
||||||
|
|
||||||
# Must be first since it unloads the prelude from 1.9.2
|
# Must be first since it unloads the prelude from 1.9.2
|
||||||
|
@ -1323,8 +1323,9 @@ begin
|
||||||
rescue LoadError
|
rescue LoadError
|
||||||
# Ignored
|
# Ignored
|
||||||
rescue StandardError => e
|
rescue StandardError => e
|
||||||
|
path = e.backtrace_locations.reverse.find {|l| l.path.end_with?("rubygems/defaults/operating_system.rb") }.path
|
||||||
msg = "#{e.message}\n" \
|
msg = "#{e.message}\n" \
|
||||||
"Loading the rubygems/defaults/operating_system.rb file caused an error. " \
|
"Loading the #{path} file caused an error. " \
|
||||||
"This file is owned by your OS, not by rubygems upstream. " \
|
"This file is owned by your OS, not by rubygems upstream. " \
|
||||||
"Please find out which OS package this file belongs to and follow the guidelines from your OS to report " \
|
"Please find out which OS package this file belongs to and follow the guidelines from your OS to report " \
|
||||||
"the problem and ask for help."
|
"the problem and ask for help."
|
||||||
|
|
|
@ -8,8 +8,9 @@ class Gem::Commands::EnvironmentCommand < Gem::Command
|
||||||
|
|
||||||
def arguments # :nodoc:
|
def arguments # :nodoc:
|
||||||
args = <<-EOF
|
args = <<-EOF
|
||||||
gemdir display the path where gems are installed
|
home display the path where gems are installed. Aliases: gemhome, gemdir, GEM_HOME
|
||||||
gempath display path used to search for gems
|
path display path used to search for gems. Aliases: gempath, GEM_PATH
|
||||||
|
user_gemhome display the path where gems are installed when `--user-install` is given. Aliases: user_gemdir
|
||||||
version display the gem format version
|
version display the gem format version
|
||||||
remotesources display the remote gem servers
|
remotesources display the remote gem servers
|
||||||
platform display the supported gem platforms
|
platform display the supported gem platforms
|
||||||
|
@ -80,6 +81,8 @@ lib/rubygems/defaults/operating_system.rb
|
||||||
Gem.dir
|
Gem.dir
|
||||||
when /^gempath/, /^path/, /^GEM_PATH/ then
|
when /^gempath/, /^path/, /^GEM_PATH/ then
|
||||||
Gem.path.join(File::PATH_SEPARATOR)
|
Gem.path.join(File::PATH_SEPARATOR)
|
||||||
|
when /^user_gemdir/, /^user_gemhome/ then
|
||||||
|
Gem.user_dir
|
||||||
when /^remotesources/ then
|
when /^remotesources/ then
|
||||||
Gem.sources.to_a.join("\n")
|
Gem.sources.to_a.join("\n")
|
||||||
when /^platform/ then
|
when /^platform/ then
|
||||||
|
|
|
@ -17,7 +17,7 @@ class Gem::Ext::Builder
|
||||||
$1.downcase
|
$1.downcase
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.make(dest_path, results, make_dir = Dir.pwd)
|
def self.make(dest_path, results, make_dir = Dir.pwd, sitedir = nil)
|
||||||
unless File.exist? File.join(make_dir, 'Makefile')
|
unless File.exist? File.join(make_dir, 'Makefile')
|
||||||
raise Gem::InstallError, 'Makefile not found'
|
raise Gem::InstallError, 'Makefile not found'
|
||||||
end
|
end
|
||||||
|
@ -33,11 +33,18 @@ class Gem::Ext::Builder
|
||||||
# The installation of the bundled gems is failed when DESTDIR is empty in mswin platform.
|
# The installation of the bundled gems is failed when DESTDIR is empty in mswin platform.
|
||||||
destdir = (/\bnmake/i !~ make_program_name || ENV['DESTDIR'] && ENV['DESTDIR'] != "") ? 'DESTDIR=%s' % ENV['DESTDIR'] : ''
|
destdir = (/\bnmake/i !~ make_program_name || ENV['DESTDIR'] && ENV['DESTDIR'] != "") ? 'DESTDIR=%s' % ENV['DESTDIR'] : ''
|
||||||
|
|
||||||
|
env = [destdir]
|
||||||
|
|
||||||
|
if sitedir
|
||||||
|
env << 'sitearchdir=%s' % sitedir
|
||||||
|
env << 'sitelibdir=%s' % sitedir
|
||||||
|
end
|
||||||
|
|
||||||
['clean', '', 'install'].each do |target|
|
['clean', '', 'install'].each do |target|
|
||||||
# Pass DESTDIR via command line to override what's in MAKEFLAGS
|
# Pass DESTDIR via command line to override what's in MAKEFLAGS
|
||||||
cmd = [
|
cmd = [
|
||||||
*make_program,
|
*make_program,
|
||||||
destdir,
|
*env,
|
||||||
target,
|
target,
|
||||||
].reject(&:empty?)
|
].reject(&:empty?)
|
||||||
begin
|
begin
|
||||||
|
|
|
@ -268,20 +268,14 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder
|
||||||
tmp_dest = Dir.mktmpdir(".gem.", extension_dir)
|
tmp_dest = Dir.mktmpdir(".gem.", extension_dir)
|
||||||
|
|
||||||
# Some versions of `mktmpdir` return absolute paths, which will break make
|
# Some versions of `mktmpdir` return absolute paths, which will break make
|
||||||
# if the paths contain spaces. However, on Ruby 1.9.x on Windows, relative
|
# if the paths contain spaces.
|
||||||
# paths cause all C extension builds to fail.
|
|
||||||
#
|
#
|
||||||
# As such, we convert to a relative path unless we are using Ruby 1.9.x on
|
# As such, we convert to a relative path.
|
||||||
# Windows. This means that when using Ruby 1.9.x on Windows, paths with
|
|
||||||
# spaces do not work.
|
|
||||||
#
|
|
||||||
# Details: https://github.com/rubygems/rubygems/issues/977#issuecomment-171544940
|
|
||||||
tmp_dest_relative = get_relative_path(tmp_dest.clone, extension_dir)
|
tmp_dest_relative = get_relative_path(tmp_dest.clone, extension_dir)
|
||||||
|
|
||||||
if tmp_dest_relative
|
|
||||||
full_tmp_dest = File.join(extension_dir, tmp_dest_relative)
|
full_tmp_dest = File.join(extension_dir, tmp_dest_relative)
|
||||||
|
|
||||||
# TODO: remove in RubyGems 3
|
# TODO: remove in RubyGems 4
|
||||||
if Gem.install_extension_in_lib && lib_dir
|
if Gem.install_extension_in_lib && lib_dir
|
||||||
FileUtils.mkdir_p lib_dir
|
FileUtils.mkdir_p lib_dir
|
||||||
FileUtils.cp_r ext_path, lib_dir, remove_destination: true
|
FileUtils.cp_r ext_path, lib_dir, remove_destination: true
|
||||||
|
@ -291,7 +285,6 @@ class Gem::Ext::CargoBuilder < Gem::Ext::Builder
|
||||||
destent = ent.class.new(dest_path, ent.rel)
|
destent = ent.class.new(dest_path, ent.rel)
|
||||||
destent.exist? || FileUtils.mv(ent.path, destent.path)
|
destent.exist? || FileUtils.mv(ent.path, destent.path)
|
||||||
end
|
end
|
||||||
end
|
|
||||||
ensure
|
ensure
|
||||||
FileUtils.rm_rf tmp_dest if tmp_dest
|
FileUtils.rm_rf tmp_dest if tmp_dest
|
||||||
end
|
end
|
||||||
|
|
|
@ -13,37 +13,18 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
||||||
tmp_dest = Dir.mktmpdir(".gem.", extension_dir)
|
tmp_dest = Dir.mktmpdir(".gem.", extension_dir)
|
||||||
|
|
||||||
# Some versions of `mktmpdir` return absolute paths, which will break make
|
# Some versions of `mktmpdir` return absolute paths, which will break make
|
||||||
# if the paths contain spaces. However, on Ruby 1.9.x on Windows, relative
|
# if the paths contain spaces.
|
||||||
# paths cause all C extension builds to fail.
|
|
||||||
#
|
#
|
||||||
# As such, we convert to a relative path unless we are using Ruby 1.9.x on
|
# As such, we convert to a relative path.
|
||||||
# Windows. This means that when using Ruby 1.9.x on Windows, paths with
|
|
||||||
# spaces do not work.
|
|
||||||
#
|
|
||||||
# Details: https://github.com/rubygems/rubygems/issues/977#issuecomment-171544940
|
|
||||||
tmp_dest_relative = get_relative_path(tmp_dest.clone, extension_dir)
|
tmp_dest_relative = get_relative_path(tmp_dest.clone, extension_dir)
|
||||||
|
|
||||||
Tempfile.open %w[siteconf .rb], extension_dir do |siteconf|
|
|
||||||
siteconf.puts "require 'rbconfig'"
|
|
||||||
siteconf.puts "dest_path = #{tmp_dest_relative.dump}"
|
|
||||||
%w[sitearchdir sitelibdir].each do |dir|
|
|
||||||
siteconf.puts "RbConfig::MAKEFILE_CONFIG['#{dir}'] = dest_path"
|
|
||||||
siteconf.puts "RbConfig::CONFIG['#{dir}'] = dest_path"
|
|
||||||
end
|
|
||||||
|
|
||||||
siteconf.close
|
|
||||||
|
|
||||||
destdir = ENV["DESTDIR"]
|
destdir = ENV["DESTDIR"]
|
||||||
|
|
||||||
begin
|
begin
|
||||||
# workaround for https://github.com/oracle/truffleruby/issues/2115
|
|
||||||
siteconf_path = RUBY_ENGINE == "truffleruby" ? siteconf.path.dup : siteconf.path
|
|
||||||
require "shellwords"
|
require "shellwords"
|
||||||
cmd = Gem.ruby.shellsplit << "-I" << File.expand_path('../..', __dir__) <<
|
cmd = Gem.ruby.shellsplit << "-I" << File.expand_path('../..', __dir__) << File.basename(extension)
|
||||||
"-r" << get_relative_path(siteconf_path, extension_dir) << File.basename(extension)
|
|
||||||
cmd.push(*args)
|
cmd.push(*args)
|
||||||
|
|
||||||
begin
|
|
||||||
run(cmd, results, class_name, extension_dir) do |s, r|
|
run(cmd, results, class_name, extension_dir) do |s, r|
|
||||||
mkmf_log = File.join(extension_dir, 'mkmf.log')
|
mkmf_log = File.join(extension_dir, 'mkmf.log')
|
||||||
if File.exist? mkmf_log
|
if File.exist? mkmf_log
|
||||||
|
@ -55,17 +36,14 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
||||||
FileUtils.mv mkmf_log, dest_path
|
FileUtils.mv mkmf_log, dest_path
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
siteconf.unlink
|
|
||||||
end
|
|
||||||
|
|
||||||
ENV["DESTDIR"] = nil
|
ENV["DESTDIR"] = nil
|
||||||
|
|
||||||
make dest_path, results, extension_dir
|
make dest_path, results, extension_dir, tmp_dest_relative
|
||||||
|
|
||||||
if tmp_dest_relative
|
|
||||||
full_tmp_dest = File.join(extension_dir, tmp_dest_relative)
|
full_tmp_dest = File.join(extension_dir, tmp_dest_relative)
|
||||||
|
|
||||||
# TODO remove in RubyGems 3
|
# TODO remove in RubyGems 4
|
||||||
if Gem.install_extension_in_lib and lib_dir
|
if Gem.install_extension_in_lib and lib_dir
|
||||||
FileUtils.mkdir_p lib_dir
|
FileUtils.mkdir_p lib_dir
|
||||||
entries = Dir.entries(full_tmp_dest) - %w[. ..]
|
entries = Dir.entries(full_tmp_dest) - %w[. ..]
|
||||||
|
@ -77,11 +55,8 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
||||||
destent = ent.class.new(dest_path, ent.rel)
|
destent = ent.class.new(dest_path, ent.rel)
|
||||||
destent.exist? or FileUtils.mv(ent.path, destent.path)
|
destent.exist? or FileUtils.mv(ent.path, destent.path)
|
||||||
end
|
end
|
||||||
end
|
|
||||||
ensure
|
ensure
|
||||||
ENV["DESTDIR"] = destdir
|
ENV["DESTDIR"] = destdir
|
||||||
siteconf.close!
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
results
|
results
|
||||||
|
|
|
@ -401,6 +401,8 @@ class Gem::Indexer
|
||||||
|
|
||||||
File.utime newest_mtime, newest_mtime, dst_name
|
File.utime newest_mtime, newest_mtime, dst_name
|
||||||
end
|
end
|
||||||
|
ensure
|
||||||
|
FileUtils.rm_rf @directory
|
||||||
end
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
|
|
|
@ -136,7 +136,7 @@ RSpec.describe Bundler::Definition do
|
||||||
only_java (1.1-java)
|
only_java (1.1-java)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
#{lockfile_platforms_for(["java"] + local_platforms)}
|
#{lockfile_platforms_for(["java", specific_local_platform])}
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
only_java
|
only_java
|
||||||
|
|
|
@ -104,7 +104,6 @@ RSpec.describe Bundler, "friendly errors" do
|
||||||
expect(Bundler.ui).to receive(:error).with(error.message, :wrap => true)
|
expect(Bundler.ui).to receive(:error).with(error.message, :wrap => true)
|
||||||
Bundler::FriendlyErrors.log_error(error)
|
Bundler::FriendlyErrors.log_error(error)
|
||||||
end
|
end
|
||||||
it_behaves_like "Bundler.ui receive trace", Bundler::BundlerError.new
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context "Thor::Error" do
|
context "Thor::Error" do
|
||||||
|
|
|
@ -792,7 +792,7 @@ RSpec.describe "bundle clean" do
|
||||||
should_not_have_gems "foo-1.0"
|
should_not_have_gems "foo-1.0"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't remove extensions artifacts from bundled git gems after clean", :ruby_repo do
|
it "doesn't remove extensions artifacts from bundled git gems after clean" do
|
||||||
build_git "very_simple_git_binary", &:add_c_extension
|
build_git "very_simple_git_binary", &:add_c_extension
|
||||||
|
|
||||||
revision = revision_for(lib_path("very_simple_git_binary-1.0"))
|
revision = revision_for(lib_path("very_simple_git_binary-1.0"))
|
||||||
|
@ -815,7 +815,7 @@ RSpec.describe "bundle clean" do
|
||||||
expect(vendored_gems("bundler/gems/very_simple_git_binary-1.0-#{revision[0..11]}")).to exist
|
expect(vendored_gems("bundler/gems/very_simple_git_binary-1.0-#{revision[0..11]}")).to exist
|
||||||
end
|
end
|
||||||
|
|
||||||
it "removes extension directories", :ruby_repo do
|
it "removes extension directories" do
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
|
|
||||||
|
@ -851,7 +851,7 @@ RSpec.describe "bundle clean" do
|
||||||
expect(simple_binary_extensions_dir).to exist
|
expect(simple_binary_extensions_dir).to exist
|
||||||
end
|
end
|
||||||
|
|
||||||
it "removes git extension directories", :ruby_repo do
|
it "removes git extension directories" do
|
||||||
build_git "very_simple_git_binary", &:add_c_extension
|
build_git "very_simple_git_binary", &:add_c_extension
|
||||||
|
|
||||||
revision = revision_for(lib_path("very_simple_git_binary-1.0"))
|
revision = revision_for(lib_path("very_simple_git_binary-1.0"))
|
||||||
|
|
|
@ -217,7 +217,7 @@ RSpec.describe "bundle lock" do
|
||||||
|
|
||||||
allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app_gemfile)
|
allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app_gemfile)
|
||||||
lockfile = Bundler::LockfileParser.new(read_lockfile)
|
lockfile = Bundler::LockfileParser.new(read_lockfile)
|
||||||
expect(lockfile.platforms).to match_array(local_platforms.unshift(java, mingw).uniq)
|
expect(lockfile.platforms).to match_array([java, mingw, specific_local_platform].uniq)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "supports adding new platforms with force_ruby_platform = true" do
|
it "supports adding new platforms with force_ruby_platform = true" do
|
||||||
|
@ -249,7 +249,7 @@ RSpec.describe "bundle lock" do
|
||||||
|
|
||||||
allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app_gemfile)
|
allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app_gemfile)
|
||||||
lockfile = Bundler::LockfileParser.new(read_lockfile)
|
lockfile = Bundler::LockfileParser.new(read_lockfile)
|
||||||
expect(lockfile.platforms).to match_array(local_platforms.unshift("ruby").uniq)
|
expect(lockfile.platforms).to match_array(["ruby", specific_local_platform].uniq)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "warns when adding an unknown platform" do
|
it "warns when adding an unknown platform" do
|
||||||
|
@ -262,16 +262,16 @@ RSpec.describe "bundle lock" do
|
||||||
|
|
||||||
allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app_gemfile)
|
allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app_gemfile)
|
||||||
lockfile = Bundler::LockfileParser.new(read_lockfile)
|
lockfile = Bundler::LockfileParser.new(read_lockfile)
|
||||||
expect(lockfile.platforms).to match_array(local_platforms.unshift(java, mingw).uniq)
|
expect(lockfile.platforms).to match_array([java, mingw, specific_local_platform].uniq)
|
||||||
|
|
||||||
bundle "lock --remove-platform java"
|
bundle "lock --remove-platform java"
|
||||||
|
|
||||||
lockfile = Bundler::LockfileParser.new(read_lockfile)
|
lockfile = Bundler::LockfileParser.new(read_lockfile)
|
||||||
expect(lockfile.platforms).to match_array(local_platforms.unshift(mingw).uniq)
|
expect(lockfile.platforms).to match_array([mingw, specific_local_platform].uniq)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "errors when removing all platforms" do
|
it "errors when removing all platforms" do
|
||||||
bundle "lock --remove-platform #{local_platforms.join(" ")}", :raise_on_error => false
|
bundle "lock --remove-platform #{specific_local_platform}", :raise_on_error => false
|
||||||
expect(err).to include("Removing all platforms from the bundle is not allowed")
|
expect(err).to include("Removing all platforms from the bundle is not allowed")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -821,7 +821,7 @@ RSpec.describe "bundle outdated" do
|
||||||
expect(out).to end_with("Bundle up to date!")
|
expect(out).to end_with("Bundle up to date!")
|
||||||
end
|
end
|
||||||
|
|
||||||
it "reports that updates are available if the JRuby platform is used", :jruby do
|
it "reports that updates are available if the JRuby platform is used", :jruby_only do
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo2)}"
|
source "#{file_uri_for(gem_repo2)}"
|
||||||
gem "laduradura", '= 5.15.2', :platforms => [:ruby, :jruby]
|
gem "laduradura", '= 5.15.2', :platforms => [:ruby, :jruby]
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
require "bundler/vendored_fileutils"
|
require "bundler/vendored_fileutils"
|
||||||
|
|
||||||
RSpec.describe "bundle pristine", :ruby_repo do
|
RSpec.describe "bundle pristine" do
|
||||||
before :each do
|
before :each do
|
||||||
build_lib "baz", :path => bundled_app do |s|
|
build_lib "baz", :path => bundled_app do |s|
|
||||||
s.version = "1.0.0"
|
s.version = "1.0.0"
|
||||||
|
|
|
@ -8,6 +8,26 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
let(:x64_mingw_archs) do
|
||||||
|
if RUBY_PLATFORM == "x64-mingw-ucrt"
|
||||||
|
if Gem.rubygems_version >= Gem::Version.new("3.2.28")
|
||||||
|
["x64-mingw-ucrt", "x64-mingw32"]
|
||||||
|
else
|
||||||
|
["x64-mingw32", "x64-unknown"]
|
||||||
|
end
|
||||||
|
else
|
||||||
|
["x64-mingw32"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:x64_mingw_gems) do
|
||||||
|
x64_mingw_archs.map {|p| "platform_specific (1.0-#{p})" }.join("\n ")
|
||||||
|
end
|
||||||
|
|
||||||
|
let(:x64_mingw_platforms) do
|
||||||
|
x64_mingw_archs.join("\n ")
|
||||||
|
end
|
||||||
|
|
||||||
it "should install runtime and development dependencies" do
|
it "should install runtime and development dependencies" do
|
||||||
build_lib("foo", :path => tmp.join("foo")) do |s|
|
build_lib("foo", :path => tmp.join("foo")) do |s|
|
||||||
s.write("Gemfile", "source :rubygems\ngemspec")
|
s.write("Gemfile", "source :rubygems\ngemspec")
|
||||||
|
@ -168,7 +188,7 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
expect(out.scan(message).size).to eq(1)
|
expect(out.scan(message).size).to eq(1)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should match a lockfile on non-ruby platforms with a transitive platform dependency", :jruby do
|
it "should match a lockfile on non-ruby platforms with a transitive platform dependency", :jruby_only do
|
||||||
build_lib("foo", :path => tmp.join("foo")) do |s|
|
build_lib("foo", :path => tmp.join("foo")) do |s|
|
||||||
s.add_dependency "platform_specific"
|
s.add_dependency "platform_specific"
|
||||||
end
|
end
|
||||||
|
@ -328,12 +348,7 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
context "with a lockfile and some missing dependencies" do
|
context "with a lockfile and some missing dependencies" do
|
||||||
let(:source_uri) { "http://localgemserver.test" }
|
let(:source_uri) { "http://localgemserver.test" }
|
||||||
|
|
||||||
context "previously bundled for Ruby" do
|
|
||||||
let(:platform) { "ruby" }
|
|
||||||
|
|
||||||
before do
|
before do
|
||||||
skip "not installing for some reason" if Gem.win_platform?
|
|
||||||
|
|
||||||
build_lib("foo", :path => tmp.join("foo")) do |s|
|
build_lib("foo", :path => tmp.join("foo")) do |s|
|
||||||
s.add_dependency "rack", "=1.0.0"
|
s.add_dependency "rack", "=1.0.0"
|
||||||
end
|
end
|
||||||
|
@ -366,7 +381,7 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
L
|
L
|
||||||
end
|
end
|
||||||
|
|
||||||
context "using JRuby with explicit platform", :jruby do
|
context "using JRuby with explicit platform", :jruby_only do
|
||||||
before do
|
before do
|
||||||
create_file(
|
create_file(
|
||||||
tmp.join("foo", "foo-java.gemspec"),
|
tmp.join("foo", "foo-java.gemspec"),
|
||||||
|
@ -385,26 +400,13 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "using JRuby", :jruby do
|
it "should install", :jruby do
|
||||||
it "should install" do
|
|
||||||
results = bundle "install", :artifice => "endpoint"
|
results = bundle "install", :artifice => "endpoint"
|
||||||
expect(results).to include("Installing rack 1.0.0")
|
expect(results).to include("Installing rack 1.0.0")
|
||||||
expect(the_bundle).to include_gems "rack 1.0.0"
|
expect(the_bundle).to include_gems "rack 1.0.0"
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
context "using Windows" do
|
context "bundled for multiple platforms" do
|
||||||
it "should install" do
|
|
||||||
simulate_windows do
|
|
||||||
results = bundle "install", :artifice => "endpoint"
|
|
||||||
expect(results).to include("Installing rack 1.0.0")
|
|
||||||
expect(the_bundle).to include_gems "rack 1.0.0"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
context "bundled for ruby and jruby" do
|
|
||||||
let(:platform_specific_type) { :runtime }
|
let(:platform_specific_type) { :runtime }
|
||||||
let(:dependency) { "platform_specific" }
|
let(:dependency) { "platform_specific" }
|
||||||
before do
|
before do
|
||||||
|
@ -434,6 +436,7 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
|
|
||||||
simulate_new_machine
|
simulate_new_machine
|
||||||
simulate_platform("jruby") { bundle "install" }
|
simulate_platform("jruby") { bundle "install" }
|
||||||
|
simulate_platform(x64_mingw) { bundle "install" }
|
||||||
end
|
end
|
||||||
|
|
||||||
context "on ruby" do
|
context "on ruby" do
|
||||||
|
@ -443,7 +446,7 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
end
|
end
|
||||||
|
|
||||||
context "as a runtime dependency" do
|
context "as a runtime dependency" do
|
||||||
it "keeps java dependencies in the lockfile" do
|
it "keeps all platform dependencies in the lockfile" do
|
||||||
expect(the_bundle).to include_gems "foo 1.0", "platform_specific 1.0 RUBY"
|
expect(the_bundle).to include_gems "foo 1.0", "platform_specific 1.0 RUBY"
|
||||||
expect(lockfile).to eq strip_whitespace(<<-L)
|
expect(lockfile).to eq strip_whitespace(<<-L)
|
||||||
PATH
|
PATH
|
||||||
|
@ -457,10 +460,12 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
specs:
|
specs:
|
||||||
platform_specific (1.0)
|
platform_specific (1.0)
|
||||||
platform_specific (1.0-java)
|
platform_specific (1.0-java)
|
||||||
|
#{x64_mingw_gems}
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
java
|
java
|
||||||
ruby
|
ruby
|
||||||
|
#{x64_mingw_platforms}
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
foo!
|
foo!
|
||||||
|
@ -474,7 +479,7 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
context "as a development dependency" do
|
context "as a development dependency" do
|
||||||
let(:platform_specific_type) { :development }
|
let(:platform_specific_type) { :development }
|
||||||
|
|
||||||
it "keeps java dependencies in the lockfile" do
|
it "keeps all platform dependencies in the lockfile" do
|
||||||
expect(the_bundle).to include_gems "foo 1.0", "platform_specific 1.0 RUBY"
|
expect(the_bundle).to include_gems "foo 1.0", "platform_specific 1.0 RUBY"
|
||||||
expect(lockfile).to eq strip_whitespace(<<-L)
|
expect(lockfile).to eq strip_whitespace(<<-L)
|
||||||
PATH
|
PATH
|
||||||
|
@ -487,10 +492,12 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
specs:
|
specs:
|
||||||
platform_specific (1.0)
|
platform_specific (1.0)
|
||||||
platform_specific (1.0-java)
|
platform_specific (1.0-java)
|
||||||
|
#{x64_mingw_gems}
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
java
|
java
|
||||||
ruby
|
ruby
|
||||||
|
#{x64_mingw_platforms}
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
foo!
|
foo!
|
||||||
|
@ -506,7 +513,7 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
let(:platform_specific_type) { :development }
|
let(:platform_specific_type) { :development }
|
||||||
let(:dependency) { "indirect_platform_specific" }
|
let(:dependency) { "indirect_platform_specific" }
|
||||||
|
|
||||||
it "keeps java dependencies in the lockfile" do
|
it "keeps all platform dependencies in the lockfile" do
|
||||||
expect(the_bundle).to include_gems "foo 1.0", "indirect_platform_specific 1.0", "platform_specific 1.0 RUBY"
|
expect(the_bundle).to include_gems "foo 1.0", "indirect_platform_specific 1.0", "platform_specific 1.0 RUBY"
|
||||||
expect(lockfile).to eq strip_whitespace(<<-L)
|
expect(lockfile).to eq strip_whitespace(<<-L)
|
||||||
PATH
|
PATH
|
||||||
|
@ -521,10 +528,12 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
platform_specific
|
platform_specific
|
||||||
platform_specific (1.0)
|
platform_specific (1.0)
|
||||||
platform_specific (1.0-java)
|
platform_specific (1.0-java)
|
||||||
|
#{x64_mingw_gems}
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
java
|
java
|
||||||
ruby
|
ruby
|
||||||
|
#{x64_mingw_platforms}
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
foo!
|
foo!
|
||||||
|
@ -608,7 +617,7 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
x64-mingw32
|
#{x64_mingw_platforms}
|
||||||
x86-mingw32
|
x86-mingw32
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
|
@ -665,7 +674,7 @@ RSpec.describe "bundle install from an existing gemspec" do
|
||||||
railties (6.1.4)
|
railties (6.1.4)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
#{lockfile_platforms_for(["java"] + local_platforms)}
|
#{lockfile_platforms_for(["java", specific_local_platform])}
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
activeadmin!
|
activeadmin!
|
||||||
|
|
|
@ -92,7 +92,7 @@ RSpec.describe "bundle install with git sources" do
|
||||||
expect(err).to include("The source contains the following gems matching 'foo':\n * foo-1.0")
|
expect(err).to include("The source contains the following gems matching 'foo':\n * foo-1.0")
|
||||||
end
|
end
|
||||||
|
|
||||||
it "complains with version and platform if pinned specs don't exist in the git repo", :jruby do
|
it "complains with version and platform if pinned specs don't exist in the git repo", :jruby_only do
|
||||||
build_git "only_java" do |s|
|
build_git "only_java" do |s|
|
||||||
s.platform = "java"
|
s.platform = "java"
|
||||||
end
|
end
|
||||||
|
@ -107,7 +107,7 @@ RSpec.describe "bundle install with git sources" do
|
||||||
expect(err).to include("The source contains the following gems matching 'only_java':\n * only_java-1.0-java")
|
expect(err).to include("The source contains the following gems matching 'only_java':\n * only_java-1.0-java")
|
||||||
end
|
end
|
||||||
|
|
||||||
it "complains with multiple versions and platforms if pinned specs don't exist in the git repo", :jruby do
|
it "complains with multiple versions and platforms if pinned specs don't exist in the git repo", :jruby_only do
|
||||||
build_git "only_java", "1.0" do |s|
|
build_git "only_java", "1.0" do |s|
|
||||||
s.platform = "java"
|
s.platform = "java"
|
||||||
end
|
end
|
||||||
|
@ -1206,11 +1206,12 @@ RSpec.describe "bundle install with git sources" do
|
||||||
expect(out).to include(Pathname.glob(default_bundle_path("bundler/gems/extensions/**/foo-1.0-*")).first.to_s)
|
expect(out).to include(Pathname.glob(default_bundle_path("bundler/gems/extensions/**/foo-1.0-*")).first.to_s)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does not use old extension after ref changes", :ruby_repo do
|
it "does not use old extension after ref changes" do
|
||||||
git_reader = build_git "foo", :no_default => true do |s|
|
git_reader = build_git "foo", :no_default => true do |s|
|
||||||
s.extensions = ["ext/extconf.rb"]
|
s.extensions = ["ext/extconf.rb"]
|
||||||
s.write "ext/extconf.rb", <<-RUBY
|
s.write "ext/extconf.rb", <<-RUBY
|
||||||
require "mkmf"
|
require "mkmf"
|
||||||
|
$extout = "$(topdir)/" + RbConfig::CONFIG["EXTOUT"] unless RUBY_VERSION < "2.4"
|
||||||
create_makefile("foo")
|
create_makefile("foo")
|
||||||
RUBY
|
RUBY
|
||||||
s.write "ext/foo.c", "void Init_foo() {}"
|
s.write "ext/foo.c", "void Init_foo() {}"
|
||||||
|
|
|
@ -50,7 +50,7 @@ RSpec.describe "bundle install across platforms" do
|
||||||
expect(the_bundle).to include_gems "platform_specific 1.0 JAVA"
|
expect(the_bundle).to include_gems "platform_specific 1.0 JAVA"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "pulls the pure ruby version on jruby if the java platform is not present in the lockfile and bundler is run in frozen mode", :jruby do
|
it "pulls the pure ruby version on jruby if the java platform is not present in the lockfile and bundler is run in frozen mode", :jruby_only do
|
||||||
lockfile <<-G
|
lockfile <<-G
|
||||||
GEM
|
GEM
|
||||||
remote: #{file_uri_for(gem_repo1)}
|
remote: #{file_uri_for(gem_repo1)}
|
||||||
|
@ -332,8 +332,6 @@ end
|
||||||
|
|
||||||
RSpec.describe "bundle install with platform conditionals" do
|
RSpec.describe "bundle install with platform conditionals" do
|
||||||
it "installs gems tagged w/ the current platforms" do
|
it "installs gems tagged w/ the current platforms" do
|
||||||
skip "platform issues" if Gem.win_platform?
|
|
||||||
|
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
|
|
||||||
|
@ -402,8 +400,6 @@ RSpec.describe "bundle install with platform conditionals" do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "installs gems tagged w/ the current platforms inline" do
|
it "installs gems tagged w/ the current platforms inline" do
|
||||||
skip "platform issues" if Gem.win_platform?
|
|
||||||
|
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "nokogiri", :platforms => :#{local_tag}
|
gem "nokogiri", :platforms => :#{local_tag}
|
||||||
|
@ -422,8 +418,6 @@ RSpec.describe "bundle install with platform conditionals" do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "installs gems tagged w/ the current platform inline" do
|
it "installs gems tagged w/ the current platform inline" do
|
||||||
skip "platform issues" if Gem.win_platform?
|
|
||||||
|
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "nokogiri", :platform => :#{local_tag}
|
gem "nokogiri", :platform => :#{local_tag}
|
||||||
|
|
|
@ -250,10 +250,11 @@ RSpec.describe "bundle install with specific platforms" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
it "installs sorbet-static, which does not provide a pure ruby variant, just fine on truffleruby", :truffleruby do
|
it "installs sorbet-static, which does not provide a pure ruby variant, just fine", :truffleruby do
|
||||||
|
skip "does not apply to Windows" if Gem.win_platform?
|
||||||
|
|
||||||
build_repo2 do
|
build_repo2 do
|
||||||
build_gem("sorbet-static", "0.5.6403") {|s| s.platform = "x86_64-linux" }
|
build_gem("sorbet-static", "0.5.6403") {|s| s.platform = Bundler.local_platform }
|
||||||
build_gem("sorbet-static", "0.5.6403") {|s| s.platform = "universal-darwin-20" }
|
|
||||||
end
|
end
|
||||||
|
|
||||||
gemfile <<~G
|
gemfile <<~G
|
||||||
|
@ -266,8 +267,7 @@ RSpec.describe "bundle install with specific platforms" do
|
||||||
GEM
|
GEM
|
||||||
remote: #{file_uri_for(gem_repo2)}/
|
remote: #{file_uri_for(gem_repo2)}/
|
||||||
specs:
|
specs:
|
||||||
sorbet-static (0.5.6403-universal-darwin-20)
|
sorbet-static (0.5.6403-#{Bundler.local_platform})
|
||||||
sorbet-static (0.5.6403-x86_64-linux)
|
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
ruby
|
ruby
|
||||||
|
@ -283,54 +283,95 @@ RSpec.describe "bundle install with specific platforms" do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does not resolve if the current platform does not match any of available platform specific variants for a top level dependency" do
|
it "does not resolve if the current platform does not match any of available platform specific variants for a top level dependency" do
|
||||||
build_repo2 do
|
build_repo4 do
|
||||||
build_gem("sorbet-static", "0.5.6433") {|s| s.platform = "x86_64-linux" }
|
build_gem("sorbet-static", "0.5.6433") {|s| s.platform = "x86_64-linux" }
|
||||||
build_gem("sorbet-static", "0.5.6433") {|s| s.platform = "universal-darwin-20" }
|
build_gem("sorbet-static", "0.5.6433") {|s| s.platform = "universal-darwin-20" }
|
||||||
end
|
end
|
||||||
|
|
||||||
gemfile <<~G
|
gemfile <<~G
|
||||||
source "#{file_uri_for(gem_repo2)}"
|
source "#{file_uri_for(gem_repo4)}"
|
||||||
|
|
||||||
gem "sorbet-static", "0.5.6433"
|
gem "sorbet-static", "0.5.6433"
|
||||||
G
|
G
|
||||||
|
|
||||||
simulate_platform "arm64-darwin-21" do
|
error_message = <<~ERROR.strip
|
||||||
bundle "install", :raise_on_error => false
|
Could not find gem 'sorbet-static (= 0.5.6433)' with platform 'arm64-darwin-21' in rubygems repository #{file_uri_for(gem_repo4)}/ or installed locally.
|
||||||
end
|
|
||||||
|
|
||||||
expect(err).to include <<~ERROR.rstrip
|
|
||||||
Could not find gem 'sorbet-static (= 0.5.6433) arm64-darwin-21' in rubygems repository #{file_uri_for(gem_repo2)}/ or installed locally.
|
|
||||||
|
|
||||||
The source contains the following gems matching 'sorbet-static (= 0.5.6433)':
|
The source contains the following gems matching 'sorbet-static (= 0.5.6433)':
|
||||||
* sorbet-static-0.5.6433-universal-darwin-20
|
* sorbet-static-0.5.6433-universal-darwin-20
|
||||||
* sorbet-static-0.5.6433-x86_64-linux
|
* sorbet-static-0.5.6433-x86_64-linux
|
||||||
ERROR
|
ERROR
|
||||||
|
|
||||||
|
simulate_platform "arm64-darwin-21" do
|
||||||
|
bundle "lock", :raise_on_error => false
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(err).to include(error_message).once
|
||||||
|
|
||||||
|
# Make sure it doesn't print error twice in verbose mode
|
||||||
|
|
||||||
|
simulate_platform "arm64-darwin-21" do
|
||||||
|
bundle "lock --verbose", :raise_on_error => false
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(err).to include(error_message).once
|
||||||
end
|
end
|
||||||
|
|
||||||
it "does not resolve if the current platform does not match any of available platform specific variants for a transitive dependency" do
|
it "does not resolve if the current platform does not match any of available platform specific variants for a transitive dependency" do
|
||||||
build_repo2 do
|
build_repo4 do
|
||||||
build_gem("sorbet", "0.5.6433") {|s| s.add_dependency "sorbet-static", "= 0.5.6433" }
|
build_gem("sorbet", "0.5.6433") {|s| s.add_dependency "sorbet-static", "= 0.5.6433" }
|
||||||
build_gem("sorbet-static", "0.5.6433") {|s| s.platform = "x86_64-linux" }
|
build_gem("sorbet-static", "0.5.6433") {|s| s.platform = "x86_64-linux" }
|
||||||
build_gem("sorbet-static", "0.5.6433") {|s| s.platform = "universal-darwin-20" }
|
build_gem("sorbet-static", "0.5.6433") {|s| s.platform = "universal-darwin-20" }
|
||||||
end
|
end
|
||||||
|
|
||||||
gemfile <<~G
|
gemfile <<~G
|
||||||
source "#{file_uri_for(gem_repo2)}"
|
source "#{file_uri_for(gem_repo4)}"
|
||||||
|
|
||||||
gem "sorbet", "0.5.6433"
|
gem "sorbet", "0.5.6433"
|
||||||
G
|
G
|
||||||
|
|
||||||
simulate_platform "arm64-darwin-21" do
|
error_message = <<~ERROR.strip
|
||||||
bundle "install", :raise_on_error => false
|
Could not find gem 'sorbet-static (= 0.5.6433)' with platform 'arm64-darwin-21', which is required by gem 'sorbet (= 0.5.6433)', in rubygems repository #{file_uri_for(gem_repo4)}/ or installed locally.
|
||||||
end
|
|
||||||
|
|
||||||
expect(err).to include <<~ERROR.rstrip
|
|
||||||
Could not find gem 'sorbet-static (= 0.5.6433) arm64-darwin-21', which is required by gem 'sorbet (= 0.5.6433)', in rubygems repository #{file_uri_for(gem_repo2)}/ or installed locally.
|
|
||||||
|
|
||||||
The source contains the following gems matching 'sorbet-static (= 0.5.6433)':
|
The source contains the following gems matching 'sorbet-static (= 0.5.6433)':
|
||||||
* sorbet-static-0.5.6433-universal-darwin-20
|
* sorbet-static-0.5.6433-universal-darwin-20
|
||||||
* sorbet-static-0.5.6433-x86_64-linux
|
* sorbet-static-0.5.6433-x86_64-linux
|
||||||
ERROR
|
ERROR
|
||||||
|
|
||||||
|
simulate_platform "arm64-darwin-21" do
|
||||||
|
bundle "lock", :raise_on_error => false
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(err).to include(error_message).once
|
||||||
|
|
||||||
|
# Make sure it doesn't print error twice in verbose mode
|
||||||
|
|
||||||
|
simulate_platform "arm64-darwin-21" do
|
||||||
|
bundle "lock --verbose", :raise_on_error => false
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(err).to include(error_message).once
|
||||||
|
end
|
||||||
|
|
||||||
|
it "does not generate a lockfile if RUBY platform is forced and some gem has no RUBY variant available" do
|
||||||
|
build_repo4 do
|
||||||
|
build_gem("sorbet-static", "0.5.9889") {|s| s.platform = Gem::Platform.local }
|
||||||
|
end
|
||||||
|
|
||||||
|
gemfile <<~G
|
||||||
|
source "#{file_uri_for(gem_repo4)}"
|
||||||
|
|
||||||
|
gem "sorbet-static", "0.5.9889"
|
||||||
|
G
|
||||||
|
|
||||||
|
bundle "lock", :raise_on_error => false, :env => { "BUNDLE_FORCE_RUBY_PLATFORM" => "true" }
|
||||||
|
|
||||||
|
expect(err).to include <<~ERROR.rstrip
|
||||||
|
Could not find gem 'sorbet-static (= 0.5.9889)' with platform 'ruby' in rubygems repository #{file_uri_for(gem_repo4)}/ or installed locally.
|
||||||
|
|
||||||
|
The source contains the following gems matching 'sorbet-static (= 0.5.9889)':
|
||||||
|
* sorbet-static-0.5.9889-#{Gem::Platform.local}
|
||||||
|
ERROR
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
|
@ -66,7 +66,7 @@ RSpec.describe "bundle install" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context "with engine specified in symbol", :jruby do
|
context "with engine specified in symbol", :jruby_only do
|
||||||
it "does not raise any error parsing Gemfile" do
|
it "does not raise any error parsing Gemfile" do
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
RSpec.describe "installing a gem with native extensions", :ruby_repo do
|
RSpec.describe "installing a gem with native extensions" do
|
||||||
it "installs" do
|
it "installs" do
|
||||||
build_repo2 do
|
build_repo2 do
|
||||||
build_gem "c_extension" do |s|
|
build_gem "c_extension" do |s|
|
||||||
s.extensions = ["ext/extconf.rb"]
|
s.extensions = ["ext/extconf.rb"]
|
||||||
s.write "ext/extconf.rb", <<-E
|
s.write "ext/extconf.rb", <<-E
|
||||||
require "mkmf"
|
require "mkmf"
|
||||||
|
$extout = "$(topdir)/" + RbConfig::CONFIG["EXTOUT"] unless RUBY_VERSION < "2.4"
|
||||||
name = "c_extension_bundle"
|
name = "c_extension_bundle"
|
||||||
dir_config(name)
|
dir_config(name)
|
||||||
raise "OMG" unless with_config("c_extension") == "hello"
|
raise "OMG" unless with_config("c_extension") == "hello"
|
||||||
|
@ -51,6 +52,7 @@ RSpec.describe "installing a gem with native extensions", :ruby_repo do
|
||||||
s.extensions = ["ext/extconf.rb"]
|
s.extensions = ["ext/extconf.rb"]
|
||||||
s.write "ext/extconf.rb", <<-E
|
s.write "ext/extconf.rb", <<-E
|
||||||
require "mkmf"
|
require "mkmf"
|
||||||
|
$extout = "$(topdir)/" + RbConfig::CONFIG["EXTOUT"] unless RUBY_VERSION < "2.4"
|
||||||
name = "c_extension_bundle"
|
name = "c_extension_bundle"
|
||||||
dir_config(name)
|
dir_config(name)
|
||||||
raise "OMG" unless with_config("c_extension") == "hello"
|
raise "OMG" unless with_config("c_extension") == "hello"
|
||||||
|
@ -95,6 +97,7 @@ RSpec.describe "installing a gem with native extensions", :ruby_repo do
|
||||||
s.extensions = ["ext/extconf.rb"]
|
s.extensions = ["ext/extconf.rb"]
|
||||||
s.write "ext/extconf.rb", <<-E
|
s.write "ext/extconf.rb", <<-E
|
||||||
require "mkmf"
|
require "mkmf"
|
||||||
|
$extout = "$(topdir)/" + RbConfig::CONFIG["EXTOUT"] unless RUBY_VERSION < "2.4"
|
||||||
name = "c_extension_bundle_#{n}"
|
name = "c_extension_bundle_#{n}"
|
||||||
dir_config(name)
|
dir_config(name)
|
||||||
raise "OMG" unless with_config("c_extension_#{n}") == "#{n}"
|
raise "OMG" unless with_config("c_extension_#{n}") == "#{n}"
|
||||||
|
@ -147,6 +150,7 @@ RSpec.describe "installing a gem with native extensions", :ruby_repo do
|
||||||
s.extensions = ["ext/extconf.rb"]
|
s.extensions = ["ext/extconf.rb"]
|
||||||
s.write "ext/extconf.rb", <<-E
|
s.write "ext/extconf.rb", <<-E
|
||||||
require "mkmf"
|
require "mkmf"
|
||||||
|
$extout = "$(topdir)/" + RbConfig::CONFIG["EXTOUT"] unless RUBY_VERSION < "2.4"
|
||||||
name = "c_extension_bundle"
|
name = "c_extension_bundle"
|
||||||
dir_config(name)
|
dir_config(name)
|
||||||
raise "OMG" unless with_config("c_extension") == "hello" && with_config("c_extension_bundle-dir") == "hola"
|
raise "OMG" unless with_config("c_extension") == "hello" && with_config("c_extension_bundle-dir") == "hola"
|
||||||
|
|
|
@ -187,11 +187,7 @@ RSpec.describe "bundle install with install-time dependencies" do
|
||||||
|
|
||||||
bundle :install, :env => { "DEBUG_RESOLVER_TREE" => "1", "DEBUG" => "1" }
|
bundle :install, :env => { "DEBUG_RESOLVER_TREE" => "1", "DEBUG" => "1" }
|
||||||
|
|
||||||
activated_groups = if local_platforms.any?
|
activated_groups = "net_b (1.0) (ruby), net_b (1.0) (#{specific_local_platform})"
|
||||||
"net_b (1.0) (ruby), net_b (1.0) (#{local_platforms.join(", ")})"
|
|
||||||
else
|
|
||||||
"net_b (1.0) (ruby)"
|
|
||||||
end
|
|
||||||
|
|
||||||
expect(out).to include(" net_b").
|
expect(out).to include(" net_b").
|
||||||
and include("BUNDLER: Starting resolution").
|
and include("BUNDLER: Starting resolution").
|
||||||
|
|
|
@ -32,6 +32,21 @@ RSpec.shared_examples "bundle install --standalone" do
|
||||||
expect(out).to eq(expected_gems.values.join("\n"))
|
expect(out).to eq(expected_gems.values.join("\n"))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "makes the gems available without bundler nor rubygems" do
|
||||||
|
testrb = String.new <<-RUBY
|
||||||
|
$:.unshift File.expand_path("bundle")
|
||||||
|
require "bundler/setup"
|
||||||
|
|
||||||
|
RUBY
|
||||||
|
expected_gems.each do |k, _|
|
||||||
|
testrb << "\nrequire \"#{k}\""
|
||||||
|
testrb << "\nputs #{k.upcase}"
|
||||||
|
end
|
||||||
|
sys_exec %(#{Gem.ruby} --disable-gems -w -e #{testrb.shellescape})
|
||||||
|
|
||||||
|
expect(out).to eq(expected_gems.values.join("\n"))
|
||||||
|
end
|
||||||
|
|
||||||
it "makes the gems available without bundler via Kernel.require" do
|
it "makes the gems available without bundler via Kernel.require" do
|
||||||
testrb = String.new <<-RUBY
|
testrb = String.new <<-RUBY
|
||||||
$:.unshift File.expand_path("bundle")
|
$:.unshift File.expand_path("bundle")
|
||||||
|
@ -154,8 +169,8 @@ RSpec.shared_examples "bundle install --standalone" do
|
||||||
load_path_lines = bundled_app("bundle/bundler/setup.rb").read.split("\n").select {|line| line.start_with?("$:.unshift") }
|
load_path_lines = bundled_app("bundle/bundler/setup.rb").read.split("\n").select {|line| line.start_with?("$:.unshift") }
|
||||||
|
|
||||||
expect(load_path_lines).to eq [
|
expect(load_path_lines).to eq [
|
||||||
'$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}/gems/bar-1.0.0/lib")',
|
'$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/bar-1.0.0/lib")',
|
||||||
'$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}/gems/foo-1.0.0/lib")',
|
'$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/gems/foo-1.0.0/lib")',
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -190,7 +205,7 @@ RSpec.shared_examples "bundle install --standalone" do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "with gems with native extension", :ruby_repo do
|
describe "with gems with native extension" do
|
||||||
before do
|
before do
|
||||||
bundle "config set --local path #{bundled_app("bundle")}"
|
bundle "config set --local path #{bundled_app("bundle")}"
|
||||||
install_gemfile <<-G, :standalone => true, :dir => cwd
|
install_gemfile <<-G, :standalone => true, :dir => cwd
|
||||||
|
@ -201,9 +216,13 @@ RSpec.shared_examples "bundle install --standalone" do
|
||||||
|
|
||||||
it "generates a bundle/bundler/setup.rb with the proper paths" do
|
it "generates a bundle/bundler/setup.rb with the proper paths" do
|
||||||
expected_path = bundled_app("bundle/bundler/setup.rb")
|
expected_path = bundled_app("bundle/bundler/setup.rb")
|
||||||
extension_line = File.read(expected_path).each_line.find {|line| line.include? "/extensions/" }.strip
|
script_content = File.read(expected_path)
|
||||||
expect(extension_line).to start_with '$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{RbConfig::CONFIG["ruby_version"]}/extensions/'
|
expect(script_content).to include("def self.ruby_api_version")
|
||||||
expect(extension_line).to end_with '/very_simple_binary-1.0")'
|
expect(script_content).to include("def self.extension_api_version")
|
||||||
|
extension_line = script_content.each_line.find {|line| line.include? "/extensions/" }.strip
|
||||||
|
platform = Gem::Platform.local
|
||||||
|
expect(extension_line).to start_with '$:.unshift File.expand_path("#{__dir__}/../#{RUBY_ENGINE}/#{Gem.ruby_api_version}/extensions/'
|
||||||
|
expect(extension_line).to end_with platform.to_s + '/#{Gem.extension_api_version}/very_simple_binary-1.0")'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -205,7 +205,7 @@ RSpec.describe "global gem caching" do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "extension caching" do
|
describe "extension caching" do
|
||||||
it "works", :ruby_repo do
|
it "works" do
|
||||||
skip "gets incorrect ref in path" if Gem.win_platform?
|
skip "gets incorrect ref in path" if Gem.win_platform?
|
||||||
|
|
||||||
build_git "very_simple_git_binary", &:add_c_extension
|
build_git "very_simple_git_binary", &:add_c_extension
|
||||||
|
|
|
@ -176,7 +176,7 @@ RSpec.describe "bundle install" do
|
||||||
expect(the_bundle).to include_gems "rack 1.0.0"
|
expect(the_bundle).to include_gems "rack 1.0.0"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "re-installs gems whose extensions have been deleted", :ruby_repo do
|
it "re-installs gems whose extensions have been deleted" do
|
||||||
build_lib "very_simple_binary", "1.0.0", :to_system => true do |s|
|
build_lib "very_simple_binary", "1.0.0", :to_system => true do |s|
|
||||||
s.write "lib/very_simple_binary.rb", "raise 'FAIL'"
|
s.write "lib/very_simple_binary.rb", "raise 'FAIL'"
|
||||||
end
|
end
|
||||||
|
|
|
@ -982,7 +982,7 @@ RSpec.describe "the lockfile format" do
|
||||||
rack (1.0.0)
|
rack (1.0.0)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
#{lockfile_platforms_for(["java"] + local_platforms)}
|
#{lockfile_platforms_for(["java", specific_local_platform])}
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
rack
|
rack
|
||||||
|
|
|
@ -44,6 +44,10 @@ RSpec.describe "Bundler::GemHelpers#generic" do
|
||||||
expect(generic(pl("x64-mingw32"))).to eq(pl("x64-mingw32"))
|
expect(generic(pl("x64-mingw32"))).to eq(pl("x64-mingw32"))
|
||||||
expect(generic(pl("x86_64-mingw32"))).to eq(pl("x64-mingw32"))
|
expect(generic(pl("x86_64-mingw32"))).to eq(pl("x64-mingw32"))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "converts 64-bit mingw UCRT platform variants into x64-mingw-ucrt" do
|
||||||
|
expect(generic(pl("x64-mingw-ucrt"))).to eq(pl("x64-mingw-ucrt"))
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
RSpec.describe "Gem::SourceIndex#refresh!" do
|
RSpec.describe "Gem::SourceIndex#refresh!" do
|
||||||
|
|
|
@ -2,10 +2,6 @@
|
||||||
|
|
||||||
RSpec.describe "bundle platform" do
|
RSpec.describe "bundle platform" do
|
||||||
context "without flags" do
|
context "without flags" do
|
||||||
let(:bundle_platform_platforms_string) do
|
|
||||||
local_platforms.reverse.map {|pl| "* #{pl}" }.join("\n")
|
|
||||||
end
|
|
||||||
|
|
||||||
it "returns all the output" do
|
it "returns all the output" do
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
|
@ -20,7 +16,7 @@ RSpec.describe "bundle platform" do
|
||||||
Your platform is: #{Gem::Platform.local}
|
Your platform is: #{Gem::Platform.local}
|
||||||
|
|
||||||
Your app has gems that work on these platforms:
|
Your app has gems that work on these platforms:
|
||||||
#{bundle_platform_platforms_string}
|
* #{specific_local_platform}
|
||||||
|
|
||||||
Your Gemfile specifies a Ruby version requirement:
|
Your Gemfile specifies a Ruby version requirement:
|
||||||
* ruby #{RUBY_VERSION}
|
* ruby #{RUBY_VERSION}
|
||||||
|
@ -43,7 +39,7 @@ G
|
||||||
Your platform is: #{Gem::Platform.local}
|
Your platform is: #{Gem::Platform.local}
|
||||||
|
|
||||||
Your app has gems that work on these platforms:
|
Your app has gems that work on these platforms:
|
||||||
#{bundle_platform_platforms_string}
|
* #{specific_local_platform}
|
||||||
|
|
||||||
Your Gemfile specifies a Ruby version requirement:
|
Your Gemfile specifies a Ruby version requirement:
|
||||||
* ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}
|
* ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL}
|
||||||
|
@ -64,7 +60,7 @@ G
|
||||||
Your platform is: #{Gem::Platform.local}
|
Your platform is: #{Gem::Platform.local}
|
||||||
|
|
||||||
Your app has gems that work on these platforms:
|
Your app has gems that work on these platforms:
|
||||||
#{bundle_platform_platforms_string}
|
* #{specific_local_platform}
|
||||||
|
|
||||||
Your Gemfile does not specify a Ruby version requirement.
|
Your Gemfile does not specify a Ruby version requirement.
|
||||||
G
|
G
|
||||||
|
@ -84,7 +80,7 @@ G
|
||||||
Your platform is: #{Gem::Platform.local}
|
Your platform is: #{Gem::Platform.local}
|
||||||
|
|
||||||
Your app has gems that work on these platforms:
|
Your app has gems that work on these platforms:
|
||||||
#{bundle_platform_platforms_string}
|
* #{specific_local_platform}
|
||||||
|
|
||||||
Your Gemfile specifies a Ruby version requirement:
|
Your Gemfile specifies a Ruby version requirement:
|
||||||
* ruby #{not_local_ruby_version}
|
* ruby #{not_local_ruby_version}
|
||||||
|
@ -305,7 +301,7 @@ G
|
||||||
expect(bundled_app_lock).to exist
|
expect(bundled_app_lock).to exist
|
||||||
end
|
end
|
||||||
|
|
||||||
it "installs fine with any engine", :jruby do
|
it "installs fine with any engine", :jruby_only do
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "rack"
|
gem "rack"
|
||||||
|
@ -351,7 +347,7 @@ G
|
||||||
should_be_engine_incorrect
|
should_be_engine_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't install when engine version doesn't match", :jruby do
|
it "doesn't install when engine version doesn't match", :jruby_only do
|
||||||
install_gemfile <<-G, :raise_on_error => false
|
install_gemfile <<-G, :raise_on_error => false
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "rack"
|
gem "rack"
|
||||||
|
@ -394,7 +390,7 @@ G
|
||||||
expect(out).to match(/\AResolving dependencies\.\.\.\.*\nThe Gemfile's dependencies are satisfied\z/)
|
expect(out).to match(/\AResolving dependencies\.\.\.\.*\nThe Gemfile's dependencies are satisfied\z/)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "checks fine with any engine", :jruby do
|
it "checks fine with any engine", :jruby_only do
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "rack"
|
gem "rack"
|
||||||
|
@ -445,7 +441,7 @@ G
|
||||||
should_be_engine_incorrect
|
should_be_engine_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails when engine version doesn't match", :jruby do
|
it "fails when engine version doesn't match", :jruby_only do
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "rack"
|
gem "rack"
|
||||||
|
@ -511,7 +507,7 @@ G
|
||||||
expect(the_bundle).to include_gems "rack 1.2", "rack-obama 1.0", "activesupport 3.0"
|
expect(the_bundle).to include_gems "rack 1.2", "rack-obama 1.0", "activesupport 3.0"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "updates fine with any engine", :jruby do
|
it "updates fine with any engine", :jruby_only do
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo2)}"
|
source "#{file_uri_for(gem_repo2)}"
|
||||||
gem "activesupport"
|
gem "activesupport"
|
||||||
|
@ -547,7 +543,7 @@ G
|
||||||
should_be_ruby_version_incorrect
|
should_be_ruby_version_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails when ruby engine doesn't match", :jruby do
|
it "fails when ruby engine doesn't match", :jruby_only do
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo2)}"
|
source "#{file_uri_for(gem_repo2)}"
|
||||||
gem "activesupport"
|
gem "activesupport"
|
||||||
|
@ -563,7 +559,7 @@ G
|
||||||
should_be_engine_incorrect
|
should_be_engine_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails when ruby engine version doesn't match", :jruby do
|
it "fails when ruby engine version doesn't match", :jruby_only do
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo2)}"
|
source "#{file_uri_for(gem_repo2)}"
|
||||||
gem "activesupport"
|
gem "activesupport"
|
||||||
|
@ -615,7 +611,7 @@ G
|
||||||
expect(out).to eq(default_bundle_path("gems", "rails-2.3.2").to_s)
|
expect(out).to eq(default_bundle_path("gems", "rails-2.3.2").to_s)
|
||||||
end
|
end
|
||||||
|
|
||||||
it "prints path if ruby version is correct for any engine", :jruby do
|
it "prints path if ruby version is correct for any engine", :jruby_only do
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "rails"
|
gem "rails"
|
||||||
|
@ -651,7 +647,7 @@ G
|
||||||
should_be_engine_incorrect
|
should_be_engine_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails if engine version doesn't match", :bundler => "< 3", :jruby => true do
|
it "fails if engine version doesn't match", :bundler => "< 3", :jruby_only => true do
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "rails"
|
gem "rails"
|
||||||
|
@ -699,7 +695,7 @@ G
|
||||||
expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist
|
expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist
|
||||||
end
|
end
|
||||||
|
|
||||||
it "copies the .gem file to vendor/cache when ruby version matches for any engine", :jruby do
|
it "copies the .gem file to vendor/cache when ruby version matches for any engine", :jruby_only do
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem 'rack'
|
gem 'rack'
|
||||||
|
@ -735,7 +731,7 @@ G
|
||||||
should_be_engine_incorrect
|
should_be_engine_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails if the engine version doesn't match", :jruby do
|
it "fails if the engine version doesn't match", :jruby_only do
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem 'rack'
|
gem 'rack'
|
||||||
|
@ -780,7 +776,7 @@ G
|
||||||
expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist
|
expect(bundled_app("vendor/cache/rack-1.0.0.gem")).to exist
|
||||||
end
|
end
|
||||||
|
|
||||||
it "copies the .gem file to vendor/cache when ruby version matches any engine", :jruby do
|
it "copies the .gem file to vendor/cache when ruby version matches any engine", :jruby_only do
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem 'rack'
|
gem 'rack'
|
||||||
|
@ -816,7 +812,7 @@ G
|
||||||
should_be_engine_incorrect
|
should_be_engine_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails if the engine version doesn't match", :jruby do
|
it "fails if the engine version doesn't match", :jruby_only do
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem 'rack'
|
gem 'rack'
|
||||||
|
@ -859,7 +855,7 @@ G
|
||||||
expect(out).to include("0.9.1")
|
expect(out).to include("0.9.1")
|
||||||
end
|
end
|
||||||
|
|
||||||
it "activates the correct gem when ruby version matches any engine", :jruby do
|
it "activates the correct gem when ruby version matches any engine", :jruby_only do
|
||||||
system_gems "rack-1.0.0", "rack-0.9.1", :path => default_bundle_path
|
system_gems "rack-1.0.0", "rack-0.9.1", :path => default_bundle_path
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
|
@ -896,7 +892,7 @@ G
|
||||||
should_be_engine_incorrect
|
should_be_engine_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
# it "fails when the engine version doesn't match", :jruby do
|
# it "fails when the engine version doesn't match", :jruby_only do
|
||||||
# gemfile <<-G
|
# gemfile <<-G
|
||||||
# gem "rack", "0.9.1"
|
# gem "rack", "0.9.1"
|
||||||
#
|
#
|
||||||
|
@ -947,7 +943,7 @@ G
|
||||||
expect(out).to include("0.9.1")
|
expect(out).to include("0.9.1")
|
||||||
end
|
end
|
||||||
|
|
||||||
it "starts IRB with the default group loaded when ruby version matches", :readline, :jruby do
|
it "starts IRB with the default group loaded when ruby version matches", :readline, :jruby_only do
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "rack"
|
gem "rack"
|
||||||
|
@ -992,7 +988,7 @@ G
|
||||||
should_be_engine_incorrect
|
should_be_engine_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails when engine version doesn't match", :jruby do
|
it "fails when engine version doesn't match", :jruby_only do
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "rack"
|
gem "rack"
|
||||||
|
@ -1047,7 +1043,7 @@ G
|
||||||
expect(bundled_app_lock).to exist
|
expect(bundled_app_lock).to exist
|
||||||
end
|
end
|
||||||
|
|
||||||
it "makes a Gemfile.lock if setup succeeds for any engine", :jruby do
|
it "makes a Gemfile.lock if setup succeeds for any engine", :jruby_only do
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "yard"
|
gem "yard"
|
||||||
|
@ -1096,7 +1092,7 @@ G
|
||||||
should_be_engine_incorrect
|
should_be_engine_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails when engine version doesn't match", :jruby do
|
it "fails when engine version doesn't match", :jruby_only do
|
||||||
install_gemfile <<-G, :raise_on_error => false
|
install_gemfile <<-G, :raise_on_error => false
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "yard"
|
gem "yard"
|
||||||
|
@ -1169,7 +1165,7 @@ G
|
||||||
expect(out).to match(Regexp.new(expected_output))
|
expect(out).to match(Regexp.new(expected_output))
|
||||||
end
|
end
|
||||||
|
|
||||||
it "returns list of outdated gems when the ruby version matches for any engine", :jruby do
|
it "returns list of outdated gems when the ruby version matches for any engine", :jruby_only do
|
||||||
bundle :install
|
bundle :install
|
||||||
update_repo2 do
|
update_repo2 do
|
||||||
build_gem "activesupport", "3.0"
|
build_gem "activesupport", "3.0"
|
||||||
|
@ -1231,7 +1227,7 @@ G
|
||||||
should_be_engine_incorrect
|
should_be_engine_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails when the engine version doesn't match", :jruby do
|
it "fails when the engine version doesn't match", :jruby_only do
|
||||||
update_repo2 do
|
update_repo2 do
|
||||||
build_gem "activesupport", "3.0"
|
build_gem "activesupport", "3.0"
|
||||||
update_git "foo", :path => lib_path("foo")
|
update_git "foo", :path => lib_path("foo")
|
||||||
|
@ -1249,7 +1245,7 @@ G
|
||||||
should_be_engine_version_incorrect
|
should_be_engine_version_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails when the patchlevel doesn't match", :jruby do
|
it "fails when the patchlevel doesn't match", :jruby_only do
|
||||||
update_repo2 do
|
update_repo2 do
|
||||||
build_gem "activesupport", "3.0"
|
build_gem "activesupport", "3.0"
|
||||||
update_git "foo", :path => lib_path("foo")
|
update_git "foo", :path => lib_path("foo")
|
||||||
|
@ -1267,7 +1263,7 @@ G
|
||||||
should_be_patchlevel_incorrect
|
should_be_patchlevel_incorrect
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails when the patchlevel is a fixnum", :jruby do
|
it "fails when the patchlevel is a fixnum", :jruby_only do
|
||||||
update_repo2 do
|
update_repo2 do
|
||||||
build_gem "activesupport", "3.0"
|
build_gem "activesupport", "3.0"
|
||||||
update_git "foo", :path => lib_path("foo")
|
update_git "foo", :path => lib_path("foo")
|
||||||
|
|
|
@ -291,7 +291,7 @@ RSpec.describe "Resolving platform craziness" do
|
||||||
describe "with mingw32" do
|
describe "with mingw32" do
|
||||||
before :each do
|
before :each do
|
||||||
@index = build_index do
|
@index = build_index do
|
||||||
platforms "mingw32 mswin32 x64-mingw32" do |platform|
|
platforms "mingw32 mswin32 x64-mingw32 x64-mingw-ucrt" do |platform|
|
||||||
gem "thin", "1.2.7", platform
|
gem "thin", "1.2.7", platform
|
||||||
end
|
end
|
||||||
gem "win32-api", "1.5.1", "universal-mingw32"
|
gem "win32-api", "1.5.1", "universal-mingw32"
|
||||||
|
@ -312,7 +312,7 @@ RSpec.describe "Resolving platform craziness" do
|
||||||
should_resolve_as %w[thin-1.2.7-mingw32]
|
should_resolve_as %w[thin-1.2.7-mingw32]
|
||||||
end
|
end
|
||||||
|
|
||||||
it "finds x64-mingw gems" do
|
it "finds x64-mingw32 gems" do
|
||||||
platforms "x64-mingw32"
|
platforms "x64-mingw32"
|
||||||
dep "thin"
|
dep "thin"
|
||||||
should_resolve_as %w[thin-1.2.7-x64-mingw32]
|
should_resolve_as %w[thin-1.2.7-x64-mingw32]
|
||||||
|
@ -329,6 +329,14 @@ RSpec.describe "Resolving platform craziness" do
|
||||||
dep "win32-api"
|
dep "win32-api"
|
||||||
should_resolve_as %w[win32-api-1.5.1-universal-mingw32]
|
should_resolve_as %w[win32-api-1.5.1-universal-mingw32]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if Gem.rubygems_version >= Gem::Version.new("3.2.28")
|
||||||
|
it "finds x64-mingw-ucrt gems" do
|
||||||
|
platforms "x64-mingw-ucrt"
|
||||||
|
dep "thin"
|
||||||
|
should_resolve_as %w[thin-1.2.7-x64-mingw-ucrt]
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "with conflicting cases" do
|
describe "with conflicting cases" do
|
||||||
|
|
|
@ -86,7 +86,7 @@ RSpec.describe "Bundler.setup with multi platform stuff" do
|
||||||
racc (1.5.2)
|
racc (1.5.2)
|
||||||
|
|
||||||
PLATFORMS
|
PLATFORMS
|
||||||
#{lockfile_platforms_for(["ruby"] + local_platforms)}
|
#{lockfile_platforms_for(["ruby", specific_local_platform])}
|
||||||
|
|
||||||
DEPENDENCIES
|
DEPENDENCIES
|
||||||
nokogiri (~> 1.11)
|
nokogiri (~> 1.11)
|
||||||
|
@ -145,7 +145,7 @@ RSpec.describe "Bundler.setup with multi platform stuff" do
|
||||||
expect(the_bundle).not_to include_gems "nokogiri 1.11.1 #{Bundler.local_platform}"
|
expect(the_bundle).not_to include_gems "nokogiri 1.11.1 #{Bundler.local_platform}"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "will use the java platform if both generic java and generic ruby platforms are locked", :jruby do
|
it "will use the java platform if both generic java and generic ruby platforms are locked", :jruby_only do
|
||||||
gemfile <<-G
|
gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "nokogiri"
|
gem "nokogiri"
|
||||||
|
@ -204,7 +204,7 @@ RSpec.describe "Bundler.setup with multi platform stuff" do
|
||||||
expect(the_bundle).to include_gems "nokogiri 1.4.2", "platform_specific 1.0 x86-darwin-100"
|
expect(the_bundle).to include_gems "nokogiri 1.4.2", "platform_specific 1.0 x86-darwin-100"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "allows specifying only-ruby-platform on jruby", :jruby do
|
it "allows specifying only-ruby-platform on jruby", :jruby_only do
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "nokogiri"
|
gem "nokogiri"
|
||||||
|
@ -246,7 +246,7 @@ RSpec.describe "Bundler.setup with multi platform stuff" do
|
||||||
expect(the_bundle).to include_gems "nokogiri 1.4.2", "platform_specific 1.0 RUBY"
|
expect(the_bundle).to include_gems "nokogiri 1.4.2", "platform_specific 1.0 RUBY"
|
||||||
end
|
end
|
||||||
|
|
||||||
it "doesn't pull platform specific gems on truffleruby", :truffleruby do
|
it "doesn't pull platform specific gems on truffleruby", :truffleruby_only do
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
gem "platform_specific"
|
gem "platform_specific"
|
||||||
|
|
|
@ -449,8 +449,6 @@ RSpec.describe "Bundler.require with platform specific dependencies" do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "requires gems pinned to multiple platforms, including the current one" do
|
it "requires gems pinned to multiple platforms, including the current one" do
|
||||||
skip "platform issues" if Gem.win_platform?
|
|
||||||
|
|
||||||
install_gemfile <<-G
|
install_gemfile <<-G
|
||||||
source "#{file_uri_for(gem_repo1)}"
|
source "#{file_uri_for(gem_repo1)}"
|
||||||
|
|
||||||
|
|
|
@ -827,7 +827,7 @@ end
|
||||||
expect(out).to eq("yay")
|
expect(out).to eq("yay")
|
||||||
end
|
end
|
||||||
|
|
||||||
it "should clean $LOAD_PATH properly", :ruby_repo do
|
it "should clean $LOAD_PATH properly" do
|
||||||
gem_name = "very_simple_binary"
|
gem_name = "very_simple_binary"
|
||||||
full_gem_name = gem_name + "-1.0"
|
full_gem_name = gem_name + "-1.0"
|
||||||
ext_dir = File.join(tmp("extensions", full_gem_name))
|
ext_dir = File.join(tmp("extensions", full_gem_name))
|
||||||
|
|
|
@ -74,6 +74,8 @@ RSpec.configure do |config|
|
||||||
ENV["BUNDLER_SPEC_RUN"] = "true"
|
ENV["BUNDLER_SPEC_RUN"] = "true"
|
||||||
ENV["BUNDLER_NO_OLD_RUBYGEMS_WARNING"] = "true"
|
ENV["BUNDLER_NO_OLD_RUBYGEMS_WARNING"] = "true"
|
||||||
ENV["BUNDLE_USER_CONFIG"] = ENV["BUNDLE_USER_CACHE"] = ENV["BUNDLE_USER_PLUGIN"] = nil
|
ENV["BUNDLE_USER_CONFIG"] = ENV["BUNDLE_USER_CACHE"] = ENV["BUNDLE_USER_PLUGIN"] = nil
|
||||||
|
ENV["BUNDLE_APP_CONFIG"] = nil
|
||||||
|
ENV["BUNDLE_SILENCE_ROOT_WARNING"] = nil
|
||||||
ENV["RUBYGEMS_GEMDEPS"] = nil
|
ENV["RUBYGEMS_GEMDEPS"] = nil
|
||||||
ENV["XDG_CONFIG_HOME"] = nil
|
ENV["XDG_CONFIG_HOME"] = nil
|
||||||
ENV["GEMRC"] = nil
|
ENV["GEMRC"] = nil
|
||||||
|
|
|
@ -121,6 +121,10 @@ module Spec
|
||||||
s.platform = "x64-mingw32"
|
s.platform = "x64-mingw32"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
build_gem "platform_specific" do |s|
|
||||||
|
s.platform = "x64-mingw-ucrt"
|
||||||
|
end
|
||||||
|
|
||||||
build_gem "platform_specific" do |s|
|
build_gem "platform_specific" do |s|
|
||||||
s.platform = "x86-darwin-100"
|
s.platform = "x86-darwin-100"
|
||||||
s.write "lib/platform_specific.rb", "PLATFORM_SPECIFIC = '1.0.0 x86-darwin-100'"
|
s.write "lib/platform_specific.rb", "PLATFORM_SPECIFIC = '1.0.0 x86-darwin-100'"
|
||||||
|
@ -444,8 +448,7 @@ module Spec
|
||||||
write "ext/extconf.rb", <<-RUBY
|
write "ext/extconf.rb", <<-RUBY
|
||||||
require "mkmf"
|
require "mkmf"
|
||||||
|
|
||||||
|
$extout = "$(topdir)/" + RbConfig::CONFIG["EXTOUT"] unless RUBY_VERSION < "2.4"
|
||||||
# exit 1 unless with_config("simple")
|
|
||||||
|
|
||||||
extension_name = "#{name}_c"
|
extension_name = "#{name}_c"
|
||||||
if extra_lib_dir = with_config("ext-lib")
|
if extra_lib_dir = with_config("ext-lib")
|
||||||
|
|
|
@ -33,8 +33,8 @@ RSpec.configure do |config|
|
||||||
config.filter_run_excluding :no_color_tty => Gem.win_platform? || !ENV["GITHUB_ACTION"].nil?
|
config.filter_run_excluding :no_color_tty => Gem.win_platform? || !ENV["GITHUB_ACTION"].nil?
|
||||||
config.filter_run_excluding :permissions => Gem.win_platform?
|
config.filter_run_excluding :permissions => Gem.win_platform?
|
||||||
config.filter_run_excluding :readline => Gem.win_platform?
|
config.filter_run_excluding :readline => Gem.win_platform?
|
||||||
config.filter_run_excluding :jruby => RUBY_ENGINE != "jruby"
|
config.filter_run_excluding :jruby_only => RUBY_ENGINE != "jruby"
|
||||||
config.filter_run_excluding :truffleruby => RUBY_ENGINE != "truffleruby"
|
config.filter_run_excluding :truffleruby_only => RUBY_ENGINE != "truffleruby"
|
||||||
config.filter_run_excluding :man => Gem.win_platform?
|
config.filter_run_excluding :man => Gem.win_platform?
|
||||||
|
|
||||||
config.filter_run_when_matching :focus unless ENV["CI"]
|
config.filter_run_when_matching :focus unless ENV["CI"]
|
||||||
|
|
|
@ -178,7 +178,7 @@ module Spec
|
||||||
|
|
||||||
begin
|
begin
|
||||||
require '#{name}'
|
require '#{name}'
|
||||||
name_constant = '#{Spec::Builders.constantize(name)}'
|
name_constant = #{Spec::Builders.constantize(name)}
|
||||||
if #{version.nil?} || name_constant == '#{version}'
|
if #{version.nil?} || name_constant == '#{version}'
|
||||||
exit 64
|
exit 64
|
||||||
else
|
else
|
||||||
|
|
|
@ -55,13 +55,15 @@ module Spec
|
||||||
def local_tag
|
def local_tag
|
||||||
if RUBY_PLATFORM == "java"
|
if RUBY_PLATFORM == "java"
|
||||||
:jruby
|
:jruby
|
||||||
|
elsif ["x64-mingw32", "x64-mingw-ucrt"].include?(RUBY_PLATFORM)
|
||||||
|
:x64_mingw
|
||||||
else
|
else
|
||||||
:ruby
|
:ruby
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def not_local_tag
|
def not_local_tag
|
||||||
[:ruby, :jruby].find {|tag| tag != local_tag }
|
[:jruby, :x64_mingw, :ruby].find {|tag| tag != local_tag }
|
||||||
end
|
end
|
||||||
|
|
||||||
def local_ruby_engine
|
def local_ruby_engine
|
||||||
|
@ -74,7 +76,7 @@ module Spec
|
||||||
|
|
||||||
def not_local_engine_version
|
def not_local_engine_version
|
||||||
case not_local_tag
|
case not_local_tag
|
||||||
when :ruby
|
when :ruby, :x64_mingw
|
||||||
not_local_ruby_version
|
not_local_ruby_version
|
||||||
when :jruby
|
when :jruby
|
||||||
"1.6.1"
|
"1.6.1"
|
||||||
|
@ -90,15 +92,11 @@ module Spec
|
||||||
end
|
end
|
||||||
|
|
||||||
def lockfile_platforms
|
def lockfile_platforms
|
||||||
lockfile_platforms_for(local_platforms)
|
lockfile_platforms_for([specific_local_platform])
|
||||||
end
|
end
|
||||||
|
|
||||||
def lockfile_platforms_for(platforms)
|
def lockfile_platforms_for(platforms)
|
||||||
platforms.map(&:to_s).sort.join("\n ")
|
platforms.map(&:to_s).sort.join("\n ")
|
||||||
end
|
end
|
||||||
|
|
||||||
def local_platforms
|
|
||||||
[specific_local_platform]
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -119,6 +119,12 @@ class Gem::TestCase < Test::Unit::TestCase
|
||||||
assert File.directory?(path), msg
|
assert File.directory?(path), msg
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def refute_directory_exists(path, msg = nil)
|
||||||
|
msg = build_message(msg, "Expected path '#{path}' not to be a directory")
|
||||||
|
assert_path_not_exist path
|
||||||
|
refute File.directory?(path), msg
|
||||||
|
end
|
||||||
|
|
||||||
# https://github.com/seattlerb/minitest/blob/21d9e804b63c619f602f3f4ece6c71b48974707a/lib/minitest/assertions.rb#L188
|
# https://github.com/seattlerb/minitest/blob/21d9e804b63c619f602f3f4ece6c71b48974707a/lib/minitest/assertions.rb#L188
|
||||||
def _synchronize
|
def _synchronize
|
||||||
yield
|
yield
|
||||||
|
|
|
@ -25,6 +25,8 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
|
||||||
assert_match %r{RUBY VERSION: \d+\.\d+\.\d+ \(.*\) \[.*\]}, @ui.output
|
assert_match %r{RUBY VERSION: \d+\.\d+\.\d+ \(.*\) \[.*\]}, @ui.output
|
||||||
assert_match %r{INSTALLATION DIRECTORY: #{Regexp.escape @gemhome}},
|
assert_match %r{INSTALLATION DIRECTORY: #{Regexp.escape @gemhome}},
|
||||||
@ui.output
|
@ui.output
|
||||||
|
assert_match %r{USER INSTALLATION DIRECTORY: #{Regexp.escape Gem.user_dir}},
|
||||||
|
@ui.output
|
||||||
assert_match %r{RUBYGEMS PREFIX: }, @ui.output
|
assert_match %r{RUBYGEMS PREFIX: }, @ui.output
|
||||||
assert_match %r{RUBY EXECUTABLE:.*#{RbConfig::CONFIG['ruby_install_name']}},
|
assert_match %r{RUBY EXECUTABLE:.*#{RbConfig::CONFIG['ruby_install_name']}},
|
||||||
@ui.output
|
@ui.output
|
||||||
|
@ -63,6 +65,28 @@ class TestGemCommandsEnvironmentCommand < Gem::TestCase
|
||||||
assert_equal '', @ui.error
|
assert_equal '', @ui.error
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_execute_user_gemdir
|
||||||
|
@cmd.send :handle_options, %w[user_gemdir]
|
||||||
|
|
||||||
|
use_ui @ui do
|
||||||
|
@cmd.execute
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_equal "#{Gem.user_dir}\n", @ui.output
|
||||||
|
assert_equal '', @ui.error
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_execute_user_gemhome
|
||||||
|
@cmd.send :handle_options, %w[user_gemhome]
|
||||||
|
|
||||||
|
use_ui @ui do
|
||||||
|
@cmd.execute
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_equal "#{Gem.user_dir}\n", @ui.output
|
||||||
|
assert_equal '', @ui.error
|
||||||
|
end
|
||||||
|
|
||||||
def test_execute_gempath
|
def test_execute_gempath
|
||||||
@cmd.send :handle_options, %w[gempath]
|
@cmd.send :handle_options, %w[gempath]
|
||||||
|
|
||||||
|
|
|
@ -11,47 +11,23 @@ dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "ansi_term"
|
|
||||||
version = "0.12.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
|
|
||||||
dependencies = [
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "atty"
|
|
||||||
version = "0.2.14"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
|
||||||
dependencies = [
|
|
||||||
"hermit-abi",
|
|
||||||
"libc",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bindgen"
|
name = "bindgen"
|
||||||
version = "0.59.2"
|
version = "0.60.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8"
|
checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"cexpr",
|
"cexpr",
|
||||||
"clang-sys",
|
"clang-sys",
|
||||||
"clap",
|
|
||||||
"env_logger",
|
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"lazycell",
|
"lazycell",
|
||||||
"log",
|
|
||||||
"peeking_take_while",
|
"peeking_take_while",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"regex",
|
"regex",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
"shlex",
|
"shlex",
|
||||||
"which",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -60,12 +36,6 @@ version = "1.3.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cc"
|
|
||||||
version = "1.0.73"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cexpr"
|
name = "cexpr"
|
||||||
version = "0.6.0"
|
version = "0.6.0"
|
||||||
|
@ -92,21 +62,6 @@ dependencies = [
|
||||||
"libloading",
|
"libloading",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "clap"
|
|
||||||
version = "2.34.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
|
||||||
dependencies = [
|
|
||||||
"ansi_term",
|
|
||||||
"atty",
|
|
||||||
"bitflags",
|
|
||||||
"strsim",
|
|
||||||
"textwrap",
|
|
||||||
"unicode-width",
|
|
||||||
"vec_map",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "custom-name-ext"
|
name = "custom-name-ext"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
@ -114,46 +69,12 @@ dependencies = [
|
||||||
"rb-sys",
|
"rb-sys",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "either"
|
|
||||||
version = "1.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "env_logger"
|
|
||||||
version = "0.9.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
|
|
||||||
dependencies = [
|
|
||||||
"atty",
|
|
||||||
"humantime",
|
|
||||||
"log",
|
|
||||||
"regex",
|
|
||||||
"termcolor",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "glob"
|
name = "glob"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
|
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hermit-abi"
|
|
||||||
version = "0.1.19"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "humantime"
|
|
||||||
version = "2.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lazy_static"
|
name = "lazy_static"
|
||||||
version = "1.4.0"
|
version = "1.4.0"
|
||||||
|
@ -191,15 +112,6 @@ dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "log"
|
|
||||||
version = "0.4.17"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.5.0"
|
version = "2.5.0"
|
||||||
|
@ -228,41 +140,42 @@ version = "0.1.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pkg-config"
|
|
||||||
version = "0.3.25"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.39"
|
version = "1.0.40"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
|
checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.18"
|
version = "1.0.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
|
checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rb-sys"
|
name = "rb-sys"
|
||||||
version = "0.9.4"
|
version = "0.9.15"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f5465c5bd695ef70959b91b4ca9cfd515e9af012f6d9f0ae46f09fa4bcc3b722"
|
checksum = "104c5bcb9fa23bf3823124c003c516b22664fef50c4a481ff2d0e21b76e0f92c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bindgen",
|
"bindgen",
|
||||||
"cc",
|
|
||||||
"lazy_static",
|
|
||||||
"linkify",
|
"linkify",
|
||||||
"pkg-config",
|
"rb-sys-build",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rb-sys-build"
|
||||||
|
version = "0.9.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4cdf919b75ba95aa480159f3b20070cbec110d6c8a7af86b35844270069a4cb3"
|
||||||
|
dependencies = [
|
||||||
|
"regex",
|
||||||
"shell-words",
|
"shell-words",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -301,58 +214,11 @@ version = "1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
|
checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "strsim"
|
|
||||||
version = "0.8.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "termcolor"
|
|
||||||
version = "1.1.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
|
|
||||||
dependencies = [
|
|
||||||
"winapi-util",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "textwrap"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
|
|
||||||
dependencies = [
|
|
||||||
"unicode-width",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.0"
|
version = "1.0.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
|
checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "unicode-width"
|
|
||||||
version = "0.1.9"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "vec_map"
|
|
||||||
version = "0.8.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "which"
|
|
||||||
version = "4.2.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae"
|
|
||||||
dependencies = [
|
|
||||||
"either",
|
|
||||||
"lazy_static",
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi"
|
name = "winapi"
|
||||||
|
@ -370,15 +236,6 @@ version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winapi-util"
|
|
||||||
version = "0.1.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
|
|
||||||
dependencies = [
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi-x86_64-pc-windows-gnu"
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
[package]
|
[package]
|
||||||
name = "custom-name-ext"
|
name = "custom-name-ext"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
crate-type = ["cdylib"]
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rb-sys = "0.9.4"
|
rb-sys = { version = "0.9.15", features = ["gem"] }
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
#[macro_use]
|
|
||||||
extern crate rb_sys;
|
extern crate rb_sys;
|
||||||
|
|
||||||
use rb_sys::{rb_define_module, rb_define_module_function, rb_utf8_str_new, VALUE};
|
use rb_sys::{rb_define_module, rb_define_module_function, rb_utf8_str_new, VALUE};
|
||||||
use std::ffi::CString;
|
use std::ffi::CString;
|
||||||
|
|
||||||
ruby_extension!();
|
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
unsafe extern "C" fn say_hello(_klass: VALUE) -> VALUE {
|
unsafe extern "C" fn say_hello(_klass: VALUE) -> VALUE {
|
||||||
let cstr = CString::new("Hello world!").unwrap();
|
let cstr = CString::new("Hello world!").unwrap();
|
||||||
|
|
|
@ -11,47 +11,23 @@ dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "ansi_term"
|
|
||||||
version = "0.12.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2"
|
|
||||||
dependencies = [
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "atty"
|
|
||||||
version = "0.2.14"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
|
|
||||||
dependencies = [
|
|
||||||
"hermit-abi",
|
|
||||||
"libc",
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bindgen"
|
name = "bindgen"
|
||||||
version = "0.59.2"
|
version = "0.60.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "2bd2a9a458e8f4304c52c43ebb0cfbd520289f8379a52e329a38afda99bf8eb8"
|
checksum = "062dddbc1ba4aca46de6338e2bf87771414c335f7b2f2036e8f3e9befebf88e6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bitflags",
|
"bitflags",
|
||||||
"cexpr",
|
"cexpr",
|
||||||
"clang-sys",
|
"clang-sys",
|
||||||
"clap",
|
|
||||||
"env_logger",
|
|
||||||
"lazy_static",
|
"lazy_static",
|
||||||
"lazycell",
|
"lazycell",
|
||||||
"log",
|
|
||||||
"peeking_take_while",
|
"peeking_take_while",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"regex",
|
"regex",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
"shlex",
|
"shlex",
|
||||||
"which",
|
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -60,12 +36,6 @@ version = "1.3.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cc"
|
|
||||||
version = "1.0.73"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cexpr"
|
name = "cexpr"
|
||||||
version = "0.6.0"
|
version = "0.6.0"
|
||||||
|
@ -92,61 +62,12 @@ dependencies = [
|
||||||
"libloading",
|
"libloading",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "clap"
|
|
||||||
version = "2.34.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c"
|
|
||||||
dependencies = [
|
|
||||||
"ansi_term",
|
|
||||||
"atty",
|
|
||||||
"bitflags",
|
|
||||||
"strsim",
|
|
||||||
"textwrap",
|
|
||||||
"unicode-width",
|
|
||||||
"vec_map",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "either"
|
|
||||||
version = "1.6.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "env_logger"
|
|
||||||
version = "0.9.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3"
|
|
||||||
dependencies = [
|
|
||||||
"atty",
|
|
||||||
"humantime",
|
|
||||||
"log",
|
|
||||||
"regex",
|
|
||||||
"termcolor",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "glob"
|
name = "glob"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
|
checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hermit-abi"
|
|
||||||
version = "0.1.19"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
|
|
||||||
dependencies = [
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "humantime"
|
|
||||||
version = "2.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "lazy_static"
|
name = "lazy_static"
|
||||||
version = "1.4.0"
|
version = "1.4.0"
|
||||||
|
@ -184,15 +105,6 @@ dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "log"
|
|
||||||
version = "0.4.17"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "memchr"
|
name = "memchr"
|
||||||
version = "2.5.0"
|
version = "2.5.0"
|
||||||
|
@ -221,41 +133,42 @@ version = "0.1.2"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "pkg-config"
|
|
||||||
version = "0.3.25"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "proc-macro2"
|
name = "proc-macro2"
|
||||||
version = "1.0.39"
|
version = "1.0.40"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
|
checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"unicode-ident",
|
"unicode-ident",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "quote"
|
name = "quote"
|
||||||
version = "1.0.18"
|
version = "1.0.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
|
checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rb-sys"
|
name = "rb-sys"
|
||||||
version = "0.9.4"
|
version = "0.9.15"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "f5465c5bd695ef70959b91b4ca9cfd515e9af012f6d9f0ae46f09fa4bcc3b722"
|
checksum = "104c5bcb9fa23bf3823124c003c516b22664fef50c4a481ff2d0e21b76e0f92c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"bindgen",
|
"bindgen",
|
||||||
"cc",
|
|
||||||
"lazy_static",
|
|
||||||
"linkify",
|
"linkify",
|
||||||
"pkg-config",
|
"rb-sys-build",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rb-sys-build"
|
||||||
|
version = "0.9.15"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4cdf919b75ba95aa480159f3b20070cbec110d6c8a7af86b35844270069a4cb3"
|
||||||
|
dependencies = [
|
||||||
|
"regex",
|
||||||
"shell-words",
|
"shell-words",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -301,58 +214,11 @@ version = "1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
|
checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "strsim"
|
|
||||||
version = "0.8.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "termcolor"
|
|
||||||
version = "1.1.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755"
|
|
||||||
dependencies = [
|
|
||||||
"winapi-util",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "textwrap"
|
|
||||||
version = "0.11.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060"
|
|
||||||
dependencies = [
|
|
||||||
"unicode-width",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.0"
|
version = "1.0.1"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
|
checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "unicode-width"
|
|
||||||
version = "0.1.9"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "vec_map"
|
|
||||||
version = "0.8.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "which"
|
|
||||||
version = "4.2.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5c4fb54e6113b6a8772ee41c3404fb0301ac79604489467e0a9ce1f3e97c24ae"
|
|
||||||
dependencies = [
|
|
||||||
"either",
|
|
||||||
"lazy_static",
|
|
||||||
"libc",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi"
|
name = "winapi"
|
||||||
|
@ -370,15 +236,6 @@ version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "winapi-util"
|
|
||||||
version = "0.1.5"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
|
|
||||||
dependencies = [
|
|
||||||
"winapi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "winapi-x86_64-pc-windows-gnu"
|
name = "winapi-x86_64-pc-windows-gnu"
|
||||||
version = "0.4.0"
|
version = "0.4.0"
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
[package]
|
[package]
|
||||||
name = "rust_ruby_example"
|
name = "rust_ruby_example"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
[lib]
|
[lib]
|
||||||
crate-type = ["cdylib"]
|
crate-type = ["cdylib"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rb-sys = "0.9.4"
|
rb-sys = { version = "0.9.15", features = ["gem"] }
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
#[macro_use]
|
|
||||||
extern crate rb_sys;
|
extern crate rb_sys;
|
||||||
|
|
||||||
use rb_sys::{
|
use rb_sys::{
|
||||||
|
@ -7,8 +6,6 @@ use rb_sys::{
|
||||||
use std::ffi::{CStr, CString};
|
use std::ffi::{CStr, CString};
|
||||||
use std::os::raw::{c_char, c_long};
|
use std::os::raw::{c_char, c_long};
|
||||||
|
|
||||||
ruby_extension!();
|
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
unsafe fn cstr_to_string(str: *const c_char) -> String {
|
unsafe fn cstr_to_string(str: *const c_char) -> String {
|
||||||
CStr::from_ptr(str).to_string_lossy().into_owned()
|
CStr::from_ptr(str).to_string_lossy().into_owned()
|
||||||
|
|
|
@ -103,6 +103,8 @@ class TestGemIndexer < Gem::TestCase
|
||||||
|
|
||||||
assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
|
assert_indexed @indexerdir, "latest_specs.#{@marshal_version}"
|
||||||
assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
|
assert_indexed @indexerdir, "latest_specs.#{@marshal_version}.gz"
|
||||||
|
|
||||||
|
refute_directory_exists @indexer.directory
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_generate_index_modern
|
def test_generate_index_modern
|
||||||
|
@ -342,6 +344,8 @@ class TestGemIndexer < Gem::TestCase
|
||||||
|
|
||||||
assert_includes pre_specs_index, @d2_1_a_tuple
|
assert_includes pre_specs_index, @d2_1_a_tuple
|
||||||
refute_includes pre_specs_index, @d2_1_tuple
|
refute_includes pre_specs_index, @d2_1_tuple
|
||||||
|
|
||||||
|
refute_directory_exists @indexer.directory
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -737,9 +737,7 @@ class TestGemPackage < Gem::Package::TarTestCase
|
||||||
file = 'foo//file.rb'.dup
|
file = 'foo//file.rb'.dup
|
||||||
file.taint if RUBY_VERSION < '2.7'
|
file.taint if RUBY_VERSION < '2.7'
|
||||||
|
|
||||||
destination = @destination.sub '/', '//'
|
destination = package.install_location file, @destination
|
||||||
|
|
||||||
destination = package.install_location file, destination
|
|
||||||
|
|
||||||
assert_equal File.join(@destination, 'foo', 'file.rb'), destination
|
assert_equal File.join(@destination, 'foo', 'file.rb'), destination
|
||||||
refute destination.tainted? if RUBY_VERSION < '2.7'
|
refute destination.tainted? if RUBY_VERSION < '2.7'
|
||||||
|
|
|
@ -16,7 +16,7 @@ class GemTest < Gem::TestCase
|
||||||
output = Gem::Util.popen(*ruby_with_rubygems_and_fake_operating_system_in_load_path(path), '-e', "'require \"rubygems\"'", { :err => [:child, :out] }).strip
|
output = Gem::Util.popen(*ruby_with_rubygems_and_fake_operating_system_in_load_path(path), '-e', "'require \"rubygems\"'", { :err => [:child, :out] }).strip
|
||||||
assert !$?.success?
|
assert !$?.success?
|
||||||
assert_includes output, "undefined local variable or method `intentionally_not_implemented_method'"
|
assert_includes output, "undefined local variable or method `intentionally_not_implemented_method'"
|
||||||
assert_includes output, "Loading the rubygems/defaults/operating_system.rb file caused an error. " \
|
assert_includes output, "Loading the #{operating_system_rb_at(path)} file caused an error. " \
|
||||||
"This file is owned by your OS, not by rubygems upstream. " \
|
"This file is owned by your OS, not by rubygems upstream. " \
|
||||||
"Please find out which OS package this file belongs to and follow the guidelines from your OS to report " \
|
"Please find out which OS package this file belongs to and follow the guidelines from your OS to report " \
|
||||||
"the problem and ask for help."
|
"the problem and ask for help."
|
||||||
|
@ -53,16 +53,19 @@ class GemTest < Gem::TestCase
|
||||||
|
|
||||||
def util_install_operating_system_rb(content)
|
def util_install_operating_system_rb(content)
|
||||||
dir_lib = Dir.mktmpdir("test_operating_system_lib", @tempdir)
|
dir_lib = Dir.mktmpdir("test_operating_system_lib", @tempdir)
|
||||||
dir_lib_arg = File.join dir_lib
|
dir_lib_arg = File.join dir_lib, "lib"
|
||||||
|
|
||||||
dir_lib_rubygems_defaults_arg = File.join dir_lib_arg, "lib", "rubygems", "defaults"
|
operating_system_rb = operating_system_rb_at(dir_lib_arg)
|
||||||
FileUtils.mkdir_p dir_lib_rubygems_defaults_arg
|
|
||||||
|
|
||||||
operating_system_rb = File.join dir_lib_rubygems_defaults_arg, "operating_system.rb"
|
FileUtils.mkdir_p File.dirname(operating_system_rb)
|
||||||
|
|
||||||
File.open(operating_system_rb, 'w') {|f| f.write content }
|
File.open(operating_system_rb, 'w') {|f| f.write content }
|
||||||
|
|
||||||
File.join dir_lib_arg, "lib"
|
dir_lib_arg
|
||||||
|
end
|
||||||
|
|
||||||
|
def operating_system_rb_at(dir)
|
||||||
|
File.join dir, "rubygems", "defaults", "operating_system.rb"
|
||||||
end
|
end
|
||||||
|
|
||||||
def ruby_with_rubygems_and_fake_operating_system_in_load_path(operating_system_path)
|
def ruby_with_rubygems_and_fake_operating_system_in_load_path(operating_system_path)
|
||||||
|
|
|
@ -33,6 +33,8 @@ PLATFORMS
|
||||||
java
|
java
|
||||||
ruby
|
ruby
|
||||||
universal-java-11
|
universal-java-11
|
||||||
|
universal-java-18
|
||||||
|
x64-mingw-ucrt
|
||||||
x64-mingw32
|
x64-mingw32
|
||||||
x86_64-darwin-20
|
x86_64-darwin-20
|
||||||
x86_64-linux
|
x86_64-linux
|
||||||
|
@ -51,4 +53,4 @@ DEPENDENCIES
|
||||||
webrick (~> 1.6)
|
webrick (~> 1.6)
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.3.16
|
2.3.17
|
||||||
|
|
|
@ -47,6 +47,8 @@ PLATFORMS
|
||||||
arm64-darwin-20
|
arm64-darwin-20
|
||||||
arm64-darwin-21
|
arm64-darwin-21
|
||||||
universal-java-11
|
universal-java-11
|
||||||
|
universal-java-18
|
||||||
|
x64-mingw-ucrt
|
||||||
x86_64-darwin-19
|
x86_64-darwin-19
|
||||||
x86_64-darwin-20
|
x86_64-darwin-20
|
||||||
x86_64-linux
|
x86_64-linux
|
||||||
|
@ -60,4 +62,4 @@ DEPENDENCIES
|
||||||
test-unit
|
test-unit
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.3.16
|
2.3.17
|
||||||
|
|
|
@ -53,6 +53,8 @@ PLATFORMS
|
||||||
arm64-darwin-20
|
arm64-darwin-20
|
||||||
arm64-darwin-21
|
arm64-darwin-21
|
||||||
universal-java-11
|
universal-java-11
|
||||||
|
universal-java-18
|
||||||
|
x64-mingw-ucrt
|
||||||
x86_64-darwin-19
|
x86_64-darwin-19
|
||||||
x86_64-darwin-20
|
x86_64-darwin-20
|
||||||
x86_64-linux
|
x86_64-linux
|
||||||
|
@ -66,4 +68,4 @@ DEPENDENCIES
|
||||||
test-unit
|
test-unit
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.3.16
|
2.3.17
|
||||||
|
|
|
@ -26,6 +26,8 @@ PLATFORMS
|
||||||
java
|
java
|
||||||
ruby
|
ruby
|
||||||
universal-java-11
|
universal-java-11
|
||||||
|
universal-java-18
|
||||||
|
x64-mingw-ucrt
|
||||||
x64-mingw32
|
x64-mingw32
|
||||||
x86_64-darwin-20
|
x86_64-darwin-20
|
||||||
x86_64-linux
|
x86_64-linux
|
||||||
|
@ -41,4 +43,4 @@ DEPENDENCIES
|
||||||
webrick (= 1.7.0)
|
webrick (= 1.7.0)
|
||||||
|
|
||||||
BUNDLED WITH
|
BUNDLED WITH
|
||||||
2.3.16
|
2.3.17
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue