summaryrefslogtreecommitdiff
path: root/packages/vagrant/0004-Support-system-installed-plugins.patch
diff options
context:
space:
mode:
authorRaghuram Subramani <raghus2247@gmail.com>2024-06-08 13:47:01 +0530
committerRaghuram Subramani <raghus2247@gmail.com>2024-06-08 13:47:01 +0530
commitb192347b02fd0e4070a6d2e17cce97718d261594 (patch)
treeaed340d7eb9035b536e9d38a70b50627d3cccd1f /packages/vagrant/0004-Support-system-installed-plugins.patch
parent145d1c7b4fa2e521711f018593771e18aa6644cf (diff)
update
Diffstat (limited to 'packages/vagrant/0004-Support-system-installed-plugins.patch')
-rw-r--r--packages/vagrant/0004-Support-system-installed-plugins.patch93
1 files changed, 93 insertions, 0 deletions
diff --git a/packages/vagrant/0004-Support-system-installed-plugins.patch b/packages/vagrant/0004-Support-system-installed-plugins.patch
new file mode 100644
index 0000000..fa6555c
--- /dev/null
+++ b/packages/vagrant/0004-Support-system-installed-plugins.patch
@@ -0,0 +1,93 @@
+From: Antonio Terceiro <terceiro@debian.org>
+Date: Wed, 27 May 2015 09:36:17 -0300
+Subject: Support system-installed plugins
+Source: https://salsa.debian.org/ruby-team/vagrant/-/blob/9d86f222/debian/patches/0004-Support-system-installed-plugins.patch
+
+Plugins must be installed as regular Ruby libraries, and they must
+contain /usr/share/vagrant-plugins/plugins.d/$PLUGINNAME.json with the
+following content:
+
+{
+ "${PLUGINNAME}": {
+ "ruby_version":"$(ruby -e 'puts RUBY_VERSION')",
+ "vagrant_version":"$(cat /usr/share/vagrant/version.txt)",
+ "gem_version":"",
+ "require":"",
+ "sources":[]
+ }
+}
+---
+ lib/vagrant/plugin/manager.rb | 4 ++--
+ lib/vagrant/plugin/state_file.rb | 22 +++++++++++++++++++++-
+ 2 files changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/lib/vagrant/plugin/manager.rb b/lib/vagrant/plugin/manager.rb
+index 9058e68..2772131 100644
+--- a/lib/vagrant/plugin/manager.rb
++++ b/lib/vagrant/plugin/manager.rb
+@@ -18,7 +18,7 @@ module Vagrant
+
+ # Returns the path to the [StateFile] for system plugins.
+ def self.system_plugins_file
+- dir = Vagrant.installer_embedded_dir
++ dir = '@system_plugin_dir@'
+ return nil if !dir
+ Pathname.new(dir).join("plugins.json")
+ end
+@@ -38,7 +38,7 @@ module Vagrant
+
+ system_path = self.class.system_plugins_file
+ @system_file = nil
+- @system_file = StateFile.new(system_path) if system_path && system_path.file?
++ @system_file = StateFile.new(system_path, true) if system_path && system_path.file?
+
+ @local_file = nil
+ @globalized = @localized = false
+diff --git a/lib/vagrant/plugin/state_file.rb b/lib/vagrant/plugin/state_file.rb
+index c6872d4..935d431 100644
+--- a/lib/vagrant/plugin/state_file.rb
++++ b/lib/vagrant/plugin/state_file.rb
+@@ -11,8 +11,9 @@ module Vagrant
+ # @return [Pathname] path to file
+ attr_reader :path
+
+- def initialize(path)
++ def initialize(path, system = false)
+ @path = path
++ @system = system
+
+ @data = {}
+ if @path.exist?
+@@ -28,6 +29,21 @@ module Vagrant
+
+ @data["version"] ||= "1"
+ @data["installed"] ||= {}
++ load_extra_plugins
++ end
++
++ def load_extra_plugins
++ extra_plugins = Dir.glob(@path.dirname.join('plugins.d', '*.json'))
++ extra_plugins.each do |filename|
++ json = File.read(filename)
++ begin
++ plugin_data = JSON.parse(json)
++ @data["installed"].merge!(plugin_data)
++ rescue JSON::ParserError => e
++ raise Vagrant::Errors::PluginStateFileParseError,
++ path: filename, message: e.message
++ end
++ end
+ end
+
+ # Add a plugin that is installed to the state file.
+@@ -107,6 +123,10 @@ module Vagrant
+ f.close
+ FileUtils.mv(f.path, @path)
+ end
++ rescue Errno::EACCES
++ # Ignore permission denied against system-installed plugins; regular
++ # users are not supposed to write there.
++ raise unless @system
+ end
+
+ protected