rubygems-update 1.3.3 → 1.3.4
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.
- data.tar.gz.sig +0 -0
- data/ChangeLog +238 -184
- data/lib/rubygems.rb +11 -5
- data/lib/rubygems/command.rb +4 -1
- data/lib/rubygems/commands/install_command.rb +40 -0
- data/lib/rubygems/commands/query_command.rb +16 -1
- data/lib/rubygems/commands/setup_command.rb +1 -1
- data/lib/rubygems/commands/update_command.rb +1 -1
- data/lib/rubygems/config_file.rb +0 -1
- data/lib/rubygems/defaults.rb +2 -1
- data/lib/rubygems/dependency.rb +0 -2
- data/lib/rubygems/dependency_list.rb +36 -16
- data/lib/rubygems/exceptions.rb +0 -2
- data/lib/rubygems/ext/builder.rb +0 -2
- data/lib/rubygems/gem_openssl.rb +0 -1
- data/lib/rubygems/gem_path_searcher.rb +0 -2
- data/lib/rubygems/indexer.rb +1 -0
- data/lib/rubygems/package/f_sync_dir.rb +0 -2
- data/lib/rubygems/package/tar_header.rb +0 -2
- data/lib/rubygems/package/tar_input.rb +0 -2
- data/lib/rubygems/package/tar_output.rb +0 -2
- data/lib/rubygems/package/tar_reader.rb +2 -2
- data/lib/rubygems/package/tar_reader/entry.rb +0 -2
- data/lib/rubygems/package/tar_writer.rb +0 -2
- data/lib/rubygems/platform.rb +0 -2
- data/lib/rubygems/remote_fetcher.rb +5 -1
- data/lib/rubygems/requirement.rb +2 -4
- data/lib/rubygems/rubygems_version.rb +1 -1
- data/lib/rubygems/source_index.rb +19 -9
- data/lib/rubygems/spec_fetcher.rb +0 -1
- data/lib/rubygems/specification.rb +0 -1
- data/lib/rubygems/uninstaller.rb +4 -4
- data/lib/rubygems/version.rb +0 -2
- data/test/gemutilities.rb +13 -4
- data/test/test_gem.rb +54 -5
- data/test/test_gem_commands_install_command.rb +2 -0
- data/test/test_gem_commands_query_command.rb +68 -8
- data/test/test_gem_commands_unpack_command.rb +4 -4
- data/test/test_gem_dependency_installer.rb +3 -1
- data/test/test_gem_format.rb +1 -1
- data/test/test_gem_indexer.rb +5 -3
- data/test/test_gem_source_index.rb +14 -445
- data/test/test_gem_source_info_cache.rb +1 -1
- data/test/test_gem_specification.rb +2 -1
- metadata +4 -4
- metadata.gz.sig +0 -0
data/lib/rubygems.rb
CHANGED
@@ -119,7 +119,7 @@ end
|
|
119
119
|
# Gem::post_uninstall.
|
120
120
|
#
|
121
121
|
# == Bugs
|
122
|
-
#
|
122
|
+
#
|
123
123
|
# You can submit bugs to the
|
124
124
|
# {RubyGems bug tracker}[http://rubyforge.org/tracker/?atid=575&group_id=126&func=browse]
|
125
125
|
# on RubyForge
|
@@ -129,7 +129,7 @@ end
|
|
129
129
|
# RubyGems is currently maintained by Eric Hodel.
|
130
130
|
#
|
131
131
|
# RubyGems was originally developed at RubyConf 2003 by:
|
132
|
-
#
|
132
|
+
#
|
133
133
|
# * Rich Kilmer -- rich(at)infoether.com
|
134
134
|
# * Chad Fowler -- chad(at)chadfowler.com
|
135
135
|
# * David Black -- dblack(at)wobblini.net
|
@@ -137,7 +137,7 @@ end
|
|
137
137
|
# * Jim Weirch -- {jim(at)weirichhouse.org}[mailto:jim@weirichhouse.org]
|
138
138
|
#
|
139
139
|
# Contributors:
|
140
|
-
#
|
140
|
+
#
|
141
141
|
# * Gavin Sinclair -- gsinclair(at)soyabean.com.au
|
142
142
|
# * George Marrows -- george.marrows(at)ntlworld.com
|
143
143
|
# * Dick Davies -- rasputnik(at)hellooperator.net
|
@@ -154,7 +154,7 @@ end
|
|
154
154
|
# (If your name is missing, PLEASE let us know!)
|
155
155
|
#
|
156
156
|
# Thanks!
|
157
|
-
#
|
157
|
+
#
|
158
158
|
# -The RubyGems Team
|
159
159
|
|
160
160
|
module Gem
|
@@ -870,7 +870,13 @@ module Gem
|
|
870
870
|
def self.ruby_version
|
871
871
|
return @ruby_version if defined? @ruby_version
|
872
872
|
version = RUBY_VERSION.dup
|
873
|
-
|
873
|
+
|
874
|
+
if defined?(RUBY_PATCHLEVEL) && RUBY_PATCHLEVEL != -1 then
|
875
|
+
version << ".#{RUBY_PATCHLEVEL}"
|
876
|
+
elsif defined?(RUBY_REVISION) then
|
877
|
+
version << ".dev.#{RUBY_REVISION}"
|
878
|
+
end
|
879
|
+
|
874
880
|
@ruby_version = Gem::Version.new version
|
875
881
|
end
|
876
882
|
|
data/lib/rubygems/command.rb
CHANGED
@@ -109,6 +109,9 @@ class Gem::Command
|
|
109
109
|
#
|
110
110
|
# When defining a new command subclass, use add_option to add command-line
|
111
111
|
# switches.
|
112
|
+
#
|
113
|
+
# Unhandled arguments (gem names, files, etc.) are left in
|
114
|
+
# <tt>options[:args]</tt>.
|
112
115
|
|
113
116
|
def initialize(command, summary=nil, defaults={})
|
114
117
|
@command = command
|
@@ -275,7 +278,7 @@ class Gem::Command
|
|
275
278
|
# +handler+ will be called with two values, the value of the argument and
|
276
279
|
# the options hash.
|
277
280
|
#
|
278
|
-
# If the first argument of
|
281
|
+
# If the first argument of add_option is a Symbol, it's used to group
|
279
282
|
# options in output. See `gem help list` for an example.
|
280
283
|
|
281
284
|
def add_option(*opts, &handler) # :yields: value, options
|
@@ -53,6 +53,46 @@ The wrapper allows you to choose among alternate gem versions using _version_.
|
|
53
53
|
|
54
54
|
For example `rake _0.7.3_ --version` will run rake version 0.7.3 if a newer
|
55
55
|
version is also installed.
|
56
|
+
|
57
|
+
If an extension fails to compile during gem installation the gem
|
58
|
+
specification is not written out, but the gem remains unpacked in the
|
59
|
+
repository. You may need to specify the path to the library's headers and
|
60
|
+
libraries to continue. You can do this by adding a -- between RubyGems'
|
61
|
+
options and the extension's build options:
|
62
|
+
|
63
|
+
$ gem install some_extension_gem
|
64
|
+
[build fails]
|
65
|
+
Gem files will remain installed in \\
|
66
|
+
/path/to/gems/some_extension_gem-1.0 for inspection.
|
67
|
+
Results logged to /path/to/gems/some_extension_gem-1.0/gem_make.out
|
68
|
+
$ gem install some_extension_gem -- --with-extension-lib=/path/to/lib
|
69
|
+
[build succeeds]
|
70
|
+
$ gem list some_extension_gem
|
71
|
+
|
72
|
+
*** LOCAL GEMS ***
|
73
|
+
|
74
|
+
some_extension_gem (1.0)
|
75
|
+
$
|
76
|
+
|
77
|
+
If you correct the compilation errors by editing the gem files you will need
|
78
|
+
to write the specification by hand. For example:
|
79
|
+
|
80
|
+
$ gem install some_extension_gem
|
81
|
+
[build fails]
|
82
|
+
Gem files will remain installed in \\
|
83
|
+
/path/to/gems/some_extension_gem-1.0 for inspection.
|
84
|
+
Results logged to /path/to/gems/some_extension_gem-1.0/gem_make.out
|
85
|
+
$ [cd /path/to/gems/some_extension_gem-1.0]
|
86
|
+
$ [edit files or what-have-you and run make]
|
87
|
+
$ gem spec ../../cache/some_extension_gem-1.0.gem --ruby > \\
|
88
|
+
../../specifications/some_extension_gem-1.0.gemspec
|
89
|
+
$ gem list some_extension_gem
|
90
|
+
|
91
|
+
*** LOCAL GEMS ***
|
92
|
+
|
93
|
+
some_extension_gem (1.0)
|
94
|
+
$
|
95
|
+
|
56
96
|
EOF
|
57
97
|
end
|
58
98
|
|
@@ -45,6 +45,11 @@ class Gem::Commands::QueryCommand < Gem::Command
|
|
45
45
|
options[:all] = value
|
46
46
|
end
|
47
47
|
|
48
|
+
add_option( '--prerelease',
|
49
|
+
'Display prerelease versions') do |value, options|
|
50
|
+
options[:prerelease] = value
|
51
|
+
end
|
52
|
+
|
48
53
|
add_local_remote_options
|
49
54
|
end
|
50
55
|
|
@@ -56,6 +61,7 @@ class Gem::Commands::QueryCommand < Gem::Command
|
|
56
61
|
exit_code = 0
|
57
62
|
|
58
63
|
name = options[:name]
|
64
|
+
prerelease = options[:prerelease]
|
59
65
|
|
60
66
|
if options[:installed] then
|
61
67
|
if name.source.empty? then
|
@@ -74,6 +80,10 @@ class Gem::Commands::QueryCommand < Gem::Command
|
|
74
80
|
dep = Gem::Dependency.new name, Gem::Requirement.default
|
75
81
|
|
76
82
|
if local? then
|
83
|
+
if prerelease and not both? then
|
84
|
+
alert_warning "prereleases are always shown locally"
|
85
|
+
end
|
86
|
+
|
77
87
|
if ui.outs.tty? or both? then
|
78
88
|
say
|
79
89
|
say "*** LOCAL GEMS ***"
|
@@ -100,8 +110,13 @@ class Gem::Commands::QueryCommand < Gem::Command
|
|
100
110
|
|
101
111
|
begin
|
102
112
|
fetcher = Gem::SpecFetcher.fetcher
|
103
|
-
spec_tuples = fetcher.find_matching dep, all, false
|
113
|
+
spec_tuples = fetcher.find_matching dep, all, false, prerelease
|
104
114
|
rescue Gem::RemoteFetcher::FetchError => e
|
115
|
+
if prerelease then
|
116
|
+
raise Gem::OperationNotSupportedError,
|
117
|
+
"Prereleases not supported on legacy repositories"
|
118
|
+
end
|
119
|
+
|
105
120
|
raise unless fetcher.warn_legacy e do
|
106
121
|
require 'rubygems/source_info_cache'
|
107
122
|
|
@@ -39,7 +39,7 @@ class Gem::Commands::SetupCommand < Gem::Command
|
|
39
39
|
options[:site_or_vendor] = vendor ? :vendorlibdir : :sitelibdir
|
40
40
|
end
|
41
41
|
|
42
|
-
add_option '--[no-]
|
42
|
+
add_option '--[no-]format-executable',
|
43
43
|
'Makes `gem` match ruby',
|
44
44
|
'If ruby is ruby18, gem will be gem18' do |value, options|
|
45
45
|
options[:format_executable] = value
|
@@ -100,7 +100,7 @@ class Gem::Commands::UpdateCommand < Gem::Command
|
|
100
100
|
if gems_to_update.include? "rubygems-update" then
|
101
101
|
Gem.source_index.refresh!
|
102
102
|
|
103
|
-
update_gems = Gem.source_index.
|
103
|
+
update_gems = Gem.source_index.find_name 'rubygems-update'
|
104
104
|
|
105
105
|
latest_update_gem = update_gems.sort_by { |s| s.version }.last
|
106
106
|
|
data/lib/rubygems/config_file.rb
CHANGED
data/lib/rubygems/defaults.rb
CHANGED
@@ -20,7 +20,8 @@ module Gem
|
|
20
20
|
if defined? RUBY_FRAMEWORK_VERSION then
|
21
21
|
File.join File.dirname(ConfigMap[:sitedir]), 'Gems',
|
22
22
|
ConfigMap[:ruby_version]
|
23
|
-
|
23
|
+
# 1.9.2dev reverted to 1.8 style path
|
24
|
+
elsif RUBY_VERSION > '1.9' and RUBY_VERSION < '1.9.2' then
|
24
25
|
File.join(ConfigMap[:libdir], ConfigMap[:ruby_install_name], 'gems',
|
25
26
|
ConfigMap[:ruby_version])
|
26
27
|
else
|
data/lib/rubygems/dependency.rb
CHANGED
@@ -8,6 +8,7 @@ require 'tsort'
|
|
8
8
|
|
9
9
|
class Gem::DependencyList
|
10
10
|
|
11
|
+
include Enumerable
|
11
12
|
include TSort
|
12
13
|
|
13
14
|
def self.from_source_index(src_index)
|
@@ -24,24 +25,27 @@ class Gem::DependencyList
|
|
24
25
|
@specs = []
|
25
26
|
end
|
26
27
|
|
28
|
+
##
|
27
29
|
# Adds +gemspecs+ to the dependency list.
|
30
|
+
|
28
31
|
def add(*gemspecs)
|
29
32
|
@specs.push(*gemspecs)
|
30
33
|
end
|
31
34
|
|
32
|
-
|
33
|
-
#
|
34
|
-
# earlier in the list.
|
35
|
+
##
|
36
|
+
# Return a list of the specifications in the dependency list, sorted in
|
37
|
+
# order so that no spec in the list depends on a gem earlier in the list.
|
35
38
|
#
|
36
|
-
# This is useful when removing gems from a set of installed gems.
|
37
|
-
#
|
38
|
-
#
|
39
|
+
# This is useful when removing gems from a set of installed gems. By
|
40
|
+
# removing them in the returned order, you don't get into as many dependency
|
41
|
+
# issues.
|
39
42
|
#
|
40
|
-
# If there are circular dependencies (yuck!), then gems will be
|
41
|
-
#
|
42
|
-
#
|
43
|
-
#
|
44
|
-
#
|
43
|
+
# If there are circular dependencies (yuck!), then gems will be returned in
|
44
|
+
# order until only the circular dependents and anything they reference are
|
45
|
+
# left. Then arbitrary gemspecs will be returned until the circular
|
46
|
+
# dependency is broken, after which gems will be returned in dependency
|
47
|
+
# order again.
|
48
|
+
|
45
49
|
def dependency_order
|
46
50
|
sorted = strongly_connected_components.flatten
|
47
51
|
|
@@ -62,11 +66,20 @@ class Gem::DependencyList
|
|
62
66
|
result.reverse
|
63
67
|
end
|
64
68
|
|
69
|
+
##
|
70
|
+
# Iterator over dependency_order
|
71
|
+
|
72
|
+
def each(&block)
|
73
|
+
dependency_order.each(&block)
|
74
|
+
end
|
75
|
+
|
65
76
|
def find_name(full_name)
|
66
77
|
@specs.find { |spec| spec.full_name == full_name }
|
67
78
|
end
|
68
79
|
|
80
|
+
##
|
69
81
|
# Are all the dependencies in the list satisfied?
|
82
|
+
|
70
83
|
def ok?
|
71
84
|
@specs.all? do |spec|
|
72
85
|
spec.runtime_dependencies.all? do |dep|
|
@@ -75,10 +88,12 @@ class Gem::DependencyList
|
|
75
88
|
end
|
76
89
|
end
|
77
90
|
|
91
|
+
##
|
78
92
|
# Is is ok to remove a gem from the dependency list?
|
79
93
|
#
|
80
|
-
# If removing the gemspec creates breaks a currently ok dependency,
|
81
|
-
#
|
94
|
+
# If removing the gemspec creates breaks a currently ok dependency, then it
|
95
|
+
# is NOT ok to remove the gem.
|
96
|
+
|
82
97
|
def ok_to_remove?(full_name)
|
83
98
|
gem_to_remove = find_name full_name
|
84
99
|
|
@@ -106,9 +121,10 @@ class Gem::DependencyList
|
|
106
121
|
@specs.delete_if { |spec| spec.full_name == full_name }
|
107
122
|
end
|
108
123
|
|
109
|
-
|
110
|
-
#
|
111
|
-
# spec.
|
124
|
+
##
|
125
|
+
# Return a hash of predecessors. <tt>result[spec]</tt> is an Array of
|
126
|
+
# gemspecs that have a dependency satisfied by the named spec.
|
127
|
+
|
112
128
|
def spec_predecessors
|
113
129
|
result = Hash.new { |h,k| h[k] = [] }
|
114
130
|
|
@@ -151,13 +167,17 @@ class Gem::DependencyList
|
|
151
167
|
|
152
168
|
private
|
153
169
|
|
170
|
+
##
|
154
171
|
# Count the number of gemspecs in the list +specs+ that are not in
|
155
172
|
# +ignored+.
|
173
|
+
|
156
174
|
def active_count(specs, ignored)
|
157
175
|
result = 0
|
176
|
+
|
158
177
|
specs.each do |spec|
|
159
178
|
result += 1 unless ignored[spec.full_name]
|
160
179
|
end
|
180
|
+
|
161
181
|
result
|
162
182
|
end
|
163
183
|
|
data/lib/rubygems/exceptions.rb
CHANGED
data/lib/rubygems/ext/builder.rb
CHANGED
data/lib/rubygems/gem_openssl.rb
CHANGED
data/lib/rubygems/indexer.rb
CHANGED
@@ -3,8 +3,6 @@
|
|
3
3
|
# See LICENSE.txt for additional licensing information.
|
4
4
|
#--
|
5
5
|
|
6
|
-
require 'rubygems/package'
|
7
|
-
|
8
6
|
##
|
9
7
|
# TarReader reads tar files and allows iteration over their items
|
10
8
|
|
@@ -103,3 +101,5 @@ class Gem::Package::TarReader
|
|
103
101
|
|
104
102
|
end
|
105
103
|
|
104
|
+
require 'rubygems/package/tar_reader/entry'
|
105
|
+
|