diff options
| author | Raghuram Subramani <raghus2247@gmail.com> | 2024-06-08 13:47:01 +0530 |
|---|---|---|
| committer | Raghuram Subramani <raghus2247@gmail.com> | 2024-06-08 13:47:01 +0530 |
| commit | b192347b02fd0e4070a6d2e17cce97718d261594 (patch) | |
| tree | aed340d7eb9035b536e9d38a70b50627d3cccd1f /packages/vagrant/0004-Support-system-installed-plugins.patch | |
| parent | 145d1c7b4fa2e521711f018593771e18aa6644cf (diff) | |
update
Diffstat (limited to 'packages/vagrant/0004-Support-system-installed-plugins.patch')
| -rw-r--r-- | packages/vagrant/0004-Support-system-installed-plugins.patch | 93 |
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 |
