This is an automated email from the git hooks/post-receive script.
gk pushed a commit to branch master in repository builders/rbm.
commit 313f08fcc9d9bd4ef1ba4a98e92de2dd06e8c216 Author: Nicolas Vigier boklm@torproject.org AuthorDate: Mon Jun 27 14:49:17 2022 +0200
Bug 40027: Add support for rbm.module.conf files --- lib/RBM.pm | 19 ++++++++++++++++++- lib/RBM/DefaultConfig.pm | 3 ++- rbm | 1 + test.pl | 15 ++++++++++++++- test/modules/module_1/rbm.module.conf | 2 ++ test/modules/module_2/rbm.module.conf | 2 ++ test/modules/module_3/rbm.module.conf | 2 ++ 7 files changed, 41 insertions(+), 3 deletions(-)
diff --git a/lib/RBM.pm b/lib/RBM.pm index 24c6d44..7e29d3e 100644 --- a/lib/RBM.pm +++ b/lib/RBM.pm @@ -79,6 +79,21 @@ sub load_local_config { $config->{local} = -f $cfile ? load_config_file($cfile) : {}; }
+sub load_modules_config { + my ($project) = @_; + $config->{modules} = {}; + my $modules_dir = project_config($project ? $project : 'undef', 'modules_dir'); + for my $dir (reverse @{as_array($modules_dir)}) { + my $d = rbm_path($dir); + next unless -d $d; + for my $module (map { $_->basename } path($d)->children) { + my $cfile = "$d/$module/rbm.module.conf"; + $config->{modules}{$module} = load_config_file($cfile) + if -f $cfile; + } + } +} + sub find_config_file { for (my $dir = getcwd; $dir ne '/'; $dir = dirname($dir)) { return "$dir/rbm.conf" if -f "$dir/rbm.conf"; @@ -232,9 +247,11 @@ sub project_config { goto FINISH unless @$name; my $opt_save = $config->{opt}; $config->{opt} = { %{$config->{opt}}, %$options } if $options; + my @modules = map { [ 'modules', $_ ] } + sort keys %{ $config->{modules} }; $res = config($project, $name, $options, ['opt', 'norec'], ['opt'], ['run'], ['projects', $project], ['local'], [], - ['system'], ['default']); + @modules, ['system'], ['default']); if (!$options->{no_tmpl} && defined($res) && !ref $res && !notmpl(confkey_str($name), $project)) { $res = process_template($project, $res, diff --git a/lib/RBM/DefaultConfig.pm b/lib/RBM/DefaultConfig.pm index ce75c1a..4fbe079 100644 --- a/lib/RBM/DefaultConfig.pm +++ b/lib/RBM/DefaultConfig.pm @@ -104,6 +104,7 @@ our %default_config = ( tmp_dir => '[% GET ENV.TMPDIR ? ENV.TMPDIR : "/tmp"; %]', rbm_tmp_dir => &rbm_tmp_dir, projects_dir => 'projects', + modules_dir => 'modules', output_dir => 'out', git_clone_dir => 'git_clones', hg_clone_dir => 'hg_clones', @@ -112,7 +113,7 @@ our %default_config = ( build => '[% INCLUDE build -%]', build_log => '-', build_log_append => '1', - notmpl => [ qw(projects_dir) ], + notmpl => [ qw(projects_dir modules_dir) ], abbrev_length => '12', abbrev => '[% IF c("git_url"); diff --git a/rbm b/rbm index 764141e..c99de28 100755 --- a/rbm +++ b/rbm @@ -80,6 +80,7 @@ sub set_options { } RBM::load_system_config(@_); RBM::load_local_config(@_); + RBM::load_modules_config(@_); if (!defined $val{step} && @_) { $RBM::config->{step} = RBM::project_config($_[0], 'pkg_type'); } diff --git a/test.pl b/test.pl index 6c99cf0..0700d9c 100755 --- a/test.pl +++ b/test.pl @@ -1,7 +1,7 @@ #!/usr/bin/perl -w use strict; use Path::Tiny; -use Test::More tests => 29; +use Test::More tests => 31; use lib 'lib/';
sub set_target { @@ -19,6 +19,7 @@ sub set_step { BEGIN { use_ok('RBM') }; chdir 'test'; RBM::load_config; +RBM::load_modules_config; RBM::set_default_env; ok($RBM::config, 'load config');
@@ -145,6 +146,18 @@ my @tests = ( config => [ 'c', 'option_deb' ], expected => '1', }, + { + name => 'Using option from rbm.module.conf', + target => [], + config => [ 'b', 'module_3'], + expected => '3', + }, + { + name => 'Using option defined in multiple rbm.module.conf', + target => [], + config => [ 'b', 'module_m'], + expected => '1', + }, { name => 'build + steps config - 1', target => [ 'version_1' ], diff --git a/test/modules/module_1/rbm.module.conf b/test/modules/module_1/rbm.module.conf new file mode 100644 index 0000000..243b870 --- /dev/null +++ b/test/modules/module_1/rbm.module.conf @@ -0,0 +1,2 @@ +module_m: 1 +module_1: 1 diff --git a/test/modules/module_2/rbm.module.conf b/test/modules/module_2/rbm.module.conf new file mode 100644 index 0000000..5a79ea6 --- /dev/null +++ b/test/modules/module_2/rbm.module.conf @@ -0,0 +1,2 @@ +module_m: 2 +module_2: 2 diff --git a/test/modules/module_3/rbm.module.conf b/test/modules/module_3/rbm.module.conf new file mode 100644 index 0000000..ed43fbd --- /dev/null +++ b/test/modules/module_3/rbm.module.conf @@ -0,0 +1,2 @@ +module_m: 3 +module_3: 3