commit:     798fcf4b562821ec149b7b549dc0b72d9909974f
Author:     Tomas Mozes <hydrapolic <AT> gmail <DOT> com>
AuthorDate: Mon Apr 24 06:33:48 2017 +0000
Commit:     Amy Liffey <amynka <AT> gentoo <DOT> org>
CommitDate: Mon Apr 24 14:50:50 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=798fcf4b

app-emulation/vagrant: bump to 1.9.3, drop old

Closes:#4460

Package-Manager: Portage-2.3.5, Repoman-2.3.2

 app-emulation/vagrant/Manifest                     |  2 +-
 .../vagrant/files/{vagrant-1.9.1 => vagrant-1.9.3} |  2 +-
 .../files/vagrant-1.9.3-thread-deadlock.patch      | 98 ++++++++++++++++++++++
 ...agrant-1.9.1-r1.ebuild => vagrant-1.9.3.ebuild} |  3 +
 4 files changed, 103 insertions(+), 2 deletions(-)

diff --git a/app-emulation/vagrant/Manifest b/app-emulation/vagrant/Manifest
index 3efc9763881..1eca1c22ef8 100644
--- a/app-emulation/vagrant/Manifest
+++ b/app-emulation/vagrant/Manifest
@@ -1,2 +1,2 @@
-DIST vagrant-1.9.1.tar.gz 1762644 SHA256 
ed30e5a277b5614ee83d9417793ed2af870977368c2b0344855694040c4d6449 SHA512 
07ea6e2d881806ce61395a30abdaa7b4f7c2c39bb909d6c6e0aa14101945a9a26078ed18ebb8e238d97f05ee060564fb290615ac4868b80ee29b64b88a666452
 WHIRLPOOL 
16ece1985a78942c75774181c803e42ffe81cd0580314372932af6a3c5084b43f8d3db0d6137eaa3186a9cdbf33e8e9d59f27f95be6ebe2ed5d93a90577e7fb9
 DIST vagrant-1.9.2.tar.gz 1813028 SHA256 
53723eec1180ed0e89c1968e06626c6d45e42f6dc25ae9934ca8dfc240a82046 SHA512 
26e2a933571b076fae27ea13e0f86529e39ebc3eb7580781d9cfa81bff2383f4dee72b947b3d2cb4f4bd231769f27da27b95e10f43b5207b824cd22b1e2403b6
 WHIRLPOOL 
9401ba1d21d20cf4a0f1c74775e077d9fad27edfbcb21f96579ff6cf6d7e8ab734cd0832f20ff568f7346633b80dee2fbc897ca34f08bc6868add7d274330d76
+DIST vagrant-1.9.3.tar.gz 1819192 SHA256 
4b141f60e7e59e654b9a77eb137f208613349db331cdbfcd9a8354b8ebba5c00 SHA512 
9adfeddd75821fda0ccdbd327861844752fb2d626ff5643527bd5af12ac2399b5565c6cbe5ca4d98f79dbeffd4408b29f57eb3cb967d9e47dafe247c31ffe3a8
 WHIRLPOOL 
b34ca7e027ba2f209c41368c8191a1576b1cdd96a76e8e9f7cd91f0b1a2b0f23fa2e8c32b76a55a143c2fe4e15a7ae23faacd52bf14819d67f7ceeca3768f72d

diff --git a/app-emulation/vagrant/files/vagrant-1.9.1 
b/app-emulation/vagrant/files/vagrant-1.9.3
similarity index 98%
rename from app-emulation/vagrant/files/vagrant-1.9.1
rename to app-emulation/vagrant/files/vagrant-1.9.3
index 40a91d63e96..a8018a64446 100644
--- a/app-emulation/vagrant/files/vagrant-1.9.1
+++ b/app-emulation/vagrant/files/vagrant-1.9.3
@@ -4,7 +4,7 @@
 # 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.9.1"' 
)"
+VAGRANT_DIR="$( ruby -e 'print Gem::default_path[-1] + "/gems/vagrant-1.9.3"' 
)"
 
 # Export GEM_HOME based on VAGRANT_HOME
 #

diff --git a/app-emulation/vagrant/files/vagrant-1.9.3-thread-deadlock.patch 
b/app-emulation/vagrant/files/vagrant-1.9.3-thread-deadlock.patch
new file mode 100644
index 00000000000..75cb63a2fb1
--- /dev/null
+++ b/app-emulation/vagrant/files/vagrant-1.9.3-thread-deadlock.patch
@@ -0,0 +1,98 @@
+From bfc2af4cf9c5e9280f0e7d74de226b7af7c18a2a Mon Sep 17 00:00:00 2001
+From: Chris Roberts <[email protected]>
+Date: Mon, 27 Mar 2017 12:55:15 -0700
+Subject: [PATCH] Always provide timeout on thread join to prevent deadlock
+ errors
+
+---
+ lib/vagrant/batch_action.rb   | 6 ++++--
+ lib/vagrant/environment.rb    | 2 +-
+ lib/vagrant/shared_helpers.rb | 6 ++++++
+ lib/vagrant/ui.rb             | 6 +++---
+ 4 files changed, 14 insertions(+), 6 deletions(-)
+
+diff --git a/lib/vagrant/batch_action.rb b/lib/vagrant/batch_action.rb
+index 9b6900f..d27e87d 100644
+--- a/lib/vagrant/batch_action.rb
++++ b/lib/vagrant/batch_action.rb
+@@ -123,7 +123,9 @@ def run
+         # Set some attributes on the thread for later
+         thread[:machine] = machine
+ 
+-        thread.join if !par
++        if !par
++          thread.join(THREAD_MAX_JOIN_TIMEOUT) while thread.alive?
++        end
+         threads << thread
+       end
+ 
+@@ -131,7 +133,7 @@ def run
+ 
+       threads.each do |thread|
+         # Wait for the thread to complete
+-        thread.join
++        thread.join(THREAD_MAX_JOIN_TIMEOUT) while thread.alive?
+ 
+         # If the thread had an error, then store the error to show later
+         if thread[:error]
+diff --git a/lib/vagrant/environment.rb b/lib/vagrant/environment.rb
+index 8fad272..125070f 100644
+--- a/lib/vagrant/environment.rb
++++ b/lib/vagrant/environment.rb
+@@ -295,7 +295,7 @@ def batch(parallel=true)
+     #
+     # @return [Hash]
+     def checkpoint
+-      @checkpoint_thr.join
++      @checkpoint_thr.join(THREAD_MAX_JOIN_TIMEOUT)
+       return @checkpoint_thr[:result]
+     end
+ 
+diff --git a/lib/vagrant/shared_helpers.rb b/lib/vagrant/shared_helpers.rb
+index c5d6ea6..5522272 100644
+--- a/lib/vagrant/shared_helpers.rb
++++ b/lib/vagrant/shared_helpers.rb
+@@ -12,6 +12,12 @@ module Vagrant
+   # @return [String]
+   DEFAULT_SERVER_URL = "https://atlas.hashicorp.com";
+ 
++  # Max number of seconds to wait for joining an active thread.
++  #
++  # @return [Integer]
++  # @note This is not the maxium time for a thread to complete.
++  THREAD_MAX_JOIN_TIMEOUT = 60
++
+   # This holds a global lock for the duration of the block. This should
+   # be invoked around anything that is modifying process state (such as
+   # environmental variables).
+diff --git a/lib/vagrant/ui.rb b/lib/vagrant/ui.rb
+index 8092493..2a52c90 100644
+--- a/lib/vagrant/ui.rb
++++ b/lib/vagrant/ui.rb
+@@ -53,7 +53,7 @@ def initialize_copy(original)
+             # We're being called in a trap-context. Wrap in a thread.
+             Thread.new do
+               @logger.info { "#{method}: #{message}" }
+-            end.join
++            end.join(THREAD_MAX_JOIN_TIMEOUT)
+           end
+         end
+       end
+@@ -128,7 +128,7 @@ def machine(type, *data)
+           @lock.synchronize do
+             
safe_puts("#{Time.now.utc.to_i},#{target},#{type},#{data.join(",")}")
+           end
+-        end.join
++        end.join(THREAD_MAX_JOIN_TIMEOUT)
+       end
+     end
+ 
+@@ -244,7 +244,7 @@ def say(type, message, **opts)
+             safe_puts(format_message(type, message, **opts),
+                       io: channel, printer: printer)
+           end
+-        end.join
++        end.join(THREAD_MAX_JOIN_TIMEOUT)
+       end
+ 
+       def format_message(type, message, **opts)

diff --git a/app-emulation/vagrant/vagrant-1.9.1-r1.ebuild 
b/app-emulation/vagrant/vagrant-1.9.3.ebuild
similarity index 96%
rename from app-emulation/vagrant/vagrant-1.9.1-r1.ebuild
rename to app-emulation/vagrant/vagrant-1.9.3.ebuild
index 6e5ff4a2b6c..b0e16387ba3 100644
--- a/app-emulation/vagrant/vagrant-1.9.1-r1.ebuild
+++ b/app-emulation/vagrant/vagrant-1.9.3.ebuild
@@ -68,6 +68,9 @@ all_ruby_prepare() {
 
        # fix rvm issue (bug #474476)
        epatch "${FILESDIR}"/${PN}-1.8.1-rvm.patch
+
+       # fix thread deadlock (bug #616426)
+       epatch "${FILESDIR}"/${P}-thread-deadlock.patch
 }
 
 all_ruby_install() {

Reply via email to