my $nothrflavour = 'gcc64dbg';
my $mode = 'build';
my $help = 0;
+my $listmodules;
my @nodes = qw/client server logger utils client-java doc ws-test/;
my %enable_nodes;
my %deps;
my %topbuild;
-my @lbmodules = qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/;
+my %lbmodules = (
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'security' => [qw/gss gsoap-plugin/],
+ );
my @opts = (
'thrflavour=s' => \$thrflavour,
'nothrflavour=s' => \$nothrflavour,
'mode=s' => \$mode,
+ 'listmodules=s' => \$listmodules,
'help' => \$help,
);
if ($help) { usage(); exit 0; }
+if ($listmodules) {
+ my @m = map "org.glite.$listmodules.$_",@{$lbmodules{$listmodules}};
+ print "@m\n";
+ exit 0;
+}
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
die "--module cannot be used with --enable-* or --disable-*\n"
if $module && ($en || $dis);
-die "$module: unknown module\n" if $module && ! grep $module,@lbmodules;
+die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}};
if ($dis) {
for (@nodes) {
for (keys %enable_nodes) { delete $enable_nodes{$_} unless $enable_nodes{$_}; }
-print "Writing config.status\n";
-open CONF,">config.status" or die "config.status: $!\n";
-print CONF "$0 @keeparg\n";
-close CONF;
+if ($mode eq 'build') {
+ print "Writing config.status\n";
+ open CONF,">config.status" or die "config.status: $!\n";
+ print CONF "$0 @keeparg\n";
+ close CONF;
+}
my @modules;
mode_build() if $mode eq 'build';
mode_checkout() if $mode eq 'checkout';
+mode_etics() if $mode eq 'etics';
sub mode_build {
print "\nBuilding modules: @modules\n";
close MKINC;
}
+my %etics_externs;
+BEGIN{
+ %etics_externs = (
+ globus=>'vdt_globus_essentials',
+ );
+};
+
+sub mode_etics {
+ die "$0: --module required with --etics\n" unless $module;
+
+ my $subsys;
+ my ($major,$minor,$rev,$age);
+
+ for my $s (keys %lbmodules) {
+ for (@{$lbmodules{$s}}) {
+ $subsys = $s if $_ eq $module;
+ }
+ }
+
+ open V,"org.glite.$subsys.$module/project/version.properties"
+ or die "org.glite.$subsys.$module/project/version.properties: $!\n";
+
+ while ($_ = <V>) {
+ chomp;
+ ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
+ $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
+ }
+ close V;
+
+ my @copts = ();
+
+ for (@{$need_externs{"$subsys.$module"}}) {
+ $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ push @copts,"--with-$_=\${$eext.location}";
+ }
+
+
+ my $conf = "glite-$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
+ open C,">$conf.ini" or die "$conf.ini: $!\n";
+
+ my $buildroot = $topbuild{$subsys.$module} ? '' : "build.root = build\n";
+
+ print STDERR "Writing $conf.ini\n";
+ print C qq{
+[Configuration-$conf]
+profile = None
+moduleName = org.glite.$subsys.$module
+displayName = $conf
+description = org.glite.$subsys.$module
+projectName = org.glite
+age = $age
+deploymentType = None
+tag = $conf
+version = $major.$minor.$rev
+path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz
+
+[Platform-default:VcsCommand]
+displayName = None
+description = None
+tag = cvs -d \${vcsroot} tag -R \${tag} \${moduleName}
+branch = None
+commit = None
+checkout = cvs -d \${vcsroot} co -r \${tag} \${moduleName}
+
+[Platform-default:BuildCommand]
+postpublish = None
+packaging = None
+displayName = None
+description = None
+doc = None
+prepublish = None
+publish = None
+compile = make
+init = None
+install = make install
+clean = make clean
+test = make check
+configure = org.glite.lb/configure --module $module @copts
+checkstyle = None
+
+[Platform-default:Property]
+$buildroot
+
+[Platform-default:DynamicDependency]
+
+};
+
+# TODO dependencies
+
+ close C;
+}
+
sub gsoap_version {
local $_;
my $gsoap_version;
--staged=module,module,... what is already in PREFIX (specify without org.glite.)
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
+ --listmodules=subsys list modules of a subsystem
Mode of operation:
- --mode={checkout|build} what to do [build]
+ --mode={checkout|build|etics} what to do [build]
What to build:
--module=module build this module only (mostly in-Etics operation)
--enable-NODE build this "node" (set of modules) only. Available nodes are
- @lbmodules
+ @{$lbmodules{lb}},@{$lbmodules{security}}
--disable-NODE don't build this node
Dependencies: