Skip to content
This repository has been archived by the owner on Dec 5, 2022. It is now read-only.

Commit

Permalink
Add support for DNF
Browse files Browse the repository at this point in the history
If the folder `/car/cache/dnf` is present, the content will be cached
like in the Yum plugin.

A possible configuration to enable it:

Vagrant.configure(2) do |config|
   config.vm.box = "fedora/24-cloud-base"
  if Vagrant.has_plugin?("vagrant-cachier")
    config.cache.scope = :machine
    config.cache.auto_detect = false
    config.cache.enable :dnf
  end
end
  • Loading branch information
rmohr committed Sep 23, 2016
1 parent 959ac6f commit 5141e13
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 0 deletions.
20 changes: 20 additions & 0 deletions docs/buckets/dnf.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# DNF

Used by Fedora guests, will get configured under guest's `/var/cache/dnf`. It will
also [make sure](lib/vagrant-cachier/bucket/dnf.rb#L20) that `keepcache` is set to
`1` on guest's `/etc/dnf/dnf.conf`.

To manually enable it:

```ruby
Vagrant.configure("2") do |config|
config.vm.box = 'some-fedora-box'
config.cache.enable :dnf
end
```

### :warning: Notice about Windows hosts :warning:

In case this bucket is enabled and a Windows host is in use, you might see an
ugly stacktrace as described on [this comment](https://github.com/fgrehm/vagrant-cachier/issues/117#issuecomment-50548393)
if some DNF repository is not available during provisioning.
1 change: 1 addition & 0 deletions docs/template.html
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@
<li><a tabindex="-1" href="buckets/chef">Chef</a></li>
<li><a tabindex="-1" href="buckets/chef_rubygems">Chef Gems</a></li>
<li><a tabindex="-1" href="buckets/composer">Composer</a></li>
<li><a tabindex="-1" href="buckets/dnf">DNF</a></li>
<li><a tabindex="-1" href="buckets/bower">Bower</a></li>
<li><a tabindex="-1" href="buckets/pacman">Pacman</a></li>
<li><a tabindex="-1" href="buckets/npm">npm</a></li>
Expand Down
1 change: 1 addition & 0 deletions lib/vagrant-cachier/bucket.rb
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ def symlink?(path)
require_relative "bucket/chef_gem"
require_relative "bucket/pacman"
require_relative "bucket/yum"
require_relative "bucket/dnf"
require_relative "bucket/rvm"
require_relative "bucket/apt_cacher"
require_relative "bucket/apt_lists"
Expand Down
26 changes: 26 additions & 0 deletions lib/vagrant-cachier/bucket/dnf.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
module VagrantPlugins
module Cachier
class Bucket
class Dnf < Bucket
def self.capability
:dnf_cache_dir
end

def install
if guest.capability?(:dnf_cache_dir)
guest_path = guest.capability(:dnf_cache_dir)
return if @env[:cache_dirs].include?(guest_path)

# Ensure caching is enabled
comm.sudo("sed -i '/keepcache=/d' /etc/dnf/dnf.conf")
comm.sudo("sed -i '/^[main]/a keepcache=1' /etc/dnf/dnf.conf")

symlink(guest_path)
else
@env[:ui].info I18n.t('vagrant_cachier.skipping_bucket', bucket: 'DNF')
end
end
end
end
end
end
13 changes: 13 additions & 0 deletions lib/vagrant-cachier/cap/redhat/dnf_cache_dir.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
module VagrantPlugins
module Cachier
module Cap
module RedHat
module DnfCacheDir
def self.dnf_cache_dir(machine)
'/var/cache/dnf'
end
end
end
end
end
end
5 changes: 5 additions & 0 deletions lib/vagrant-cachier/capabilities.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ class Plugin < Vagrant.plugin('2')
Cap::RedHat::YumCacheDir
end

guest_capability 'redhat', 'dnf_cache_dir' do
require_relative 'cap/redhat/dnf_cache_dir'
Cap::RedHat::DnfCacheDir
end

guest_capability 'suse', 'yum_cache_dir' do
# Disable Yum on suse guests
end
Expand Down

0 comments on commit 5141e13

Please sign in to comment.