rubygems-update 3.2.20 → 3.2.24
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +42 -0
- data/Manifest.txt +0 -1
- data/bundler/CHANGELOG.md +56 -0
- data/bundler/lib/bundler.rb +5 -6
- data/bundler/lib/bundler/build_metadata.rb +2 -2
- data/bundler/lib/bundler/cli.rb +1 -0
- data/bundler/lib/bundler/cli/doctor.rb +11 -1
- data/bundler/lib/bundler/cli/install.rb +7 -8
- data/bundler/lib/bundler/cli/lock.rb +5 -1
- data/bundler/lib/bundler/cli/update.rb +8 -3
- data/bundler/lib/bundler/current_ruby.rb +4 -4
- data/bundler/lib/bundler/definition.rb +46 -85
- data/bundler/lib/bundler/dsl.rb +11 -22
- data/bundler/lib/bundler/feature_flag.rb +0 -2
- data/bundler/lib/bundler/fetcher/compact_index.rb +1 -1
- data/bundler/lib/bundler/fetcher/downloader.rb +1 -2
- data/bundler/lib/bundler/index.rb +1 -5
- data/bundler/lib/bundler/installer.rb +5 -12
- data/bundler/lib/bundler/installer/standalone.rb +1 -1
- data/bundler/lib/bundler/lockfile_parser.rb +2 -20
- data/bundler/lib/bundler/man/bundle-add.1 +1 -1
- data/bundler/lib/bundler/man/bundle-binstubs.1 +1 -1
- data/bundler/lib/bundler/man/bundle-cache.1 +1 -1
- data/bundler/lib/bundler/man/bundle-check.1 +1 -1
- data/bundler/lib/bundler/man/bundle-clean.1 +1 -1
- data/bundler/lib/bundler/man/bundle-config.1 +1 -4
- data/bundler/lib/bundler/man/bundle-config.1.ronn +0 -3
- data/bundler/lib/bundler/man/bundle-doctor.1 +1 -1
- data/bundler/lib/bundler/man/bundle-exec.1 +1 -1
- data/bundler/lib/bundler/man/bundle-gem.1 +1 -1
- data/bundler/lib/bundler/man/bundle-info.1 +1 -1
- data/bundler/lib/bundler/man/bundle-init.1 +1 -1
- data/bundler/lib/bundler/man/bundle-inject.1 +1 -1
- data/bundler/lib/bundler/man/bundle-install.1 +1 -1
- data/bundler/lib/bundler/man/bundle-list.1 +1 -1
- data/bundler/lib/bundler/man/bundle-lock.1 +1 -1
- data/bundler/lib/bundler/man/bundle-open.1 +1 -1
- data/bundler/lib/bundler/man/bundle-outdated.1 +1 -1
- data/bundler/lib/bundler/man/bundle-platform.1 +1 -1
- data/bundler/lib/bundler/man/bundle-pristine.1 +1 -1
- data/bundler/lib/bundler/man/bundle-remove.1 +1 -1
- data/bundler/lib/bundler/man/bundle-show.1 +1 -1
- data/bundler/lib/bundler/man/bundle-update.1 +4 -4
- data/bundler/lib/bundler/man/bundle-update.1.ronn +3 -3
- data/bundler/lib/bundler/man/bundle-viz.1 +1 -1
- data/bundler/lib/bundler/man/bundle.1 +1 -1
- data/bundler/lib/bundler/man/gemfile.5 +1 -1
- data/bundler/lib/bundler/plugin.rb +2 -0
- data/bundler/lib/bundler/plugin/index.rb +4 -1
- data/bundler/lib/bundler/plugin/installer.rb +1 -1
- data/bundler/lib/bundler/resolver.rb +3 -1
- data/bundler/lib/bundler/rubygems_ext.rb +22 -6
- data/bundler/lib/bundler/runtime.rb +1 -3
- data/bundler/lib/bundler/settings.rb +9 -8
- data/bundler/lib/bundler/source/rubygems.rb +4 -17
- data/bundler/lib/bundler/source_list.rb +40 -21
- data/bundler/lib/bundler/spec_set.rb +5 -10
- data/bundler/lib/bundler/templates/newgem/newgem.gemspec.tt +1 -1
- data/bundler/lib/bundler/version.rb +1 -1
- data/lib/rubygems.rb +1 -1
- data/lib/rubygems/commands/cert_command.rb +42 -38
- data/lib/rubygems/config_file.rb +1 -1
- data/lib/rubygems/gemcutter_utilities.rb +12 -4
- data/lib/rubygems/package/io_source.rb +4 -0
- data/lib/rubygems/request.rb +1 -1
- data/lib/rubygems/specification.rb +6 -2
- data/lib/rubygems/uninstaller.rb +36 -5
- data/lib/rubygems/util/licenses.rb +107 -2
- data/rubygems-update.gemspec +1 -1
- data/setup.rb +1 -2
- data/test/rubygems/test_gem_commands_push_command.rb +0 -5
- data/test/rubygems/test_gem_commands_setup_command.rb +3 -3
- data/test/rubygems/test_gem_commands_signin_command.rb +7 -0
- data/test/rubygems/test_gem_ext_rake_builder.rb +2 -0
- data/test/rubygems/test_gem_gemcutter_utilities.rb +12 -6
- data/test/rubygems/test_gem_installer.rb +1 -1
- data/test/rubygems/test_gem_package.rb +8 -1
- data/test/rubygems/test_gem_server.rb +4 -4
- data/test/rubygems/test_gem_uninstaller.rb +9 -2
- data/test/rubygems/test_require.rb +0 -2
- metadata +3 -4
- data/Rakefile +0 -396
|
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
|
|
|
16
16
|
<%- end -%>
|
|
17
17
|
spec.required_ruby_version = ">= <%= config[:required_ruby_version] %>"
|
|
18
18
|
|
|
19
|
-
spec.metadata["allowed_push_host"] = "TODO: Set to '
|
|
19
|
+
spec.metadata["allowed_push_host"] = "TODO: Set to 'https://mygemserver.com'"
|
|
20
20
|
|
|
21
21
|
spec.metadata["homepage_uri"] = spec.homepage
|
|
22
22
|
spec.metadata["source_code_uri"] = "TODO: Put your gem's public repo URL here."
|
data/lib/rubygems.rb
CHANGED
|
@@ -7,37 +7,9 @@ class Gem::Commands::CertCommand < Gem::Command
|
|
|
7
7
|
super 'cert', 'Manage RubyGems certificates and signing settings',
|
|
8
8
|
:add => [], :remove => [], :list => [], :build => [], :sign => []
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
rescue Errno::ENOENT
|
|
14
|
-
raise OptionParser::InvalidArgument, "#{certificate_file}: does not exist"
|
|
15
|
-
rescue OpenSSL::X509::CertificateError
|
|
16
|
-
raise OptionParser::InvalidArgument,
|
|
17
|
-
"#{certificate_file}: invalid X509 certificate"
|
|
18
|
-
end
|
|
19
|
-
[certificate, certificate_file]
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
OptionParser.accept OpenSSL::PKey::RSA do |key_file|
|
|
23
|
-
begin
|
|
24
|
-
passphrase = ENV['GEM_PRIVATE_KEY_PASSPHRASE']
|
|
25
|
-
key = OpenSSL::PKey::RSA.new File.read(key_file), passphrase
|
|
26
|
-
rescue Errno::ENOENT
|
|
27
|
-
raise OptionParser::InvalidArgument, "#{key_file}: does not exist"
|
|
28
|
-
rescue OpenSSL::PKey::RSAError
|
|
29
|
-
raise OptionParser::InvalidArgument, "#{key_file}: invalid RSA key"
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
raise OptionParser::InvalidArgument,
|
|
33
|
-
"#{key_file}: private key not found" unless key.private?
|
|
34
|
-
|
|
35
|
-
key
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
add_option('-a', '--add CERT', OpenSSL::X509::Certificate,
|
|
39
|
-
'Add a trusted certificate.') do |(cert, _), options|
|
|
40
|
-
options[:add] << cert
|
|
10
|
+
add_option('-a', '--add CERT',
|
|
11
|
+
'Add a trusted certificate.') do |cert_file, options|
|
|
12
|
+
options[:add] << open_cert(cert_file)
|
|
41
13
|
end
|
|
42
14
|
|
|
43
15
|
add_option('-l', '--list [FILTER]',
|
|
@@ -60,15 +32,15 @@ class Gem::Commands::CertCommand < Gem::Command
|
|
|
60
32
|
options[:build] << email_address
|
|
61
33
|
end
|
|
62
34
|
|
|
63
|
-
add_option('-C', '--certificate CERT',
|
|
64
|
-
'Signing certificate for --sign') do |
|
|
65
|
-
options[:issuer_cert] =
|
|
35
|
+
add_option('-C', '--certificate CERT',
|
|
36
|
+
'Signing certificate for --sign') do |cert_file, options|
|
|
37
|
+
options[:issuer_cert] = open_cert(cert_file)
|
|
66
38
|
options[:issuer_cert_file] = cert_file
|
|
67
39
|
end
|
|
68
40
|
|
|
69
|
-
add_option('-K', '--private-key KEY',
|
|
70
|
-
'Key for --sign or --build') do |
|
|
71
|
-
options[:key] =
|
|
41
|
+
add_option('-K', '--private-key KEY',
|
|
42
|
+
'Key for --sign or --build') do |key_file, options|
|
|
43
|
+
options[:key] = open_private_key(key_file)
|
|
72
44
|
end
|
|
73
45
|
|
|
74
46
|
add_option('-s', '--sign CERT',
|
|
@@ -97,7 +69,39 @@ class Gem::Commands::CertCommand < Gem::Command
|
|
|
97
69
|
say "Added '#{certificate.subject}'"
|
|
98
70
|
end
|
|
99
71
|
|
|
72
|
+
def check_openssl
|
|
73
|
+
return if Gem::HAVE_OPENSSL
|
|
74
|
+
|
|
75
|
+
alert_error "OpenSSL library is required for the cert command"
|
|
76
|
+
terminate_interaction 1
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def open_cert(certificate_file)
|
|
80
|
+
check_openssl
|
|
81
|
+
OpenSSL::X509::Certificate.new File.read certificate_file
|
|
82
|
+
rescue Errno::ENOENT
|
|
83
|
+
raise OptionParser::InvalidArgument, "#{certificate_file}: does not exist"
|
|
84
|
+
rescue OpenSSL::X509::CertificateError
|
|
85
|
+
raise OptionParser::InvalidArgument,
|
|
86
|
+
"#{certificate_file}: invalid X509 certificate"
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def open_private_key(key_file)
|
|
90
|
+
check_openssl
|
|
91
|
+
passphrase = ENV['GEM_PRIVATE_KEY_PASSPHRASE']
|
|
92
|
+
key = OpenSSL::PKey::RSA.new File.read(key_file), passphrase
|
|
93
|
+
raise OptionParser::InvalidArgument,
|
|
94
|
+
"#{key_file}: private key not found" unless key.private?
|
|
95
|
+
key
|
|
96
|
+
rescue Errno::ENOENT
|
|
97
|
+
raise OptionParser::InvalidArgument, "#{key_file}: does not exist"
|
|
98
|
+
rescue OpenSSL::PKey::RSAError
|
|
99
|
+
raise OptionParser::InvalidArgument, "#{key_file}: invalid RSA key"
|
|
100
|
+
end
|
|
101
|
+
|
|
100
102
|
def execute
|
|
103
|
+
check_openssl
|
|
104
|
+
|
|
101
105
|
options[:add].each do |certificate|
|
|
102
106
|
add_certificate certificate
|
|
103
107
|
end
|
|
@@ -311,4 +315,4 @@ For further reading on signing gems see `ri Gem::Security`.
|
|
|
311
315
|
# It's simple, but is all we need
|
|
312
316
|
email =~ /\A.+@.+\z/
|
|
313
317
|
end
|
|
314
|
-
end
|
|
318
|
+
end
|
data/lib/rubygems/config_file.rb
CHANGED
|
@@ -320,7 +320,7 @@ if you believe they were disclosed to a third party.
|
|
|
320
320
|
config = load_file(credentials_path).merge(host => api_key)
|
|
321
321
|
|
|
322
322
|
dirname = File.dirname credentials_path
|
|
323
|
-
|
|
323
|
+
FileUtils.mkdir_p(dirname) unless File.exist? dirname
|
|
324
324
|
|
|
325
325
|
Gem.load_yaml
|
|
326
326
|
|
|
@@ -31,7 +31,8 @@ module Gem::GemcutterUtilities
|
|
|
31
31
|
|
|
32
32
|
def add_otp_option
|
|
33
33
|
add_option('--otp CODE',
|
|
34
|
-
'Digit code for multifactor authentication'
|
|
34
|
+
'Digit code for multifactor authentication',
|
|
35
|
+
'You can also use the environment variable GEM_HOST_OTP_CODE') do |value, options|
|
|
35
36
|
options[:otp] = value
|
|
36
37
|
end
|
|
37
38
|
end
|
|
@@ -51,6 +52,13 @@ module Gem::GemcutterUtilities
|
|
|
51
52
|
end
|
|
52
53
|
end
|
|
53
54
|
|
|
55
|
+
##
|
|
56
|
+
# The OTP code from the command options or from the user's configuration.
|
|
57
|
+
|
|
58
|
+
def otp
|
|
59
|
+
options[:otp] || ENV["GEM_HOST_OTP_CODE"]
|
|
60
|
+
end
|
|
61
|
+
|
|
54
62
|
##
|
|
55
63
|
# The host to connect to either from the RUBYGEMS_HOST environment variable
|
|
56
64
|
# or from the user's configuration
|
|
@@ -126,7 +134,7 @@ module Gem::GemcutterUtilities
|
|
|
126
134
|
response = rubygems_api_request(:put, "api/v1/api_key",
|
|
127
135
|
sign_in_host, scope: scope) do |request|
|
|
128
136
|
request.basic_auth email, password
|
|
129
|
-
request["OTP"] =
|
|
137
|
+
request["OTP"] = otp if otp
|
|
130
138
|
request.body = URI.encode_www_form({:api_key => api_key }.merge(update_scope_params))
|
|
131
139
|
end
|
|
132
140
|
|
|
@@ -159,7 +167,7 @@ module Gem::GemcutterUtilities
|
|
|
159
167
|
response = rubygems_api_request(:post, "api/v1/api_key",
|
|
160
168
|
sign_in_host, scope: scope) do |request|
|
|
161
169
|
request.basic_auth email, password
|
|
162
|
-
request["OTP"] =
|
|
170
|
+
request["OTP"] = otp if otp
|
|
163
171
|
request.body = URI.encode_www_form({ name: key_name }.merge(scope_params))
|
|
164
172
|
end
|
|
165
173
|
|
|
@@ -224,7 +232,7 @@ module Gem::GemcutterUtilities
|
|
|
224
232
|
request_method = Net::HTTP.const_get method.to_s.capitalize
|
|
225
233
|
|
|
226
234
|
Gem::RemoteFetcher.fetcher.request(uri, request_method) do |req|
|
|
227
|
-
req["OTP"] =
|
|
235
|
+
req["OTP"] = otp if otp
|
|
228
236
|
block.call(req)
|
|
229
237
|
end
|
|
230
238
|
end
|
data/lib/rubygems/request.rb
CHANGED
|
@@ -44,7 +44,7 @@ class Gem::Request
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def self.configure_connection_for_https(connection, cert_files)
|
|
47
|
-
raise Gem::Exception.new('
|
|
47
|
+
raise Gem::Exception.new('OpenSSL is not available. Install OpenSSL and rebuild Ruby (preferred) or use non-HTTPS sources') unless Gem::HAVE_OPENSSL
|
|
48
48
|
|
|
49
49
|
connection.use_ssl = true
|
|
50
50
|
connection.verify_mode =
|
|
@@ -2421,7 +2421,6 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2421
2421
|
# still have their default values are omitted.
|
|
2422
2422
|
|
|
2423
2423
|
def to_ruby
|
|
2424
|
-
require_relative 'openssl'
|
|
2425
2424
|
mark_version
|
|
2426
2425
|
result = []
|
|
2427
2426
|
result << "# -*- encoding: utf-8 -*-"
|
|
@@ -2455,16 +2454,21 @@ class Gem::Specification < Gem::BasicSpecification
|
|
|
2455
2454
|
:has_rdoc,
|
|
2456
2455
|
:default_executable,
|
|
2457
2456
|
:metadata,
|
|
2457
|
+
:signing_key,
|
|
2458
2458
|
]
|
|
2459
2459
|
|
|
2460
2460
|
@@attributes.each do |attr_name|
|
|
2461
2461
|
next if handled.include? attr_name
|
|
2462
2462
|
current_value = self.send(attr_name)
|
|
2463
2463
|
if current_value != default_value(attr_name) || self.class.required_attribute?(attr_name)
|
|
2464
|
-
result << " s.#{attr_name} = #{ruby_code current_value}"
|
|
2464
|
+
result << " s.#{attr_name} = #{ruby_code current_value}"
|
|
2465
2465
|
end
|
|
2466
2466
|
end
|
|
2467
2467
|
|
|
2468
|
+
if String === signing_key
|
|
2469
|
+
result << " s.signing_key = #{signing_key.dump}.freeze"
|
|
2470
|
+
end
|
|
2471
|
+
|
|
2468
2472
|
if @installed_by_version
|
|
2469
2473
|
result << nil
|
|
2470
2474
|
result << " s.installed_by_version = \"#{Gem::VERSION}\" if s.respond_to? :installed_by_version"
|
data/lib/rubygems/uninstaller.rb
CHANGED
|
@@ -70,6 +70,9 @@ class Gem::Uninstaller
|
|
|
70
70
|
# only add user directory if install_dir is not set
|
|
71
71
|
@user_install = false
|
|
72
72
|
@user_install = options[:user_install] unless options[:install_dir]
|
|
73
|
+
|
|
74
|
+
# Optimization: populated during #uninstall
|
|
75
|
+
@default_specs_matching_uninstall_params = []
|
|
73
76
|
end
|
|
74
77
|
|
|
75
78
|
##
|
|
@@ -98,10 +101,8 @@ class Gem::Uninstaller
|
|
|
98
101
|
default_specs, list = list.partition do |spec|
|
|
99
102
|
spec.default_gem?
|
|
100
103
|
end
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
say "Gem #{default_spec.full_name} cannot be uninstalled because it is a default gem"
|
|
104
|
-
end
|
|
104
|
+
warn_cannot_uninstall_default_gems(default_specs - list)
|
|
105
|
+
@default_specs_matching_uninstall_params = default_specs
|
|
105
106
|
|
|
106
107
|
list, other_repo_specs = list.partition do |spec|
|
|
107
108
|
@gem_home == spec.base_dir or
|
|
@@ -270,7 +271,7 @@ class Gem::Uninstaller
|
|
|
270
271
|
end
|
|
271
272
|
|
|
272
273
|
safe_delete { FileUtils.rm_r gemspec }
|
|
273
|
-
|
|
274
|
+
announce_deletion_of(spec)
|
|
274
275
|
|
|
275
276
|
Gem::Specification.reset
|
|
276
277
|
end
|
|
@@ -373,4 +374,34 @@ class Gem::Uninstaller
|
|
|
373
374
|
|
|
374
375
|
raise e
|
|
375
376
|
end
|
|
377
|
+
|
|
378
|
+
private
|
|
379
|
+
|
|
380
|
+
def announce_deletion_of(spec)
|
|
381
|
+
name = spec.full_name
|
|
382
|
+
say "Successfully uninstalled #{name}"
|
|
383
|
+
if default_spec_matches?(spec)
|
|
384
|
+
say(
|
|
385
|
+
"There was both a regular copy and a default copy of #{name}. The " \
|
|
386
|
+
"regular copy was successfully uninstalled, but the default copy " \
|
|
387
|
+
"was left around because default gems can't be removed."
|
|
388
|
+
)
|
|
389
|
+
end
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
# @return true if the specs of any default gems are `==` to the given `spec`.
|
|
393
|
+
def default_spec_matches?(spec)
|
|
394
|
+
!default_specs_that_match(spec).empty?
|
|
395
|
+
end
|
|
396
|
+
|
|
397
|
+
# @return [Array] specs of default gems that are `==` to the given `spec`.
|
|
398
|
+
def default_specs_that_match(spec)
|
|
399
|
+
@default_specs_matching_uninstall_params.select {|default_spec| spec == default_spec }
|
|
400
|
+
end
|
|
401
|
+
|
|
402
|
+
def warn_cannot_uninstall_default_gems(specs)
|
|
403
|
+
specs.each do |spec|
|
|
404
|
+
say "Gem #{spec.full_name} cannot be uninstalled because it is a default gem"
|
|
405
|
+
end
|
|
406
|
+
end
|
|
376
407
|
end
|
|
@@ -18,6 +18,8 @@ class Gem::Licenses
|
|
|
18
18
|
AFL-2.1
|
|
19
19
|
AFL-3.0
|
|
20
20
|
AGPL-1.0
|
|
21
|
+
AGPL-1.0-only
|
|
22
|
+
AGPL-1.0-or-later
|
|
21
23
|
AGPL-3.0
|
|
22
24
|
AGPL-3.0-only
|
|
23
25
|
AGPL-3.0-or-later
|
|
@@ -25,6 +27,7 @@ class Gem::Licenses
|
|
|
25
27
|
AML
|
|
26
28
|
AMPAS
|
|
27
29
|
ANTLR-PD
|
|
30
|
+
ANTLR-PD-fallback
|
|
28
31
|
APAFML
|
|
29
32
|
APL-1.0
|
|
30
33
|
APSL-1.0
|
|
@@ -48,29 +51,41 @@ class Gem::Licenses
|
|
|
48
51
|
BSD-2-Clause-FreeBSD
|
|
49
52
|
BSD-2-Clause-NetBSD
|
|
50
53
|
BSD-2-Clause-Patent
|
|
54
|
+
BSD-2-Clause-Views
|
|
51
55
|
BSD-3-Clause
|
|
52
56
|
BSD-3-Clause-Attribution
|
|
53
57
|
BSD-3-Clause-Clear
|
|
54
58
|
BSD-3-Clause-LBNL
|
|
59
|
+
BSD-3-Clause-Modification
|
|
60
|
+
BSD-3-Clause-No-Military-License
|
|
55
61
|
BSD-3-Clause-No-Nuclear-License
|
|
56
62
|
BSD-3-Clause-No-Nuclear-License-2014
|
|
57
63
|
BSD-3-Clause-No-Nuclear-Warranty
|
|
64
|
+
BSD-3-Clause-Open-MPI
|
|
58
65
|
BSD-4-Clause
|
|
66
|
+
BSD-4-Clause-Shortened
|
|
59
67
|
BSD-4-Clause-UC
|
|
60
68
|
BSD-Protection
|
|
61
69
|
BSD-Source-Code
|
|
62
70
|
BSL-1.0
|
|
71
|
+
BUSL-1.1
|
|
63
72
|
Bahyph
|
|
64
73
|
Barr
|
|
65
74
|
Beerware
|
|
66
75
|
BitTorrent-1.0
|
|
67
76
|
BitTorrent-1.1
|
|
77
|
+
BlueOak-1.0.0
|
|
68
78
|
Borceux
|
|
79
|
+
C-UDA-1.0
|
|
80
|
+
CAL-1.0
|
|
81
|
+
CAL-1.0-Combined-Work-Exception
|
|
69
82
|
CATOSL-1.1
|
|
70
83
|
CC-BY-1.0
|
|
71
84
|
CC-BY-2.0
|
|
72
85
|
CC-BY-2.5
|
|
73
86
|
CC-BY-3.0
|
|
87
|
+
CC-BY-3.0-AT
|
|
88
|
+
CC-BY-3.0-US
|
|
74
89
|
CC-BY-4.0
|
|
75
90
|
CC-BY-NC-1.0
|
|
76
91
|
CC-BY-NC-2.0
|
|
@@ -81,6 +96,7 @@ class Gem::Licenses
|
|
|
81
96
|
CC-BY-NC-ND-2.0
|
|
82
97
|
CC-BY-NC-ND-2.5
|
|
83
98
|
CC-BY-NC-ND-3.0
|
|
99
|
+
CC-BY-NC-ND-3.0-IGO
|
|
84
100
|
CC-BY-NC-ND-4.0
|
|
85
101
|
CC-BY-NC-SA-1.0
|
|
86
102
|
CC-BY-NC-SA-2.0
|
|
@@ -94,12 +110,17 @@ class Gem::Licenses
|
|
|
94
110
|
CC-BY-ND-4.0
|
|
95
111
|
CC-BY-SA-1.0
|
|
96
112
|
CC-BY-SA-2.0
|
|
113
|
+
CC-BY-SA-2.0-UK
|
|
114
|
+
CC-BY-SA-2.1-JP
|
|
97
115
|
CC-BY-SA-2.5
|
|
98
116
|
CC-BY-SA-3.0
|
|
117
|
+
CC-BY-SA-3.0-AT
|
|
99
118
|
CC-BY-SA-4.0
|
|
119
|
+
CC-PDDC
|
|
100
120
|
CC0-1.0
|
|
101
121
|
CDDL-1.0
|
|
102
122
|
CDDL-1.1
|
|
123
|
+
CDL-1.0
|
|
103
124
|
CDLA-Permissive-1.0
|
|
104
125
|
CDLA-Sharing-1.0
|
|
105
126
|
CECILL-1.0
|
|
@@ -108,6 +129,11 @@ class Gem::Licenses
|
|
|
108
129
|
CECILL-2.1
|
|
109
130
|
CECILL-B
|
|
110
131
|
CECILL-C
|
|
132
|
+
CERN-OHL-1.1
|
|
133
|
+
CERN-OHL-1.2
|
|
134
|
+
CERN-OHL-P-2.0
|
|
135
|
+
CERN-OHL-S-2.0
|
|
136
|
+
CERN-OHL-W-2.0
|
|
111
137
|
CNRI-Jython
|
|
112
138
|
CNRI-Python
|
|
113
139
|
CNRI-Python-GPL-Compatible
|
|
@@ -123,12 +149,14 @@ class Gem::Licenses
|
|
|
123
149
|
Cube
|
|
124
150
|
D-FSL-1.0
|
|
125
151
|
DOC
|
|
152
|
+
DRL-1.0
|
|
126
153
|
DSDP
|
|
127
154
|
Dotseqn
|
|
128
155
|
ECL-1.0
|
|
129
156
|
ECL-2.0
|
|
130
157
|
EFL-1.0
|
|
131
158
|
EFL-2.0
|
|
159
|
+
EPICS
|
|
132
160
|
EPL-1.0
|
|
133
161
|
EPL-2.0
|
|
134
162
|
EUDatagrid
|
|
@@ -144,17 +172,32 @@ class Gem::Licenses
|
|
|
144
172
|
FTL
|
|
145
173
|
Fair
|
|
146
174
|
Frameworx-1.0
|
|
175
|
+
FreeBSD-DOC
|
|
147
176
|
FreeImage
|
|
177
|
+
GD
|
|
148
178
|
GFDL-1.1
|
|
179
|
+
GFDL-1.1-invariants-only
|
|
180
|
+
GFDL-1.1-invariants-or-later
|
|
181
|
+
GFDL-1.1-no-invariants-only
|
|
182
|
+
GFDL-1.1-no-invariants-or-later
|
|
149
183
|
GFDL-1.1-only
|
|
150
184
|
GFDL-1.1-or-later
|
|
151
185
|
GFDL-1.2
|
|
186
|
+
GFDL-1.2-invariants-only
|
|
187
|
+
GFDL-1.2-invariants-or-later
|
|
188
|
+
GFDL-1.2-no-invariants-only
|
|
189
|
+
GFDL-1.2-no-invariants-or-later
|
|
152
190
|
GFDL-1.2-only
|
|
153
191
|
GFDL-1.2-or-later
|
|
154
192
|
GFDL-1.3
|
|
193
|
+
GFDL-1.3-invariants-only
|
|
194
|
+
GFDL-1.3-invariants-or-later
|
|
195
|
+
GFDL-1.3-no-invariants-only
|
|
196
|
+
GFDL-1.3-no-invariants-or-later
|
|
155
197
|
GFDL-1.3-only
|
|
156
198
|
GFDL-1.3-or-later
|
|
157
199
|
GL2PS
|
|
200
|
+
GLWTPL
|
|
158
201
|
GPL-1.0
|
|
159
202
|
GPL-1.0+
|
|
160
203
|
GPL-1.0-only
|
|
@@ -178,7 +221,10 @@ class Gem::Licenses
|
|
|
178
221
|
Glide
|
|
179
222
|
Glulxe
|
|
180
223
|
HPND
|
|
224
|
+
HPND-sell-variant
|
|
225
|
+
HTMLTIDY
|
|
181
226
|
HaskellReport
|
|
227
|
+
Hippocratic-2.1
|
|
182
228
|
IBM-pibs
|
|
183
229
|
ICU
|
|
184
230
|
IJG
|
|
@@ -191,6 +237,7 @@ class Gem::Licenses
|
|
|
191
237
|
Intel
|
|
192
238
|
Intel-ACPI
|
|
193
239
|
Interbase-1.0
|
|
240
|
+
JPNIC
|
|
194
241
|
JSON
|
|
195
242
|
JasPer-2.0
|
|
196
243
|
LAL-1.2
|
|
@@ -221,11 +268,15 @@ class Gem::Licenses
|
|
|
221
268
|
LiLiQ-R-1.1
|
|
222
269
|
LiLiQ-Rplus-1.1
|
|
223
270
|
Libpng
|
|
271
|
+
Linux-OpenIB
|
|
224
272
|
MIT
|
|
273
|
+
MIT-0
|
|
225
274
|
MIT-CMU
|
|
275
|
+
MIT-Modern-Variant
|
|
226
276
|
MIT-advertising
|
|
227
277
|
MIT-enna
|
|
228
278
|
MIT-feh
|
|
279
|
+
MIT-open-group
|
|
229
280
|
MITNFA
|
|
230
281
|
MPL-1.0
|
|
231
282
|
MPL-1.1
|
|
@@ -237,12 +288,18 @@ class Gem::Licenses
|
|
|
237
288
|
MakeIndex
|
|
238
289
|
MirOS
|
|
239
290
|
Motosoto
|
|
291
|
+
MulanPSL-1.0
|
|
292
|
+
MulanPSL-2.0
|
|
240
293
|
Multics
|
|
241
294
|
Mup
|
|
295
|
+
NAIST-2003
|
|
242
296
|
NASA-1.3
|
|
243
297
|
NBPL-1.0
|
|
298
|
+
NCGL-UK-2.0
|
|
244
299
|
NCSA
|
|
245
300
|
NGPL
|
|
301
|
+
NIST-PD
|
|
302
|
+
NIST-PD-fallback
|
|
246
303
|
NLOD-1.0
|
|
247
304
|
NLPL
|
|
248
305
|
NOSL
|
|
@@ -251,6 +308,7 @@ class Gem::Licenses
|
|
|
251
308
|
NPOSL-3.0
|
|
252
309
|
NRL
|
|
253
310
|
NTP
|
|
311
|
+
NTP-0
|
|
254
312
|
Naumen
|
|
255
313
|
Net-SNMP
|
|
256
314
|
NetCDF
|
|
@@ -258,11 +316,23 @@ class Gem::Licenses
|
|
|
258
316
|
Nokia
|
|
259
317
|
Noweb
|
|
260
318
|
Nunit
|
|
319
|
+
O-UDA-1.0
|
|
261
320
|
OCCT-PL
|
|
262
321
|
OCLC-2.0
|
|
322
|
+
ODC-By-1.0
|
|
263
323
|
ODbL-1.0
|
|
264
324
|
OFL-1.0
|
|
325
|
+
OFL-1.0-RFN
|
|
326
|
+
OFL-1.0-no-RFN
|
|
265
327
|
OFL-1.1
|
|
328
|
+
OFL-1.1-RFN
|
|
329
|
+
OFL-1.1-no-RFN
|
|
330
|
+
OGC-1.0
|
|
331
|
+
OGDL-Taiwan-1.0
|
|
332
|
+
OGL-Canada-2.0
|
|
333
|
+
OGL-UK-1.0
|
|
334
|
+
OGL-UK-2.0
|
|
335
|
+
OGL-UK-3.0
|
|
266
336
|
OGTSL
|
|
267
337
|
OLDAP-1.1
|
|
268
338
|
OLDAP-1.2
|
|
@@ -292,7 +362,12 @@ class Gem::Licenses
|
|
|
292
362
|
PDDL-1.0
|
|
293
363
|
PHP-3.0
|
|
294
364
|
PHP-3.01
|
|
365
|
+
PSF-2.0
|
|
366
|
+
Parity-6.0.0
|
|
367
|
+
Parity-7.0.0
|
|
295
368
|
Plexus
|
|
369
|
+
PolyForm-Noncommercial-1.0.0
|
|
370
|
+
PolyForm-Small-Business-1.0.0
|
|
296
371
|
PostgreSQL
|
|
297
372
|
Python-2.0
|
|
298
373
|
QPL-1.0
|
|
@@ -310,15 +385,21 @@ class Gem::Licenses
|
|
|
310
385
|
SGI-B-1.0
|
|
311
386
|
SGI-B-1.1
|
|
312
387
|
SGI-B-2.0
|
|
388
|
+
SHL-0.5
|
|
389
|
+
SHL-0.51
|
|
313
390
|
SISSL
|
|
314
391
|
SISSL-1.2
|
|
315
392
|
SMLNJ
|
|
316
393
|
SMPPL
|
|
317
394
|
SNIA
|
|
318
395
|
SPL-1.0
|
|
396
|
+
SSH-OpenSSH
|
|
397
|
+
SSH-short
|
|
398
|
+
SSPL-1.0
|
|
319
399
|
SWL
|
|
320
400
|
Saxpath
|
|
321
401
|
Sendmail
|
|
402
|
+
Sendmail-8.23
|
|
322
403
|
SimPL-2.0
|
|
323
404
|
Sleepycat
|
|
324
405
|
Spencer-86
|
|
@@ -326,11 +407,15 @@ class Gem::Licenses
|
|
|
326
407
|
Spencer-99
|
|
327
408
|
StandardML-NJ
|
|
328
409
|
SugarCRM-1.1.3
|
|
410
|
+
TAPR-OHL-1.0
|
|
329
411
|
TCL
|
|
330
412
|
TCP-wrappers
|
|
331
413
|
TMate
|
|
332
414
|
TORQUE-1.1
|
|
333
415
|
TOSL
|
|
416
|
+
TU-Berlin-1.0
|
|
417
|
+
TU-Berlin-2.0
|
|
418
|
+
UCL-1.0
|
|
334
419
|
UPL-1.0
|
|
335
420
|
Unicode-DFS-2015
|
|
336
421
|
Unicode-DFS-2016
|
|
@@ -360,16 +445,22 @@ class Gem::Licenses
|
|
|
360
445
|
Zimbra-1.3
|
|
361
446
|
Zimbra-1.4
|
|
362
447
|
Zlib
|
|
448
|
+
blessing
|
|
363
449
|
bzip2-1.0.5
|
|
364
450
|
bzip2-1.0.6
|
|
451
|
+
copyleft-next-0.3.0
|
|
452
|
+
copyleft-next-0.3.1
|
|
365
453
|
curl
|
|
366
454
|
diffmark
|
|
367
455
|
dvipdfm
|
|
368
456
|
eCos-2.0
|
|
369
457
|
eGenix
|
|
458
|
+
etalab-2.0
|
|
370
459
|
gSOAP-1.3b
|
|
371
460
|
gnuplot
|
|
372
461
|
iMatix
|
|
462
|
+
libpng-2.0
|
|
463
|
+
libselinux-1.0
|
|
373
464
|
libtiff
|
|
374
465
|
mpich2
|
|
375
466
|
psfrag
|
|
@@ -395,12 +486,26 @@ class Gem::Licenses
|
|
|
395
486
|
Font-exception-2.0
|
|
396
487
|
GCC-exception-2.0
|
|
397
488
|
GCC-exception-3.1
|
|
489
|
+
GPL-3.0-linking-exception
|
|
490
|
+
GPL-3.0-linking-source-exception
|
|
491
|
+
GPL-CC-1.0
|
|
492
|
+
LGPL-3.0-linking-exception
|
|
493
|
+
LLVM-exception
|
|
398
494
|
LZMA-exception
|
|
399
495
|
Libtool-exception
|
|
400
496
|
Linux-syscall-note
|
|
401
497
|
Nokia-Qt-exception-1.1
|
|
402
498
|
OCCT-exception-1.0
|
|
499
|
+
OCaml-LGPL-linking-exception
|
|
500
|
+
OpenJDK-assembly-exception-1.0
|
|
501
|
+
PS-or-PDF-font-exception-20170817
|
|
502
|
+
Qt-GPL-exception-1.0
|
|
503
|
+
Qt-LGPL-exception-1.1
|
|
403
504
|
Qwt-exception-1.0
|
|
505
|
+
SHL-2.0
|
|
506
|
+
SHL-2.1
|
|
507
|
+
Swift-exception
|
|
508
|
+
Universal-FOSS-exception-1.0
|
|
404
509
|
WxWindows-exception-3.1
|
|
405
510
|
eCos-exception-2.0
|
|
406
511
|
freertos-exception-2.0
|
|
@@ -413,10 +518,10 @@ class Gem::Licenses
|
|
|
413
518
|
|
|
414
519
|
REGEXP = %r{
|
|
415
520
|
\A
|
|
416
|
-
(
|
|
521
|
+
(?:
|
|
417
522
|
#{Regexp.union(LICENSE_IDENTIFIERS)}
|
|
418
523
|
\+?
|
|
419
|
-
(
|
|
524
|
+
(?:\s WITH \s #{Regexp.union(EXCEPTION_IDENTIFIERS)})?
|
|
420
525
|
| #{NONSTANDARD}
|
|
421
526
|
)
|
|
422
527
|
\Z
|