summaryrefslogtreecommitdiff
path: root/gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch')
-rw-r--r--gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch119
1 files changed, 119 insertions, 0 deletions
diff --git a/gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch b/gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch
new file mode 100644
index 0000000000..f55d28df9b
--- /dev/null
+++ b/gnu/packages/patches/vagrant-Use-a-private-temporary-dir.patch
@@ -0,0 +1,119 @@
+From: Antonio Terceiro <terceiro@debian.org>
+Date: Wed, 22 Oct 2014 09:40:14 -0200
+Subject: Use a private temporary directory that is cleanup up on exit
+
+This avoids vagrant from cluttering $TMPDIR with dozens of even hundreds
+of temporary files (~4 per vagrant invocation).
+---
+ lib/vagrant/box.rb | 3 ++-
+ lib/vagrant/util.rb | 1 +
+ lib/vagrant/util/caps.rb | 2 +-
+ lib/vagrant/util/platform.rb | 2 +-
+ lib/vagrant/util/tempfile.rb | 39 +++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 44 insertions(+), 3 deletions(-)
+ create mode 100644 lib/vagrant/util/tempfile.rb
+
+diff --git a/lib/vagrant/box.rb b/lib/vagrant/box.rb
+index 90dc69d..4ee79b9 100644
+--- a/lib/vagrant/box.rb
++++ b/lib/vagrant/box.rb
+@@ -12,6 +12,7 @@ require "vagrant/util/downloader"
+ require "vagrant/util/platform"
+ require "vagrant/util/safe_chdir"
+ require "vagrant/util/subprocess"
++# require "vagrant/util/tempfile"
+
+ module Vagrant
+ # Represents a "box," which is a package Vagrant environment that is used
+@@ -153,7 +154,7 @@ module Vagrant
+ # @param [Hash] download_options Options to pass to the downloader.
+ # @return [BoxMetadata]
+ def load_metadata(download_options={})
+- tf = Tempfile.new("vagrant-load-metadata")
++ tf = Util::Tempfile.new("vagrant-load-metadata")
+ tf.close
+
+ url = @metadata_url
+diff --git a/lib/vagrant/util.rb b/lib/vagrant/util.rb
+index 4b3e0ff..36eb671 100644
+--- a/lib/vagrant/util.rb
++++ b/lib/vagrant/util.rb
+@@ -57,6 +57,7 @@ module Vagrant
+ autoload :SilenceWarnings, 'vagrant/util/silence_warnings'
+ autoload :SSH, 'vagrant/util/ssh'
+ autoload :StackedProcRunner, 'vagrant/util/stacked_proc_runner'
++ autoload :Tempfile, 'vagrant/util/tempfile'
+ autoload :StringBlockEditor, 'vagrant/util/string_block_editor'
+ autoload :Subprocess, 'vagrant/util/subprocess'
+ autoload :TemplateRenderer, 'vagrant/util/template_renderer'
+diff --git a/lib/vagrant/util/caps.rb b/lib/vagrant/util/caps.rb
+index 310add3..55afc49 100644
+--- a/lib/vagrant/util/caps.rb
++++ b/lib/vagrant/util/caps.rb
+@@ -31,7 +31,7 @@ module Vagrant
+
+ def ensure_output_iso(file_destination)
+ if file_destination.nil?
+- tmpfile = Tempfile.new(["vagrant", ".iso"])
++ tmpfile = Util::Tempfile.new(["vagrant", ".iso"])
+ file_destination = Pathname.new(tmpfile.path)
+ tmpfile.close
+ tmpfile.unlink
+diff --git a/lib/vagrant/util/platform.rb b/lib/vagrant/util/platform.rb
+index c8658e1..0421c70 100644
+--- a/lib/vagrant/util/platform.rb
++++ b/lib/vagrant/util/platform.rb
+@@ -388,7 +388,7 @@ module Vagrant
+
+ if wsl?
+ # Mark our filesystem with a temporary file having an unique name.
+- marker = Tempfile.new(Time.now.to_i.to_s)
++ marker = Util::Tempfile.new(Time.now.to_i.to_s)
+ logger = Log4r::Logger.new("vagrant::util::platform::wsl")
+
+ # Check for lxrun installation first
+diff --git a/lib/vagrant/util/tempfile.rb b/lib/vagrant/util/tempfile.rb
+new file mode 100644
+index 0000000..0cbbb53
+--- /dev/null
++++ b/lib/vagrant/util/tempfile.rb
+@@ -0,0 +1,39 @@
++require 'fileutils'
++require 'tmpdir'
++
++module Vagrant
++ module Util
++ class Tempfile < ::Tempfile
++
++ def initialize(basename)
++ super(basename, private_tmpdir)
++ end
++
++ def private_tmpdir
++ self.class.private_tmpdir
++ end
++
++ def self.private_tmpdir
++ @private_tmpdir ||=
++ begin
++ user = Etc.getpwuid.name
++ pid = Process.pid
++ tmpdir = File.join(Dir.tmpdir, "vagrant-#{user}-#{pid}")
++ FileUtils.mkdir_p(tmpdir)
++ FileUtils.chmod(0700, tmpdir)
++ tmpdir
++ end
++ end
++
++ def self.mktmpdir(prefix_suffix)
++ Dir.mktmpdir(prefix_suffix, private_tmpdir)
++ end
++
++
++ end
++ end
++end
++
++at_exit do
++ FileUtils.rm_rf(Vagrant::Util::Tempfile.private_tmpdir)
++end