aboutsummaryrefslogtreecommitdiffstats
path: root/modules/buildsystem
diff options
context:
space:
mode:
authorNicolas Vigier <boklm@mageia.org>2013-05-23 15:05:59 +0000
committerNicolas Vigier <boklm@mageia.org>2013-05-23 15:05:59 +0000
commit03f72e194890b250aa7462ca2b763adc9e4b06ff (patch)
treecf4fbe7bef673774b1c41a3f36d395bf3805e731 /modules/buildsystem
parent255c868d79be6b2725570a70c51ce9e54e9313bd (diff)
downloadpuppet-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.rb20
-rw-r--r--modules/buildsystem/manifests/var/distros.pp8
-rw-r--r--modules/buildsystem/templates/media.cfg17
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
-%>