rubygems-update 1.6.2 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rubygems-update might be problematic. Click here for more details.

Files changed (40) hide show
  1. data.tar.gz.sig +0 -0
  2. data/.autotest +0 -1
  3. data/History.txt +70 -4
  4. data/README.rdoc +3 -0
  5. data/Rakefile +76 -0
  6. data/lib/rubygems.rb +57 -27
  7. data/lib/rubygems/command.rb +6 -4
  8. data/lib/rubygems/commands/contents_command.rb +14 -11
  9. data/lib/rubygems/commands/fetch_command.rb +6 -3
  10. data/lib/rubygems/commands/outdated_command.rb +2 -1
  11. data/lib/rubygems/commands/pristine_command.rb +4 -3
  12. data/lib/rubygems/commands/unpack_command.rb +46 -4
  13. data/lib/rubygems/commands/update_command.rb +24 -10
  14. data/lib/rubygems/custom_require.rb +1 -2
  15. data/lib/rubygems/dependency_installer.rb +1 -1
  16. data/lib/rubygems/ext/rake_builder.rb +1 -1
  17. data/lib/rubygems/gem_runner.rb +1 -0
  18. data/lib/rubygems/mock_gem_ui.rb +2 -1
  19. data/lib/rubygems/package/tar_input.rb +1 -0
  20. data/lib/rubygems/remote_fetcher.rb +62 -39
  21. data/lib/rubygems/server.rb +1 -1
  22. data/lib/rubygems/source_index.rb +64 -43
  23. data/lib/rubygems/spec_fetcher.rb +5 -6
  24. data/lib/rubygems/specification.rb +375 -402
  25. data/lib/rubygems/test_case.rb +7 -8
  26. data/lib/rubygems/uninstaller.rb +2 -2
  27. data/lib/rubygems/user_interaction.rb +27 -31
  28. data/test/rubygems/test_gem.rb +2 -44
  29. data/test/rubygems/test_gem_commands_contents_command.rb +19 -30
  30. data/test/rubygems/test_gem_commands_unpack_command.rb +24 -0
  31. data/test/rubygems/test_gem_commands_update_command.rb +26 -1
  32. data/test/rubygems/test_gem_dependency_installer.rb +9 -5
  33. data/test/rubygems/test_gem_dependency_list.rb +2 -6
  34. data/test/rubygems/test_gem_gem_runner.rb +1 -4
  35. data/test/rubygems/test_gem_installer.rb +1 -2
  36. data/test/rubygems/test_gem_remote_fetcher.rb +131 -24
  37. data/test/rubygems/test_gem_source_index.rb +7 -192
  38. data/test/rubygems/test_gem_specification.rb +132 -103
  39. metadata +9 -9
  40. metadata.gz.sig +0 -0
@@ -35,19 +35,22 @@ class Gem::Commands::FetchCommand < Gem::Command
35
35
  version = options[:version] || Gem::Requirement.default
36
36
  all = Gem::Requirement.default != version
37
37
 
38
+ platform = Gem.platforms.last
38
39
  gem_names = get_all_gem_names
39
40
 
40
41
  gem_names.each do |gem_name|
41
42
  dep = Gem::Dependency.new gem_name, version
42
43
  dep.prerelease = options[:prerelease]
43
44
 
44
- specs_and_sources = Gem::SpecFetcher.fetcher.fetch(dep, all, true,
45
- dep.prerelease?)
46
-
47
45
  specs_and_sources, errors =
48
46
  Gem::SpecFetcher.fetcher.fetch_with_errors(dep, all, true,
49
47
  dep.prerelease?)
50
48
 
49
+ if platform then
50
+ filtered = specs_and_sources.select { |s,| s.platform == platform }
51
+ specs_and_sources = filtered unless filtered.empty?
52
+ end
53
+
51
54
  spec, source_uri = specs_and_sources.sort_by { |s,| s.version }.last
52
55
 
53
56
  if spec.nil? then
@@ -16,7 +16,8 @@ class Gem::Commands::OutdatedCommand < Gem::Command
16
16
  end
17
17
 
18
18
  def execute
19
- locals = Gem::SourceIndex.from_installed_gems
19
+ # FIX: this should be able to be Gem.source_index but our test fails :(
20
+ locals = Gem::SourceIndex.new Gem::SourceIndex.installed_spec_directories
20
21
 
21
22
  locals.outdated.sort.each do |name|
22
23
  local = locals.find_name(name).last
@@ -51,13 +51,12 @@ revert the gem.
51
51
  gem_name = nil
52
52
 
53
53
  specs = if options[:all] then
54
- Gem::SourceIndex.from_installed_gems.map do |name, spec|
54
+ Gem.source_index.map do |name, spec|
55
55
  spec
56
56
  end
57
57
  else
58
58
  gem_name = get_one_gem_name
59
- Gem::SourceIndex.from_installed_gems.find_name(gem_name,
60
- options[:version])
59
+ Gem.source_index.find_name(gem_name, options[:version])
61
60
  end
62
61
 
63
62
  if specs.empty? then
@@ -76,6 +75,8 @@ revert the gem.
76
75
  gem = spec.cache_gem
77
76
 
78
77
  if gem.nil? then
78
+ require 'rubygems/remote_fetcher'
79
+
79
80
  say "Cached gem for #{spec.full_name} not found, attempting to fetch..."
80
81
  dep = Gem::Dependency.new spec.name, spec.version
81
82
  Gem::RemoteFetcher.fetcher.download_to_cache dep
@@ -19,6 +19,10 @@ class Gem::Commands::UnpackCommand < Gem::Command
19
19
  options[:target] = value
20
20
  end
21
21
 
22
+ add_option('--spec', 'unpack the gem specification') do |value, options|
23
+ options[:spec] = true
24
+ end
25
+
22
26
  add_version_option
23
27
  end
24
28
 
@@ -44,14 +48,28 @@ class Gem::Commands::UnpackCommand < Gem::Command
44
48
  dependency = Gem::Dependency.new name, options[:version]
45
49
  path = get_path dependency
46
50
 
47
- if path then
51
+ unless path then
52
+ alert_error "Gem '#{name}' not installed nor fetchable."
53
+ next
54
+ end
55
+
56
+ if @options[:spec] then
57
+ spec, metadata = get_metadata path
58
+
59
+ if metadata.nil? then
60
+ alert_error "--spec is unsupported on '#{name}' (old format gem)"
61
+ next
62
+ end
63
+
64
+ open spec.spec_name, 'w' do |io|
65
+ io.write metadata
66
+ end
67
+ else
48
68
  basename = File.basename path, '.gem'
49
69
  target_dir = File.expand_path basename, options[:target]
50
70
  FileUtils.mkdir_p target_dir
51
71
  Gem::Installer.new(path, :unpack => true).unpack target_dir
52
72
  say "Unpacked gem: '#{target_dir}'"
53
- else
54
- alert_error "Gem '#{name}' not installed."
55
73
  end
56
74
  end
57
75
  end
@@ -64,7 +82,6 @@ class Gem::Commands::UnpackCommand < Gem::Command
64
82
  # TODO: see comments in get_path() about general service.
65
83
 
66
84
  def find_in_cache(filename)
67
-
68
85
  Gem.path.each do |path|
69
86
  this_path = Gem.cache_gem(filename, path)
70
87
  return this_path if File.exist? this_path
@@ -112,5 +129,30 @@ class Gem::Commands::UnpackCommand < Gem::Command
112
129
  path
113
130
  end
114
131
 
132
+ ##
133
+ # Extracts the Gem::Specification and raw metadata from the .gem file at
134
+ # +path+.
135
+
136
+ def get_metadata path
137
+ format = Gem::Format.from_file_by_path path
138
+ spec = format.spec
139
+
140
+ metadata = nil
141
+
142
+ open path, Gem.binary_mode do |io|
143
+ tar = Gem::Package::TarReader.new io
144
+ tar.each_entry do |entry|
145
+ case entry.full_name
146
+ when 'metadata' then
147
+ metadata = entry.read
148
+ when 'metadata.gz' then
149
+ metadata = Gem.gunzip entry.read
150
+ end
151
+ end
152
+ end
153
+
154
+ return spec, metadata
155
+ end
156
+
115
157
  end
116
158
 
@@ -72,7 +72,7 @@ class Gem::Commands::UpdateCommand < Gem::Command
72
72
  end
73
73
  end
74
74
 
75
- gems_to_update = which_to_update hig, options[:args]
75
+ gems_to_update = which_to_update hig, options[:args].uniq
76
76
 
77
77
  updated = update_gems gems_to_update
78
78
 
@@ -117,8 +117,8 @@ class Gem::Commands::UpdateCommand < Gem::Command
117
117
  end
118
118
 
119
119
  def update_gems gems_to_update
120
- gems_to_update.uniq.sort.each do |name|
121
- update_gem name
120
+ gems_to_update.uniq.sort.each do |(name, version)|
121
+ update_gem name, version
122
122
  end
123
123
 
124
124
  @updated
@@ -135,6 +135,9 @@ class Gem::Commands::UpdateCommand < Gem::Command
135
135
 
136
136
  options[:user_install] = false
137
137
 
138
+ # TODO: rename version and other variable name conflicts
139
+ # TODO: get rid of all this indirection on name and other BS
140
+
138
141
  version = options[:system]
139
142
  if version == true then
140
143
  version = Gem::Version.new Gem::VERSION
@@ -152,14 +155,23 @@ class Gem::Commands::UpdateCommand < Gem::Command
152
155
  'rubygems-update' => rubygems_update
153
156
  }
154
157
 
155
- gems_to_update = which_to_update hig, options[:args]
158
+ gems_to_update = which_to_update hig, options[:args], :system
159
+ name, up_ver = gems_to_update.first
160
+ current_ver = Gem::Version.new Gem::VERSION
161
+
162
+ target = if options[:system] == true then
163
+ up_ver
164
+ else
165
+ version
166
+ end
156
167
 
157
- if gems_to_update.empty? then
168
+ if current_ver == target then
169
+ # if options[:system] != true and version == current_ver then
158
170
  say "Latest version currently installed. Aborting."
159
171
  terminate_interaction
160
172
  end
161
173
 
162
- update_gem gems_to_update.first, requirement
174
+ update_gem name, target
163
175
 
164
176
  Gem.source_index.refresh!
165
177
 
@@ -187,7 +199,7 @@ class Gem::Commands::UpdateCommand < Gem::Command
187
199
  end
188
200
  end
189
201
 
190
- def which_to_update(highest_installed_gems, gem_names)
202
+ def which_to_update highest_installed_gems, gem_names, system = false
191
203
  result = []
192
204
 
193
205
  highest_installed_gems.each do |l_name, l_spec|
@@ -207,9 +219,11 @@ class Gem::Commands::UpdateCommand < Gem::Command
207
219
  version
208
220
  end.last
209
221
 
210
- if highest_remote_gem and
211
- l_spec.version < highest_remote_gem.first[1] then
212
- result << l_name
222
+ highest_remote_gem ||= [[nil, Gem::Version.new(0), nil]] # "null" object
223
+ highest_remote_ver = highest_remote_gem.first[1]
224
+
225
+ if system or (l_spec.version < highest_remote_ver) then
226
+ result << [l_spec.name, [l_spec.version, highest_remote_ver].max]
213
227
  end
214
228
  end
215
229
 
@@ -46,8 +46,7 @@ module Kernel
46
46
  end
47
47
 
48
48
  found_specs.each do |found_spec|
49
- # FIX: this is dumb, activate a spec instead of name/version
50
- Gem.activate found_spec.name, found_spec.version
49
+ Gem.activate_spec found_spec
51
50
  end
52
51
  end
53
52
 
@@ -46,7 +46,7 @@ class Gem::DependencyInstaller
46
46
  def initialize(options = {})
47
47
  if options[:install_dir] then
48
48
  spec_dir = options[:install_dir], 'specifications'
49
- @source_index = Gem::SourceIndex.from_gems_in spec_dir
49
+ @source_index = Gem::SourceIndex.new [spec_dir]
50
50
  else
51
51
  @source_index = Gem.source_index
52
52
  end
@@ -22,7 +22,7 @@ class Gem::Ext::RakeBuilder < Gem::Ext::Builder
22
22
  rake = ENV['rake']
23
23
 
24
24
  rake ||= begin
25
- "\"#{Gem.ruby}\" -rubygems #{Gem.bin_path('rake')}"
25
+ "\"#{Gem.ruby}\" -rubygems #{Gem.bin_path('rake', 'rake')}"
26
26
  rescue Gem::Exception
27
27
  end
28
28
 
@@ -25,6 +25,7 @@ Gem.load_env_plugins rescue nil
25
25
  class Gem::GemRunner
26
26
 
27
27
  def initialize(options={})
28
+ # TODO: nuke these options
28
29
  @command_manager_class = options[:command_manager] || Gem::CommandManager
29
30
  @config_file_class = options[:config_file] || Gem::ConfigFile
30
31
  @doc_manager_class = options[:doc_manager] || Gem::DocManager
@@ -7,6 +7,7 @@ require 'rubygems/user_interaction'
7
7
 
8
8
  class Gem::MockGemUi < Gem::StreamUI
9
9
  class TermError < RuntimeError; end
10
+ class SystemExitException < RuntimeError; end
10
11
 
11
12
  module TTY
12
13
 
@@ -56,7 +57,7 @@ class Gem::MockGemUi < Gem::StreamUI
56
57
  @terminated = true
57
58
 
58
59
  raise TermError unless status == 0
59
- raise Gem::SystemExitException, status
60
+ raise SystemExitException, status
60
61
  end
61
62
 
62
63
  end
@@ -49,6 +49,7 @@ class Gem::Package::TarInput
49
49
  sio.rewind
50
50
  end
51
51
 
52
+ # TODO use Gem.gunzip
52
53
  gzis = Zlib::GzipReader.new(sio || entry)
53
54
  # YAML wants an instance of IO
54
55
  @metadata = load_gemspec(gzis)
@@ -69,6 +69,7 @@ class Gem::RemoteFetcher
69
69
  when URI::HTTP then proxy
70
70
  else URI.parse(proxy)
71
71
  end
72
+ @user_agent = user_agent
72
73
  end
73
74
 
74
75
  ##
@@ -186,19 +187,55 @@ class Gem::RemoteFetcher
186
187
  local_gem_path
187
188
  end
188
189
 
190
+ ##
191
+ # File Fetcher. Dispatched by +fetch_path+. Use it instead.
192
+
193
+ def fetch_file uri, *_
194
+ Gem.read_binary correct_for_windows_path uri.path
195
+ end
196
+
197
+ ##
198
+ # HTTP Fetcher. Dispatched by +fetch_path+. Use it instead.
199
+
200
+ def fetch_http uri, last_modified = nil, head = false, depth = 0
201
+ fetch_type = head ? Net::HTTP::Head : Net::HTTP::Get
202
+ response = request uri, fetch_type, last_modified
203
+
204
+ case response
205
+ when Net::HTTPOK, Net::HTTPNotModified then
206
+ head ? response : response.body
207
+ when Net::HTTPMovedPermanently, Net::HTTPFound, Net::HTTPSeeOther,
208
+ Net::HTTPTemporaryRedirect then
209
+ raise FetchError.new('too many redirects', uri) if depth > 10
210
+
211
+ location = URI.parse response['Location']
212
+ fetch_http(location, last_modified, head, depth + 1)
213
+ else
214
+ raise FetchError.new("bad response #{response.message} #{response.code}", uri)
215
+ end
216
+ end
217
+
218
+ alias :fetch_https :fetch_http
219
+
189
220
  ##
190
221
  # Downloads +uri+ and returns it as a String.
191
222
 
192
223
  def fetch_path(uri, mtime = nil, head = false)
193
- data = open_uri_or_path uri, mtime, head
224
+ uri = URI.parse uri unless URI::Generic === uri
225
+
226
+ raise ArgumentError, "bad uri: #{uri}" unless uri
227
+ raise ArgumentError, "uri scheme is invalid: #{uri.scheme.inspect}" unless
228
+ uri.scheme
229
+
230
+ data = send "fetch_#{uri.scheme}", uri, mtime, head
194
231
  data = Gem.gunzip data if data and not head and uri.to_s =~ /gz$/
195
232
  data
196
233
  rescue FetchError
197
234
  raise
198
235
  rescue Timeout::Error
199
- raise FetchError.new('timed out', uri)
236
+ raise FetchError.new('timed out', uri.to_s)
200
237
  rescue IOError, SocketError, SystemCallError => e
201
- raise FetchError.new("#{e.class}: #{e}", uri)
238
+ raise FetchError.new("#{e.class}: #{e}", uri.to_s)
202
239
  end
203
240
 
204
241
  ##
@@ -300,36 +337,8 @@ class Gem::RemoteFetcher
300
337
  # read from the filesystem instead.
301
338
 
302
339
  def open_uri_or_path(uri, last_modified = nil, head = false, depth = 0)
303
- raise "block is dead" if block_given?
304
-
305
- uri = URI.parse uri unless URI::Generic === uri
306
-
307
- # This check is redundant unless Gem::RemoteFetcher is likely
308
- # to be used directly, since the scheme is checked elsewhere.
309
- # - Daniel Berger
310
- unless ['http', 'https', 'file'].include?(uri.scheme)
311
- raise ArgumentError, 'uri scheme is invalid'
312
- end
313
-
314
- if uri.scheme == 'file'
315
- path = correct_for_windows_path(uri.path)
316
- return Gem.read_binary(path)
317
- end
318
-
319
- fetch_type = head ? Net::HTTP::Head : Net::HTTP::Get
320
- response = request uri, fetch_type, last_modified
321
-
322
- case response
323
- when Net::HTTPOK, Net::HTTPNotModified then
324
- head ? response : response.body
325
- when Net::HTTPMovedPermanently, Net::HTTPFound, Net::HTTPSeeOther,
326
- Net::HTTPTemporaryRedirect then
327
- raise FetchError.new('too many redirects', uri) if depth > 10
328
-
329
- open_uri_or_path(response['Location'], last_modified, head, depth + 1)
330
- else
331
- raise FetchError.new("bad response #{response.message} #{response.code}", uri)
332
- end
340
+ raise "NO: Use fetch_path instead"
341
+ # TODO: deprecate for fetch_path
333
342
  end
334
343
 
335
344
  ##
@@ -344,12 +353,7 @@ class Gem::RemoteFetcher
344
353
  request.basic_auth uri.user, uri.password
345
354
  end
346
355
 
347
- ua = "RubyGems/#{Gem::VERSION} #{Gem::Platform.local}"
348
- ua << " Ruby/#{RUBY_VERSION} (#{RUBY_RELEASE_DATE}"
349
- ua << " patchlevel #{RUBY_PATCHLEVEL}" if defined? RUBY_PATCHLEVEL
350
- ua << ")"
351
-
352
- request.add_field 'User-Agent', ua
356
+ request.add_field 'User-Agent', @user_agent
353
357
  request.add_field 'Connection', 'keep-alive'
354
358
  request.add_field 'Keep-Alive', '30'
355
359
 
@@ -441,5 +445,24 @@ class Gem::RemoteFetcher
441
445
  connection.start
442
446
  end
443
447
 
448
+ def user_agent
449
+ ua = "RubyGems/#{Gem::VERSION} #{Gem::Platform.local}"
450
+
451
+ ruby_version = RUBY_VERSION
452
+ ruby_version += 'dev' if RUBY_PATCHLEVEL == -1
453
+
454
+ ua << " Ruby/#{ruby_version} (#{RUBY_RELEASE_DATE}"
455
+ if RUBY_PATCHLEVEL >= 0 then
456
+ ua << " patchlevel #{RUBY_PATCHLEVEL}"
457
+ elsif defined?(RUBY_REVISION) then
458
+ ua << " revision #{RUBY_REVISION}"
459
+ end
460
+ ua << ")"
461
+
462
+ ua << " #{RUBY_ENGINE}" if defined?(RUBY_ENGINE) and RUBY_ENGINE != 'ruby'
463
+
464
+ ua
465
+ end
466
+
444
467
  end
445
468
 
@@ -454,7 +454,7 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
454
454
  spec_dir
455
455
  end
456
456
 
457
- @source_index = Gem::SourceIndex.from_gems_in(*@spec_dirs)
457
+ @source_index = Gem::SourceIndex.new(@spec_dirs)
458
458
  end
459
459
 
460
460
  def Marshal(req, res)
@@ -5,6 +5,7 @@
5
5
  #++
6
6
 
7
7
  require 'rubygems/specification'
8
+ require 'rubygems/deprecate'
8
9
 
9
10
  ##
10
11
  # The SourceIndex object indexes all the gems available from a
@@ -28,53 +29,52 @@ class Gem::SourceIndex
28
29
 
29
30
  attr_accessor :spec_dirs
30
31
 
31
- class << self
32
- ##
33
- # Factory method to construct a source index instance for a given
34
- # path.
35
- #
36
- # deprecated::
37
- # If supplied, from_installed_gems will act just like
38
- # +from_gems_in+. This argument is deprecated and is provided
39
- # just for backwards compatibility, and should not generally
40
- # be used.
41
- #
42
- # return::
43
- # SourceIndex instance
44
-
45
- def from_installed_gems(*deprecated)
46
- if deprecated.empty?
47
- from_gems_in(*installed_spec_directories)
48
- else
49
- from_gems_in(*deprecated) # HACK warn
50
- end
32
+ ##
33
+ # Factory method to construct a source index instance for a given
34
+ # path.
35
+ #
36
+ # deprecated::
37
+ # If supplied, from_installed_gems will act just like
38
+ # +from_gems_in+. This argument is deprecated and is provided
39
+ # just for backwards compatibility, and should not generally
40
+ # be used.
41
+ #
42
+ # return::
43
+ # SourceIndex instance
44
+
45
+ def self.from_installed_gems(*deprecated)
46
+ if deprecated.empty?
47
+ from_gems_in(*installed_spec_directories)
48
+ else
49
+ warn "NOTE: from_installed_gems(arg) is deprecated. From #{caller.first}"
50
+ from_gems_in(*deprecated) # HACK warn
51
51
  end
52
+ end
52
53
 
53
- ##
54
- # Returns a list of directories from Gem.path that contain specifications.
54
+ ##
55
+ # Returns a list of directories from Gem.path that contain specifications.
55
56
 
56
- def installed_spec_directories
57
- Gem.path.collect { |dir| File.join(dir, "specifications") }
58
- end
57
+ def self.installed_spec_directories
58
+ # TODO: move to Gem::Utils
59
+ Gem.path.collect { |dir| File.join(dir, "specifications") }
60
+ end
59
61
 
60
- ##
61
- # Creates a new SourceIndex from the ruby format gem specifications in
62
- # +spec_dirs+.
62
+ ##
63
+ # Creates a new SourceIndex from the ruby format gem specifications in
64
+ # +spec_dirs+.
63
65
 
64
- def from_gems_in(*spec_dirs)
65
- source_index = new
66
- source_index.spec_dirs = spec_dirs
67
- source_index.refresh!
68
- end
66
+ def self.from_gems_in(*spec_dirs)
67
+ new spec_dirs
68
+ end
69
69
 
70
- ##
71
- # Loads a ruby-format specification from +file_name+ and returns the
72
- # loaded spec.
70
+ ##
71
+ # Loads a ruby-format specification from +file_name+ and returns the
72
+ # loaded spec.
73
73
 
74
- def load_specification(file_name)
74
+ def self.load_specification(file_name)
75
+ Deprecate.skip_during do
75
76
  Gem::Specification.load file_name
76
77
  end
77
-
78
78
  end
79
79
 
80
80
  ##
@@ -84,13 +84,23 @@ class Gem::SourceIndex
84
84
  # TODO merge @gems and @prerelease_gems and provide a separate method
85
85
  # #prerelease_gems
86
86
 
87
- def initialize(specifications={})
87
+ def initialize specs_or_dirs = []
88
88
  @gems = {}
89
- specifications.each{ |full_name, spec| add_spec spec }
90
89
  @spec_dirs = nil
90
+
91
+ case specs_or_dirs
92
+ when Hash then
93
+ warn "NOTE: SourceIndex.new(hash) is deprecated; From #{caller.first}."
94
+ specs_or_dirs.each{ |full_name, spec| add_spec spec }
95
+ when Array, String then
96
+ self.spec_dirs = Array(specs_or_dirs)
97
+ refresh!
98
+ else
99
+ arg = specs_or_dirs.inspect
100
+ warn "NOTE: SourceIndex.new(#{arg}) is deprecated; From #{caller.first}."
101
+ end
91
102
  end
92
103
 
93
- # TODO: remove method
94
104
  def all_gems
95
105
  @gems
96
106
  end
@@ -113,7 +123,9 @@ class Gem::SourceIndex
113
123
  spec_files = Dir.glob File.join(spec_dir, '*.gemspec')
114
124
 
115
125
  spec_files.each do |spec_file|
116
- gemspec = Gem::Specification.load spec_file
126
+ gemspec = Deprecate.skip_during do
127
+ Gem::Specification.load spec_file
128
+ end
117
129
  add_spec gemspec if gemspec
118
130
  end
119
131
  end
@@ -284,7 +296,7 @@ class Gem::SourceIndex
284
296
  requirement = Gem::Requirement.create requirement
285
297
  end
286
298
 
287
- specs = all_gems.values.select do |spec|
299
+ specs = @gems.values.select do |spec|
288
300
  spec.name =~ gem_pattern and
289
301
  requirement.satisfied_by? spec.version
290
302
  end
@@ -338,6 +350,15 @@ class Gem::SourceIndex
338
350
  Marshal.dump(self)
339
351
  end
340
352
 
353
+ extend Deprecate
354
+ deprecate :all_gems, :none, 2011, 10
355
+
356
+ class << self
357
+ extend Deprecate
358
+ deprecate :from_installed_gems, :none, 2011, 10
359
+ deprecate :from_gems_in, :none, 2011, 10
360
+ deprecate :load_specification, :none, 2011, 10
361
+ end
341
362
  end
342
363
 
343
364
  # :stopdoc: