rubygems-update 2.2.1 → 2.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of rubygems-update might be problematic. Click here for more details.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/History.txt +29 -0
- data/Manifest.txt +1 -0
- data/lib/rubygems.rb +1 -1
- data/lib/rubygems/available_set.rb +3 -0
- data/lib/rubygems/commands/generate_index_command.rb +1 -1
- data/lib/rubygems/config_file.rb +3 -2
- data/lib/rubygems/dependency_installer.rb +1 -0
- data/lib/rubygems/ext/ext_conf_builder.rb +5 -1
- data/lib/rubygems/installer.rb +1 -1
- data/lib/rubygems/package/tar_header.rb +1 -1
- data/lib/rubygems/remote_fetcher.rb +24 -16
- data/lib/rubygems/request.rb +4 -4
- data/lib/rubygems/request_set.rb +8 -0
- data/lib/rubygems/resolver.rb +2 -0
- data/lib/rubygems/resolver/api_set.rb +6 -1
- data/lib/rubygems/resolver/best_set.rb +20 -1
- data/lib/rubygems/resolver/composed_set.rb +11 -0
- data/lib/rubygems/resolver/git_set.rb +3 -0
- data/lib/rubygems/resolver/index_set.rb +4 -0
- data/lib/rubygems/resolver/installer_set.rb +15 -1
- data/lib/rubygems/resolver/lock_set.rb +2 -0
- data/lib/rubygems/resolver/set.rb +17 -0
- data/lib/rubygems/resolver/vendor_set.rb +2 -0
- data/lib/rubygems/security.rb +3 -3
- data/lib/rubygems/source/git.rb +14 -0
- data/lib/rubygems/specification.rb +22 -22
- data/lib/rubygems/test_case.rb +29 -1
- data/lib/rubygems/version.rb +17 -11
- data/test/rubygems/test_gem.rb +28 -30
- data/test/rubygems/test_gem_ext_ext_conf_builder.rb +41 -27
- data/test/rubygems/test_gem_installer.rb +6 -2
- data/test/rubygems/test_gem_package_tar_header.rb +14 -0
- data/test/rubygems/test_gem_platform.rb +5 -1
- data/test/rubygems/test_gem_remote_fetcher.rb +3 -3
- data/test/rubygems/test_gem_request.rb +69 -0
- data/test/rubygems/test_gem_request_set.rb +21 -0
- data/test/rubygems/test_gem_resolver.rb +8 -0
- data/test/rubygems/test_gem_resolver_api_set.rb +41 -0
- data/test/rubygems/test_gem_resolver_best_set.rb +50 -0
- data/test/rubygems/test_gem_resolver_composed_set.rb +18 -0
- data/test/rubygems/test_gem_resolver_git_set.rb +15 -0
- data/test/rubygems/test_gem_resolver_index_set.rb +35 -0
- data/test/rubygems/test_gem_resolver_installer_set.rb +70 -0
- data/test/rubygems/test_gem_source_git.rb +43 -0
- data/test/rubygems/test_gem_specification.rb +9 -12
- data/test/rubygems/test_gem_version.rb +10 -0
- metadata +5 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 401f2f6fdd7de3d75d6ee3771b3724c85f014303
|
4
|
+
data.tar.gz: 714ac30e7e175628d13a99f5c5f74de80e1bd5fe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: adf17e7ae371343b92d21f0ae72db333aa4c295a5d30bba2fb7cbe4c66a837033531db1225cdfa1b56d9e4213c3e50e88b9c416ce3be3073e007b97043e35608
|
7
|
+
data.tar.gz: 6493b6a5b253715bc9388f8798451293fc87199e62a8d03df4210fcd01684d1de6ed94f08dde4176ab1cf6f7d85448cd673082cd28ce9be04afe13c041d659cb
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/History.txt
CHANGED
@@ -1,5 +1,32 @@
|
|
1
1
|
# coding: UTF-8
|
2
2
|
|
3
|
+
=== 2.2.2 / 2014-02-05
|
4
|
+
|
5
|
+
Bug fixes:
|
6
|
+
|
7
|
+
* Fixed ruby tests when BASERUBY is not set. Patch for #778 by Nobuyoshi
|
8
|
+
Nakada.
|
9
|
+
* Removed double requests in RemoteFetcher#cache_update_path to improve remote
|
10
|
+
install speed. Pull request #772 by Charlie Somerville.
|
11
|
+
* The mkmf.log is now placed next to gem_make.out when building extensions.
|
12
|
+
* `gem install -g --local` no longer accesses the network. Bug #776 by Jeremy
|
13
|
+
Evans.
|
14
|
+
* RubyGems now correctly handles URL passwords with encoded characters. Pull
|
15
|
+
request #781 by Brian Fletcher.
|
16
|
+
* RubyGems now correctly escapes URL characters. Pull request #788 by Brian
|
17
|
+
Fletcher.
|
18
|
+
* RubyGems can now unpack tar files where the type flag is not given. Pull
|
19
|
+
request #790 by Cody Russell.
|
20
|
+
* Typo corrections. Pull request ruby/ruby#506 by windwiny.
|
21
|
+
* RubyGems now uses both the default certificates and ssl_ca_cert instead of
|
22
|
+
one or the other. Pull request #795 by zebardy.
|
23
|
+
* RubyGems can now use the bundler API against hosted gem servers in a
|
24
|
+
directory. Pull request #801 by Brian Fletcher.
|
25
|
+
* RubyGems bin stubs now ignore non-versions. This allows RubyGems bin stubs
|
26
|
+
to list file names like "_foo_". Issue #799 by Postmodern.
|
27
|
+
* Restored behavior of Gem::Version::new when subclassed. Issue #805 by
|
28
|
+
Sergio Rubio.
|
29
|
+
|
3
30
|
=== 2.2.1 / 2014-01-06
|
4
31
|
|
5
32
|
Bug fixes:
|
@@ -25,6 +52,8 @@ Bug fixes:
|
|
25
52
|
directories. Bug #758 Vít Ondruch.
|
26
53
|
* Gem.read_binary can read read-only files again. This caused file://
|
27
54
|
repositories to stop working. Bug #761 by John Anderson.
|
55
|
+
* Fixed specification file sorting for Ruby 1.8.7 compatibility. Pull
|
56
|
+
request #763 by James Mead
|
28
57
|
|
29
58
|
=== 2.2.0 / 2013-12-26
|
30
59
|
|
data/Manifest.txt
CHANGED
@@ -288,6 +288,7 @@ test/rubygems/test_gem_resolver_activation_request.rb
|
|
288
288
|
test/rubygems/test_gem_resolver_api_set.rb
|
289
289
|
test/rubygems/test_gem_resolver_api_specification.rb
|
290
290
|
test/rubygems/test_gem_resolver_best_set.rb
|
291
|
+
test/rubygems/test_gem_resolver_composed_set.rb
|
291
292
|
test/rubygems/test_gem_resolver_conflict.rb
|
292
293
|
test/rubygems/test_gem_resolver_dependency_request.rb
|
293
294
|
test/rubygems/test_gem_resolver_git_set.rb
|
data/lib/rubygems.rb
CHANGED
@@ -62,7 +62,7 @@ Marshal::MINOR_VERSION constants. It is used to ensure compatibility.
|
|
62
62
|
end
|
63
63
|
|
64
64
|
def execute
|
65
|
-
# This is always true
|
65
|
+
# This is always true because it's the only way now.
|
66
66
|
options[:build_modern] = true
|
67
67
|
|
68
68
|
if not File.exist?(options[:directory]) or
|
data/lib/rubygems/config_file.rb
CHANGED
@@ -137,9 +137,10 @@ class Gem::ConfigFile
|
|
137
137
|
attr_reader :ssl_verify_mode
|
138
138
|
|
139
139
|
##
|
140
|
-
# Path name of directory or file of openssl CA certificate, used for remote
|
140
|
+
# Path name of directory or file of openssl CA certificate, used for remote
|
141
|
+
# https connection
|
141
142
|
|
142
|
-
|
143
|
+
attr_accessor :ssl_ca_cert
|
143
144
|
|
144
145
|
##
|
145
146
|
# Path name of directory or file of openssl client certificate, used for remote https connection with client authentication
|
@@ -419,6 +419,7 @@ class Gem::DependencyInstaller
|
|
419
419
|
|
420
420
|
request_set = as.to_request_set install_development_deps
|
421
421
|
request_set.soft_missing = @force
|
422
|
+
request_set.remote = false unless consider_remote?
|
422
423
|
|
423
424
|
installer_set = Gem::Resolver::InstallerSet.new @domain
|
424
425
|
installer_set.always_install.concat request_set.always_install
|
@@ -34,7 +34,11 @@ class Gem::Ext::ExtConfBuilder < Gem::Ext::Builder
|
|
34
34
|
ENV["RUBYOPT"] = ["-r#{siteconf_path}", rubyopt].compact.join(' ')
|
35
35
|
cmd = [Gem.ruby, File.basename(extension), *args].join ' '
|
36
36
|
|
37
|
-
|
37
|
+
begin
|
38
|
+
run cmd, results
|
39
|
+
ensure
|
40
|
+
FileUtils.mv 'mkmf.log', dest_path if File.exist? 'mkmf.log'
|
41
|
+
end
|
38
42
|
|
39
43
|
ENV["DESTDIR"] = nil
|
40
44
|
ENV["RUBYOPT"] = rubyopt
|
data/lib/rubygems/installer.rb
CHANGED
@@ -641,7 +641,7 @@ version = "#{Gem::Requirement.default}"
|
|
641
641
|
if ARGV.first
|
642
642
|
str = ARGV.first
|
643
643
|
str = str.dup.force_encoding("BINARY") if str.respond_to? :force_encoding
|
644
|
-
if str =~ /\\A_(.*)_\\z/
|
644
|
+
if str =~ /\\A_(.*)_\\z/ and Gem::Version.correct?($1) then
|
645
645
|
version = $1
|
646
646
|
ARGV.shift
|
647
647
|
end
|
@@ -134,7 +134,7 @@ class Gem::Package::TarHeader
|
|
134
134
|
vals[:gid] ||= 0
|
135
135
|
vals[:mtime] ||= 0
|
136
136
|
vals[:checksum] ||= ""
|
137
|
-
vals[:typeflag]
|
137
|
+
vals[:typeflag] = "0" if vals[:typeflag].nil? || vals[:typeflag].empty?
|
138
138
|
vals[:magic] ||= "ustar"
|
139
139
|
vals[:version] ||= "00"
|
140
140
|
vals[:uname] ||= "wheel"
|
@@ -131,11 +131,19 @@ class Gem::RemoteFetcher
|
|
131
131
|
|
132
132
|
FileUtils.mkdir_p cache_dir rescue nil unless File.exist? cache_dir
|
133
133
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
134
|
+
# Always escape URI's to deal with potential spaces and such
|
135
|
+
# It should also be considered that source_uri may already be
|
136
|
+
# a valid URI with escaped characters. e.g. "{DESede}" is encoded
|
137
|
+
# as "%7BDESede%7D". If this is escaped again the percentage
|
138
|
+
# symbols will be escaped.
|
139
|
+
unless source_uri.is_a?(URI::Generic)
|
140
|
+
begin
|
141
|
+
source_uri = URI.parse(source_uri)
|
142
|
+
rescue
|
143
|
+
source_uri = URI.parse(URI.const_defined?(:DEFAULT_PARSER) ?
|
144
|
+
URI::DEFAULT_PARSER.escape(source_uri.to_s) :
|
145
|
+
URI.escape(source_uri.to_s))
|
146
|
+
end
|
139
147
|
end
|
140
148
|
|
141
149
|
scheme = source_uri.scheme
|
@@ -285,20 +293,20 @@ class Gem::RemoteFetcher
|
|
285
293
|
def cache_update_path uri, path = nil, update = true
|
286
294
|
mtime = path && File.stat(path).mtime rescue nil
|
287
295
|
|
288
|
-
|
289
|
-
Gem.read_binary(path)
|
290
|
-
else
|
291
|
-
data = fetch_path(uri)
|
296
|
+
data = fetch_path(uri, mtime)
|
292
297
|
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
io.write data
|
297
|
-
end
|
298
|
-
end
|
298
|
+
if data == nil # indicates the server returned 304 Not Modified
|
299
|
+
return Gem.read_binary(path)
|
300
|
+
end
|
299
301
|
|
300
|
-
|
302
|
+
if update and path
|
303
|
+
open(path, 'wb') do |io|
|
304
|
+
io.flock(File::LOCK_EX)
|
305
|
+
io.write data
|
306
|
+
end
|
301
307
|
end
|
308
|
+
|
309
|
+
data
|
302
310
|
end
|
303
311
|
|
304
312
|
##
|
data/lib/rubygems/request.rb
CHANGED
@@ -48,15 +48,14 @@ class Gem::Request
|
|
48
48
|
connection.key = OpenSSL::PKey::RSA.new pem
|
49
49
|
end
|
50
50
|
|
51
|
+
store.set_default_paths
|
52
|
+
add_rubygems_trusted_certs(store)
|
51
53
|
if Gem.configuration.ssl_ca_cert
|
52
54
|
if File.directory? Gem.configuration.ssl_ca_cert
|
53
55
|
store.add_path Gem.configuration.ssl_ca_cert
|
54
56
|
else
|
55
57
|
store.add_file Gem.configuration.ssl_ca_cert
|
56
58
|
end
|
57
|
-
else
|
58
|
-
store.set_default_paths
|
59
|
-
add_rubygems_trusted_certs(store)
|
60
59
|
end
|
61
60
|
connection.cert_store = store
|
62
61
|
rescue LoadError => e
|
@@ -106,7 +105,8 @@ class Gem::Request
|
|
106
105
|
request = @request_class.new @uri.request_uri
|
107
106
|
|
108
107
|
unless @uri.nil? || @uri.user.nil? || @uri.user.empty? then
|
109
|
-
request.basic_auth @uri.user,
|
108
|
+
request.basic_auth Gem::UriFormatter.new(@uri.user).unescape,
|
109
|
+
Gem::UriFormatter.new(@uri.password).unescape
|
110
110
|
end
|
111
111
|
|
112
112
|
request.add_field 'User-Agent', @user_agent
|
data/lib/rubygems/request_set.rb
CHANGED
@@ -38,6 +38,11 @@ class Gem::RequestSet
|
|
38
38
|
|
39
39
|
attr_accessor :ignore_dependencies
|
40
40
|
|
41
|
+
##
|
42
|
+
# When false no remote sets are used for resolving gems.
|
43
|
+
|
44
|
+
attr_accessor :remote
|
45
|
+
|
41
46
|
##
|
42
47
|
# Sets used for resolution
|
43
48
|
|
@@ -71,6 +76,7 @@ class Gem::RequestSet
|
|
71
76
|
@git_set = nil
|
72
77
|
@ignore_dependencies = false
|
73
78
|
@install_dir = Gem.dir
|
79
|
+
@remote = true
|
74
80
|
@requests = []
|
75
81
|
@sets = []
|
76
82
|
@soft_missing = false
|
@@ -150,6 +156,7 @@ class Gem::RequestSet
|
|
150
156
|
gemdeps = options[:gemdeps]
|
151
157
|
|
152
158
|
@install_dir = options[:install_dir] || Gem.dir
|
159
|
+
@remote = options[:domain] != :local
|
153
160
|
|
154
161
|
load_gemdeps gemdeps, options[:without_groups]
|
155
162
|
|
@@ -235,6 +242,7 @@ class Gem::RequestSet
|
|
235
242
|
@sets << @vendor_set
|
236
243
|
|
237
244
|
set = Gem::Resolver.compose_sets(*@sets)
|
245
|
+
set.remote = @remote
|
238
246
|
|
239
247
|
resolver = Gem::Resolver.new @dependencies, set
|
240
248
|
resolver.development = @development
|
data/lib/rubygems/resolver.rb
CHANGED
@@ -25,10 +25,12 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
|
|
25
25
|
# http://guides.rubygems.org/rubygems-org-api
|
26
26
|
|
27
27
|
def initialize dep_uri = 'https://rubygems.org/api/v1/dependencies'
|
28
|
+
super()
|
29
|
+
|
28
30
|
dep_uri = URI dep_uri unless URI === dep_uri # for ruby 1.8
|
29
31
|
|
30
32
|
@dep_uri = dep_uri
|
31
|
-
@uri = dep_uri + '
|
33
|
+
@uri = dep_uri + '../..'
|
32
34
|
|
33
35
|
@data = Hash.new { |h,k| h[k] = [] }
|
34
36
|
@source = Gem::Source.new @uri
|
@@ -41,6 +43,8 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
|
|
41
43
|
def find_all req
|
42
44
|
res = []
|
43
45
|
|
46
|
+
return res unless @remote
|
47
|
+
|
44
48
|
versions(req.name).each do |ver|
|
45
49
|
if req.dependency.match? req.name, ver[:number]
|
46
50
|
res << Gem::Resolver::APISpecification.new(self, ver)
|
@@ -55,6 +59,7 @@ class Gem::Resolver::APISet < Gem::Resolver::Set
|
|
55
59
|
# data for DependencyRequests +reqs+.
|
56
60
|
|
57
61
|
def prefetch reqs
|
62
|
+
return unless @remote
|
58
63
|
names = reqs.map { |r| r.dependency.name }
|
59
64
|
needed = names - @data.keys
|
60
65
|
|
@@ -12,11 +12,30 @@ class Gem::Resolver::BestSet < Gem::Resolver::ComposedSet
|
|
12
12
|
def initialize sources = Gem.sources
|
13
13
|
super()
|
14
14
|
|
15
|
-
sources
|
15
|
+
@sources = sources
|
16
|
+
end
|
17
|
+
|
18
|
+
##
|
19
|
+
# Picks which sets to use for the configured sources.
|
20
|
+
|
21
|
+
def pick_sets # :nodoc:
|
22
|
+
@sources.each_source do |source|
|
16
23
|
@sets << source.dependency_resolver_set
|
17
24
|
end
|
18
25
|
end
|
19
26
|
|
27
|
+
def find_all req # :nodoc:
|
28
|
+
pick_sets if @remote and @sets.empty?
|
29
|
+
|
30
|
+
super
|
31
|
+
end
|
32
|
+
|
33
|
+
def prefetch reqs # :nodoc:
|
34
|
+
pick_sets if @remote and @sets.empty?
|
35
|
+
|
36
|
+
super
|
37
|
+
end
|
38
|
+
|
20
39
|
def pretty_print q # :nodoc:
|
21
40
|
q.group 2, '[BestSet', ']' do
|
22
41
|
q.breakable
|
@@ -16,9 +16,20 @@ class Gem::Resolver::ComposedSet < Gem::Resolver::Set
|
|
16
16
|
# Gem::Resolver::compose_sets instead.
|
17
17
|
|
18
18
|
def initialize *sets
|
19
|
+
super()
|
20
|
+
|
19
21
|
@sets = sets
|
20
22
|
end
|
21
23
|
|
24
|
+
##
|
25
|
+
# Sets the remote network access for all composed sets.
|
26
|
+
|
27
|
+
def remote= remote
|
28
|
+
super
|
29
|
+
|
30
|
+
@sets.each { |set| set.remote = remote }
|
31
|
+
end
|
32
|
+
|
22
33
|
##
|
23
34
|
# Finds all specs matching +req+ in all sets.
|
24
35
|
|
@@ -33,6 +33,8 @@ class Gem::Resolver::GitSet < Gem::Resolver::Set
|
|
33
33
|
attr_reader :specs # :nodoc:
|
34
34
|
|
35
35
|
def initialize # :nodoc:
|
36
|
+
super()
|
37
|
+
|
36
38
|
@git = ENV['git'] || 'git'
|
37
39
|
@need_submodules = {}
|
38
40
|
@repositories = {}
|
@@ -91,6 +93,7 @@ class Gem::Resolver::GitSet < Gem::Resolver::Set
|
|
91
93
|
@repositories.each do |name, (repository, reference)|
|
92
94
|
source = Gem::Source::Git.new name, repository, reference
|
93
95
|
source.root_dir = @root_dir
|
96
|
+
source.remote = @remote
|
94
97
|
|
95
98
|
source.specs.each do |spec|
|
96
99
|
git_spec = Gem::Resolver::GitSpecification.new self, spec, source
|
@@ -5,6 +5,8 @@
|
|
5
5
|
class Gem::Resolver::IndexSet < Gem::Resolver::Set
|
6
6
|
|
7
7
|
def initialize source = nil # :nodoc:
|
8
|
+
super()
|
9
|
+
|
8
10
|
@f =
|
9
11
|
if source then
|
10
12
|
sources = Gem::SourceList.from [source]
|
@@ -34,6 +36,8 @@ class Gem::Resolver::IndexSet < Gem::Resolver::Set
|
|
34
36
|
def find_all req
|
35
37
|
res = []
|
36
38
|
|
39
|
+
return res unless @remote
|
40
|
+
|
37
41
|
name = req.dependency.name
|
38
42
|
|
39
43
|
@all[name].each do |uri, n|
|
@@ -24,14 +24,17 @@ class Gem::Resolver::InstallerSet < Gem::Resolver::Set
|
|
24
24
|
# Creates a new InstallerSet that will look for gems in +domain+.
|
25
25
|
|
26
26
|
def initialize domain
|
27
|
+
super()
|
28
|
+
|
27
29
|
@domain = domain
|
30
|
+
@remote = consider_remote?
|
28
31
|
|
29
32
|
@f = Gem::SpecFetcher.fetcher
|
30
33
|
|
31
34
|
@always_install = []
|
32
35
|
@ignore_dependencies = false
|
33
36
|
@ignore_installed = false
|
34
|
-
@remote_set = Gem::Resolver::BestSet.new
|
37
|
+
@remote_set = Gem::Resolver::BestSet.new
|
35
38
|
@specs = {}
|
36
39
|
end
|
37
40
|
|
@@ -120,5 +123,16 @@ class Gem::Resolver::InstallerSet < Gem::Resolver::Set
|
|
120
123
|
end
|
121
124
|
end
|
122
125
|
|
126
|
+
def remote= remote # :nodoc:
|
127
|
+
case @domain
|
128
|
+
when :local then
|
129
|
+
@domain = :both if remote
|
130
|
+
when :remote then
|
131
|
+
@domain = nil unless remote
|
132
|
+
when :both then
|
133
|
+
@domain = :local unless remote
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
123
137
|
end
|
124
138
|
|