diff options
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.patch | 119 |
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 |