diff --git a/app-emulation/vagrant/Manifest b/app-emulation/vagrant/Manifest index a4955742eee99..24578f105f7dd 100644 --- a/app-emulation/vagrant/Manifest +++ b/app-emulation/vagrant/Manifest @@ -1 +1 @@ -DIST vagrant-1.4.3.tar.gz 2391973 SHA256 09ccc0d87999a3c133b9ef52a5cff58402745ee64af6080b2a5d304eb06c9c58 SHA512 93fd1cfa263004cadbf670fac4dc318db9719d2a86afe188857cbc97c1317e6ef2387be498ef9278ca95cdda6bd41400426e3bf52448eb59c31877c9fd0624e4 WHIRLPOOL e581e8488e0b1e75bcdd75f4572b89f9c23338e422d3acb57b1d5d513d9357ec0b061371d926ad0bb1087bf890e70422d4e3527dfd518329ba910f42f0733673 +DIST vagrant-1.8.1.tar.gz 2873082 SHA256 12cfa43eb82399d3dd1c3fd24691797fa30187fc142474580c72e5c9f83b9dfd SHA512 efbb74e26b4678075b1cbcc1a8e0bdef929f8c7de186dec1931a5cd52f944a046992491681573283c6cab7e48bf25fce86b0da96df17063d2398b69401fa0f08 WHIRLPOOL 237cbec487f820f00c8bd5b57c44c2f2ffd3b716988f64265124c52e3fe1ef696f93a5e61004ee7c57531bfb1765c47d56c53b61880c761ddf5efc5b6545c261 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 08d1d3568b806..0000000000000 --- 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 99265a26bfbf8..0000000000000 --- 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 0000000000000..760db569ea7c7 --- /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 0000000000000..afcb6f707f5f3 --- /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 0000000000000..c6934ab527025 --- /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] + 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 0000000000000..81d17be010e36 --- /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 = [] diff --git a/app-emulation/vagrant/metadata.xml b/app-emulation/vagrant/metadata.xml index 5125c656be0c7..83fc58397f0f3 100644 --- a/app-emulation/vagrant/metadata.xml +++ b/app-emulation/vagrant/metadata.xml @@ -1,10 +1,18 @@ - - maintainer-needed@gentoo.org - - - mitchellh/vagrant - + proxy-maintainers + + hydrapolic@gmail.com + Tomas Mozes + Proxy maintainer + + + + Use VirtualBox provider. + + + + mitchellh/vagrant + diff --git a/app-emulation/vagrant/vagrant-1.4.3-r2.ebuild b/app-emulation/vagrant/vagrant-1.4.3-r2.ebuild deleted file mode 100644 index edac95f3c32a9..0000000000000 --- a/app-emulation/vagrant/vagrant-1.4.3-r2.ebuild +++ /dev/null @@ -1,69 +0,0 @@ -# Copyright 1999-2014 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id$ - -EAPI="5" -USE_RUBY="ruby20" - -RUBY_FAKEGEM_EXTRADOC="CHANGELOG.md README.md" -RUBY_FAKEGEM_GEMSPEC="vagrant.gemspec" -RUBY_FAKEGEM_EXTRAINSTALL="config keys plugins templates" -RUBY_FAKEGEM_TASK_DOC="" - -inherit ruby-fakegem eutils - -DESCRIPTION="A tool for building and distributing virtual machines using VirtualBox" -HOMEPAGE="http://vagrantup.com/" -SRC_URI="https://github.com/mitchellh/vagrant/archive/v${PV}.tar.gz -> ${P}.tar.gz" - -LICENSE="MIT" -SLOT="0" -KEYWORDS="~amd64 ~x86 ~x64-macos" -IUSE="test" - -# Missing ebuild for contest -RESTRICT="test" - -RDEPEND="${RDEPEND} - app-arch/libarchive - net-misc/curl - !x64-macos? ( || ( app-emulation/virtualbox app-emulation/virtualbox-bin ) )" - -ruby_add_rdepend " - >=dev-ruby/childprocess-0.3.7 - >=dev-ruby/erubis-2.7.0 - dev-ruby/i18n:0.6 - >=dev-ruby/json-1.5.1 - >=dev-ruby/log4r-1.1.9 - >=dev-ruby/net-ssh-2.6.6 - >=dev-ruby/net-scp-1.1.0 -" - -ruby_add_bdepend " - dev-ruby/rake - test? ( dev-ruby/mocha virtual/ruby-minitest ) -" - -all_ruby_prepare() { - # remove bundler support - sed -i '/[Bb]undler/d' Rakefile || die - rm Gemfile || die - - # loosen dependencies - sed -e '/childprocess\|erubis\|log4r\|net-scp/s/~>/>=/' \ - -e '/net-ssh/s:, "< 2.8.0"::' \ - -i ${PN}.gemspec || die - - epatch "${FILESDIR}"/${PN}-1.2.1-no-warning.patch - epatch "${FILESDIR}"/${PN}-1.2.2-rvm.patch -} - -pkg_postinst() { - if use x64-macos ; then - ewarn - ewarn "For Mac OS X prefixes, you must install the virtualbox" - ewarn "package specifically for OS X which can be found at:" - ewarn "https://www.virtualbox.org/wiki/Downloads" - ewarn - fi -} diff --git a/app-emulation/vagrant/vagrant-1.8.1.ebuild b/app-emulation/vagrant/vagrant-1.8.1.ebuild new file mode 100644 index 0000000000000..7989b4ddfa982 --- /dev/null +++ b/app-emulation/vagrant/vagrant-1.8.1.ebuild @@ -0,0 +1,84 @@ +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" +USE_RUBY="ruby20 ruby21 ruby22" + +RUBY_FAKEGEM_EXTRADOC="CHANGELOG.md README.md" +RUBY_FAKEGEM_GEMSPEC="vagrant.gemspec" +RUBY_FAKEGEM_EXTRAINSTALL="keys plugins templates version.txt" +RUBY_FAKEGEM_TASK_DOC="" + +inherit bash-completion-r1 ruby-fakegem eutils + +DESCRIPTION="A tool for building and distributing development environments" +HOMEPAGE="http://vagrantup.com/" +SRC_URI="https://github.com/mitchellh/vagrant/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="+virtualbox" + +RDEPEND="${RDEPEND} + app-arch/libarchive + net-misc/curl + virtualbox? ( || ( app-emulation/virtualbox app-emulation/virtualbox-bin ) )" + +ruby_add_rdepend " + >=dev-ruby/bundler-1.5.2 <=dev-ruby/bundler-1.10.6 + >=dev-ruby/childprocess-0.5.0 + >=dev-ruby/erubis-2.7.0 + >=dev-ruby/i18n-0.6.0 =dev-ruby/listen-3.0.2 + >=dev-ruby/hashicorp-checkpoint-0.1.1 + >=dev-ruby/log4r-1.1.9 =dev-ruby/net-ssh-3.0.1 + >=dev-ruby/net-sftp-2.1 + >=dev-ruby/net-scp-1.1.0 =dev-ruby/rb-kqueue-0.2.0 + >=dev-ruby/rest-client-1.6.0 =dev-ruby/nokogiri-1.6.3.1 + >=dev-ruby/mime-types-2.6.2 />=/' \ + -e '/nokogiri/s/=/>=/' \ + -i ${PN}.gemspec || die + + # remove windows-specific gems + sed -e '/wdm\|winrm/d' \ + -i ${PN}.gemspec || die + + # see https://github.com/mitchellh/vagrant/pull/5877 + epatch "${FILESDIR}"/${P}-install-plugins-in-isolation.patch + + # disable embedded CA certs and use system ones + epatch "${FILESDIR}"/${P}-disable-embedded-cacert.patch + + # fix rvm issue (bug #474476) + epatch "${FILESDIR}"/${P}-rvm.patch +} + +all_ruby_install() { + newbashcomp contrib/bash/completion.sh ${PN} + all_fakegem_install + + # provide executable similar to upstream: + # https://github.com/mitchellh/vagrant-installers/blob/master/substrate/modules/vagrant_installer/templates/vagrant.erb + newbin "${FILESDIR}/${P}" "${PN}" + + # directory for plugins.json + dodir /var/lib/vagrant +}