diff options
author | Nicolas Vigier <boklm@mageia.org> | 2013-05-23 15:05:59 +0000 |
---|---|---|
committer | Nicolas Vigier <boklm@mageia.org> | 2013-05-23 15:05:59 +0000 |
commit | 03f72e194890b250aa7462ca2b763adc9e4b06ff (patch) | |
tree | cf4fbe7bef673774b1c41a3f36d395bf3805e731 /modules/buildsystem | |
parent | 255c868d79be6b2725570a70c51ce9e54e9313bd (diff) | |
download | puppet-03f72e194890b250aa7462ca2b763adc9e4b06ff.tar puppet-03f72e194890b250aa7462ca2b763adc9e4b06ff.tar.gz puppet-03f72e194890b250aa7462ca2b763adc9e4b06ff.tar.bz2 puppet-03f72e194890b250aa7462ca2b763adc9e4b06ff.tar.xz puppet-03f72e194890b250aa7462ca2b763adc9e4b06ff.zip |
buildsystem: add option to base a distribution on an other
It is now possible to add the option 'based_on' to a distribution
defined in buildystem::var::distros. This is useful for distributions
like infra_1 or infra_2 which provide a new repository for an existing
distribution. When repositories from an other distribution are defined
in 'based_on', the repositories are linked with a symbolic link, and
defined in media.cfg.
Diffstat (limited to 'modules/buildsystem')
-rw-r--r-- | modules/buildsystem/manifests/distros.rb | 20 | ||||
-rw-r--r-- | modules/buildsystem/manifests/var/distros.pp | 8 | ||||
-rw-r--r-- | modules/buildsystem/templates/media.cfg | 17 |
3 files changed, 45 insertions, 0 deletions
diff --git a/modules/buildsystem/manifests/distros.rb b/modules/buildsystem/manifests/distros.rb index 24b394aa..9bb30221 100644 --- a/modules/buildsystem/manifests/distros.rb +++ b/modules/buildsystem/manifests/distros.rb @@ -42,6 +42,26 @@ hostclass "buildsystem::distros" do :group => schedbot_user end } + if distro['based_on'] != nil + distro['based_on'].each{|bdistroname, medias| + file [ mediadir, bdistroname ].join('/'), + :ensure => 'directory', :owner => mirror_user, + :group => mirror_user + medias.each{|medianame, media| + mdir = [ mediadir, bdistroname, medianame ].join('/') + file mdir, :ensure => 'directory', + :owner => mirror_user, :group => mirror_user + for reponame in media + file [ mdir, reponame ].join('/'), + :ensure => 'link', + :target => [ + '../../../../..', bdistroname, arch, + 'media', medianame, reponame ].join('/'), + :owner => mirror_user, :group => mirror_user + end + } + } + end end } end diff --git a/modules/buildsystem/manifests/var/distros.pp b/modules/buildsystem/manifests/var/distros.pp index ddd8ffc1..ae00810a 100644 --- a/modules/buildsystem/manifests/var/distros.pp +++ b/modules/buildsystem/manifests/var/distros.pp @@ -44,6 +44,14 @@ # # repository. If you don't want to filter allowed IPs, don't set # # this value # 'repo_allow_from' => [ '127.0.0.1', '10.0.0.1', '.mageia.org' ], +# Optionally, the distribution can be based on the repos from an other +# distribution. In this example we're saying that the distribution is +# based on 2/core/release and 2/core/updates. +# 'based_on' => { +# '2' => { +# 'core' => [ 'release', 'updates' ], +# }, +# }, # }, # } class buildsystem::var::distros( diff --git a/modules/buildsystem/templates/media.cfg b/modules/buildsystem/templates/media.cfg index 163f1f66..3ac06bce 100644 --- a/modules/buildsystem/templates/media.cfg +++ b/modules/buildsystem/templates/media.cfg @@ -99,4 +99,21 @@ distro['medias'].each{|medianame, media| end } } +if distro['based_on'] != nil + distro['based_on'].each{|bdistroname, bdistro| + bdistro.each{|medianame, media| + for reponame in media + -%><%= + media_out [ bdistroname, medianame, reponame ].join('/'), + :hdlists => [ 'hdlist', bdistroname, medianame, + reponame ].join('_'), + :name => media_name([ medianame, bdistroname].join(''), reponame, nil, nil), + :media_types => 'base_distro', + :noauto => 1 + %> + <%- + end + } + } +end -%> |