Handle strict dependency enforcement when installed within system
When installed outside of the official installer and not running within a bundler environment, properly activate core dependencies and properly enforce constraints.
This commit is contained in:
parent
d0115de80e
commit
062ef52816
|
@ -313,6 +313,12 @@ module Vagrant
|
|||
@logger.debug("Enabling strict dependency enforcement")
|
||||
plugin_deps += vagrant_internal_specs.map do |spec|
|
||||
next if system_plugins.include?(spec.name)
|
||||
# If we are not running within the installer and
|
||||
# we are not within a bundler environment then we
|
||||
# only want activated specs
|
||||
if !Vagrant.in_installer? && !Vagrant.in_bundler?
|
||||
next if !spec.activated?
|
||||
end
|
||||
Gem::Dependency.new(spec.name, spec.version)
|
||||
end.compact
|
||||
else
|
||||
|
@ -415,8 +421,13 @@ module Vagrant
|
|||
Gem::Resolver.compose_sets(*sets)
|
||||
end
|
||||
|
||||
# @return [Array<[Gem::Specification, String]>] spec and directory pairs
|
||||
# @return [Array<[Gem::Specification]>] spec list
|
||||
def vagrant_internal_specs
|
||||
# activate any dependencies up front so we can always
|
||||
# pin them when resolving
|
||||
Gem::Specification.find { |s| s.name == "vagrant" && s.activated? }.
|
||||
runtime_dependencies.each { |d| gem d.name, *d.requirement.as_list }
|
||||
# discover all the gems we have available
|
||||
list = {}
|
||||
directories = [Gem::Specification.default_specifications_dir]
|
||||
Gem::Specification.find_all{true}.each do |spec|
|
||||
|
|
|
@ -35,6 +35,14 @@ module Vagrant
|
|||
!!ENV["VAGRANT_INSTALLER_ENV"]
|
||||
end
|
||||
|
||||
# This returns a true/false if we are running within a bundler environment
|
||||
#
|
||||
# @return [Boolean]
|
||||
def self.in_bundler?
|
||||
!!ENV["BUNDLE_GEMFILE"] &&
|
||||
!defined?(::Bundler).nil?
|
||||
end
|
||||
|
||||
# Returns the path to the embedded directory of the Vagrant installer,
|
||||
# if there is one (if we're running in an installer).
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue