summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-emulation/vagrant/files')
-rw-r--r--app-emulation/vagrant/files/vagrant-1.2.1-no-warning.patch12
-rw-r--r--app-emulation/vagrant/files/vagrant-1.2.2-rvm.patch12
-rwxr-xr-xapp-emulation/vagrant/files/vagrant-1.8.146
-rw-r--r--app-emulation/vagrant/files/vagrant-1.8.1-disable-embedded-cacert.patch17
-rw-r--r--app-emulation/vagrant/files/vagrant-1.8.1-install-plugins-in-isolation.patch122
-rw-r--r--app-emulation/vagrant/files/vagrant-1.8.1-rvm.patch11
6 files changed, 196 insertions, 24 deletions
diff --git a/app-emulation/vagrant/files/vagrant-1.2.1-no-warning.patch b/app-emulation/vagrant/files/vagrant-1.2.1-no-warning.patch
deleted file mode 100644
index 08d1d3568b80..000000000000
--- a/app-emulation/vagrant/files/vagrant-1.2.1-no-warning.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- vagrant-1.2.1/bin/vagrant
-+++ vagrant-1.2.1/bin/vagrant
-@@ -74,9 +74,6 @@
- warned = true
- end
- end
--
-- # If we're not in the installer, warn.
-- env.ui.warn(I18n.t("vagrant.general.not_in_installer")) if !warned
- end
-
- begin
diff --git a/app-emulation/vagrant/files/vagrant-1.2.2-rvm.patch b/app-emulation/vagrant/files/vagrant-1.2.2-rvm.patch
deleted file mode 100644
index 99265a26bfbf..000000000000
--- a/app-emulation/vagrant/files/vagrant-1.2.2-rvm.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- vagrant-1.2.2/bin/vagrant
-+++ vagrant-1.2.2/bin/vagrant
-@@ -5,6 +5,9 @@
- # initializing which have historically resulted in stack traces.
- Signal.trap("INT") { exit 1 }
-
-+ENV.delete('GEM_HOME')
-+ENV.delete('GEM_PATH')
-+
- require 'log4r'
- require 'vagrant'
- require 'vagrant/cli'
diff --git a/app-emulation/vagrant/files/vagrant-1.8.1 b/app-emulation/vagrant/files/vagrant-1.8.1
new file mode 100755
index 000000000000..760db569ea7c
--- /dev/null
+++ b/app-emulation/vagrant/files/vagrant-1.8.1
@@ -0,0 +1,46 @@
+#!/usr/bin/env bash
+#
+# This is a wrapper to properly execute Vagrant within the embedded
+# Vagrant installation directory. This sets up proper environmental variables
+# so that everything loads and compiles to proper directories.
+
+VAGRANT_DIR="$( ruby -e 'print Gem::default_path[-1] + "/gems/vagrant-1.8.1"' )"
+
+# Export GEM_HOME based on VAGRANT_HOME
+#
+# This needs to be set because Bundler includes gem paths
+# from RubyGems' Gem.paths.
+if [ -z $VAGRANT_HOME ]; then
+ VAGRANT_HOME=$(eval echo "~/.vagrant.d")
+fi
+export GEM_HOME="$VAGRANT_HOME/gems"
+
+# SSL certs
+export SSL_CERT_FILE="/etc/ssl/certs/ca-certificates.crt"
+
+# Export an environmental variable to say we're in a Vagrant
+# installer created environment.
+export VAGRANT_INSTALLER_ENV=1
+
+# This is currently used only in Vagrant::Plugin::Manager.system_plugins_file
+# to locate plugins configuration file.
+export VAGRANT_INSTALLER_EMBEDDED_DIR="/var/lib/vagrant"
+export VAGRANT_INSTALLER_VERSION="2"
+
+# Determine the OS that we're on, which is used in some later checks.
+# It is very important we do this _before_ setting the PATH below
+# because uname dependencies can conflict on some platforms.
+OS=$(uname -s 2>/dev/null)
+
+# Export the OS as an environmental variable that Vagrant can access
+# so that it can behave better.
+export VAGRANT_DETECTED_OS="${OS}"
+
+VAGRANT_EXECUTABLE="${VAGRANT_DIR}/bin/vagrant"
+VAGRANT_LAUNCHER="${VAGRANT_DIR}/lib/vagrant/pre-rubygems.rb"
+
+# Export the VAGRANT_EXECUTABLE so that pre-rubygems can optimize a bit
+export VAGRANT_EXECUTABLE
+
+# Call the actual Vagrant bin with our arguments
+exec ruby "${VAGRANT_LAUNCHER}" "$@"
diff --git a/app-emulation/vagrant/files/vagrant-1.8.1-disable-embedded-cacert.patch b/app-emulation/vagrant/files/vagrant-1.8.1-disable-embedded-cacert.patch
new file mode 100644
index 000000000000..afcb6f707f5f
--- /dev/null
+++ b/app-emulation/vagrant/files/vagrant-1.8.1-disable-embedded-cacert.patch
@@ -0,0 +1,17 @@
+diff --git a/lib/vagrant/util/downloader.rb b/lib/vagrant/util/downloader.rb
+index 8756fc3..7fb2be8 100644
+--- a/lib/vagrant/util/downloader.rb
++++ b/lib/vagrant/util/downloader.rb
+@@ -215,8 +215,9 @@ module Vagrant
+ # If we're in Vagrant, then we use the packaged CA bundle
+ if Vagrant.in_installer?
+ subprocess_options[:env] ||= {}
+- subprocess_options[:env]["CURL_CA_BUNDLE"] =
+- File.expand_path("cacert.pem", ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"])
++ # Use system certificates.
++ # subprocess_options[:env]["CURL_CA_BUNDLE"] =
++ # File.expand_path("cacert.pem", ENV["VAGRANT_INSTALLER_EMBEDDED_DIR"])
+ end
+
+ return [options, subprocess_options]
+
diff --git a/app-emulation/vagrant/files/vagrant-1.8.1-install-plugins-in-isolation.patch b/app-emulation/vagrant/files/vagrant-1.8.1-install-plugins-in-isolation.patch
new file mode 100644
index 000000000000..c6934ab52702
--- /dev/null
+++ b/app-emulation/vagrant/files/vagrant-1.8.1-install-plugins-in-isolation.patch
@@ -0,0 +1,122 @@
+diff --git a/bin/vagrant b/bin/vagrant
+index fce68c8..781fc63 100755
+--- a/bin/vagrant
++++ b/bin/vagrant
+@@ -69,6 +69,11 @@ end
+ require "bundler"
+ begin
+ $vagrant_bundler_runtime = Bundler.setup(:default, :plugins)
++# Invalidate the cached Gemfile.lock if necessary and try again
++rescue Bundler::GemNotFound
++ FileUtils.rm File.expand_path("~/.vagrant.d/Gemfile") if File.exists? File.expand_path("~/.vagrant.d/Gemfile")
++ FileUtils.rm File.expand_path("~/.vagrant.d/Gemfile.lock") if File.exists? File.expand_path("~/.vagrant.d/Gemfile.lock")
++ $vagrant_bundler_runtime = Bundler.setup(:default, :plugins)
+ rescue Bundler::GemNotFound
+ $stderr.puts "Bundler, the underlying system used to manage Vagrant plugins,"
+ $stderr.puts "is reporting that a plugin or its dependency can't be found."
+diff --git a/lib/vagrant/bundler.rb b/lib/vagrant/bundler.rb
+index ea8c056..0543963 100644
+--- a/lib/vagrant/bundler.rb
++++ b/lib/vagrant/bundler.rb
+@@ -63,6 +63,13 @@ module Vagrant
+ @configfile = File.open(Tempfile.new("vagrant").path + "1", "w+")
+ @configfile.close
+
++ # Ensure the path to user's Gemfile exists
++ gemfile = Vagrant.user_data_path.join("Gemfile")
++ unless File.exists? gemfile
++ FileUtils.mkdir_p(File.dirname(gemfile))
++ File.open(gemfile, 'w') {}
++ end
++
+ # Build up the Gemfile for our Bundler context. We make sure to
+ # lock Vagrant to our current Vagrant version. In addition to that,
+ # we add all our plugin dependencies.
+@@ -141,7 +148,7 @@ module Vagrant
+
+ # Clean removes any unused gems.
+ def clean(plugins)
+- gemfile = build_gemfile(plugins)
++ gemfile = build_gemfile(plugins, false, true)
+ lockfile = "#{gemfile.path}.lock"
+ definition = ::Bundler::Definition.build(gemfile, lockfile, nil)
+ root = File.dirname(gemfile.path)
+@@ -172,11 +179,24 @@ module Vagrant
+ # Builds a valid Gemfile for use with Bundler given the list of
+ # plugins.
+ #
++ # @param [Hash|Bool] update Hash of gems to update or true for all
++ # @param [Bool] invalidate Invalidate Gemfile.lock
+ # @return [Tempfile]
+- def build_gemfile(plugins)
++ def build_gemfile(plugins, update = false, invalidate = false)
+ sources = plugins.values.map { |p| p["sources"] }.flatten.compact.uniq
+
+- f = File.open(Tempfile.new("vagrant").path + "2", "w+")
++ # Determine what gems to update
++ if update.is_a? Hash
++ update_gems = update[:gems]
++ elsif update === true
++ update_gems = plugins.map{ |p| p[0] }
++ else
++ update_gems = []
++ end
++
++ gemfile = Vagrant.user_data_path.join("Gemfile")
++ f = File.open(gemfile, "w+")
++
+ f.tap do |gemfile|
+ if !sources.include?("http://rubygems.org")
+ gemfile.puts(%Q[source "https://rubygems.org"])
+@@ -190,6 +210,19 @@ module Vagrant
+
+ gemfile.puts(%Q[gemspec :path => "#{File.expand_path '../../..', __FILE__}"])
+
++ locked_gems = []
++
++ # Use Gemfile.lock to lock the gem versions
++ if ENV["VAGRANT_INTERNAL_BUNDLERIZED"] && File.exist?("#{gemfile.path}.lock") && !invalidate
++ lockfile = ::Bundler::LockfileParser.new(::Bundler.read_file("#{gemfile.path}.lock"))
++ lockfile.specs.each do |s|
++ if s.name != 'vagrant' && !(update_gems.include? s.name)
++ gemfile.puts(%Q[gem "#{s.name}", "#{s.version.to_s}"])
++ end
++ end
++ locked_gems = lockfile.specs.map(&:name) - update_gems
++ end
++
+ gemfile.puts("group :plugins do")
+ plugins.each do |name, plugin|
+ version = plugin["gem_version"]
+@@ -199,13 +232,19 @@ module Vagrant
+ if plugin["require"] && plugin["require"] != ""
+ opts[:require] = plugin["require"]
+ end
+-
+- gemfile.puts(%Q[gem "#{name}", #{version.inspect}, #{opts.inspect}])
++ gemfile.puts(%Q[gem "#{name}", #{version.inspect}, #{opts.inspect}]) unless locked_gems.include? name
+ end
+ gemfile.puts("end")
+-
+ gemfile.close
+ end
++
++ # Create Gemfile.lock if missing and re-generate Gemfile
++ if !File.exist?("#{f.path}.lock") && File.exist?(f.path)
++ lockfile = "#{f.path}.lock"
++ ENV['BUNDLE_GEMFILE'] = f.path
++ definition = ::Bundler::Definition.build(f.path, lockfile, false)
++ end
++ f
+ end
+
+ # This installs a set of plugins and optionally updates those gems.
+@@ -215,7 +254,7 @@ module Vagrant
+ # can be a hash of options. See Bundler.definition.
+ # @return [Array<Gem::Specification>]
+ def internal_install(plugins, update, **extra)
+- gemfile = build_gemfile(plugins)
++ gemfile = build_gemfile(plugins, update)
+ lockfile = "#{gemfile.path}.lock"
+ definition = ::Bundler::Definition.build(gemfile, lockfile, update)
+ root = File.dirname(gemfile.path)
diff --git a/app-emulation/vagrant/files/vagrant-1.8.1-rvm.patch b/app-emulation/vagrant/files/vagrant-1.8.1-rvm.patch
new file mode 100644
index 000000000000..81d17be010e3
--- /dev/null
+++ b/app-emulation/vagrant/files/vagrant-1.8.1-rvm.patch
@@ -0,0 +1,11 @@
+--- vagrant-1.8.1/bin/vagrant
++++ vagrant-1.8.1/bin/vagrant
+@@ -5,6 +5,8 @@
+ # initializing which have historically resulted in stack traces.
+ Signal.trap("INT") { abort }
+
++ENV.delete('GEM_PATH')
++
+ # Split arguments by "--" if its there, we'll recombine them later
+ argv = ARGV.dup
+ argv_extra = []