vagrant/0003-Use-a-private-temporary-dir.patch

99 lines
3.1 KiB
Diff
Raw Normal View History

From 7ceb61fdbfc9e62e199e4f306474ba5b65f080c9 Mon Sep 17 00:00:00 2001
From: Antonio Terceiro <terceiro@debian.org>
Date: Wed, 22 Oct 2014 09:40:14 -0200
Subject: [PATCH] Use a private temporary dir
Without this vagrant will clutter $TMPDIR with dozens of even hundreds
of temporary files (~4 per vagrant invocation).
Signed-off-by: Johannes Kastl <kastl@b1-systems.de>
---
lib/vagrant/box.rb | 3 ++-
lib/vagrant/util.rb | 2 ++
lib/vagrant/util/tempfile.rb | 39 +++++++++++++++++++++++++++++++++++++++
3 files changed, 43 insertions(+), 1 deletion(-)
create mode 100644 lib/vagrant/util/tempfile.rb
diff --git a/lib/vagrant/box.rb b/lib/vagrant/box.rb
index cd839ee91..65eee8828 100644
--- a/lib/vagrant/box.rb
+++ b/lib/vagrant/box.rb
@@ -9,6 +9,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
@@ -118,7 +119,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 313e1bd19..6e6f669f4 100644
--- a/lib/vagrant/util.rb
+++ b/lib/vagrant/util.rb
@@ -13,6 +13,8 @@ module Vagrant
autoload :SafeExec, 'vagrant/util/safe_exec'
autoload :SilenceWarnings, 'vagrant/util/silence_warnings'
autoload :StackedProcRunner, 'vagrant/util/stacked_proc_runner'
+ autoload :Tempfile, 'vagrant/util/tempfile'
+ autoload :TemplateRenderer, 'vagrant/util/template_renderer'
autoload :StringBlockEditor, 'vagrant/util/string_block_editor'
autoload :Subprocess, 'vagrant/util/subprocess'
autoload :TemplateRenderer, 'vagrant/util/template_renderer'
diff --git a/lib/vagrant/util/tempfile.rb b/lib/vagrant/util/tempfile.rb
new file mode 100644
index 000000000..0cbbb53ac
--- /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
--
2.13.0