Merge pull request #466 from paroga/master
[puppet-modules/puppetlabs-apt.git] / manifests / backports.pp
1 # This adds the necessary components to get backports for ubuntu and debian
2 #
3 # == Parameters
4 #
5 # [*release*]
6 #   The ubuntu/debian release name. Defaults to $lsbdistcodename. Setting this
7 #   manually can cause undefined behavior. (Read: universe exploding)
8 #
9 # [*pin_priority*]
10 #   _default_: 200
11 #
12 #   The priority that should be awarded by default to all packages coming from
13 #   the Debian Backports project.
14 #
15 # == Examples
16 #
17 #   include apt::backports
18 #
19 #   class { 'apt::backports':
20 #     release => 'natty',
21 #   }
22 #
23 # == Authors
24 #
25 # Ben Hughes, I think. At least blame him if this goes wrong.
26 # I just added puppet doc.
27 #
28 # == Copyright
29 #
30 # Copyright 2011 Puppet Labs Inc, unless otherwise noted.
31 class apt::backports(
32   $release      = $::lsbdistcodename,
33   $location     = $::apt::params::backports_location,
34   $pin_priority = 200,
35 ) inherits apt::params {
36
37   if ! is_integer($pin_priority) {
38     fail('$pin_priority must be an integer')
39   }
40
41   if $::lsbdistid == 'LinuxMint' {
42     if $::lsbdistcodename == 'debian' {
43       $distid = 'debian'
44       $release_real = 'wheezy'
45     } else {
46       $distid = 'ubuntu'
47       $release_real = $::lsbdistcodename ? {
48         'qiana'  => 'trusty',
49         'petra'  => 'saucy',
50         'olivia' => 'raring',
51         'nadia'  => 'quantal',
52         'maya'   => 'precise',
53       }
54     }
55   } else {
56     $distid = $::lsbdistid
57     $release_real = downcase($release)
58   }
59
60   $key = $distid ? {
61     'debian' => 'A1BD8E9D78F7FE5C3E65D8AF8B48AD6246925553',
62     'ubuntu' => '630239CC130E1A7FD81A27B140976EAF437D05B5',
63   }
64   $repos = $distid ? {
65     'debian' => 'main contrib non-free',
66     'ubuntu' => 'main universe multiverse restricted',
67   }
68
69   apt::pin { 'backports':
70     before   => Apt::Source['backports'],
71     release  => "${release_real}-backports",
72     priority => $pin_priority,
73   }
74
75   apt::source { 'backports':
76     location   => $location,
77     release    => "${release_real}-backports",
78     repos      => $repos,
79     key        => $key,
80     key_server => 'pgp.mit.edu',
81   }
82 }