- $repos = $::lsbdistid ? {
- 'debian' => 'main contrib non-free',
- 'ubuntu' => 'main universe multiverse restricted',
+ if (!($facts['lsbdistid'] == 'Debian' or $facts['lsbdistid'] == 'Ubuntu')) {
+ unless $location and $release and $repos and $key {
+ fail(translate('If not on Debian or Ubuntu, you must explicitly pass location, release, repos, and key'))
+ }
+ }
+ unless $location {
+ $_location = $::apt::backports['location']
+ }
+ unless $release {
+ $_release = "${facts['lsbdistcodename']}-backports"
+ }
+ unless $repos {
+ $_repos = $::apt::backports['repos']
+ }
+ unless $key {
+ $_key = $::apt::backports['key']
+ }
+
+ if $pin =~ Hash {
+ $_pin = $pin
+ } elsif $pin =~ Numeric or $pin =~ String {
+ # apt::source defaults to pinning to origin, but we should pin to release
+ # for backports
+ $_pin = {
+ 'priority' => $pin,
+ 'release' => $_release,
+ }
+ } else {
+ fail(translate('pin must be either a string, number or hash'))