diff --git a/.gitignore b/.gitignore index b81481f..a708826 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -/vagrant-libvirt-*.gem /vagrant-spec-*.tar.gz +/vagrant-libvirt-*.gem diff --git a/0001-Allow-customizing-of-virt-sysprep-behaviour-on-packa.patch b/0001-Allow-customizing-of-virt-sysprep-behaviour-on-packa.patch new file mode 100644 index 0000000..3d1a121 --- /dev/null +++ b/0001-Allow-customizing-of-virt-sysprep-behaviour-on-packa.patch @@ -0,0 +1,78 @@ +From 112958974d97dd58af9ee06d157461ebb53f81ae Mon Sep 17 00:00:00 2001 +From: "Zak B. Elep" +Date: Wed, 27 Feb 2019 20:32:37 +0800 +Subject: [PATCH 1/3] Allow customizing of virt-sysprep behaviour on package + (#955) + +Support `vagrant package` of e.g. bento-derived boxes that require SSH +hostkeys already set (as in the case of bento/debian-7 and above,) as +well as leave existing LVM UUIDs untouched (e.g. in bento/ubuntu-18.04.) + +Instead of hard-coding sysprep operations, use an environment variable +to set these instead. + +Use the Chef bento use case as an example for customizing sysprep +operations. +--- + README.md | 23 ++++++++++++++++++++ + lib/vagrant-libvirt/action/package_domain.rb | 3 ++- + 2 files changed, 25 insertions(+), 1 deletion(-) + +diff --git a/README.md b/README.md +index 0a49240..9f08be7 100644 +--- a/README.md ++++ b/README.md +@@ -51,6 +51,7 @@ can help a lot :-) + - [Customized Graphics](#customized-graphics) + - [Box Format](#box-format) + - [Create Box](#create-box) ++- [Package Box from VM](#package-box-from-vm) + - [Development](#development) + - [Contributing](#contributing) + +@@ -1398,6 +1399,28 @@ $ cd packer-qemu-templates + $ packer build ubuntu-14.04-server-amd64-vagrant.json + ``` + ++## Package Box from VM ++ ++vagrant-libvirt has native support for [`vagrant ++package`](https://www.vagrantup.com/docs/cli/package.html) via ++libguestfs [virt-sysprep](http://libguestfs.org/virt-sysprep.1.html). ++virt-sysprep operations can be customized via the ++`VAGRANT_LIBVIRT_VIRT_SYSPREP_OPERATIONS` environment variable; see the ++[upstream ++documentation](http://libguestfs.org/virt-sysprep.1.html#operations) for ++further details especially on default sysprep operations enabled for ++your system. ++ ++For example, on Chef [bento](https://github.com/chef/bento) VMs that ++require SSH hostkeys already set (e.g. bento/debian-7) as well as leave ++existing LVM UUIDs untouched (e.g. bento/ubuntu-18.04), these can be ++packaged into vagrant-libvirt boxes like so: ++ ++```shell ++$ export VAGRANT_LIBVIRT_VIRT_SYSPREP_OPERATIONS="defaults,-ssh-userdir,-ssh-hostkeys,-lvm-uuids" ++$ vagrant package ++``` ++ + ## Development + + To work on the `vagrant-libvirt` plugin, clone this repository out, and use +diff --git a/lib/vagrant-libvirt/action/package_domain.rb b/lib/vagrant-libvirt/action/package_domain.rb +index 94d3199..78b1261 100644 +--- a/lib/vagrant-libvirt/action/package_domain.rb ++++ b/lib/vagrant-libvirt/action/package_domain.rb +@@ -38,7 +38,8 @@ module VagrantPlugins + `qemu-img rebase -p -b "" #{@tmp_img}` + # remove hw association with interface + # working for centos with lvs default disks +- `virt-sysprep --no-logfile --operations defaults,-ssh-userdir -a #{@tmp_img}` ++ operations = ENV.get('VAGRANT_LIBVIRT_VIRT_SYSPREP_OPERATIONS', 'defaults,-ssh-userdir') ++ `virt-sysprep --no-logfile --operations #{operations} -a #{@tmp_img}` + # add any user provided file + extra = '' + @tmp_include = @tmp_dir + '/_include' +-- +2.21.0 + diff --git a/0002-Use-fetch-to-obtain-environment-variable-value-in-pa.patch b/0002-Use-fetch-to-obtain-environment-variable-value-in-pa.patch new file mode 100644 index 0000000..b2bf5d5 --- /dev/null +++ b/0002-Use-fetch-to-obtain-environment-variable-value-in-pa.patch @@ -0,0 +1,27 @@ +From 1226f69a2d77aa67bda877bfc601ef38ce7eb1d2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Tadej=20Jane=C5=BE?= +Date: Tue, 13 Aug 2019 13:06:19 +0200 +Subject: [PATCH 2/3] Use fetch to obtain environment variable value in + package_domain (#1035) + +ENV is a Ruby Hash which doesn't have a get method but the fetch method. +--- + lib/vagrant-libvirt/action/package_domain.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/vagrant-libvirt/action/package_domain.rb b/lib/vagrant-libvirt/action/package_domain.rb +index 78b1261..705676b 100644 +--- a/lib/vagrant-libvirt/action/package_domain.rb ++++ b/lib/vagrant-libvirt/action/package_domain.rb +@@ -38,7 +38,7 @@ module VagrantPlugins + `qemu-img rebase -p -b "" #{@tmp_img}` + # remove hw association with interface + # working for centos with lvs default disks +- operations = ENV.get('VAGRANT_LIBVIRT_VIRT_SYSPREP_OPERATIONS', 'defaults,-ssh-userdir') ++ operations = ENV.fetch('VAGRANT_LIBVIRT_VIRT_SYSPREP_OPERATIONS', 'defaults,-ssh-userdir') + `virt-sysprep --no-logfile --operations #{operations} -a #{@tmp_img}` + # add any user provided file + extra = '' +-- +2.21.0 + diff --git a/0003-Halt-a-domain-before-packaging-it-as-a-box.patch b/0003-Halt-a-domain-before-packaging-it-as-a-box.patch new file mode 100644 index 0000000..a930f5c --- /dev/null +++ b/0003-Halt-a-domain-before-packaging-it-as-a-box.patch @@ -0,0 +1,40 @@ +From ca04bac73760bad69edf14882e89bffac4213349 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Timoth=C3=A9e=20Ravier?= +Date: Tue, 23 Jul 2019 08:46:07 +0200 +Subject: [PATCH 3/3] Halt a domain before packaging it as a box +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Ensure that we do not try to package a currently running domain (which +will lead to hard to debug and strange issues, and is generally not a +good idea). This may happen when creating boxes with Packer. + +Signed-off-by: Timothée Ravier +--- + lib/vagrant-libvirt/action.rb | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/lib/vagrant-libvirt/action.rb b/lib/vagrant-libvirt/action.rb +index 146d339..18b2e7e 100644 +--- a/lib/vagrant-libvirt/action.rb ++++ b/lib/vagrant-libvirt/action.rb +@@ -161,10 +161,14 @@ module VagrantPlugins + end + end + +- # not implemented and looks like not require ++ # Create/package a new Vagrant Box from the current Domain. ++ # This action requires access to the Domain disk image files and will use ++ # virt-sysprep (from libguestfs project) to clean the image, removing ++ # host SSH keys, etc. + def self.action_package + Vagrant::Action::Builder.new.tap do |b| + b.use ConfigValidate ++ b.use action_halt + b.use PackageDomain + end + end +-- +2.21.0 + diff --git a/sources b/sources index 28d90dc..a741854 100644 --- a/sources +++ b/sources @@ -1,2 +1,2 @@ -SHA512 (vagrant-libvirt-0.11.2.gem) = f66be1c8301ad4a9e731cf65c2ea3181f3c5e4c1d252411465060ab8ddabc294beab40e214fa8c9c5a7aa1e116030f60cea2e337121d95123c724ec6e529bfbc -SHA512 (vagrant-spec-259c55e204674f2b006700c6d351d04250d13b04.tar.gz) = 7938a6f8091b7dd76266e63d2cb653820e55a262091be0aaae2f5515321fa4d50301f547ab925771208b8616c7fc819cb642b3b9d444cd7a722ba712538cf68f +SHA512 (vagrant-libvirt-0.0.45.gem) = 502f0d3576835ee9686c3605166410e15e68449c5cea1fbe6f88e70b945dcc45b92063d5b3678db289734de8ca4f7966cee25347a1c76b41e35bced9930d0016 +SHA512 (vagrant-spec-94a9d31ba18b4130b14da12a2f7b4001c3d2ff12.tar.gz) = b95eefa52c21e1020f3f889fc5a72476a3ffb76f780b0254af85bbbc55465c05081f7c18303caa67843bc959326cbf253b57609faa8187fd89188a2488bfe922 diff --git a/vagrant-libvirt-0.0.45-enable-qemu-session-by-default.patch b/vagrant-libvirt-0.0.45-enable-qemu-session-by-default.patch new file mode 100644 index 0000000..b0e5490 --- /dev/null +++ b/vagrant-libvirt-0.0.45-enable-qemu-session-by-default.patch @@ -0,0 +1,23 @@ +From a6d5d4df918b040a0a1906b26abf20fc3bab1690 Mon Sep 17 00:00:00 2001 +From: Pavel Valena +Date: Wed, 6 Feb 2019 13:29:01 +0100 +Subject: [PATCH] Enable QEMU Session by default + +sets default for `@qemu_use_session` to true. +--- + lib/vagrant-libvirt/config.rb | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/vagrant-libvirt/config.rb b/lib/vagrant-libvirt/config.rb +index 2aa1bce..1bc8411 100644 +--- a/lib/vagrant-libvirt/config.rb ++++ b/lib/vagrant-libvirt/config.rb +@@ -651,7 +651,7 @@ def finalize! + @management_network_pci_slot = nil if @management_network_pci_slot == UNSET_VALUE + @system_uri = 'qemu:///system' if @system_uri == UNSET_VALUE + +- @qemu_use_session = false if @qemu_use_session == UNSET_VALUE ++ @qemu_use_session = true if @qemu_use_session == UNSET_VALUE + + # generate a URI if none is supplied + @uri = _generate_uri if @uri == UNSET_VALUE diff --git a/vagrant-libvirt-0.11.2-Allow-a-mock-object-to-receive-synced_folders.patch b/vagrant-libvirt-0.11.2-Allow-a-mock-object-to-receive-synced_folders.patch deleted file mode 100644 index 41976a2..0000000 --- a/vagrant-libvirt-0.11.2-Allow-a-mock-object-to-receive-synced_folders.patch +++ /dev/null @@ -1,28 +0,0 @@ -From f87d4330953effdea41355d2daedb6b9659f39d3 Mon Sep 17 00:00:00 2001 -From: Jarek Prokop -Date: Fri, 10 Feb 2023 16:24:07 +0100 -Subject: [PATCH] Allow a mock object to receive synced_folders when using qemu - session. - -When using qemu session, there is another code path -regarding 9p and virtiofs that wasn't considered. ---- - spec/unit/config_spec.rb | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/spec/unit/config_spec.rb b/spec/unit/config_spec.rb -index d205214..e606b89 100644 ---- a/spec/unit/config_spec.rb -+++ b/spec/unit/config_spec.rb -@@ -770,6 +770,8 @@ describe VagrantPlugins::ProviderLibvirt::Config do - let (:vm) { double('vm') } - before do - machine.config.instance_variable_get("@keys")[:vm] = vm -+ -+ allow(vm).to receive(:synced_folders).and_return({}) - end - - it 'is valid with valid mac' do --- -2.39.1 - diff --git a/vagrant-libvirt-0.11.2-enable-qemu-session-by-default.patch b/vagrant-libvirt-0.11.2-enable-qemu-session-by-default.patch deleted file mode 100644 index 19bd4fc..0000000 --- a/vagrant-libvirt-0.11.2-enable-qemu-session-by-default.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 799acbebe6a506c85c93f384610e646d801bea1a Mon Sep 17 00:00:00 2001 -From: Jarek Prokop -Date: Fri, 10 Feb 2023 17:43:18 +0100 -Subject: [PATCH 1/2] Enable QEMU Session by default - -Default `@qemu_use_session` to true. ---- - lib/vagrant-libvirt/config.rb | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/lib/vagrant-libvirt/config.rb b/lib/vagrant-libvirt/config.rb -index d4763be..0bbdef0 100644 ---- a/lib/vagrant-libvirt/config.rb -+++ b/lib/vagrant-libvirt/config.rb -@@ -931,9 +931,9 @@ module VagrantPlugins - @socket = nil if @socket == UNSET_VALUE - - # If uri isn't set then let's build one from various sources. -- # Default to passing false for qemu_use_session if it's not set. -+ # Default to passing true for qemu_use_session if it's not set. - if @uri == UNSET_VALUE -- @uri = _generate_uri(@qemu_use_session == UNSET_VALUE ? false : @qemu_use_session) -+ @uri = _generate_uri(@qemu_use_session == UNSET_VALUE ? true : @qemu_use_session) - end - - finalize_from_uri - -From b695838c24e5669c58ef5984dc26f31277c7dd10 Mon Sep 17 00:00:00 2001 -From: Jarek Prokop -Date: Fri, 10 Feb 2023 17:43:55 +0100 -Subject: [PATCH 2/2] Use qemu:///session instead of qemu:///system in test - suite. - ---- - spec/unit/config_spec.rb | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/spec/unit/config_spec.rb b/spec/unit/config_spec.rb -index d205214..fce7521 100644 ---- a/spec/unit/config_spec.rb -+++ b/spec/unit/config_spec.rb -@@ -72,7 +72,7 @@ describe VagrantPlugins::ProviderLibvirt::Config do - # settings - [ # all default - {}, -- {:uri => "qemu:///system"}, -+ {:uri => "qemu:///session"}, - ], - - # explicit uri settings --- -2.39.1 - diff --git a/vagrant-libvirt-0.12.2-Fix-REXML-3-4-2-compatibility.patch b/vagrant-libvirt-0.12.2-Fix-REXML-3-4-2-compatibility.patch deleted file mode 100644 index feed62b..0000000 --- a/vagrant-libvirt-0.12.2-Fix-REXML-3-4-2-compatibility.patch +++ /dev/null @@ -1,116 +0,0 @@ -From ec4daf33cf6135f9a29c48a61dd8a6e8b9bf0dc1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?V=C3=ADt=20Ondruch?= -Date: Fri, 31 Oct 2025 17:35:48 +0100 -Subject: [PATCH] Fix REXML 3.4.2+ compatibility - -REXML 3.4.2+ deprecated accepting array as an element in `XPath.match` -[[1]]. This led to test errors such as: - -~~~ - 3) VagrantPlugins::ProviderLibvirt::Action::ResolveDiskSettings#call when vm box is in use when box metadata is not available when multiple volumes in domain config should populate domain volumes with devices - Failure/Error: - expect(env[:domain_volumes]).to match( - [ - hash_including( - device: 'vda', - absolute_path: '/var/lib/libvirt/images/vagrant-test_default.img' - ), - hash_including( - device: 'vdb', - absolute_path: '/var/lib/libvirt/images/vagrant-test_default_1.img' - ), - expected [{absolute_path: "/var/lib/libvirt/images/vagrant-test_default.img", bus: "virtio", cache: "default", device: "vda", name: "vagrant-test_default.img"}] to match [#, #, #] - Diff: - @@ -1,4 +1,6 @@ - -[hash_including(device: "vda", absolute_path: "/var/lib/libvirt/images/vagrant-test_default.img"), - - hash_including(device: "vdb", absolute_path: "/var/lib/libvirt/images/vagrant-test_default_1.img"), - - hash_including(device: "vdc", absolute_path: "/var/lib/libvirt/images/vagrant-test_default_2.img")] - +[{absolute_path: "/var/lib/libvirt/images/vagrant-test_default.img", - + bus: "virtio", - + cache: "default", - + device: "vda", - + name: "vagrant-test_default.img"}] - # ./spec/unit/action/resolve_disk_settings_spec.rb:200:in 'block (6 levels) in ' - # ./spec/support/unit_context.rb:51:in 'block (3 levels) in ' - # ./spec/support/unit_context.rb:43:in 'block (2 levels) in ' - # ./spec/support/unit_context.rb:51:in 'block (3 levels) in ' - # ./spec/support/unit_context.rb:43:in 'block (2 levels) in ' -~~~ - -This changes the logic in a way, that XPath is matching against whole -XML document, instead of array of XML elements. - -[1]: https://github.com/ruby/rexml/pull/252 ---- - lib/vagrant-libvirt/action/destroy_domain.rb | 10 ++++++---- - lib/vagrant-libvirt/action/resolve_disk_settings.rb | 9 +++++---- - 2 files changed, 11 insertions(+), 8 deletions(-) - -diff --git a/lib/vagrant-libvirt/action/destroy_domain.rb b/lib/vagrant-libvirt/action/destroy_domain.rb -index 4d6cc6ee8..fba6aee6d 100644 ---- a/lib/vagrant-libvirt/action/destroy_domain.rb -+++ b/lib/vagrant-libvirt/action/destroy_domain.rb -@@ -59,7 +59,7 @@ def call(env) - domain_xml = libvirt_domain.xml_desc(1) - xml_descr = REXML::Document.new(domain_xml) - disks_xml = REXML::XPath.match(xml_descr, '/domain/devices/disk[@device="disk"]') -- have_aliases = !(REXML::XPath.match(disks_xml, './alias[@name="ua-box-volume-0"]').first).nil? -+ have_aliases = !REXML::XPath.match(xml_descr, '/domain/devices/disk[@device="disk"]/alias[@name="ua-box-volume-0"]').first.nil? - if !have_aliases - env[:ui].warn(I18n.t('vagrant_libvirt.domain_xml.obsolete_method')) - end -@@ -73,7 +73,9 @@ def call(env) - # the additional storage devices are. - detected_box_volumes = 0 - if have_aliases -- REXML::XPath.match(disks_xml, './alias[contains(@name, "ua-box-volume-")]').each do |box_disk| -+ REXML::XPath.match(xml_descr, -+ '/domain/devices/disk[@device="disk"]/alias[contains(@name, "ua-box-volume-")]' -+ ).each do |box_disk| - diskname = box_disk.parent.elements['source'].attributes['file'].rpartition('/').last - detected_box_volumes += 1 - -@@ -130,13 +132,13 @@ def call(env) - # look for exact match using aliases which will be used - # for subsequent domain creations - if have_aliases -- domain_disk = REXML::XPath.match(disks_xml, './alias[@name="ua-disk-volume-' + index.to_s + '"]').first -+ domain_disk = REXML::XPath.match(xml_descr, '/domain/devices/disk[@device="disk"]/alias[@name="ua-disk-volume-' + index.to_s + '"]').first - domain_disk = domain_disk.parent if !domain_disk.nil? - else - # otherwise fallback to find the disk by device if specified by user - # and finally index counting with offset and hope the match is correct - if !disk[:device].nil? -- domain_disk = REXML::XPath.match(disks_xml, './target[@dev="' + disk[:device] + '"]').first -+ domain_disk = REXML::XPath.match(xml_descr, '/domain/devices/disk[@device="disk"]/target[@dev="' + disk[:device] + '"]').first - domain_disk = domain_disk.parent if !domain_disk.nil? - else - domain_disk = disks_xml[offset + index] -diff --git a/lib/vagrant-libvirt/action/resolve_disk_settings.rb b/lib/vagrant-libvirt/action/resolve_disk_settings.rb -index f1a3f6755..add3e1021 100644 ---- a/lib/vagrant-libvirt/action/resolve_disk_settings.rb -+++ b/lib/vagrant-libvirt/action/resolve_disk_settings.rb -@@ -50,18 +50,19 @@ def call(env) - domain_xml = libvirt_domain.xml_desc(1) - xml_descr = REXML::Document.new(domain_xml) - domain_name = xml_descr.elements['domain'].elements['name'].text -- disks_xml = REXML::XPath.match(xml_descr, '/domain/devices/disk[@device="disk"]') -- have_aliases = !REXML::XPath.match(disks_xml, './alias[@name="ua-box-volume-0"]').first.nil? -+ have_aliases = !REXML::XPath.match(xml_descr, '/domain/devices/disk[@device="disk"]/alias[@name="ua-box-volume-0"]').first.nil? - env[:ui].warn(I18n.t('vagrant_libvirt.domain_xml.obsolete_method')) unless have_aliases - - if have_aliases -- REXML::XPath.match(disks_xml, -- './alias[contains(@name, "ua-box-volume-")]').each_with_index do |alias_xml, idx| -+ REXML::XPath.match(xml_descr, -+ '/domain/devices/disk[@device="disk"]/alias[contains(@name, "ua-box-volume-")]' -+ ).each_with_index do |alias_xml, idx| - domain_volumes.push(volume_from_xml(alias_xml.parent, domain_name, idx)) - end - else - # fallback to try and infer which boxes are box images, as they are listed first - # as soon as there is no match, can exit -+ disks_xml = REXML::XPath.match(xml_descr, '/domain/devices/disk[@device="disk"]') - disks_xml.each_with_index do |box_disk_xml, idx| - diskname = box_disk_xml.elements['source'].attributes['file'].rpartition('/').last - diff --git a/vagrant-libvirt-0.12.2-Remove-config-unsupported-by-fog-libvirt.patch b/vagrant-libvirt-0.12.2-Remove-config-unsupported-by-fog-libvirt.patch deleted file mode 100644 index 2d40e76..0000000 --- a/vagrant-libvirt-0.12.2-Remove-config-unsupported-by-fog-libvirt.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 5bb08ec8150ee3ceca74c772f4c72b49b61f988f Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Janek=20Ziele=C5=BAnicki?= -Date: Mon, 18 Nov 2024 19:16:07 +0100 -Subject: [PATCH 1/2] Remove config unsupported by fog-libvirt - -fog-libvirt dropped support for libvirt < 1.2.8 in version v0.13.0 -This config is no longer supported nor needed ---- - lib/vagrant-libvirt/driver.rb | 5 ----- - 1 file changed, 5 deletions(-) - -diff --git a/lib/vagrant-libvirt/driver.rb b/lib/vagrant-libvirt/driver.rb -index 73f0f7a45..90e0e6118 100644 ---- a/lib/vagrant-libvirt/driver.rb -+++ b/lib/vagrant-libvirt/driver.rb -@@ -32,14 +32,9 @@ def connection - config = @machine.provider_config - uri = config.uri - -- # Setup command for retrieving IP address for newly created machine -- # with some MAC address. Get it from dnsmasq leases table -- ip_command = %q( awk "/$mac/ {print \$1}" /proc/net/arp ) -- - conn_attr = { - provider: 'libvirt', - libvirt_uri: uri, -- libvirt_ip_command: ip_command, - } - conn_attr[:libvirt_username] = config.username if config.username - conn_attr[:libvirt_password] = config.password if config.password - diff --git a/vagrant-libvirt-0.12.2-Replace-CGI.parse-with-URI-equivalent.patch b/vagrant-libvirt-0.12.2-Replace-CGI.parse-with-URI-equivalent.patch deleted file mode 100644 index 1e041d2..0000000 --- a/vagrant-libvirt-0.12.2-Replace-CGI.parse-with-URI-equivalent.patch +++ /dev/null @@ -1,41 +0,0 @@ -From dfb9fd59bd6eca13f4e22e5038247473f9cd108d Mon Sep 17 00:00:00 2001 -From: Jarek Prokop -Date: Tue, 16 Dec 2025 12:18:01 +0100 -Subject: [PATCH] Replace CGI.parse with URI equivalent. - -For Ruby 4.0 compatibility, where CGI is no longer a part -of the upstream Ruby distribution. - -Replace the CGI.parse with URI.decode_www_form and some filtering -on top so that the replacement keeps existing behavior. ---- - lib/vagrant-libvirt/config.rb | 10 +++++++--- - 1 file changed, 7 insertions(+), 3 deletions(-) - -diff --git a/lib/vagrant-libvirt/config.rb b/lib/vagrant-libvirt/config.rb -index cdee174..96261ca 100644 ---- a/lib/vagrant-libvirt/config.rb -+++ b/lib/vagrant-libvirt/config.rb -@@ -1,6 +1,6 @@ - # frozen_string_literal: true - --require 'cgi' -+require 'uri' - - require 'vagrant' - require 'vagrant/action/builtin/mixin_synced_folders' -@@ -1335,8 +1335,12 @@ module VagrantPlugins - @username = nil if @username == UNSET_VALUE - @username = uri.user if uri.user - if uri.query -- params = CGI.parse(uri.query) -- @id_ssh_key_file = params['keyfile'].first if params.has_key?('keyfile') -+ params = URI -+ .decode_www_form(uri.query) -+ .select { |k, v| k == 'keyfile' } -+ .map { |_,v| v } -+ .first -+ @id_ssh_key_file = params if params - end - - finalize_id_ssh_key_file diff --git a/vagrant-libvirt-pr1709-ruby32-File_exists-URL-parse.patch b/vagrant-libvirt-pr1709-ruby32-File_exists-URL-parse.patch deleted file mode 100644 index cbaad23..0000000 --- a/vagrant-libvirt-pr1709-ruby32-File_exists-URL-parse.patch +++ /dev/null @@ -1,111 +0,0 @@ -From 517bf7792a4f2d9f7d6062efeec9089e78c5458e Mon Sep 17 00:00:00 2001 -From: Mamoru TASAKA -Date: Thu, 19 Jan 2023 16:39:17 +0900 -Subject: [PATCH 1/2] Replace File.exists? with File.exist? - -File.exists? is deprecated since ruby2.1 and is removed with ruby3.2. -Replace with File.exist? . ---- - spec/support/libvirt_acceptance_context.rb | 2 +- - spec/support/matchers/have_file_content.rb | 2 +- - spec/unit/action/clean_machine_folder_spec.rb | 6 +++--- - 3 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/spec/support/matchers/have_file_content.rb b/spec/support/matchers/have_file_content.rb -index 9970f6b8d..20215180a 100644 ---- a/spec/support/matchers/have_file_content.rb -+++ b/spec/support/matchers/have_file_content.rb -@@ -45,7 +45,7 @@ - # end - RSpec::Matchers.define :have_file_content do |expected| - match do |actual| -- next false unless File.exists?(actual) -+ next false unless File.exist?(actual) - - @actual = File.read(actual).chomp - @expected = if expected.is_a? String -diff --git a/spec/unit/action/clean_machine_folder_spec.rb b/spec/unit/action/clean_machine_folder_spec.rb -index faad98cde..b8ed8acc6 100644 ---- a/spec/unit/action/clean_machine_folder_spec.rb -+++ b/spec/unit/action/clean_machine_folder_spec.rb -@@ -20,7 +20,7 @@ - - expect(subject.call(env)).to be_nil - -- expect(File.exists?(machine.data_dir)).to eq(true) -+ expect(File.exist?(machine.data_dir)).to eq(true) - expect(Dir.entries(machine.data_dir)).to match_array([".", ".."]) - end - end -@@ -38,7 +38,7 @@ - - expect(subject.call(env)).to be_nil - -- expect(File.exists?(machine.data_dir)).to eq(true) -+ expect(File.exist?(machine.data_dir)).to eq(true) - expect(Dir.entries(machine.data_dir)).to match_array([".", ".."]) - end - end -@@ -51,7 +51,7 @@ - - expect(subject.call(env)).to be_nil - -- expect(File.exists?(machine.data_dir)).to eq(true) -+ expect(File.exist?(machine.data_dir)).to eq(true) - expect(Dir.entries(machine.data_dir)).to match_array([".", ".."]) - end - end - -From 578d3ae4296a78c8b276ff2bc5471fa045a61736 Mon Sep 17 00:00:00 2001 -From: Mamoru TASAKA -Date: Thu, 19 Jan 2023 17:07:39 +0900 -Subject: [PATCH 2/2] Set empty host when nil on finalize_from_uri - -With ruby3.2, URI.parse now sets empty host instead of nil via: -https://github.com/ruby/ruby/commit/dd5118f8524c425894d4716b787837ad7380bb0d - -Adjust test case so, also with ruby <= 3.1, forcely set empty string for host -when nil to make finalize_from_uri behavior consistent between different -host ruby versions. ---- - lib/vagrant-libvirt/config.rb | 4 ++-- - spec/unit/config_spec.rb | 4 ++-- - 2 files changed, 4 insertions(+), 4 deletions(-) - -diff --git a/lib/vagrant-libvirt/config.rb b/lib/vagrant-libvirt/config.rb -index 471d40dce..dfaef6167 100644 ---- a/lib/vagrant-libvirt/config.rb -+++ b/lib/vagrant-libvirt/config.rb -@@ -1320,8 +1320,8 @@ def finalize_from_uri - end - end - -- # Extract host values from uri if provided, otherwise nil -- @host = uri.host -+ # Extract host values from uri if provided, otherwise set empty string -+ @host = uri.host || "" - @port = uri.port - # only override username if there is a value provided - @username = nil if @username == UNSET_VALUE -diff --git a/spec/unit/config_spec.rb b/spec/unit/config_spec.rb -index 951b3ce58..f43de4df9 100644 ---- a/spec/unit/config_spec.rb -+++ b/spec/unit/config_spec.rb -@@ -86,7 +86,7 @@ - ], - [ # connect explicit to unix socket - {:uri => "qemu+unix:///system"}, -- {:uri => "qemu+unix:///system", :connect_via_ssh => false, :host => nil, :username => nil}, -+ {:uri => "qemu+unix:///system", :connect_via_ssh => false, :host => "", :username => nil}, - ], - [ # via libssh2 should enable ssh as well - {:uri => "qemu+libssh2://user@remote/system?known_hosts=/home/user/.ssh/known_hosts"}, -@@ -139,7 +139,7 @@ - ], - [ # with session and using ssh infer connect by ssh and ignore host as not provided - {}, -- {:uri => "qemu+ssh:///session", :qemu_use_session => true, :connect_via_ssh => true, :host => nil}, -+ {:uri => "qemu+ssh:///session", :qemu_use_session => true, :connect_via_ssh => true, :host => ""}, - { - :env => {'LIBVIRT_DEFAULT_URI' => "qemu+ssh:///session"}, - } diff --git a/vagrant-libvirt-pr1837-testsuite-support-rexml-332.patch b/vagrant-libvirt-pr1837-testsuite-support-rexml-332.patch deleted file mode 100644 index dbffb41..0000000 --- a/vagrant-libvirt-pr1837-testsuite-support-rexml-332.patch +++ /dev/null @@ -1,81 +0,0 @@ -From fcafe97cee012e4c3ae1996bb78f8d88a1077dcb Mon Sep 17 00:00:00 2001 -From: Mamoru TASAKA -Date: Sun, 29 Dec 2024 18:41:57 +0900 -Subject: [PATCH] TEST: Support REXML 3.3.2 output change - -With https://github.com/ruby/rexml/pull/167 -REXML::Document.write may chomp output string compared to before. -This change affects VagrantPlugins::ProviderLibvirt::Action::StartDomain#call -internal behavior. - -Modify rspec testsuite to support this REXML behavior change. - -Closes #1836 . ---- - spec/unit/action/start_domain_spec.rb | 18 ++++++++++++------ - 1 file changed, 12 insertions(+), 6 deletions(-) - -diff --git a/spec/unit/action/start_domain_spec.rb b/spec/unit/action/start_domain_spec.rb -index 330612beb..af9999cf9 100644 ---- a/spec/unit/action/start_domain_spec.rb -+++ b/spec/unit/action/start_domain_spec.rb -@@ -364,7 +364,8 @@ - - it 'should add the nvram element' do - expect(ui).to_not receive(:warn) -- expect(connection).to receive(:define_domain).with(updated_domain_xml).and_return(libvirt_domain) -+ arg_domain_xml = REXML::VERSION >= "3.3.2" ? updated_domain_xml.chomp : updated_domain_xml -+ expect(connection).to receive(:define_domain).with(arg_domain_xml).and_return(libvirt_domain) - expect(libvirt_domain).to receive(:xml_desc).and_return(domain_xml, updated_domain_xml) - expect(libvirt_domain).to receive(:autostart=) - expect(domain).to receive(:start) -@@ -385,7 +385,8 @@ - - it 'should keep the XML element' do - expect(ui).to_not receive(:warn) -- expect(connection).to receive(:define_domain).with(updated_domain_xml).and_return(libvirt_domain) -+ arg_domain_xml = REXML::VERSION >= "3.3.2" ? updated_domain_xml.chomp : updated_domain_xml -+ expect(connection).to receive(:define_domain).with(arg_domain_xml).and_return(libvirt_domain) - expect(libvirt_domain).to receive(:xml_desc).and_return(domain_xml, updated_domain_xml) - expect(libvirt_domain).to receive(:autostart=) - expect(domain).to receive(:start) -@@ -399,7 +399,8 @@ - - it 'should delete the XML element' do - expect(ui).to_not receive(:warn) -- expect(connection).to receive(:define_domain).with(updated_domain_xml).and_return(libvirt_domain) -+ arg_domain_xml = REXML::VERSION >= "3.3.2" ? updated_domain_xml.chomp : updated_domain_xml -+ expect(connection).to receive(:define_domain).with(arg_domain_xml).and_return(libvirt_domain) - expect(libvirt_domain).to receive(:xml_desc).and_return(domain_xml, updated_domain_xml) - expect(libvirt_domain).to receive(:autostart=) - expect(domain).to receive(:start) -@@ -424,7 +424,8 @@ - it 'should modify the domain tpm_path' do - expect(ui).to_not receive(:warn) - expect(logger).to receive(:debug).with('tpm config changed') -- expect(connection).to receive(:define_domain).with(updated_domain_xml).and_return(libvirt_domain) -+ arg_domain_xml = REXML::VERSION >= "3.3.2" ? updated_domain_xml.chomp : updated_domain_xml -+ expect(connection).to receive(:define_domain).with(arg_domain_xml).and_return(libvirt_domain) - expect(libvirt_domain).to receive(:xml_desc).and_return(domain_xml, updated_domain_xml) - expect(libvirt_domain).to receive(:autostart=) - expect(domain).to receive(:start) -@@ -446,7 +446,8 @@ - it 'should modify the domain tpm_path' do - expect(ui).to_not receive(:warn) - expect(logger).to receive(:debug).with('tpm config changed') -- expect(connection).to receive(:define_domain).with(updated_domain_xml).and_return(libvirt_domain) -+ arg_domain_xml = REXML::VERSION >= "3.3.2" ? updated_domain_xml.chomp : updated_domain_xml -+ expect(connection).to receive(:define_domain).with(arg_domain_xml).and_return(libvirt_domain) - expect(libvirt_domain).to receive(:xml_desc).and_return(domain_xml, updated_domain_xml) - expect(libvirt_domain).to receive(:autostart=) - expect(domain).to receive(:start) -@@ -509,7 +509,8 @@ - it 'should modify the domain' do - expect(ui).to_not receive(:warn) - expect(logger).to receive(:debug).with('tpm config changed') -- expect(connection).to receive(:define_domain).with(updated_domain_xml).and_return(libvirt_domain) -+ arg_domain_xml = REXML::VERSION >= "3.3.2" ? updated_domain_xml.chomp : updated_domain_xml -+ expect(connection).to receive(:define_domain).with(arg_domain_xml).and_return(libvirt_domain) - expect(libvirt_domain).to receive(:xml_desc).and_return(domain_xml, updated_domain_xml) - expect(libvirt_domain).to receive(:autostart=) - expect(domain).to receive(:start) diff --git a/vagrant-libvirt.spec b/vagrant-libvirt.spec index ad18051..188e90f 100644 --- a/vagrant-libvirt.spec +++ b/vagrant-libvirt.spec @@ -1,69 +1,46 @@ %global vagrant_plugin_name vagrant-libvirt -%global vagrant_spec_commit 259c55e204674f2b006700c6d351d04250d13b04 +%global vagrant_spec_commit 94a9d31ba18b4130b14da12a2f7b4001c3d2ff12 Name: %{vagrant_plugin_name} -Version: 0.11.2 -Release: 11%{?dist} +Version: 0.0.45 +Release: 3%{?dist} Summary: libvirt provider for Vagrant License: MIT URL: https://github.com/vagrant-libvirt/vagrant-libvirt Source0: https://rubygems.org/gems/%{vagrant_plugin_name}-%{version}.gem # The library has no official release yet. But since it is just test # dependency, it should be fine to include the source right here. -# wget https://github.com/mitchellh/vagrant-spec/archive/03d88fe2467716b072951c2b55d78223130851a6/vagrant-spec-03d88fe2467716b072951c2b55d78223130851a6.tar.gz -Source1: https://github.com/mitchellh/vagrant-spec/archive/%{vagrant_spec_commit}/vagrant-spec-%{vagrant_spec_commit}.tar.gz - -# https://github.com/vagrant-libvirt/vagrant-libvirt/pull/1709 -# ruby3.2 fix wrt File.exits? removal and URI.split host result change -# A bit modified: spec/support/libvirt_acceptance_context.rb does not exist -# with 0.7.0 yet -Patch0: vagrant-libvirt-pr1709-ruby32-File_exists-URL-parse.patch -# Allow a mock object to receive synced_folders in config validation spec. -# We do not care about synced folder check when testing MAC configuration. -# https://github.com/vagrant-libvirt/vagrant-libvirt/pull/1721 -Patch1: vagrant-libvirt-0.11.2-Allow-a-mock-object-to-receive-synced_folders.patch -# https://github.com/vagrant-libvirt/vagrant-libvirt/pull/1837 -# related to https://github.com/ruby/rexml/pull/167 -Patch2: vagrant-libvirt-pr1837-testsuite-support-rexml-332.patch -# Get rid of a warning generated due to usage of option -# no longer supported by fog-libvirt -# https://github.com/vagrant-libvirt/vagrant-libvirt/pull/1835 -Patch3: vagrant-libvirt-0.12.2-Remove-config-unsupported-by-fog-libvirt.patch -# Fix compatibility with REXML 3.4.2+ -# https://github.com/vagrant-libvirt/vagrant-libvirt/pull/1861 -Patch4: vagrant-libvirt-0.12.2-Fix-REXML-3-4-2-compatibility.patch -# Replace CGI, removed from Ruby 4.0 bundled gems with URI. -# https://github.com/vagrant-libvirt/vagrant-libvirt/pull/1866 -Patch5: vagrant-libvirt-0.12.2-Replace-CGI.parse-with-URI-equivalent.patch - +# wget https://github.com/mitchellh/vagrant-spec/archive/9bba7e1228379c0a249a06ce76ba8ea7d276afb/vagrant-spec-f1a18fd3e5387328ca83e016e48373aadb67112a.tar.gz +Source2: https://github.com/mitchellh/vagrant-spec/archive/%{vagrant_spec_commit}/vagrant-spec-%{vagrant_spec_commit}.tar.gz # Enable QEMU Session by default # https://github.com/vagrant-libvirt/vagrant-libvirt/pull/969 -Patch100: vagrant-libvirt-0.11.2-enable-qemu-session-by-default.patch +Patch0: vagrant-libvirt-0.0.45-enable-qemu-session-by-default.patch +# Allow customizing of virt-sysprep behaviour on package. +# Backport of https://github.com/vagrant-libvirt/vagrant-libvirt/commit/deb36bef8b6c0b696ea0045563fb5cc0e4895f73. +Patch1: 0001-Allow-customizing-of-virt-sysprep-behaviour-on-packa.patch +# Use fetch to obtain environment variable value in package_domain. +# Backport of https://github.com/vagrant-libvirt/vagrant-libvirt/commit/f8eae9984d7f9f0bcc83fa3082592968487c0fb2. +Patch2: 0002-Use-fetch-to-obtain-environment-variable-value-in-pa.patch +# Halt a domain before packaging it as a box to avoid hard to debug issues. +# https://github.com/vagrant-libvirt/vagrant-libvirt/pull/1034. +Patch3: 0003-Halt-a-domain-before-packaging-it-as-a-box.patch Requires: ruby(release) Requires: ruby(rubygems) -Requires: rubygem(diffy) -Requires: rubygem(fog-libvirt) >= 0.6.0 +Requires: rubygem(fog-libvirt) >= 0.3.0 Requires: rubygem(nokogiri) >= 1.6 -Requires: rubygem(rexml) -Requires: rubygem(xml-simple) # Vagrant changed packaging scriptlets in version 1.9.1. Requires: vagrant >= 1.9.1 # Required by "vagrant package" command (rhbz#1292217). Recommends: %{_bindir}/virt-sysprep BuildRequires: vagrant >= 1.9.1 BuildRequires: rubygem(bundler) -BuildRequires: rubygem(diffy) -BuildRequires: rubygem(fog-libvirt) -BuildRequires: rubygem(rake) BuildRequires: rubygem(rdoc) -BuildRequires: rubygem(rexml) BuildRequires: rubygem(rspec) +BuildRequires: rubygem(fog-libvirt) BuildRequires: rubygem(thor) -BuildRequires: rubygem(xml-simple) BuildRequires: rubygems-devel -BuildRequires: %{_bindir}/ps BuildArch: noarch Provides: vagrant(%{vagrant_plugin_name}) = %{version} @@ -80,15 +57,16 @@ BuildArch: noarch Documentation for %{name}. %prep -%setup -q -n %{vagrant_plugin_name}-%{version} -b 1 +%setup -q -n %{vagrant_plugin_name}-%{version} -b 2 -%patch 0 -p1 -%patch 1 -p1 -%patch 2 -p1 -%patch 3 -p1 -%patch 4 -p1 -%patch 5 -p1 -%patch 100 -p1 +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 + +# Relax fog-core dependency to work with recently rebased one +%gemspec_remove_dep -s ../%{vagrant_plugin_name}-%{version}.gemspec -g fog-core '~> 1.43.0' +%gemspec_add_dep -s ../%{vagrant_plugin_name}-%{version}.gemspec -g fog-core '>= 1.43.0' %build gem build ../%{vagrant_plugin_name}-%{version}.gemspec @@ -103,7 +81,12 @@ cp -a .%{vagrant_plugin_dir}/* \ # Edit gemspec of vagrant-spec pushd ../vagrant-spec-%{vagrant_spec_commit} # Remove the git reference, which is useless in our case. -sed -i '/git / s/^/#/' vagrant-spec.gemspec +sed -i '/git/ s/^/#/' vagrant-spec.gemspec + +# Relax the Childprocess dependency, since Fedora currently ships with different version +# https://src.fedoraproject.org/rpms/rubygem-childprocess/pull-request/1 +%gemspec_remove_dep -s vagrant-spec.gemspec -g childprocess '~> 0.6.0' +%gemspec_add_dep -s vagrant-spec.gemspec -g childprocess '>= 0.5.0' # Relax the dependencies, since Fedora ships with newer versions. sed -i '/thor/ s/~>/>=/' vagrant-spec.gemspec @@ -115,31 +98,18 @@ cp ../%{vagrant_plugin_name}-%{version}.gemspec .%{vagrant_plugin_instdir}/%{vag pushd .%{vagrant_plugin_instdir} # Create dummy Gemfile and load dependencies via gemspec file -cat > Gemfile < '%{_builddir}/vagrant-spec-%{vagrant_spec_commit}' -gemspec -EOG +echo "gem 'vagrant'" > Gemfile +echo "gem 'rdoc'" >> Gemfile +echo "gem 'vagrant-spec', :path => '%{_builddir}/vagrant-spec-%{vagrant_spec_commit}'" >> Gemfile +echo "gemspec" >> Gemfile -# Unless rsync binary is present, vagrant-libvirt -# decides to use other methods of folder sync in tests, -# breaking set expectations for the test environment. -# https://github.com/vagrant-libvirt/vagrant-libvirt/issues/1415#issuecomment-985272836 -# Luckily, it just needs `rsync` in $PATH for tests to pass. -tmpdir=$(mktemp -d) -touch "${tmpdir}/rsync" -chmod +x "${tmpdir}/rsync" +# We don't care about code coverage. +sed -i '/[cC]overalls/ s/^/#/' spec/spec_helper.rb -# Suppress deprecation warnings -GEM_PATH=%{vagrant_plugin_dir}:`ruby -e "print Gem.path.join(':')"` \ -PATH="$PATH:${tmpdir}" \ -bundle exec rspec spec +# Relax developement rspec dependency +sed -i '/rspec/ s/~>/>=/' %{vagrant_plugin_name}.gemspec +GEM_PATH=%{vagrant_plugin_dir}:`ruby -e "print Gem.path.join(':')"` bundle exec rspec spec popd %files @@ -148,96 +118,20 @@ popd %license %{vagrant_plugin_instdir}/LICENSE %{vagrant_plugin_libdir} %{vagrant_plugin_instdir}/locales +%{vagrant_plugin_instdir}/tools %exclude %{vagrant_plugin_cache} %{vagrant_plugin_spec} %files doc %doc %{vagrant_plugin_docdir} +%doc %{vagrant_plugin_instdir}/example_box +%{vagrant_plugin_instdir}/Gemfile %doc %{vagrant_plugin_instdir}/README.md +%{vagrant_plugin_instdir}/Rakefile %{vagrant_plugin_instdir}/spec +%{vagrant_plugin_instdir}/vagrant-libvirt.gemspec %changelog -* Fri Jul 17 2026 Fedora Release Engineering - 0.11.2-11 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild - -* Sat Jan 17 2026 Fedora Release Engineering - 0.11.2-10 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild - -* Tue Dec 16 2025 Jarek Prokop - 0.11.2-9 -- Fix Ruby 4.0 compatibility by replacing CGI with URI equivalent. - -* Mon Nov 03 2025 Vít Ondruch - 0.11.2-8 -- Fix compatibility with REXML 3.4.2+ - -* Fri Jul 25 2025 Fedora Release Engineering - 0.11.2-7 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild - -* Sun Jan 19 2025 Fedora Release Engineering - 0.11.2-6 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild - -* Tue Jan 07 2025 Jarek Prokop - 0.11.2-5 -- Stop warning being emitted due to setting unsupported option in fog-libvirt. - -* Sun Dec 29 2024 Mamoru TASAKA - 0.11.2-5 -- Add some gem dependency on testsuite for ruby3.4 -- Support REXML 3.3.2 output behavior change - -* Sat Jul 20 2024 Fedora Release Engineering - 0.11.2-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild - -* Sat Jan 27 2024 Fedora Release Engineering - 0.11.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild - -* Sat Jul 22 2023 Fedora Release Engineering - 0.11.2-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild - -* Sun Jan 29 2023 Bart Kus - 0.11.2-1 -- Update to vagrant-libvirt 0.11.2. - -* Fri Jan 20 2023 Mamoru TASAKA - 0.7.0-5 -- Backport upstream fix for ruby3.2 compatibility - (File.exists? removal, URI#parse host name result change) - -* Sat Jul 23 2022 Fedora Release Engineering - 0.7.0-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild - -* Mon Apr 11 2022 Vít Ondruch - 0.7.0-3 -- Add `BR: rubygem(rake)` to fix FTBFS. - -* Sat Jan 22 2022 Fedora Release Engineering - 0.7.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Tue Sep 14 2021 Pavel Valena - 0.7.0-1 -- Update to vagrant-libvirt 0.7.0. - Resolves: rhbz#1963360 - -* Fri Jul 23 2021 Fedora Release Engineering - 0.4.1-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Mon May 17 2021 Pavel Valena - 0.4.1-2 -- Fix forward_ports with ruby 3.0. - Resolves: rhbz#1947885 - -* Fri Apr 16 2021 Pavel Valena - 0.4.1-1 -- Update to vagrant-libvirt 0.4.1. - Resolves: rhbz#1884945 - -* Wed Jan 27 2021 Fedora Release Engineering - 0.1.2-3 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild - -* Tue Aug 18 2020 Vít Ondruch - 0.1.2-2 -- Drop dependency on Erubis. - -* Thu Aug 06 2020 Pavel Valena - 0.1.2-1 -- Update to vagrant-libvirt 0.1.2. - Resolves: rhbz#1833807 - -* Wed Jul 29 2020 Fedora Release Engineering - 0.0.45-5 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild - -* Fri Jan 31 2020 Fedora Release Engineering - 0.0.45-4 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild - * Sun Sep 08 2019 Tadej Janež - 0.0.45-3 - Backport/Add useful features and fixes from upstream: - Allow customizing of virt-sysprep behaviour on package.