public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Patrice Clement" <monsieurp@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: app-emulation/vagrant/files/, app-emulation/vagrant/
Date: Thu, 23 Jun 2016 21:53:00 +0000 (UTC)	[thread overview]
Message-ID: <1466716682.a48f6b99381ac753738bec83430df4f96267c25b.monsieurp@gentoo> (raw)

commit:     a48f6b99381ac753738bec83430df4f96267c25b
Author:     Tomas Mozes <hydrapolic <AT> gmail <DOT> com>
AuthorDate: Thu Jun 23 10:29:14 2016 +0000
Commit:     Patrice Clement <monsieurp <AT> gentoo <DOT> org>
CommitDate: Thu Jun 23 21:18:02 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a48f6b99

app-emulation/vagrant: version bump to 1.8.4

Package-Manager: portage-2.3.0_rc1
Closes: https://github.com/gentoo/gentoo/pull/1728

Signed-off-by: Patrice Clement <monsieurp <AT> gentoo.org>

 app-emulation/vagrant/Manifest                     |   1 +
 app-emulation/vagrant/files/vagrant-1.8.4          |  46 +++++++++
 ...agrant-1.8.4-install-plugins-in-isolation.patch | 114 +++++++++++++++++++++
 app-emulation/vagrant/vagrant-1.8.4.ebuild         |  87 ++++++++++++++++
 4 files changed, 248 insertions(+)

diff --git a/app-emulation/vagrant/Manifest b/app-emulation/vagrant/Manifest
index 24578f1..c72fb6d 100644
--- a/app-emulation/vagrant/Manifest
+++ b/app-emulation/vagrant/Manifest
@@ -1 +1,2 @@
 DIST vagrant-1.8.1.tar.gz 2873082 SHA256 12cfa43eb82399d3dd1c3fd24691797fa30187fc142474580c72e5c9f83b9dfd SHA512 efbb74e26b4678075b1cbcc1a8e0bdef929f8c7de186dec1931a5cd52f944a046992491681573283c6cab7e48bf25fce86b0da96df17063d2398b69401fa0f08 WHIRLPOOL 237cbec487f820f00c8bd5b57c44c2f2ffd3b716988f64265124c52e3fe1ef696f93a5e61004ee7c57531bfb1765c47d56c53b61880c761ddf5efc5b6545c261
+DIST vagrant-1.8.4.tar.gz 1736344 SHA256 a5ded3bc343ac1f30e09decab0c844639de45b16578600bdc4a0cdfe73b4d223 SHA512 0465a2e9eea87d5e7a13666dad32b8d4bc0bcd3ebcd0a752ad330e6e2aaeeeaab37e139f1de6bad859b1e8088a7ad9e12f395b95e679e6babf86c38a470d8568 WHIRLPOOL 35124df7062c70a80bf77a73bc6b4d551a8a965dd3a75181510ebc78c985432ea9517c9d8573eea60534aff827d4ddf983bfc355ed9f8bcc799dd9773c2b89e9

diff --git a/app-emulation/vagrant/files/vagrant-1.8.4 b/app-emulation/vagrant/files/vagrant-1.8.4
new file mode 100644
index 0000000..7306d3b
--- /dev/null
+++ b/app-emulation/vagrant/files/vagrant-1.8.4
@@ -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.4"' )"
+
+# 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.4-install-plugins-in-isolation.patch b/app-emulation/vagrant/files/vagrant-1.8.4-install-plugins-in-isolation.patch
new file mode 100644
index 0000000..7673073
--- /dev/null
+++ b/app-emulation/vagrant/files/vagrant-1.8.4-install-plugins-in-isolation.patch
@@ -0,0 +1,114 @@
+--- bin/vagrant
++++ bin/vagrant
+@@ -69,6 +69,11 @@
+ 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."
+--- lib/vagrant/bundler.rb        2016-06-13 10:21:40.000000000 +0200
++++ lib/vagrant/bundler.rb     2016-06-23 08:19:22.466039136 +0200
+@@ -65,6 +65,13 @@
+       @configfile = tempfile("vagrant-configfile")
+       @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.
+@@ -151,7 +158,7 @@
+ 
+     # 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)
+@@ -182,11 +189,23 @@
+     # 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 = tempfile("vagrant-gemfile")
++      # 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|
+         sources.each do |source|
+           next if source == ""
+@@ -195,6 +214,19 @@
+ 
+         gemfile.puts(%Q[gem "vagrant", "= #{VERSION}"])
+ 
++        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"]
+@@ -205,10 +237,18 @@
+             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
++
++        # 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
+     end
+ 
+@@ -219,7 +259,7 @@
+     #   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/vagrant-1.8.4.ebuild b/app-emulation/vagrant/vagrant-1.8.4.ebuild
new file mode 100644
index 0000000..dc0b196
--- /dev/null
+++ b/app-emulation/vagrant/vagrant-1.8.4.ebuild
@@ -0,0 +1,87 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+USE_RUBY="ruby20 ruby21"
+
+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.12.5
+	>=dev-ruby/childprocess-0.5.0
+	>=dev-ruby/erubis-2.7.0
+	>=dev-ruby/i18n-0.6.0:* <dev-ruby/i18n-0.8.0:*
+	>=dev-ruby/listen-3.0.2
+	>=dev-ruby/hashicorp-checkpoint-0.1.1
+	>=dev-ruby/log4r-1.1.9 <dev-ruby/log4r-1.1.11
+	>=dev-ruby/net-ssh-3.0.1
+	>=dev-ruby/net-sftp-2.1
+	>=dev-ruby/net-scp-1.1.0
+	>=dev-ruby/rest-client-1.6.0 <dev-ruby/rest-client-2.0
+	>=dev-ruby/nokogiri-1.6.7.1
+	>=dev-ruby/mime-types-2.6.2:* <dev-ruby/mime-types-3:*
+"
+
+ruby_add_bdepend "
+	dev-ruby/rake
+"
+
+all_ruby_prepare() {
+	# remove bundler support
+	sed -i '/[Bb]undler/d' Rakefile || die
+	rm Gemfile || die
+
+	# loosen dependencies
+	sed -e '/hashicorp-checkpoint\|listen\|net-ssh\|net-scp/s/~>/>=/' \
+		-e '/nokogiri\|bundler/s/=/>=/' \
+		-i ${PN}.gemspec || die
+
+	# remove windows-specific gems
+	sed -e '/wdm\|winrm/d' \
+		-i ${PN}.gemspec || die
+
+	# remove bsd-specific gems
+	sed -e '/rb-kqueue/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}"/${PN}-1.8.1-disable-embedded-cacert.patch
+
+	# fix rvm issue (bug #474476)
+	epatch "${FILESDIR}"/${PN}-1.8.1-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
+}


             reply	other threads:[~2016-06-23 21:53 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-23 21:53 Patrice Clement [this message]
  -- strict thread matches above, loose matches on Subject: below --
2016-10-08 12:45 [gentoo-commits] repo/gentoo:master commit in: app-emulation/vagrant/files/, app-emulation/vagrant/ Patrice Clement
2016-10-08 12:45 Patrice Clement
2016-11-15 22:29 David Seifert
2017-03-15 21:09 Amy Liffey
2017-05-24 13:27 Michał Górny
2017-08-16 14:24 Michał Górny
2017-11-06  7:37 Amy Liffey
2017-12-12 20:39 Patrice Clement
2018-04-20  9:00 Amy Liffey
2018-06-27 16:58 Georgy Yakovlev
2018-07-08  8:56 Georgy Yakovlev
2018-12-01  3:25 Georgy Yakovlev
2020-05-19  3:27 Georgy Yakovlev
2024-01-31 12:54 Joonas Niilola

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1466716682.a48f6b99381ac753738bec83430df4f96267c25b.monsieurp@gentoo \
    --to=monsieurp@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox