# Configurations for a Debian build server. Does *not* setup any chroot # environments. For that you need to use su_debuild::chroot. # # Furthermore, sudo... class su_debuild { ### PACKAGES ### # Pin some packages to Debian jessie-backports. if ($::lsbdistcodename == 'jessie') { file { '/etc/apt/preferences.d/debian-build': ensure => present, source => 'puppet:///modules/su_debuild/etc/apt/preferences.d/debian-build.jessie', mode => '0644', notify => Exec['apt-get_update_debuild_jessie']; } # Triggered to refresh local package lists. exec { 'apt-get_update_debuild_jessie': command => 'apt-get update', refreshonly => true, } } # Packages needed for package building. Add ant here because although we # don't need it in general on all development systems, but it's useful # for some Debian packages. We don't install reprepro in case it is # installed via su_debian_archive. $packages_to_install = [ 'alien', 'ant', 'apt-file', 'build-essential', 'dash', 'debhelper', 'debmake', 'devscripts', 'devscripts-el', 'dh-autoreconf', 'dh-make', 'diffstat', 'dkms', 'dpatch', 'dpkg-dev-el', 'dput', 'fakeroot', 'gem2deb', 'git', 'git-buildpackage', 'gitk', 'gnupg', 'javahelper', 'libcurl4-openssl-dev', 'libkrb5-dev', 'libparse-debcontrol-perl', 'libremctl-dev', 'libssl-dev', 'lintian', 'manpages-dev', 'module-assistant', 'openafs-modules-source', 'patchutils', 'php-cli', 'pinentry-curses', 'pristine-tar', 'quilt', 'reportbug', 'w3m', ] package { 'gnupg-agent': ensure => installed, require => Package['pinentry-curses']; } # Distribution-specific packages. # maven: maven2 only supported on wheezy and jessie (EOL'ed in 2014) case ($::lsbdistcodename) { 'jessie': { package { 'apache2-dev': ensure => installed; 'maven2': ensure => installed; } } 'stretch': { package { 'apache2-dev': ensure => installed; 'maven': ensure => installed; } } default: { crit("unknown distribution ${::lsbdistcodename}") } } ## Install ubuntu-archive-keyring # We add the Ubuntu keyring in case we want to build Ubuntu packages. package {'ubuntu-archive-keyring': ensure => installed } # Additional packages to build kernel modules. case $::lsbdistcodename { 'jessie': { package { 'linux-headers-3.16.0-4-all': ensure => installed; } } 'stretch': { package { 'linux-headers-amd64': ensure => installed; } } default: { crit("unknown distribution ${::lsbdistcodename}") } } # Configuration and cache directory for Maven. if ($::lsbdistcodename == 'jessie') { # MAVEN2 file { '/etc/maven2/settings.xml': source => 'puppet:///modules/su_debuild/etc/maven2/settings.xml', require => Package['maven2']; '/srv/maven': ensure => directory, mode => '02775'; } } else { # MAVEN3 file { '/etc/maven/settings.xml': source => 'puppet:///modules/su_debuild/etc/maven/settings.xml', require => Package['maven']; '/srv/maven': ensure => directory, mode => '02775'; } } # Add a deb-src configuration for unstable so that we can easily download # packages for inspection and backporting. file { '/etc/apt/sources.list.d/src-sid.list': source => 'puppet:///modules/su_debuild/etc/apt/sources.list.d/src-sid.list', } ### PBUILDER ### # Basic configuration for pbuilder. Note that pbuild and pbuilder # are not useful without chroot environments (see su_debuild::chroots). file { '/etc/pbuilderrc': source => 'puppet:///modules/su_debuild/etc/pbuilderrc', } # Cron job to update the apt-file database nightly. file { '/etc/cron.daily/apt-file-update': source => 'puppet:///modules/su_debuild/etc/cron.daily/apt-file-update', mode => '0755', } }