bundler 1.8.0 → 1.8.1

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

Potentially problematic release.


This version of bundler might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ef2d9111a116f5375fcbbc9fcf791173f17f8191
4
- data.tar.gz: 4aa9735c3b3e22247ea7586c0afb4461d98c1f53
3
+ metadata.gz: af68420035a0c7b45ad5bded38f16b47d34e1926
4
+ data.tar.gz: ec122e1e73be3e4d5bed140544922889251d9518
5
5
  SHA512:
6
- metadata.gz: 68568a8e2ac0307a22e2ca03813f85c4669e0387fdb404810a82db19bb547f907e5cb180db076e481a24367e8428285503a6f14e00629ae1a09e86d1b864fb30
7
- data.tar.gz: 74c1ab0165a4cf9281eec6745019eb7ec5ab0f2544e44148deb3ac722709b078ebbe408820c37e2b9596c0d496566ccd6214823f7be5df3b9eac65e567769569
6
+ metadata.gz: 395e1cc327ddb3b6b7587563368b042231d8b6e1f3cdc72b898c4f69035cffe734f13c437079eecb831999d80ba38851772a7988e0d22408ca1a5de11a702d25
7
+ data.tar.gz: 16234c8a9b02d81db591e10dede42804294fc05c3d6863cbf8fd5d3cf2b3bb976357aff1fd5b5e7a2581b230fd24281cd595221e1aa7e06e8b8a264295ee1726
@@ -1,14 +1,25 @@
1
+ ## 1.8.1 (2015-02-13)
2
+
3
+ Bugfixes:
4
+
5
+ - synchronize building git gem native extensions (#3385, @antifuchs & @indirect)
6
+ - set gemspec bindir correctly (#3392, @tmoore)
7
+ - request lockfile deletion when it is malformed (#3396, @indirect)
8
+ - explain problem when mirror config is missing (#3386, @indirect)
9
+ - explain problem when caching causes permission error (#3390, @indirect)
10
+ - normalize URLs in config keys (#3391, @indirect)
11
+
1
12
  ## 1.8.0 (2015-02-10)
2
13
 
3
14
  Bugfixes:
4
15
 
5
- - Gemfile `github` blocks now work (#3379, @indirect)
16
+ - gemfile `github` blocks now work (#3379, @indirect)
6
17
 
7
18
  Bugfixes from v1.7.13:
8
19
 
9
- - Look up installed gems in remote sources (#3300, #3368, #3377, #3380, #3381, @indirect)
10
- - Look up gems across all sources to satisfy dependencies (#3365, @keiths-osc)
11
- - Request dependencies for no more than 100 gems at a time (#3367, @segiddins)
20
+ - look up installed gems in remote sources (#3300, #3368, #3377, #3380, #3381, @indirect)
21
+ - look up gems across all sources to satisfy dependencies (#3365, @keiths-osc)
22
+ - request dependencies for no more than 100 gems at a time (#3367, @segiddins)
12
23
 
13
24
  ## 1.8.0.rc (2015-01-26)
14
25
 
@@ -323,7 +323,7 @@ module Bundler
323
323
  gem_list = []
324
324
  deps_list = []
325
325
 
326
- gem_names.each_slice(Source::Rubygems::API_REQUEST_LIMIT) do |names|
326
+ gem_names.each_slice(Source::Rubygems::API_REQUEST_SIZE) do |names|
327
327
  marshalled_deps = fetch dependency_api_uri(names)
328
328
  gem_list += Bundler.load_marshal(marshalled_deps)
329
329
  end
@@ -195,13 +195,12 @@ module Bundler
195
195
  private
196
196
 
197
197
  def can_install_in_parallel?
198
- min_rubygems = "2.0.7"
199
- if Bundler.current_ruby.mri? || Bundler.rubygems.provides?(">= #{min_rubygems}")
198
+ if Bundler.rubygems.provides?(">= 2.1.0")
200
199
  true
201
200
  else
202
201
  Bundler.ui.warn "Rubygems #{Gem::VERSION} is not threadsafe, so your "\
203
- "gems must be installed one at a time. Upgrade to Rubygems " \
204
- "#{min_rubygems} or higher to enable parallel gem installation."
202
+ "gems must be installed one at a time. Upgrade to Rubygems 2.1.0 " \
203
+ "or higher to enable parallel gem installation."
205
204
  false
206
205
  end
207
206
  end
@@ -47,6 +47,10 @@ module Bundler
47
47
  end
48
48
  @sources << @rubygems_aggregate
49
49
  @specs = @specs.values
50
+ rescue ArgumentError => e
51
+ Bundler.ui.debug(e)
52
+ raise LockfileError, "Your lockfile is unreadable. Run `rm Gemfile.lock` " \
53
+ "and then `bundle install` to generate a new lockfile."
50
54
  end
51
55
 
52
56
  private
@@ -1,3 +1,4 @@
1
+ require 'monitor'
1
2
  require 'rubygems'
2
3
  require 'rubygems/config_file'
3
4
 
@@ -134,6 +135,10 @@ module Bundler
134
135
  Gem::DefaultUserInteraction.ui = obj
135
136
  end
136
137
 
138
+ def ext_lock
139
+ @ext_lock ||= Monitor.new
140
+ end
141
+
137
142
  def fetch_specs(all, pre, &blk)
138
143
  specs = Gem::SpecFetcher.new.list(all, pre)
139
144
  specs.each { yield } if block_given?
@@ -554,9 +559,37 @@ module Bundler
554
559
  end
555
560
  end
556
561
 
562
+ class MoreFuture < Future
563
+ def initialize
564
+ super
565
+ backport_ext_builder_monitor
566
+ end
567
+
568
+ def backport_ext_builder_monitor
569
+ require 'rubygems/ext'
570
+
571
+ Gem::Ext::Builder.class_eval do
572
+ if !const_defined?(:CHDIR_MONITOR)
573
+ const_set(:CHDIR_MONITOR, Monitor.new)
574
+ end
575
+
576
+ if const_defined?(:CHDIR_MUTEX)
577
+ remove_const(:CHDIR_MUTEX)
578
+ const_set(:CHDIR_MUTEX, const_get(:CHDIR_MONITOR))
579
+ end
580
+ end
581
+ end
582
+
583
+ def ext_lock
584
+ Gem::Ext::Builder::CHDIR_MONITOR
585
+ end
586
+ end
587
+
557
588
  end
558
589
 
559
- if RubygemsIntegration.provides?(">= 1.99.99")
590
+ if RubygemsIntegration.provides?(">= 2.1.0")
591
+ @rubygems = RubygemsIntegration::MoreFuture.new
592
+ elsif RubygemsIntegration.provides?(">= 1.99.99")
560
593
  @rubygems = RubygemsIntegration::Future.new
561
594
  elsif RubygemsIntegration.provides?('>= 1.8.20')
562
595
  @rubygems = RubygemsIntegration::MoreModern.new
@@ -1,3 +1,5 @@
1
+ require 'uri'
2
+
1
3
  module Bundler
2
4
  class Settings
3
5
  BOOL_KEYS = %w(frozen cache_all no_prune disable_local_branch_check gem.mit gem.coc).freeze
@@ -127,6 +129,9 @@ module Bundler
127
129
 
128
130
  private
129
131
  def key_for(key)
132
+ if key.is_a?(String) && key.include?("http")
133
+ key = normalize_uri(key).to_s
134
+ end
130
135
  key = key.to_s.gsub(".", "__").upcase
131
136
  "BUNDLE_#{key}"
132
137
  end
@@ -182,7 +187,9 @@ module Bundler
182
187
  uri = uri.to_s
183
188
  uri = "#{uri}/" unless uri =~ %r[/\Z]
184
189
  uri = URI(uri)
185
- raise ArgumentError, "Gem mirror sources must be absolute URIs (configured: #{mirror_source})" unless uri.absolute?
190
+ unless uri.absolute?
191
+ raise ArgumentError, "Gem sources must be absolute. You provided '#{uri}'."
192
+ end
186
193
  uri
187
194
  end
188
195
 
@@ -1,4 +1,3 @@
1
- require 'monitor'
2
1
  require 'pathname'
3
2
  require 'rubygems'
4
3
 
@@ -19,7 +18,6 @@ end
19
18
  module Bundler
20
19
  module SharedHelpers
21
20
  attr_accessor :gem_loaded
22
- CHDIR_MONITOR = Monitor.new
23
21
 
24
22
  def default_gemfile
25
23
  gemfile = find_gemfile
@@ -52,7 +50,7 @@ module Bundler
52
50
  end
53
51
 
54
52
  def chdir_monitor
55
- CHDIR_MONITOR
53
+ Bundler.rubygems.ext_lock
56
54
  end
57
55
 
58
56
  def chdir(dir, &blk)
@@ -172,7 +172,7 @@ module Bundler
172
172
  end
173
173
 
174
174
  def generate_bin(spec, disable_extensions = false)
175
- gem_dir = Pathname.new(spec.full_gem_path)
175
+ gem_dir = Pathname.new(spec.full_gem_path)
176
176
 
177
177
  # Some gem authors put absolute paths in their gemspec
178
178
  # and we have to save them from themselves
@@ -5,8 +5,10 @@ require 'rubygems/spec_fetcher'
5
5
  module Bundler
6
6
  class Source
7
7
  class Rubygems < Source
8
- # threshold for switching back to the modern index instead of fetching every spec
9
- API_REQUEST_LIMIT = 100
8
+ # Use the API when installing less than X gems
9
+ API_REQUEST_LIMIT = 500
10
+ # Ask for X gems per API request
11
+ API_REQUEST_SIZE = 50
10
12
 
11
13
  attr_reader :remotes, :caches
12
14
 
@@ -149,6 +151,9 @@ module Bundler
149
151
  return if File.dirname(cached_path) == Bundler.app_cache.to_s
150
152
  Bundler.ui.info " * #{File.basename(cached_path)}"
151
153
  FileUtils.cp(cached_path, Bundler.app_cache(custom_path))
154
+ rescue Errno::EACCES => e
155
+ Bundler.ui.debug(e)
156
+ raise InstallError, e.message
152
157
  end
153
158
 
154
159
  def cached_built_in_gem(spec)
@@ -26,7 +26,7 @@ TODO: Write usage instructions here
26
26
 
27
27
  ## Development
28
28
 
29
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment. <% if config[:bin] %>Run `bundle exec <%= config[:name] %>` to use the code located in this directory, ignoring other installed copies of this gem.<% end %>
29
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.<% if config[:bin] %> Run `bundle exec <%= config[:name] %>` to use the code located in this directory, ignoring other installed copies of this gem.<% end %>
30
30
 
31
31
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
32
32
 
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.license = "MIT"
20
20
 
21
21
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
+ spec.bindir = "exe"
22
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
24
  spec.require_paths = ["lib"]
24
25
  <%- if config[:ext] -%>
@@ -2,5 +2,5 @@ module Bundler
2
2
  # We're doing this because we might write tests that deal
3
3
  # with other versions of bundler and we are unsure how to
4
4
  # handle this better.
5
- VERSION = "1.8.0" unless defined?(::Bundler::VERSION)
5
+ VERSION = "1.8.1" unless defined?(::Bundler::VERSION)
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - André Arko
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-02-10 00:00:00.000000000 Z
14
+ date: 2015-02-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: mustache