my $pwd = `pwd`; chomp $pwd;
my $prefix = $pwd.'/stage';
+my $stagedir;
my $staged;
my $module;
my $thrflavour = 'gcc64dbgpthr';
my $listmodules;
my $version;
my $output;
-
-my @nodes = qw/client server logger utils client-java doc ws-test/;
+my $lb_tag = '';
+my $lbjp_tag = '';
+my $jp_tag = '';
+my $sec_tag = '';
+my $jobid_tag = '';
+my $libdir = 'lib';
+
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
+ ant => '/usr',
+ jdk => '/usr',
+ libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
+ 'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'listmodules=s' => \$listmodules,
'version=s' => \$version,
'output=s' => \$output,
+ 'stage=s' => \$stagedir,
+ 'lb-tag=s' => \$lb_tag,
+ 'lbjp-common-tag=s' => \$lbjp_tag,
+ 'jp-tag=s' => \$jp_tag,
+ 'security-tag=s' => \$sec_tag,
+ 'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
die "--module cannot be used with --enable-* or --disable-*\n"
if $module && ($en || $dis);
-die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}};
+die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}},{$lbmodules{jp}};
if ($dis) {
for (@nodes) {
for (keys %enable_nodes) { delete $enable_nodes{$_} unless $enable_nodes{$_}; }
+$stagedir = $prefix unless $stagedir;
+
if ($mode eq 'build') {
print "Writing config.status\n";
open CONF,">config.status" or die "config.status: $!\n";
my %aux;
if ($module) {
+# push @modules,split(/[,.]+/,$module);
push @modules,$module;
}
else {
- @modules = map 'lb.'.($extranodmod{$_} ? $extranodmod{$_} : $_),keys %enable_nodes;
+ @modules = map(($extranodmod{$_} ? $extranodmod{$_} : 'lb.'.$_),(keys %enable_nodes));
my $n;
my %ldeps; undef %ldeps;
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
- my @dnames = keys %ldeps;
+ my @dnames = $module ? () : keys %ldeps;
my $full = full($_);
my $build = $topbuild{$_} ? '': '/build';
sub mode_checkout() {
for (@modules) {
+ my $module = $_;
+ my $tag = "";
+ if ($lb_tag){
+ for (@{$lbmodules{lb}}){
+ if ("lb.".$_ eq $module){
+ $tag = '-r '.$lb_tag;
+ }
+ }
+ }
+ if ($lbjp_tag){
+ for (@{$lbmodules{'lbjp-common'}}){
+ if ("lbjp-common.".$_ eq $module){
+ $tag = '-r '.$lbjp_tag;
+ }
+ }
+ }
+ if ($jp_tag){
+ for (@{$lbmodules{'jp'}}){
+ if ("jp.".$_ eq $module){
+ $tag = '-r '.$jp_tag;
+ }
+ }
+ }
+ if ($sec_tag){
+ for (@{$lbmodules{security}}){
+ if ("security.".$_ eq $module){
+ $tag = '-r '.$sec_tag;
+ }
+ }
+ }
+ if ($jobid_tag){
+ for (@{$lbmodules{jobid}}){
+ if ("jobid.".$_ eq $module){
+ $tag = '-r '.$jobid_tag;
+ }
+ }
+ }
+ #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
+ # print "found";
+ #}
$_ = full($_);
print "\n*** Checking out $_\n";
- system("cvs checkout $_") == 0 or die "cvs checkout $_: $?\n";
+ system("cvs checkout $tag $_") == 0 or die "cvs checkout $tag $_: $?\n";
}
}
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
- 'lbjp-common.trio' => [ qw// ],
- 'security.gss' => [ qw/globus cares cppunit:B/ ],
- 'security.gsoap-plugin' => [ qw/cppunit:B globus cares gsoap:B/ ],
+ 'lbjp-common.trio' => [ qw/cppunit:B/ ],
+ 'lbjp-common.jp-interface' => [ qw/cppunit:B/ ],
+ 'security.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B/ ],
+ 'security.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares gsoap:B/ ],
'jobid.api-c' => [ qw/cppunit:B/ ],
'jobid.api-cpp' => [ qw/cppunit:B/ ],
- 'jobid.api-java' => [ qw// ],
+ 'jobid.api-java' => [ qw/ant:B jdk:B/ ],
+ 'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.doc' => [],
+ 'jp.index' => [ qw/gsoap globus_essentials:R globus:B/ ],
+ 'jp.primary' => [ qw/classads gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.server-common' => [],
+ 'jp.ws-interface' => [],
);
for my $ext (keys %need_externs_aux) {
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common jp.common security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
- jp.common
+ lbjp-common.jp-interface
jobid.api-c
lbjp-common.trio lbjp-common.maildir
lb.client lb.state-machine
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'jobid.api-cpp' => [ qw/jobid.api-c/ ],
'jobid.api-java' => [ qw// ],
- 'jp.common' => [ qw/lbjp-common.db/ ],
+ 'lbjp-common.jp-interface' => [ qw/lbjp-common.db jobid.api-c/ ],
+
+ 'jp.client' => [ qw/
+ jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.maildir
+ jobid.api-c
+ security.gsoap-plugin
+ / ],
+ 'jp.doc' => [ qw// ],
+ 'jp.index' => [ qw/
+ jp.server-common jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.primary' => [ qw/
+ jobid.api-c
+ jp.server-common jp.ws-interface
+ lb.state-machine
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.server-common' => [ qw/
+ lbjp-common.jp-interface lbjp-common.db
+ / ],
+ 'jp.ws-interface' => [ qw// ],
);
for my $ext (keys %deps_aux) {
%extrafull = ( gridsite=>'org.gridsite.core');
-# %extranodmod = ( java => 'client-java' );
+#( java => 'client-java' );
+%extranodmod = (
+ db => 'lbjp-common.db',
+ jpprimary => 'jp.primary',
+ jpindex => 'jp.index',
+ jpclient => 'jp.client',
+);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio
-jp.common/;
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
+/;
@aux{@m} = (1) x ($#m+1);
my $short = shift;
print MKINC qq{
PREFIX = $prefix
-stagedir = $prefix
+stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
my %etics_projects;
BEGIN{
%etics_externs = (
- globus=>'vdt_globus_essentials',
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
cares=>'c-ares',
- voms=>'org.glite.security.voms-api-c',
+ voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
- vdt=>[qw/globus/],
+ vdt=>[qw/globus globus_essentials/],
'org.glite'=>[qw/voms gridsite lcas/],
);
};
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- push @copts,"--with-$_=\${$_.location}/$_-`echo \${$_.version} | sed 's/\\([0-9]*\\.[0-9]*\\)\\.[0-9]*/\\1/'`.jar";
+ push @copts,"--with-$_ \${$eext.location}/$_*.jar";
}
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --prefix=\${prefix} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--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
+ --listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
--enable-NODE build this "node" (set of modules) only. Available nodes are
@{$lbmodules{lb}},@{$lbmodules{security}}
--disable-NODE don't build this node
+ --lb-tag=tag checkout LB modules with specific tag
+ --jp-tag=tag checkout JP modules with specific tag
+ --lbjp-common-tag=tag checkout lbjp-common modules with specific tag
+ --security-tag=tag checkout security modules with specific tag
+ --jobid-tag=tag checkout jobid modules with specific tag
Dependencies:
--with-EXTERNAL=PATH where to look for an external. Required externals
1.0.0-2
- fixes in etics' invocation of configure
+
+1.0.0-4
+- configure script update
+
+1.0.1-1
+- additional includes in base64_test to fix build on Deb5
+
# : /cvs/jra1mw/org.glite.jobid.api-c/project/version.properties,v 1.1 2009/01/16 08:48:52 zsustr Exp $
-module.version=1.0.0
-module.age=2
+module.version=1.0.1
+module.age=1
#include <assert.h>
+#include <stdlib.h>
+#include <cstring>
#include <fstream>
#include <cppunit/extensions/HelperMacros.h>
my $pwd = `pwd`; chomp $pwd;
my $prefix = $pwd.'/stage';
+my $stagedir;
my $staged;
my $module;
my $thrflavour = 'gcc64dbgpthr';
my $listmodules;
my $version;
my $output;
-
-my @nodes = qw/client server logger utils client-java doc ws-test/;
+my $lb_tag = '';
+my $lbjp_tag = '';
+my $jp_tag = '';
+my $sec_tag = '';
+my $jobid_tag = '';
+my $libdir = 'lib';
+
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
+ ant => '/usr',
+ jdk => '/usr',
+ libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
+ 'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'listmodules=s' => \$listmodules,
'version=s' => \$version,
'output=s' => \$output,
+ 'stage=s' => \$stagedir,
+ 'lb-tag=s' => \$lb_tag,
+ 'lbjp-common-tag=s' => \$lbjp_tag,
+ 'jp-tag=s' => \$jp_tag,
+ 'security-tag=s' => \$sec_tag,
+ 'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
die "--module cannot be used with --enable-* or --disable-*\n"
if $module && ($en || $dis);
-die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}};
+die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}},{$lbmodules{jp}};
if ($dis) {
for (@nodes) {
for (keys %enable_nodes) { delete $enable_nodes{$_} unless $enable_nodes{$_}; }
+$stagedir = $prefix unless $stagedir;
+
if ($mode eq 'build') {
print "Writing config.status\n";
open CONF,">config.status" or die "config.status: $!\n";
my %aux;
if ($module) {
+# push @modules,split(/[,.]+/,$module);
push @modules,$module;
}
else {
- @modules = map 'lb.'.($extranodmod{$_} ? $extranodmod{$_} : $_),keys %enable_nodes;
+ @modules = map(($extranodmod{$_} ? $extranodmod{$_} : 'lb.'.$_),(keys %enable_nodes));
my $n;
my %ldeps; undef %ldeps;
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
- my @dnames = keys %ldeps;
+ my @dnames = $module ? () : keys %ldeps;
my $full = full($_);
my $build = $topbuild{$_} ? '': '/build';
sub mode_checkout() {
for (@modules) {
+ my $module = $_;
+ my $tag = "";
+ if ($lb_tag){
+ for (@{$lbmodules{lb}}){
+ if ("lb.".$_ eq $module){
+ $tag = '-r '.$lb_tag;
+ }
+ }
+ }
+ if ($lbjp_tag){
+ for (@{$lbmodules{'lbjp-common'}}){
+ if ("lbjp-common.".$_ eq $module){
+ $tag = '-r '.$lbjp_tag;
+ }
+ }
+ }
+ if ($jp_tag){
+ for (@{$lbmodules{'jp'}}){
+ if ("jp.".$_ eq $module){
+ $tag = '-r '.$jp_tag;
+ }
+ }
+ }
+ if ($sec_tag){
+ for (@{$lbmodules{security}}){
+ if ("security.".$_ eq $module){
+ $tag = '-r '.$sec_tag;
+ }
+ }
+ }
+ if ($jobid_tag){
+ for (@{$lbmodules{jobid}}){
+ if ("jobid.".$_ eq $module){
+ $tag = '-r '.$jobid_tag;
+ }
+ }
+ }
+ #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
+ # print "found";
+ #}
$_ = full($_);
print "\n*** Checking out $_\n";
- system("cvs checkout $_") == 0 or die "cvs checkout $_: $?\n";
+ system("cvs checkout $tag $_") == 0 or die "cvs checkout $tag $_: $?\n";
}
}
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
- 'lbjp-common.trio' => [ qw// ],
- 'security.gss' => [ qw/globus cares cppunit:B/ ],
- 'security.gsoap-plugin' => [ qw/cppunit:B globus cares gsoap:B/ ],
+ 'lbjp-common.trio' => [ qw/cppunit:B/ ],
+ 'lbjp-common.jp-interface' => [ qw/cppunit:B/ ],
+ 'security.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B/ ],
+ 'security.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares gsoap:B/ ],
'jobid.api-c' => [ qw/cppunit:B/ ],
'jobid.api-cpp' => [ qw/cppunit:B/ ],
- 'jobid.api-java' => [ qw// ],
+ 'jobid.api-java' => [ qw/ant:B jdk:B/ ],
+ 'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.doc' => [],
+ 'jp.index' => [ qw/gsoap globus_essentials:R globus:B/ ],
+ 'jp.primary' => [ qw/classads gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.server-common' => [],
+ 'jp.ws-interface' => [],
);
for my $ext (keys %need_externs_aux) {
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common jp.common security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
- jp.common
+ lbjp-common.jp-interface
jobid.api-c
lbjp-common.trio lbjp-common.maildir
lb.client lb.state-machine
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'jobid.api-cpp' => [ qw/jobid.api-c/ ],
'jobid.api-java' => [ qw// ],
- 'jp.common' => [ qw/lbjp-common.db/ ],
+ 'lbjp-common.jp-interface' => [ qw/lbjp-common.db jobid.api-c/ ],
+
+ 'jp.client' => [ qw/
+ jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.maildir
+ jobid.api-c
+ security.gsoap-plugin
+ / ],
+ 'jp.doc' => [ qw// ],
+ 'jp.index' => [ qw/
+ jp.server-common jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.primary' => [ qw/
+ jobid.api-c
+ jp.server-common jp.ws-interface
+ lb.state-machine
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.server-common' => [ qw/
+ lbjp-common.jp-interface lbjp-common.db
+ / ],
+ 'jp.ws-interface' => [ qw// ],
);
for my $ext (keys %deps_aux) {
%extrafull = ( gridsite=>'org.gridsite.core');
-# %extranodmod = ( java => 'client-java' );
+#( java => 'client-java' );
+%extranodmod = (
+ db => 'lbjp-common.db',
+ jpprimary => 'jp.primary',
+ jpindex => 'jp.index',
+ jpclient => 'jp.client',
+);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio
-jp.common/;
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
+/;
@aux{@m} = (1) x ($#m+1);
my $short = shift;
print MKINC qq{
PREFIX = $prefix
-stagedir = $prefix
+stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
my %etics_projects;
BEGIN{
%etics_externs = (
- globus=>'vdt_globus_essentials',
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
cares=>'c-ares',
- voms=>'org.glite.security.voms-api-c',
+ voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
- vdt=>[qw/globus/],
+ vdt=>[qw/globus globus_essentials/],
'org.glite'=>[qw/voms gridsite lcas/],
);
};
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- push @copts,"--with-$_=\${$_.location}/$_-`echo \${$_.version} | sed 's/\\([0-9]*\\.[0-9]*\\)\\.[0-9]*/\\1/'`.jar";
+ push @copts,"--with-$_ \${$eext.location}/$_*.jar";
}
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --prefix=\${prefix} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--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
+ --listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
--enable-NODE build this "node" (set of modules) only. Available nodes are
@{$lbmodules{lb}},@{$lbmodules{security}}
--disable-NODE don't build this node
+ --lb-tag=tag checkout LB modules with specific tag
+ --jp-tag=tag checkout JP modules with specific tag
+ --lbjp-common-tag=tag checkout lbjp-common modules with specific tag
+ --security-tag=tag checkout security modules with specific tag
+ --jobid-tag=tag checkout jobid modules with specific tag
Dependencies:
--with-EXTERNAL=PATH where to look for an external. Required externals
1.0.0-2
- fixes in etics' invocation of configure
+1.0.0-4
+- configure script update
+- compatibility with g++ 4.3.2
+
# : /cvs/glite/org.glite.jobid.api-cpp/project/version.properties,v 1.1 2009/01/16 08:48:52 zsustr Exp $
module.version=1.0.0
-module.age=2
+module.age=4
my $jobid_tag = '';
my $libdir = 'lib';
-my @nodes = qw/client server logger utils doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
cppunit => '/usr',
expat => '/usr',
globus => '/opt/globus',
- jglobus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
'mysql-devel' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
ant => '/usr',
jdk => '/usr',
libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
- 'jobid' => [qw/api-c api-cpp/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
+ 'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
- 'lb.client-java' => [ qw/ant:B jglobus jdk:B/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql:R mysql-server:R mysql-devel:B/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jpclient => 'jp.client',
);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
vdt=>[qw/globus globus_essentials/],
glite_location:=${GLITE_LOCATION}
glite_prefix:=${glite_location}
-nothrflavour=gcc32dbg
-thrflavour=gcc32dbgpthr
+host_cpu:=${shell uname -m}
+ifeq (${host_cpu},x86_64)
+ LDFLAGS:=-L${glite_prefix}/lib64 -L${glite_prefix}/lib
+ nothrflavour=gcc64dbg
+ thrflavour=gcc64dbgpthr
+else
+ LDFLAGS:=-L${glite_prefix}/lib
+ nothrflavour=gcc32dbg
+ thrflavour=gcc32dbgpthr
+endif
CC:=gcc
CXX:=g++
CXXFLAGS:=${CFLAGS}
-host_cpu:=${shell uname -m}
-ifeq (${host_cpu},x86_64)
- LDFLAGS:=-L${glite_prefix}/lib64
-else
- LDFLAGS:=-L${glite_prefix}/lib
-endif
-
COMPILE:=libtool --mode=compile ${CC} ${CFLAGS}
CXXCOMPILE:=libtool --mode=compile ${CXX} ${CXXFLAGS}
LINK:=libtool --mode=link ${CC} ${LDFLAGS}
LINKXX:=libtool --mode=link ${CXX} ${LDFLAGS}
INSTALL:=libtool --mode=install install
-EXAMPLES_SRC:=log_usertag_proxy.c job_log.c job_reg.c feed_shark.c notify.c query_ext.c query_seq_code.c stats.c abort_job.c change_acl.c stresslog.c flood_proxy.c dagids.c stress_context.c parse_eventsfile.c user_jobs.c job_status.c
+EXAMPLES_SRC:=log_usertag_proxy.c job_log.c job_reg.c feed_shark.c query_ext.c query_seq_code.c stats.c abort_job.c change_acl.c stresslog.c flood_proxy.c dagids.c stress_context.c parse_eventsfile.c user_jobs.c job_status.c
EXAMPLES:=${EXAMPLES_SRC:.c=}
# TODO: migrate them here from branch_RC31_3
#include <errno.h>
#include "glite/lb/events_parse.h"
+#ifdef BUILDING_LB_CLIENT
#include "consumer.h"
#include "producer.h"
+#else
+#include "glite/lb/consumer.h"
+#include "glite/lb/producer.h"
+#endif
#include "glite/jobid/cjobid.h"
#include "glite/lb/context-int.h"
#include <unistd.h>
#include "glite/jobid/cjobid.h"
+#ifdef BUILDING_LB_CLIENT
#include "producer.h"
+#else
+#include "glite/lb/producer.h"
+#endif
#include "glite/lb/authz.h"
void
#include <fcntl.h>
#include "glite/jobid/cjobid.h"
+#ifdef BUILDING_LB_CLIENT
#include "producer.h"
+#else
+#include "glite/lb/producer.h"
+#endif
#include "glite/lb/events.h"
extern char *optarg;
#include <errno.h>
#include <sysexits.h>
+#ifdef BUILDING_LB_CLIENT
#include "notification.h"
+#else
+#include "glite/lb/notification.h"
+#endif
static void usage(const char *);
static void printstat(edg_wll_JobStat, int);
#include <sys/types.h>
#include <sys/wait.h>
+#ifdef BUILDING_LB_CLIENT
#include "producer.h"
+#else
+#include "glite/lb/producer.h"
+#endif
#include "glite/jobid/cjobid.h"
static void slave();
print "send_log_ev" ff;
}
' $1
-
#include <errno.h>
#include "glite/lb/events_parse.h"
+#ifdef BUILDING_LB_CLIENT
#include "consumer.h"
+#else
+#include "glite/lb/consumer.h"
+#endif
#include "glite/jobid/cjobid.h"
#ifdef USE_CALLBACKS
#include "consumer_fake.h"
#include <fcntl.h>
#include "glite/jobid/cjobid.h"
+#ifdef BUILDING_LB_CLIENT
#include "producer.h"
+#else
+#include "glite/lb/producer.h"
+#endif
#include "glite/lb/events.h"
extern char *optarg;
#include <time.h>
#include "glite/lb/context-int.h"
+#ifdef BUILDING_LB_CLIENT
#include "consumer.h"
+#else
+#include "glite/lb/consumer.h"
+#endif
#include "glite/lb/xml_conversions.h"
#include "glite/lb/jobstat.h"
#ifdef BUILDING_LB_CLIENT
#include "producer.h"
#else
-#include "producer.h"
+#include "glite/lb/producer.h"
#endif
static struct option opts[] = {
#include <errno.h>
#include <fcntl.h>
+#ifdef BUILDING_LB_CLIENT
#include "producer.h"
+#else
+#include "glite/lb/producer.h"
+#endif
#include "glite/lb/events.h"
#include "glite/lb/events_parse.h"
#include <time.h>
#include "glite/jobid/cjobid.h"
+#ifdef BUILDING_LB_CLIENT
#include "consumer.h"
+#else
+#include "glite/lb/consumer.h"
+#endif
#define BUFF_LEN 1024
#define MAX_AND_CONDS 20
#include <errno.h>
#include "glite/jobid/cjobid.h"
+#ifdef BUILDING_LB_CLIENT
#include "consumer.h"
+#else
+#include "glite/lb/consumer.h"
+#endif
static struct option opts[] = {
#include <stdio.h>
+#include <stdlib.h>
#include <time.h>
#include <string.h>
+#ifdef BUILDING_LB_CLIENT
#include "statistics.h"
+#else
+#include "glite/lb/statistics.h"
+#endif
int main(int argc,char **argv)
edg_wll_InitContext(&ctx);
- if (argc != 2) {
- fprintf(stderr,"usage: %s <CE name>\n",argv[0]);
+ if (argc < 3) {
+ fprintf(stderr,"usage: %s CE major [minor]\n",argv[0]);
return 1;
}
to = now;
from = now - 60;
- if (edg_wll_StateRate(ctx,group,EDG_WLL_JOB_DONE,EDG_WLL_STAT_FAILED,
+ if (edg_wll_StateRate(ctx,group,atoi(argv[2]),argc >=4 ? atoi(argv[3]) : 0,
&from,&to,&val,&from_res,&to_res))
{
char *et,*ed;
#include <limits.h>
#include "glite/jobid/cjobid.h"
+#ifdef BUILDING_LB_CLIENT
#include "producer.h"
+#else
+#include "glite/lb/producer.h"
+#endif
#include "glite/lb/events.h"
char *outfile = "context_errors";
#include <fcntl.h>
#include "glite/jobid/cjobid.h"
+#ifdef BUILDING_LB_CLIENT
#include "producer.h"
+#else
+#include "glite/lb/producer.h"
+#endif
#include "glite/lb/events.h"
#define MAXMSGSIZE 10240
#include "glite/lb/context.h"
#include "glite/lb/xml_conversions.h"
+#ifdef BUILDING_LB_CLIENT
#include "consumer.h"
+#else
+#include "glite/lb/consumer.h"
+#endif
int use_proxy = 0;
- (from 3.2.2-1) Fix edg_wll_NotifDrop prototype (#34649).
- Notification pool implementation
+4.0.2-1
+- don't use hard-wired types for ACLs events but the ones generated automatically
+- change_acl code adapted to the new API using generated types
+- new options to the glite-lb-notify command
+
+4.0.3-1
+- Man page update
+- Minor fixes in example builds
+- stats extended for any job state
+
# $Header$
-module.version=4.0.1
+module.version=4.0.3
module.age=1
-DDATAGRID_EXTENSION ${LB_STANDALONE_FLAGS} \
-DBUILDING_LB_COMMON
-archlib:=lib
-host_cpu:=${shell uname -m}
-ifeq (${host_cpu},x86_64)
- archlib:=lib64
-endif
-
ifneq (${expat_prefix},/usr)
- EXPAT_LIBS:=-L${expat_prefix}/${archlib} -L${expat_prefix}/lib
+ EXPAT_LIBS:=-L${expat_prefix}/${libdir} -L${expat_prefix}/lib
endif
EXPAT_LIBS:=${EXPAT_LIBS} -lexpat
ifneq (${classads_prefix},/usr)
- classadslib := -L${classads_prefix}/${archlib} -L${classads_prefix}/lib
+ classadslib := -L${classads_prefix}/${libdir} -L${classads_prefix}/lib
endif
classadslib := ${classadslib} -lclassad
-LDFLAGS:=-L${stagedir}/${archlib} -L${stagedir}/lib \
+LDFLAGS:=-L${stagedir}/${libdir} -L${stagedir}/lib \
${COVERAGE_FLAGS}
EXT_LIBS:= ${EXPAT_LIBS} ${JOBID_LIB} ${TRIO_LIB} ${classadslib}
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
ant => '/usr',
jdk => '/usr',
libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
- 'lb.client-java' => [ qw/ant:B/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jpclient => 'jp.client',
);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
vdt=>[qw/globus globus_essentials/],
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
/* subset of HTTP codes we return */
#define HTTP_OK 200
+#define HTTP_ACCEPTED 202
#define HTTP_BADREQ 400
#define HTTP_UNAUTH 401
#define HTTP_NOTFOUND 404
#define EDG_WLL_PURGE_SERVER_DUMP 4
/** TODO: stream the dump info to the client */
#define EDG_WLL_PURGE_CLIENT_DUMP 8
+/** purge the jobs on background,
+ nifty for the throttled purging using target_runtime */
+#define EDG_WLL_PURGE_BACKGROUND 16
/* ! when addning new constant, add it also to common/xml_conversions.c ! */
/** Desired purge estimated time.
- Connection pool for notifications.
- Enable reading collection events in performance tests
+7.0.2-1
+- don't use hard-wired types for ACLs events but the ones generated automatically
+- check mandatory events fields even if they contain enum types
+- RSS time in context
+
+7.0.2-2
+- Makefile relies on the libdir variable
+- New configure script
+
+7.0.3-1
+- Support for background purge funcionality
+
# $Header$
-module.version=7.0.1
+module.version=7.0.3
module.age=1
}
else asprintf(&cflags,"%s","client_dump");
}
+ if (flags & EDG_WLL_PURGE_BACKGROUND) {
+ if (cflags) {
+ asprintf(&temp_cflags,"%s+%s",cflags,"background");
+ free(cflags);
+ cflags=temp_cflags;
+ }
+ else asprintf(&cflags,"%s","background");
+ }
if (!cflags) cflags = strdup("");
if (!strcmp(sflag,"list_jobs")) flags = flags | EDG_WLL_PURGE_LIST_JOBS;
if (!strcmp(sflag,"server_dump")) flags = flags | EDG_WLL_PURGE_SERVER_DUMP;
if (!strcmp(sflag,"client_dump")) flags = flags | EDG_WLL_PURGE_CLIENT_DUMP;
+ if (!strcmp(sflag,"background")) flags = flags | EDG_WLL_PURGE_BACKGROUND;
sflag = strtok_r(NULL, "+", &last);
}
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
ant => '/usr',
jdk => '/usr',
libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
- 'lb.client-java' => [ qw/ant:B/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jpclient => 'jp.client',
);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
vdt=>[qw/globus globus_essentials/],
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
glite_location:=${GLITE_LOCATION}
glite_prefix:=${glite_location}
-nothrflavour=gcc32dbg
-thrflavour=gcc32dbgpthr
+host_cpu:=${shell uname -m}
+ifeq (${host_cpu},x86_64)
+ LDFLAGS:=-L${glite_prefix}/lib64 -L${glite_prefix}/lib
+ nothrflavour=gcc64dbg
+ thrflavour=gcc64dbgpthr
+else
+ LDFLAGS:=-L${glite_prefix}/lib
+ nothrflavour=gcc32dbg
+ thrflavour=gcc32dbgpthr
+endif
CC:=gcc
CXX:=g++
CXXFLAGS:=${CFLAGS}
-host_cpu:=${shell uname -m}
-ifeq (${host_cpu},x86_64)
- LDFLAGS:=-L${glite_prefix}/lib64
-else
- LDFLAGS:=-L${glite_prefix}/lib
-endif
-
COMPILE:=libtool --mode=compile ${CC} ${CFLAGS}
CXXCOMPILE:=libtool --mode=compile ${CXX} ${CXXFLAGS}
LINK:=libtool --mode=link ${CC} ${LDFLAGS}
/*register*/
if (edg_wll_NotifNew(ctx, (edg_wll_QueryRec const* const*)conditions,
- -1, NULL, ¬if_id, &valid)) {
+ 0, -1, NULL, ¬if_id, &valid)) {
char *et,*ed;
edg_wll_Error(ctx,&et,&ed);
- TestPlan updates
- Updates in other sections
+1.0.3-1
+- Updates to the User Guide, Admin Guide and Test Plan Test Suite Documentation
+
# $Header$
-module.version=1.0.2
+module.version=1.0.3
module.age=1
\subsubsection{Standard installation}
-Install and configure OS and basic services (certificates, CAs, time synchronization, software repositories) according to the \htmladdnormallink{https://twiki.cern.ch/twiki/bin/view/LCG/GenericInstallGuide310}{https://twiki.cern.ch/twiki/bin/view/LCG/GenericInstallGuide310}. Then glite-LB metapackage from appropriate gLite software repository should be installed.
+Install and configure OS and basic services (certificates, CAs, time synchronization, software repositories) according to the \htmladdnormallink{https://twiki.cern.ch/twiki/bin/view/LCG/GenericInstallGuide320}{https://twiki.cern.ch/twiki/bin/view/LCG/GenericInstallGuide320}. Then glite-LB metapackage from appropriate gLite software repository should be installed.
YAIM configuration for \emph{glite-LB} node type
(\texttt{/opt/glite/yaim/bin/yaim -c -s site-info.def -n glite-LB})
\item \texttt{GLITE\_LB\_RTM\_DN} -- DN using to get notifications from \LB server\\
(default: \texttt{heppc24.hep.ph.ic.ac.uk} machine certificate)
\item \texttt{GLITE\_LB\_SUPER\_USERS} -- additional super-users (default: empty)
+\item \texttt{GLITE\_LB\_TYPE} -- type of the \LB service: server, proxy, both (default: server)
\end{itemize}
In addition to those, YAIM LB module uses following parameters:
\texttt{INSTALL\_ROOT}, \texttt{GLITE\_LOCATION\_VAR}, \texttt{GLITE\_USER}, \texttt{GLITE\_HOME\_DIR},\texttt{SITE\_EMAIL}.
-\subsubsection{Migration from previous versions}
+\subsubsection{Migration to a different OS version}
+\label{inst:OSmigration}
+Migration of a LB server to different machine is possible using
+following simple procedure (just file copy of the MySQL database). We
+tested the migration from SL4 32bit (mysql 4.1.22-2) to SL5 64bit
+(mysql 5.0.45-7).
-Although new LB server versions are backwards compatible with already
-stored data (without need for conversion) usually, it is necessary to recreate
-LB database from scratch or to change its database schema at some points.
-Database schema changes are not (currently) performed automatically
-during YAIM configuration since they take a lot time and temporary disk
-space.
+Steps:
+\begin{itemize}
+\item \emph{Prepare a new machine.} The new machine must get the same hostname
+ as the old machine had. It is a part of job ids stored in the database.
+\item \emph{Move data.} Just stop the MySQL server and move
+ \verb'/var/lib/mysql' data directory directly to the target machine.
+\item \emph{(optional) Restore file contexts.} You may need to restore file
+ contexts in case of enabled SELinux. For example, commands on the target
+ machine:
+ \begin{verbatim}
+ service mysqld stop
+ cd /var/lib
+ tar xf /tmp/lb.tar
+ restorecond -R mysql
+ service mysqld start
+ \end{verbatim}
+\end{itemize}
-There were two such notable upgrades:
+\subsubsection{Migration of database to support transactions}
+Started from version 1.4.3 of the \texttt{glite-lb-server}
+package, the \LB server introduced optional use of database
+transactions for \LB database updates in order to improve their
+performace. This feature is switched on by default when underlying
+MySQL database uses transactional InnoDB tables. For new
+installations, YAIM configuration process will create transactional
+database automatically. For existing LB server database the migration
+process is not automatically handled.
+
+Note: If you want to add transaction when migrating to \LB 2.0 skip
+this section and use \LB 2.0 migration procedure. The migration of
+database to support transactions is included in \LB 2.0 migration procedure.
+
+Steps:
\begin{itemize}
-\item Version 1.4.3 of \texttt{glite-lb-server} package. This \LB server version introduced optional use of database transactions for \LB database updates in order to improve their performace. This feature is switched on by default when underlaying MySQL database uses transactional InnoDB tables. For new installations, YAIM configuration process will create transactional database automatically. Existing databases can be converted using provided SQL command script:
-\begin{quote}
-\begin{verbatim}
+ \item \emph{Stop the server.} Stop both a \LB server and a MySQL
+ server. Making a fresh backup copy of database is a good idea.
+ \item \emph{Database conversion.} Use provided SQL script:
+ \begin{quote}
+ \begin{verbatim}
mysql -u lbserver lbserver20 \
</opt/glite/etc/glite-lb-dbsetup-migrate2transactions.sql
-\end{verbatim}
-\end{quote}
+ \end{verbatim}
+ \end{quote}
+ \item \emph{Start the servers.} MySQL and \LB. Check logs.
+\end{itemize}
-\item {\sloppy \LB version 2.0. This version features merged \LB server and proxy services using single database, pointers to purged jobs (``zombies'') and other improvements requiring database schema changes. Existing databases must be converted using provided shell script \verb'/opt/glite/etc/glite-lb-migrate_db2version20'. Use \verb'-s' parameter to convert database used by \LB server previously and \verb'-p' to convert database used by \LB proxy before. Optionally, unnecesary index can be dropped (this operation is likely to take a lot of time when applied to large database):
-\begin{quote}
-\verb'mysql -u lbserver lbserver20 -e "alter table events drop index host"'
-\end{quote}
-}
+
+\subsubsection{Migration to \LB 2.0}
+The migration process of existing \LB 1.x database to the \LB 2.0 is
+not handled automatically. The database schema change is required due
+to support of merged \LB server and proxy services using single
+database, pointers to purged jobs (``zombies'') and other
+improvements.
+
+Warning: There are two types of \LB database based on the fact that
+you can have a \LB server or \LB proxy. For more information about \LB
+proxy please see \ref{inst:LBproxy}.
+
+Steps:
+\begin{itemize}
+ \item \emph{Stop the server and upgrade to \LB 2.0.} Stop both a \LB
+ server and a MySQL server. Making a fresh backup copy of database is
+ a good idea. Do the upgrade to \LB 2.0, optionally you can move the
+ database to new OS in this step (see \ref{inst:OSmigration}).
+ \item \emph{Before migration some database tuning is
+ required.} Especially parameter \texttt{innodb\_buffer\_pool\_size}
+ needs to be increased, to support bigger transactions. For details
+ see Section~\ref{inst:db_tuning}.
+ \item \emph{Database type.} Check if you have a \LB server or a \LB
+ proxy. In the following step you must properly set the switch
+ \verb'-s' (server) or \verb'-p' (proxy).
+ \item \emph{Database conversion.} Use provided shell script (with the proper
+ switch from previous step):
+ \begin{quote}
+ \verb'/opt/glite/etc/glite-lb-migrate_db2version20 {-s|-p}'
+ \end{quote}
+ \item \emph{(Optional) Drop unnecesary index.} This operation is
+ likely to take a lot of time when applied to large database.
+ \begin{quote}
+ \verb'mysql -u lbserver lbserver20 -e "alter table events drop index host"'
+ \end{quote}
+ \item \emph{(Optional) Check the \LB indexes.} You may need to add
+ LastUpdateTime for monitoring services. See \ref{maintain:index}.
+ \item \emph{Start the servers.} MySQL and \LB. Check logs.
\end{itemize}
+This migration procedure is tested in following environment: LB 1.9.x
+from RPMs SL4 32bit (mysql 4.1.22-2), LB server node, migration to SL5
+64bit (mysql 5.0.45-7) LB2.0 RPM.
+
%\TODO{automated conversion through YAIM ?}
\subsubsection{Index configuration}
(32bit OS/MySQL versions limit this to approx. 2GB due to address space
constraints).
-\item \texttt{innodb\_flush\_logs\_at\_trx\_commit} -- frequency of flushing to disk.
+\item \texttt{innodb\_flush\_log\_at\_trx\_commit} -- frequency of flushing to disk.
Recommended values include:
\begin{itemize}
\item 1 (default) -- flush at each write transaction commit; relatively
\end{itemize}
\subsection{\LB proxy}
+\label{inst:LBproxy}
+TODO: Describe LB Proxy migration here.
+
All necessary configuration of standalone \LB proxy is done by YAIM,
previous \LB server section applies to merged server+proxy setups (\LBnew only).
\section{Performance and stress tests}
\label{s:perftests}
-\TODO{Michal: nejak sesynchronizovat s webem}
+%\TODO{Michal: nejak sesynchronizovat s webem}
In this section we describe only the general idea of performance and stress tests of \LB components.
This work is in progress and all necessary information is updated at the wiki page:
\item All tests use sequence of events for typical jobs (small job, big job,
small DAG, big DAG) prepared beforehand. These events are stored in files in
ULM format in CVS (see \texttt{org.glite.lb.common/examples}).
-\TODO{new strategy? use real jobs...}
+%\TODO{new strategy? use real jobs...}
\item Events are generated by \verb'glite-lb-stresslog' program, which reads
ULM text of events for particular test job and logs the event sequence directly
\item Measure event throughput by
\[ \mbox{event\_throughput} = \frac{1}{\mbox{time\_delivered} - \mbox{time\_arrived}} \]
-\TODO{measure job throughput for event patterns of typical jobs or deduce
-job throughput from throughput of selected types of events?}
+%\TODO{measure job throughput for event patterns of typical jobs or deduce
+%job throughput from throughput of selected types of events?}
\item Publish the results on the web.
- \item \TODO{ETICS test framework is used to run performance and stress tests automatically.}
+% \item \TODO{ETICS test framework is used to run performance and stress tests automatically.}
\end{itemize}
% vztahuje se k cemu?
1) stresslog sends events to interlogger using the UNIX
domain socket and logd->interlogger protocol, events are
stored in files (stresslog behaves like logd)
- TODO: pro toto neni funkce v producerske knihovne
+% TODO: pro toto neni funkce v producerske knihovne
2) interlogger reads events from event files created by
stresslog (by recovery thread)
3) stresslog stores events to files and every n-th
-\subsubsection{Non-simple job states}
-\TODO{dags, collections, their states and states (and histogram) of their children/subjobs, ...}
+%\subsubsection{Non-simple job states}
+%\TODO{dags, collections, their states and states (and histogram) of their children/subjobs, ...}
-\subsection{Query tests}
-\TODO{query all my jobs, query one job, query with some structured conditions, some other queries that caused problems in the past, ...}
+%\subsection{Query tests}
+%\TODO{query all my jobs, query one job, query with some structured conditions, some other queries that caused problems in the past, ...}
\subsection{LB server and proxy combined test}
\subsection{WS interface}
-\TODO{fila, valtri: tests using Java example}
+%\TODO{fila, valtri: tests using Java example}
\req\ \path{glite-lb-bkserverd} running, events from \ref{normal} logged
\what\ retrieve both events and job states with the \LB\ WS interface
-\subsection{HTML interface}
-\TODO{fila: query tests using wget/curl}
+%\subsection{HTML interface}
+%\TODO{fila: query tests using wget/curl}
-\subsection{Change ACL}
-\TODO{kouril: to be added later with new authz schema}
+%\subsection{Change ACL}
+%\TODO{kouril: to be added later with new authz schema}
\subsection{Server purge}
-\TODO{ljocha, valtri: ozivit skript i text}
\textbf{WARNING: This test is destructive, it destroys ALL data in an
existing \LB\ database.}
\input{definitions}
\title{Logging and Bookkeeping}
-\Subtitle{Test Plan}
+\Subtitle{Test Plan Test Suite Documentation}
\author{CESNET EGEE III JRA1 and SA3 team}
\DocIdentifier{glite-lb-doc-tp-\version}
\DeliverableId{}
[ -f $HOME/.glite.conf ] && . $HOME/.glite.conf
+LL_PIDFILE=${LL_PIDFILE:-$GLITE_LOCATION_VAR/glite-lb-logd.pid}
+IL_PIDFILE=${IL_PIDFILE:-$GLITE_LOCATION_VAR/glite-lb-interlogd.pid}
+
unset creds port
start()
{
+ case "$GLITE_LB_TYPE" in
+ proxy)
+ echo 'Not starting logd and interlogger, proxy only instance (GLITE_LB_TYPE=proxy).'
+ return 0
+ esac
+
if test -z "$GLITE_USER" ;then
echo 'Error: GLITE_USER is not set'
echo FAILED
echo -n Starting glite-lb-logd ...
(cd /tmp && ls -f /tmp |grep ^dglogd_sock_ |xargs rm -f)
su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-logd \
- $creds $port $sock $fprefix" && echo " done" || echo " FAILED"
+ -i $LL_PIDFILE $creds $port $sock $fprefix" && echo " done" || echo " FAILED"
echo -n Starting glite-lb-interlogd ...
su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-interlogd \
- $creds $sock $fprefix" && echo " done" || echo " FAILED"
+ -i $IL_PIDFILE $creds $sock $fprefix" && echo " done" || echo " FAILED"
+}
+
+killwait()
+{
+ pidfile=$1
+ if [ -f $pidfile ] && pid=`cat $pidfile` && kill $pid 2>/dev/null; then
+ cnt=0
+ while ps p $pid 2>/dev/null >/dev/null; do
+ sleep 1;
+ cnt=`expr $cnt + 1`
+ if [ $cnt = 120 ]; then break; fi
+ done
+ if [ $cnt = 100 ]; then echo " can't stop"
+ else echo " done"; fi
+ else
+ echo " not running"
+ fi
}
stop()
{
echo -n Stopping glite-lb-logd ...
- killall glite-lb-logd
- echo " done"
+ killwait $LL_PIDFILE
echo -n Stopping glite-lb-interlogd ...
- killall glite-lb-interlogd
- echo " done"
+ killwait $IL_PIDFILE
}
status()
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
gsoap => '/usr',
mysql => '/usr',
'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
ant => '/usr',
jdk => '/usr',
libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
if ($help) { usage(); exit 0; }
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
- 'lb.client-java' => [ qw/ant:B/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql:R mysql-devel:B/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jpclient => 'jp.client',
);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
vdt=>[qw/globus globus_essentials/],
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
Don't run as daemon (do not fork and put itself into background).
.TP
+.BI \-i " FILE" "\fR,\fP --pidfile " FILE
+Store process id into this file rather than default /var/glite/glite-lb-[notif]-interlogd.pid
+
+.TP
.BI \-f " PREFIX" "\fR,\fP --file-prefix " PREFIX
.I PREFIX
is path prefix of the event files.
.I /tmp/interlogger.sock
Default name of local socket.
.TP
-.I /tmp/dglogd.log*
+.I /var/glite/log/dglogd.log*
Default location of event files.
-.I /tmp/dglogd.log*.ctl
+.I /var/glite/log/dglogd.log*.ctl
Interlogger's control files keeping the information on status of
the corresponding event file wrt. delivery to the target server.
The value has to be same as used in the cooperating glite-lb-interlogd.
.TP
+.BI \-i " FILE" "\fR,\fP --pidfile " FILE
+Store pid into
+.I FILE\fR.\fP
+Defaults to /var/glite/glite-lb-logd.pid.
+
+.TP
.B "-V\fR,\fP --version"
Print version and exit.
Default name of local socket.
.TP
-.I /tmp/dglogd.log*
+.I /var/glite/log/dglogd.log*
Default location of the event storage files.
.TP
No configuration files needed.
2.0.2-1
- implemented multi-file event store, avoiding ever-growing files
in the case of heavy traffic notifications
+
+2.0.3-1
+- Fixed handling messages with destination not set
+- Additional logging output
+
+2.0.4-1
+- Man page update
+
# $Header$
-module.version=2.0.2
+module.version=2.0.4
module.age=1
#include <errno.h>
#include <string.h>
#include <unistd.h>
+#include <stdio.h>
#include "glite/jobid/cjobid.h"
#include "glite/lb/context.h"
int ret;
if(killflg)
- exit(0);
+ return (0);
clear_error();
if((ret = input_queue_get(&msg, &offset, INPUT_TIMEOUT)) < 0)
#include <signal.h>
#include <pthread.h>
#include <errno.h>
+#include <assert.h>
#include "interlogd.h"
#include "glite/lb/log_proto.h"
#if defined(IL_NOTIFICATIONS)
#define DEFAULT_PREFIX "/tmp/notif_events"
#define DEFAULT_SOCKET "/tmp/notif_interlogger.sock"
+#define DEFAULT_PIDFILE "/var/glite/glite-lb-notif-interlogd.pid"
#else
#define DEFAULT_PREFIX EDG_WLL_LOG_PREFIX_DEFAULT
#define DEFAULT_SOCKET "/tmp/interlogger.sock"
+#define DEFAULT_PIDFILE "/var/glite/glite-lb-interlogd.pid"
#endif
+
/* The name the program was run with, stripped of any leading path. */
char *program_name;
int killflg = 0;
time_t key_mtime = 0, cert_mtime = 0;
+static char *pidfile = DEFAULT_PIDFILE;
+
static void usage (int status)
{
printf("%s - \n"
" -k, --key <file> location of server private key\n"
" -C, --CAdir <dir> directory containing CA certificates\n"
" -b, --book send events to bookkeeping server only\n"
+ " -i, --pidfile pid file\n"
" -l, --log-server <host> specify address of log server\n"
" -s, --socket <path> non-default path of local socket\n"
" -L, --lazy [<timeout>] be lazy when closing connections to servers (default, timeout==0 means turn lazy off)\n"
{"key", required_argument, 0, 'k'},
{"book", no_argument, 0, 'b'},
{"CAdir", required_argument, 0, 'C'},
+ {"pidfile", required_argument, 0, 'i'},
{"log-server", required_argument, 0, 'l'},
{"socket", required_argument, 0, 's'},
{"lazy", optional_argument, 0, 'L'},
"k:" /* key */
"C:" /* CA dir */
"b" /* only bookeeping */
+ "i:" /* pidfile*/
"l:" /* log server */
"d" /* debug */
"p" /* parallel */
log_server = strdup(optarg);
break;
+ case 'i':
+ pidfile = strdup(optarg);
+ break;
+
case 'C':
CAcert_dir = strdup(optarg);
break;
char *p;
edg_wll_GssStatus gss_stat;
int ret;
+ FILE *pidf;
program_name = argv[0];
exit(EXIT_FAILURE);
}
+/* just try it before deamonizing to be able to complain aloud */
+ if (!(pidf = fopen(pidfile,"w"))) {
+ perror(pidfile);
+ exit(EXIT_FAILURE);
+ }
+ fclose(pidf);
+
if(!debug &&
(daemon(0,0) < 0)) {
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "Failed to daemonize itself: %s, exiting.",
exit(EXIT_FAILURE);
}
+ pidf = fopen(pidfile,"w"); assert(pidf); /* XXX */
+ fprintf(pidf,"%d\n",getpid());
+ fclose(pidf);
+
#ifdef LB_PERF
/* this must be called after installing signal handlers */
glite_wll_perftest_init(NULL, /* host */
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "Fatal error: %s", error_get_msg());
if (killflg) {
input_queue_detach();
+ unlink(pidfile);
exit(EXIT_FAILURE);
}
}
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_INFO, "Done!");
input_queue_detach();
+ unlink(pidfile);
exit (0);
}
#define INPUT_TIMEOUT (1)
#define EXIT_TIMEOUT (20)
#else
-#define INPUT_TIMEOUT (60)
+#define INPUT_TIMEOUT (5)
#define EXIT_TIMEOUT (1*60)
#endif
+#define RECOVER_TIMEOUT (60)
typedef struct cred_handle {
edg_wll_GssCred creds;
#include <unistd.h>
#include <string.h>
#include <getopt.h>
+#include <assert.h>
#include <errno.h>
#include "glite/lbu/log.h"
#include "glite/lb/lb_perftest.h"
#endif
+#define DEFAULT_PIDFILE "/var/glite/glite-lb-logd.pid"
+
static const char rcsid[] = "@(#)$Id$";
static int debug = 0;
static int port = EDG_WLL_LOG_PORT_DEFAULT;
static char *prefix = EDG_WLL_LOG_PREFIX_DEFAULT;
+static char *pidfile = DEFAULT_PIDFILE;
static char *cert_file = NULL;
static char *key_file = NULL;
static char *CAcert_dir = NULL;
{ "cert", required_argument, 0, 'c' },
{ "key", required_argument, 0, 'k' },
{ "CAdir", required_argument, 0, 'C' },
+ { "pidfile",required_argument, 0, 'i' },
{ "socket",required_argument, 0, 's' },
{ "noAuth", no_argument, 0, 'x' },
{ "noIPC", no_argument, 0, 'y' },
"-k, --key <file> location of server private key\n"
"-C, --CAdir <dir> directory containing CA certificates\n"
"-s, --socket <dir> interlogger's socket to send messages to\n"
+ "-i, --pidfile <file> pid file\n"
"--noAuth do not check caller's identity\n"
"--noIPC do not send messages to inter-logger\n"
"--noParse do not parse messages for correctness\n",
close(confirm_sock);
unlink(confirm_sock_name);
}
+ unlink(pidfile);
exit(1);
break;
default: break;
int ret;
int childpid;
int opt;
+ FILE *pidf;
int listener_fd;
int client_fd;
"k:" /* key */
"C:" /* CA dir */
"s:" /* socket */
+ "i:" /* pidfile */
"x" /* noAuth */
"y" /* noIPC */
"z", /* noParse */
case 'k': key_file = optarg; break;
case 'C': CAcert_dir = optarg; break;
case 's': socket_path = optarg; break;
+ case 'i': pidfile = optarg; break;
case 'x': noAuth = 1; break;
case 'y': noIPC = 1; break;
case 'z': noParse = 1; break;
client_addr_len = sizeof(client_addr);
bzero((char *) &client_addr, client_addr_len);
+/* just try it before deamonizing to be able to complain aloud */
+ if (!(pidf = fopen(pidfile,"w"))) {
+ perror(pidfile);
+ exit(-1);
+ }
+ fclose(pidf);
+
+
/* daemonize */
if (debug) {
glite_common_log(LOG_CATEGORY_CONTROL,LOG_PRIORITY_INFO,"Running as daemon... [no]\n");
}
}
+ pidf = fopen(pidfile,"w"); assert(pidf); /* XXX */
+ fprintf(pidf,"%d\n",getpid());
+ fclose(pidf);
+
/*
* Main loop
*/
new_creds->name);
}
}
- sleep(INPUT_TIMEOUT);
+ sleep(RECOVER_TIMEOUT);
}
}
DEBUG:=-g -O0 -Wall
GRIDSITE_CFLAGS = -I${gridsite_prefix}/include `xml2-config --cflags`
-GRIDSITE_LIBS = -L${gridsite_prefix}/${archlib} -L${gridsite_prefix}/lib -lgridsite_globus `xml2-config --libs`
+GRIDSITE_LIBS = -L${gridsite_prefix}/${libdir} -L${gridsite_prefix}/lib -lgridsite_globus `xml2-config --libs`
LCAS_CFLAGS=-I${lcas_prefix}/include
LOG4C_CFLAGS=-I${log4c_prefix}/include
gsoap_bin_prefix:=${shell if [ -x ${gsoap_prefix}/bin/soapcpp2 ]; then echo ${gsoap_prefix}/bin; else echo ${gsoap_prefix}; fi }
-archlib:=lib
-host_cpu:=${shell uname -m}
-ifeq (${host_cpu},x86_64)
- archlib:=lib64
-endif
-
ifneq (${expat_prefix},/usr)
expatlib := -L${expat_prefix}/lib
endif
ifeq (${nothrflavour},gcc32dbg)
vomsflavour :=
endif
-VOMS_LIBS:=-L${voms_prefix}/${archlib} -lvomsapi${vomsflavour}
-LCAS_LIBS:=-L${lcas_prefix}/${archlib} -llcas
+VOMS_LIBS:=-L${voms_prefix}/${libdir} -lvomsapi${vomsflavour}
+LCAS_LIBS:=-L${lcas_prefix}/${libdir} -llcas
LOG4C_LIBS:=-L${log4c_prefix}/lib -llog4c
#EXT_LIBS:= \
# -lvomsc${vomsflavour} \
ifneq (${classads_prefix},/usr)
- classadslib := -L${classads_prefix}/${archlib} -L${classads_prefix}/lib
+ CLASSADS_LIBS := -L${classads_prefix}/${libdir} -L${classads_prefix}/lib
endif
+CLASSADS_LIBS := ${CLASSADS_LIBS} -lclassad
-classadslib := ${classadslib} -lclassad
+ifneq (${cares_prefix},/usr)
+ CARES_LIBS := -L${cares_prefix}/${libdir} -L${cares_prefix}/lib
+endif
+CARES_LIBS := ${CARES_LIBS} -lcares
EXT_LIBS:= \
- -lz -lcares\
+ -lz \
${GRIDSITE_LIBS} \
- ${classadslib} \
+ ${CLASSADS_LIBS} \
+ ${CARES_LIBS} \
${LCAS_LIBS} \
${VOMS_LIBS} \
${LOG4C_LIBS}
${INSTALL} -m 755 ${LCAS_PLUGIN_LIB} ${PREFIX}/lib/modules
ln -sf liblcas_lb.so ${PREFIX}/lib/modules/lcas_lb.mod
- for f in dbsetup.sql dbsetup-migrate2transactions.sql index.conf.template; do \
+ for f in dbsetup.sql index.conf.template; do \
${INSTALL} -m 644 ${top_srcdir}/config/"glite-lb-$$f" ${PREFIX}/etc; \
done
+ ${INSTALL} -m 755 ${top_srcdir}/config/glite-lb-migrate_db2version20 ${PREFIX}/etc
${INSTALL} -m 755 ${top_srcdir}/config/startup ${PREFIX}/etc/init.d/glite-lb-bkserverd
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Copyright (c) 2004 on behalf of the EU EGEE Project:
- The European Organization for Nuclear Research (CERN),
- Istituto Nazionale di Fisica Nucleare (INFN), Italy
- Datamat Spa, Italy
- Centre National de la Recherche Scientifique (CNRS), France
- CS Systeme d'Information (CSSI), France
- Royal Institute of Technology, Center for Parallel Computers (KTH-PDC), Sweden
- Universiteit van Amsterdam (UvA), Netherlands
- University of Helsinki (UH.HIP), Finland
- University of Bergen (UiB), Norway
- Council for the Central Laboratory of the Research Councils (CCLRC), United Kingdom
-
- Build file for the GLite LB Client module
-
- Authors: Ales Krenek <ljocha@ics.muni.cz>
- Version info: $Id$
- Release: $Name$
-
- Revision history:
- $Log$
- Revision 1.5 2005/05/26 15:13:55 zurek
- inserted module.build.file
-
- Revision 1.4.2.1 2005/02/12 01:39:21 glbuild
- Changed start time
-
- Revision 1.4 2004/10/18 19:16:09 zsalvet
- RPM descriptions
-
- Revision 1.3 2004/08/05 15:24:32 dimeglio
- Changed default target from compile to dist
-
- Revision 1.2 2004/07/07 12:07:41 akrenek
- - use nonthr common library
- - build without VOMS & GACL
-
- Revision 1.3 2004/07/06 17:45:30 flammer
- Update of classpath definitions, targets & configure file.
-
- Revision 1.2 2004/06/23 00:29:33 dimeglio
- Added standard comments and handling of support files
-
--->
-
-<project name="server" default="dist">
-
- <!-- =========================================
- Builds the GLite LB Client Module
- ========================================= -->
-
- <!-- =========================================
- Import properties (order is important)
- ========================================= -->
-
- <!-- import baseline & user properties -->
- <import file="../org.glite/project/baseline.properties.xml" />
-
- <!-- import component build properties,
- component properties &
- component common properties -->
- <import file="./project/properties.xml"/>
-
- <!-- import subsystem build properties,
- subsystem properties &
- subsystem common properties -->
- <import file="${subsystem.properties.file}"/>
-
- <!-- import global build properties &
- global properties -->
- <import file="${global.properties.file}" />
-
- <!-- =========================================
- Load dependency property files (order is important)
- ========================================= -->
- <property file="${user.dependencies.file}"/>
- <property file="${component.dependencies.file}" />
- <property file="${subsystem.dependencies.file}" />
- <property file="${global.dependencies.file}"/>
-
- <!-- =========================================
- Load configure options (order is important)
- ========================================= -->
- <import file="${global.configure.options.file}"/>
- <import file="${component.configure.options.file}"/>
-
- <!-- =========================================
- Import task definitions (order is important)
- ========================================= -->
- <import file="${subsystem.taskdefs.file}" />
- <import file="${global.taskdefs.file}" />
-
- <!-- =========================================
- Load common targets
- ========================================= -->
- <import file="${global.targets-simple_make.file}" />
-
- <!-- =========================================
- Load version file
- ========================================= -->
- <property file="${module.version.file}"/>
- <property file="${module.build.file}"/>
-
- <!-- ==============================================
- Local private targets
- ============================================== -->
-
- <target name="localinit"
- description="Module specific initialization tasks">
- <!-- Copy support files from the subsystem project to the component project-->
- <copy toDir="${module.project.dir}">
- <fileset dir="${subsystem.project.dir}">
- <include name="at3" />
- <include name="*.T" />
- <include name="*.pm" />
- </fileset>
- </copy>
- <antcall target="lbmakefiles" />
- </target>
-
- <target name="localcompile"
- description="Module specific compile tasks">
- </target>
-
- <target name="localclean"
- description="Module specific cleaning tasks">
- <delete>
- <fileset dir="${module.project.dir}">
- <include name="at3" />
- <include name="*.T" />
- <include name="*.pm" />
- </fileset>
- </delete>
- </target>
-
- <!-- =========================================
- RPM settings
- ========================================= -->
-
- <property name="build.package.summary" value="L&B bookkeeping server" />
- <property name="build.package.description" value=" The daemon
-installed at the Logging & Bookkeeping (L&B) server
-machine.
It is responsible for accepting events from locallogger,
-storing them in RDBMS,
and performing queries on client requests
-(job status, job log etc.).
Also includes purge utilities
-to remove (and optionally archive) inactive
data from
-the database and to change database index configuration." />
-
-</project>
+++ /dev/null
-alter table jobs engine=innodb;
-alter table users engine=innodb;
-alter table events engine=innodb;
-alter table short_fields engine=innodb;
-alter table long_fields engine=innodb;
-alter table states engine=innodb;
-alter table status_tags engine=innodb;
-alter table server_state engine=innodb;
-alter table acls engine=innodb;
-alter table notif_registrations engine=innodb;
-alter table notif_jobs engine=innodb;
SERVER=""
PROXY=""
-#default DB name (may be overriden by -d option)
-DB_NAME="lbserver20"
-
while getopts "spd:h" OPTION
do
case "$OPTION" in
fi
+# default DB name (for server or proxy, overriden by -d option)
+if [ -z "$DB_NAME" ]; then
+ if [ "$SERVER" ]; then
+ DB_NAME="lbserver20"
+ else
+ DB_NAME="lbproxy"
+ fi
+fi
+
+
+# convert for transactions (if needed and very old DB)
+for table in jobs users events short_fields long_fields states status_tags server_state acls notif_registrations notif_jobs; do
+ echo "SHOW CREATE TABLE $table;" | mysql -u lbserver $DB_NAME | grep -i ENGINE | grep -i InnoDB >/dev/null
+ if [ $? != 0 ]; then
+ echo "ALTER TABLE $table ENGINE=InnoDB" | mysql -u lbserver $DB_NAME
+ fi
+done
+
+
# add new columns
mysql -u lbserver $DB_NAME -e "ALTER TABLE jobs ADD proxy bool not null"
mysql -u lbserver $DB_NAME -e "ALTER TABLE jobs ADD server bool not null"
[ -n "$GLITE_JP_IMPORTER_PIDFILE" ] && jp_importer_pidfile=$GLITE_JP_IMPORTER_PIDFILE ||
jp_importer_pidfile=$GLITE_LOCATION_VAR/glite-jp-importer.pid
+GLITE_LB_TYPE=${GLITE_LB_TYPE:-'server'} # server, proxy, both
+GLITE_LB_PROXY_SOCK=${GLITE_LB_PROXY_SOCK:-'/tmp/glite-lbproxy-ilog.sock'}
+GLITE_LB_PROXY_FPREFIX=${GLITE_LB_PROXY_FPREFIX:-'/tmp/glite-lbproxy-ilog_events'}
+
+IL_PIDFILE=$GLITE_LOCATION_VAR/glite-lb-interlogd.pid
+NOTIF_IL_PIDFILE=$GLITE_LOCATION_VAR/glite-lb-notif-interlogd.pid
+
unset creds port
start()
GLITE_LB_NOTIF_OTHER_OPTIONS="$GLITE_LB_NOTIF_OTHER_OPTIONS -v -d >> $GLITE_LOCATION_VAR/notif-il.log 2>&1 &"
fi
fi
+ case "$GLITE_LB_TYPE" in
+ proxy)
+ proxy="-P --proxy-il-sock $GLITE_LB_PROXY_SOCK --proxy-il-fprefix $GLITE_LB_PROXY_FPREFIX"
+ ;;
+ both)
+ proxy="-B --proxy-il-sock $GLITE_LB_PROXY_SOCK --proxy-il-fprefix $GLITE_LB_PROXY_FPREFIX"
+ ;;
+ *)
+ proxy=''
+ ;;
+ esac
echo -n Starting glite-lb-bkserverd ...
su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-bkserverd \
--notif-il-sock=$GLITE_LB_NOTIF_SOCK \
--notif-il-fprefix=$GLITE_LB_NOTIF_FPREFIX \
- $super $creds -i $pidfile $port $wport $dumpdir $purgedir $lbreg_maildir\
+ $super $creds -i $pidfile $port $wport $dumpdir $purgedir $lbreg_maildir $proxy\
$GLITE_LB_SERVER_OTHER_OPTIONS" \
&& echo " done" || echo " FAILED"
echo -n Starting glite-lb-notif-interlogd ...
su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-notif-interlogd \
-f $GLITE_LB_NOTIF_FPREFIX -s $GLITE_LB_NOTIF_SOCK \
- -M 10485760 \
+ -i $NOTIF_IL_PIDFILE -M 10485760 \
$creds $GLITE_LB_NOTIF_OTHER_OPTIONS" && echo " done" || echo " FAILED"
else
echo Warning: glite-lb-notif-interlogd not installed, LB notifications will not work
$jpps $creds $GLITE_JP_IMPORTER_ARGS" \
&& echo " done" || echo " FAILED"
fi
+
+ if test x"$GLITE_LB_TYPE" = x"proxy" -o x"$GLITE_LB_TYPE" = x"both" ; then
+ if test -x $GLITE_LOCATION/bin/glite-lb-notif-interlogd; then
+ echo -n Starting glite-lb-interlogd for proxy ...
+ su - $GLITE_USER -c "$GLITE_LOCATION/bin/glite-lb-interlogd \
+ -f $GLITE_LB_PROXY_FPREFIX -s $GLITE_LB_PROXY_SOCK \
+ -i $IL_PIDFILE \
+ $creds $GLITE_LB_PREFIX_OTHER_OPTIONS" && echo " done" || echo " FAILED"
+ else
+ echo Warning: glite-lb-interlogd not installed, logging to LB proxy will not work
+ fi
+ fi
}
stop_daemon()
{
name="$1"
- pidfile="$2"
+ local pidfile="$2"
if [ -f "$pidfile" ]; then
pid=`cat "$pidfile"`
stop()
{
- echo -n Stopping glite-lb-notif-interlogd ...
- killall glite-lb-notif-interlogd
- echo done
+ LC_ALL=C
+
+ stop_daemon glite-lb-notif-interlogd $NOTIF_IL_PIDFILE
+ echo " done"
stop_daemon "glite-lb-bkserverd" $pidfile
if test x"$GLITE_LB_EXPORT_ENABLED" = x"true"; then
stop_daemon "glite-jp-importer" $jp_importer_pidfile
fi
+
+ if test -f $IL_PIDFILE; then
+ stop_daemon glite-lb-interlogd $IL_PIDFILE
+ echo "done"
+ else
+ echo "glite-lb-interlogd for proxy not running"
+ fi
}
status()
{
retval=0
-
LC_ALL=C
+
if netstat -an --unix | grep "^unix .* LISTEN.* ${GLITE_LB_NOTIF_SOCK}$" >/dev/null 2>&1 ;then
echo glite-lb-notif-interlogd running
else
retval=1
fi
+ if netstat -an --unix | grep "^unix .* LISTEN.* ${GLITE_LB_PROXY_SOCK}$" >/dev/null 2>&1 ;then
+ echo glite-lb-interlogd for proxy running
+ else
+ echo glite-lb-interlogd for proxy not running
+ retval=1
+ fi
+
status_daemon "glite-lb-bkserverd" "$pidfile" || retval=1
if test x"$GLITE_LB_EXPORT_ENABLED" = x"true"; then
status_daemon "glite-jp-importer" "$jp_importer_pidfile" || retval=1
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
ant => '/usr',
jdk => '/usr',
libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
- 'lb.client-java' => [ qw/ant:B/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jpclient => 'jp.client',
);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
vdt=>[qw/globus globus_essentials/],
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
- Notif IL installation removed from makefile
- configure script updated
+2.0.2-1
+- RSS feed implementation
+- Fixed notification expiry
+- Fixes to ACL handling
+- Fixed authorization in simple interface
+- Support for JDL changes in JDL-based notifications
+- Initial implementation of WS notifications
+
+2.0.2-2
+- build wrt. voms 1.9.8 (globus-less)
+
+2.0.2-3
+- Makefile relies on the libdir variable
+- New configure script
+
+2.0.3-1
+- Updated migration script
+- Memleak fixes
+- Support for background purge funcionality
+
+2.0.4-1
+- Consider arch libdir when linking c-ares
+- Checking the c-ares version, fix for c-ares >= 1.5.0.
+
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
- Copyright (c) 2004 on behalf of the EU EGEE Project:
- The European Organization for Nuclear Research (CERN),
- Istituto Nazionale di Fisica Nucleare (INFN), Italy
- Datamat Spa, Italy
- Centre National de la Recherche Scientifique (CNRS), France
- CS Systeme d'Information (CSSI), France
- Royal Institute of Technology, Center for Parallel Computers (KTH-PDC), Sweden
- Universiteit van Amsterdam (UvA), Netherlands
- University of Helsinki (UH.HIP), Finland
- University of Bergen (UiB), Norway
- Council for the Central Laboratory of the Research Councils (CCLRC), United Kingdom
-
- Configuration options for the GLite LB Client module
-
- Authors: Ales Krenek <ljocha@ics.muni.cz>
- Version info: $Id$
- Release: $Name$
-
- Revision history:
- $Log$
- Revision 1.11 2006/03/17 11:47:02 zsalvet
- Adapt RGMA export file format and file handling to lcg-mon-job-status
- use. Socket notification code is still available and is nonblocking now.
- C ClassAd API is used to retrieve VO from JDL.
-
- Revision 1.10 2006/03/15 18:13:51 akrenek
- cares
-
- Revision 1.9 2006/03/15 18:12:21 akrenek
- merge 1.5
-
- Revision 1.8.4.2 2006/02/20 09:14:30 zsalvet
- Revert unfinished changes committed by mistake.
-
- Revision 1.8 2005/09/19 15:24:20 akrenek
- "The gigantic merge"; from release 1.4 branch to HEAD
-
- Revision 1.7.2.1 2005/08/09 15:02:10 jskrabal
- - build with broken gsoap 2.7.0 repository package
-
- Revision 1.7 2005/08/03 09:30:28 akrenek
- Merged the release 1.0 branch
-
- Revision 1.6 2005/01/21 11:27:44 jpospi
- completely remove gridsite.prefix and voms.prefix
-
- Revision 1.5 2005/01/20 11:43:00 jpospi
- handle correctly gridsite_prefix and voms_prefix
-
- Revision 1.4.2.1 2005/05/19 13:41:22 akrenek
- fix build with mysql 4.1.x
-
- Revision 1.4 2004/10/15 11:03:03 jskrabal
- - merge fixes
-
- Revision 1.3 2004/10/06 08:14:36 dkouril
- Support for VOMS and GACL (gridsite) from SCM CVS
- - legacy names of GACL routines changed to new ones, which also prevents from
- conflicts with a few older routine names being badly redefined to new ones
- - VOMS and GACL are still commented out in the Makefile until a correct way
- of defining dependencies is negotiated.
-
- Revision 1.2.2.1 2004/09/21 07:39:45 akrenek
-
- - First version of BK server using "server bones" library and WS protocol.
- - Under hard development - unstable & buggy
-
- Revision 1.2 2004/09/08 13:38:03 akrenek
- query event unit test (not complete yet)
-
- Revision 1.1 2004/07/07 12:08:09 akrenek
- *** empty log message ***
-
- Revision 1.2 2004/07/06 20:47:11 flammer
- Moved to configure.properties.xml
-
-
--->
-
- <!-- ======================================================
- Define extra properties here ...
- ====================================================== -->
-
- <project name="LB Client configuration options">
- <target name="lbmakefiles">
- <exec executable="ln" failonerror="true">
- <arg line="-fs ${component.dir}/Makefile ${module.build.dir}/Makefile"/>
- </exec>
- <echo file="${module.build.dir}/Makefile.inc">
-top_srcdir=..
-builddir=build
-stagedir=${stage.abs.dir}
-distdir=${dist.dir}
-globalprefix=${global.prefix}
-lbprefix=${subsystem.prefix}
-package=${module.package.name}
-PREFIX=${install.dir}
-version=${module.version}
-glite_location=${with.glite.location}
-globus_prefix=${with.globus.prefix}
-expat_prefix=${with.expat.prefix}
-cares_prefix=${with.c-ares.prefix}
-mysql_prefix=${with.mysql.prefix}
-mysql_version=${ext.mysql.version}
-cppunit_prefix=${with.cppunit.prefix}
-gsoap_prefix=${with.gsoap.prefix}
-gsoap_version=${ext.gsoap.version}
-classads_prefix=${with.classads.prefix}
-thrflavour=${with.globus.thr.flavor}
-nothrflavour=${with.globus.nothr.flavor}
- </echo>
- </target>
- </project>
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright (c) 2004 on behalf of the EU EGEE Project:
- The European Organization for Nuclear Research (CERN),
- Istituto Nazionale di Fisica Nucleare (INFN), Italy
- Datamat Spa, Italy
- Centre National de la Recherche Scientifique (CNRS), France
- CS Systeme d'Information (CSSI), France
- Royal Institute of Technology, Center for Parallel Computers (KTH-PDC), Sweden
- Universiteit van Amsterdam (UvA), Netherlands
- University of Helsinki (UH.HIP), Finland
- University of Bergen (UiB), Norway
- Council for the Central Laboratory of the Research Councils (CCLRC), United Kingdom
-
- Common build properties file for the Glite LB Server component
-
- Authors: Ales Krenek <ljocha@ics.muni.cz>
- Version info: $Id$
- Release: $Name$
-
- Revision history:
- $Log$
--->
-
-<project name="LB Server component common properties">
-
- <!-- Include build properties to allow overwriting
- of properties for subsystem -->
- <property file="build.properties" />
-
- <!-- ======================================================
- Define corresponding subsystem properties
- ====================================================== -->
-
- <!-- Subsystem name -->
- <property name="subsystem.name" value="${lb.subsystem.name}"/>
-
- <!-- Subsystem prefix -->
- <property name="subsystem.prefix" value="${lb.subsystem.prefix}"/>
-
- <!-- ======================================================
- Define component properties
- ====================================================== -->
-
- <!-- Component name prefix -->
- <property name="component.prefix" value="server" />
-
- <!-- ======================================================
- Define general component properties
- ====================================================== -->
-
- <import file="${component.general.properties.file}" />
-
- <!-- ======================================================
- Define extra properties here ...
- ====================================================== -->
-
-
-</project>
\ No newline at end of file
# : /cvs/jra1mw/org.glite.lb.server/project/version.properties,v 1.185 2008/06/25 13:12:58 akrenek Exp $
-module.version=2.0.1
-module.age=2
+module.version=2.0.4
+module.age=1
if (edg_wll_intJobStatus(ctx, jobid, 0, stat, 1, 0)) {
free(stat);
stat = NULL;
- if (edg_wll_Error(ctx,NULL,NULL) != ENOENT) do_exit(ctx, EX_SOFTWARE);
+ if (edg_wll_Error(ctx,NULL,NULL) != 0) {
+ if (edg_wll_Error(ctx,NULL,NULL) != ENOENT) do_exit(ctx, EX_SOFTWARE);
+ edg_wll_ResetError(ctx);
+ }
}
}
}
#include <arpa/nameser.h>
#include <resolv.h>
#include <ares.h>
+#include <ares_version.h>
#include <errno.h>
#ifdef GLITE_LB_SERVER_WITH_WS
#endif /* GLITE_LB_SERVER_WITH_WS */
}
+#ifdef GLITE_LB_SERVER_WITH_WS
+ free(ws_port);
+ ws_port = NULL;
+#endif
if (mode & SERVICE_PROXY) { /* proxy stuff */
struct sockaddr_un a;
/* Just check the database and let it be. The slaves do the job. */
edg_wll_InitContext(&ctx);
if (wait_for_open(ctx, dbstring)) {
+ edg_wll_Close(ctx);
edg_wll_FreeContext(ctx);
return 1;
}
}
edg_wll_Close(ctx);
ctx->dbctx = NULL;
- glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_INFO, "[%d]: DB '%s'", getpid(), dbstring);
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_INFO, "DB '%s'", dbstring ? : "default");
if ((ctx->dbcaps & GLITE_LBU_DB_CAP_INDEX) == 0) {
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "%s: missing index support in DB layer", argv[0]);
return 1;
}
if ((ctx->dbcaps & GLITE_LBU_DB_CAP_TRANSACTIONS) == 0)
- glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_WARN, "[%d]: transactions aren't supported!", getpid());
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_WARN, "transactions aren't supported!");
if (transactions >= 0) {
- glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_WARN, "[%d]: transactions forced from %d to %d", getpid(), ctx->dbcaps & GLITE_LBU_DB_CAP_TRANSACTIONS ? 1 : 0, transactions);
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_WARN, "transactions forced from %d to %d", ctx->dbcaps & GLITE_LBU_DB_CAP_TRANSACTIONS ? 1 : 0, transactions);
ctx->dbcaps &= ~GLITE_LBU_DB_CAP_TRANSACTIONS;
ctx->dbcaps |= transactions ? GLITE_LBU_DB_CAP_TRANSACTIONS : 0;
}
if (dbfail_string1) free(dbfail_string1);
edg_wll_Error(ctx,&errt,&errd);
asprintf(&dbfail_string1,"%s (%s)",errt,errd);
+ free(errt);
+ free(errd);
if (dbfail_string1 != NULL) {
if (dbfail_string2 == NULL || strcmp(dbfail_string1,dbfail_string2)) {
if (dbfail_string2) free(dbfail_string2);
if (err) {
edg_wll_Error(ctx,&errt,&errd);
asprintf(&dbfail_string1,"%s (%s)",errt,errd);
+ free(errt);
+ free(errd);
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_ERROR,
"[%d]: %s", getpid(), dbfail_string1);
free(dbfail_string1);
};
/* ares callback handler for ares_gethostbyaddr() */
+#if ARES_VERSION >= 0x010500
+static void callback_handler(void *arg, int status, int timeouts, struct hostent *h)
+#else
static void callback_handler(void *arg, int status, struct hostent *h)
+#endif
{
struct asyn_result *arp = (struct asyn_result *) arg;
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_ERROR, "Error retrieving proxy&server fields of jobs table. Missing column?");
edg_wll_SetError(ctx,ENOENT,dbjob);
}
- glite_lbu_FreeStmt(&q);
clean:
+ glite_lbu_FreeStmt(&q);
+
free(res[0]); free(res[1]);
free(dbjob);
free(stmt);
glite_jobid_t subjob;
intJobStat js_real;
char *name;
- int port;
+ unsigned int port;
js = &js_real;
glite_jobid_t subjob;
intJobStat js_real;
char *name;
- int port;
+ unsigned int port;
js = &js_real;
edg_wll_QueryRec jqr[2];
edg_wll_QueryRec **jqra;
+ glite_lbu_Statement sh;
+ char *stmt, *out;
+ struct timeval ts, mints = {tv_sec:0, tv_usec:0};
/* Processing */
edg_wll_ResetError(ctx);
if (edg_wll_QueryEventsServer(ctx,1, (const edg_wll_QueryRec **)jqra, NULL, &events)) {
if (edg_wll_Error(ctx, NULL, NULL) == ENOENT) {
if (edg_wll_RestoreSubjobState(ctx, job, intstat)) {
- destroy_intJobStat(intstat);
- free(jqra);
- free(intstat->pub.owner); intstat->pub.owner = NULL;
- return edg_wll_Error(ctx, NULL, NULL);
+ if (edg_wll_Error(ctx, NULL, NULL) != ENOENT) {
+ destroy_intJobStat(intstat);
+ free(jqra);
+ free(intstat->pub.owner); intstat->pub.owner = NULL;
+ return edg_wll_Error(ctx, NULL, NULL);
+ }
}
}
else {
return edg_wll_Error(ctx, NULL, NULL);
}
}
- else {
+ edg_wll_ResetError(ctx);
+
+ {
free(jqra);
- for (num_events = 0; events[num_events].type != EDG_WLL_EVENT_UNDEF;
+ for (num_events = 0; events && events[num_events].type != EDG_WLL_EVENT_UNDEF;
num_events++);
- if (num_events == 0) {
- free(intstat->pub.owner); intstat->pub.owner = NULL;
- return edg_wll_SetError(ctx,ENOENT,NULL);
- }
-
for (i = 0; i < num_events; i++) {
res = processEvent(intstat, &events[i], i, be_strict, &errstring);
if (res == RET_FATAL || res == RET_INTERNAL) { /* !strict */
intErr = 1; break;
}
+ ts = events[i].any.timestamp;
+ if (!mints.tv_sec && !mints.tv_usec
+ || ts.tv_sec < mints.tv_sec
+ || (ts.tv_sec == mints.tv_sec && ts.tv_usec < mints.tv_usec)) mints = ts;
}
+ /* no events or status computation error */
if (intstat->pub.state == EDG_WLL_JOB_UNDEF) {
intstat->pub.state = EDG_WLL_JOB_UNKNOWN;
+ if (num_events) intstat->pub.lastUpdateTime = mints;
+ else intstat->pub.lastUpdateTime.tv_sec = 1;
}
intErr = edg_wlc_JobIdDup(job, &intstat->pub.jobId);
if (intErr) return edg_wll_SetError(ctx, intErr, NULL);
+ /* don't update status of grey jobs */
+ md5_jobid = glite_jobid_getUnique(job);
+ trio_asprintf(&stmt, "select grey from jobs where jobid='%|Ss'", md5_jobid);
+ free(md5_jobid);
+ if (edg_wll_ExecSQL(ctx, stmt, &sh) < 0 ||
+ (res = edg_wll_FetchRow(ctx, sh, 1, NULL, &out)) < 0) {
+ free(stmt);
+ return edg_wll_Error(ctx, NULL, NULL);
+ }
+ if (!out || strcmp(out, "0") != 0) update_db = 0;
+ glite_lbu_FreeStmt(&sh);
+ free(stmt);
+ free(out);
+
if (update_db) {
int tsq = num_events - 1;
if (add_fqans && tsq == 0 && ctx->fqans != NULL) {
if (edg_wll_QueryEventsServer(ctx,1, (const edg_wll_QueryRec **)jc,
(const edg_wll_QueryRec **)ec, &events_p)) {
+ glite_jobid_free(parent_job);
free(jc);
free(ec);
return edg_wll_Error(ctx, NULL, NULL);
}
+ glite_jobid_free(parent_job);
free(jc);
free(ec);
goto err;
}
+ if (strcmp(out, "*no parent job*") == 0) {
+ edg_wll_SetError(ctx,ENOENT,"No matching events found");
+ goto err;
+ }
+
ret = glite_jobid_recreate((const char*) ctx->srvName,
ctx->srvPort, (const char *) out, parent);
#include <libxml/parser.h>
#undef WITHOUT_TRIO
-#include "glite/security/voms/voms_apic.h"
#include "glite/jobid/strmd5.h"
#include "glite/jobid/cjobid.h"
#include "glite/lbu/trio.h"
#include "db_supp.h"
#include <glite/security/lcas/lcas_pem.h>
+#include "glite/security/voms/voms_apic.h"
+
/* XXX should be defined in gridsite-gacl.h */
GRSTgaclEntry *GACLparseEntry(xmlNodePtr cur);
#include <string.h>
#include <ctype.h>
#include <errno.h>
+#include <signal.h>
+#include <unistd.h>
#include <expat.h>
NULL
};
+volatile sig_atomic_t purge_quit = 0;
+
extern int edg_wll_NotifNewServer(edg_wll_Context,
edg_wll_QueryRec const * const *, int flags, char const *,
const edg_wll_NotifId, time_t *);
switch (errCode) {
case HTTP_OK: msg = "OK"; break;
+ case HTTP_ACCEPTED: msg = "Accepted"; break;
case HTTP_BADREQ: msg = "Bad Request"; break;
case HTTP_UNAUTH: msg = "Unauthorized"; break;
case HTTP_NOTFOUND: msg = "Not Found"; break;
return 0;
}
+static int hup_handler(int sig) {
+ purge_quit = 1;
+ return 0;
+}
+
edg_wll_ErrorCode edg_wll_ProtoV21(edg_wll_Context ctx,
char *request,char **headers,char *messageBody,
char **response,char ***headersOut,char **bodyOut)
else if (!strncmp(requestPTR,KEY_PURGE_REQUEST,sizeof(KEY_PURGE_REQUEST)-1)) {
edg_wll_PurgeRequest request;
edg_wll_PurgeResult result;
- int fatal = 0;
+ struct sigaction sa;
+ sigset_t sset;
+ int fatal = 0, retval;
ctx->p_tmp_timeout.tv_sec = 86400;
memset(&result,0,sizeof(result));
if ( !parsePurgeRequest(ctx,messageBody,(int (*)()) edg_wll_StringToStat,&request) ) {
+ /* do throttled purge on background if requested */
+ if ((request.flags & EDG_WLL_PURGE_BACKGROUND)) {
+ retval = fork();
+
+ switch (retval) {
+ case 0: /* forked cleaner */
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_handler = hup_handler;
+ sigaction(SIGTERM, &sa, NULL);
+ sigaction(SIGINT, &sa, NULL);
+
+ sigemptyset(&sset);
+ sigaddset(&sset, SIGTERM);
+ sigaddset(&sset, SIGINT);
+ sigprocmask(SIG_UNBLOCK, &sset, NULL);
+ sigemptyset(&sset);
+ sigaddset(&sset, SIGCHLD);
+ sigprocmask(SIG_BLOCK, &sset, NULL);
+ break;
+ case -1: /* err */
+ ret = HTTP_INTERNAL;
+ edg_wll_SetError(ctx, errno, "can't fork purge process");
+ goto err;
+ default: /* client request handler */
+ ret = HTTP_ACCEPTED;
+ /* to end this parent */
+ edg_wll_SetError(ctx, EDG_WLL_ERROR_SERVER_RESPONSE, edg_wll_HTTPErrorMessage(ret));
+ goto err;
+ }
+ }
+
switch ( edg_wll_PurgeServer(ctx, (const edg_wll_PurgeRequest *)&request, &result)) {
case 0: if (html) ret = HTTP_NOTIMPL;
else ret = HTTP_OK;
free(result.jobs);
}
+ /* forked cleaner sends no results */
+ if ((request.flags & EDG_WLL_PURGE_BACKGROUND)) {
+ *response = NULL;
+ free(message);
+ message = NULL;
+ if (requestPTR) free(requestPTR);
+ exit(0);
+ }
+
}
if ( request.jobs )
err: asprintf(response,"HTTP/1.1 %d %s",ret,edg_wll_HTTPErrorMessage(ret));
*headersOut = (char **) (html ? response_headers_html : response_headers_dglb);
- if ((ret != HTTP_OK) && text)
+ if ((ret != HTTP_OK && ret != HTTP_ACCEPTED) && text)
*bodyOut = edg_wll_ErrorToText(ctx,ret);
- else if ((ret != HTTP_OK) && html)
+ else if ((ret != HTTP_OK && ret != HTTP_ACCEPTED) && html)
*bodyOut = edg_wll_ErrorToHTML(ctx,ret);
else
*bodyOut = message;
char *cols[20];
glite_lbu_Statement stmt;
- if (glite_lbu_InitDBContext((glite_lbu_DBContext*) &ctx->dbctx, GLITE_LBU_DB_BACKEND_MYSQL) != 0) {
+ if (!ctx->dbctx && glite_lbu_InitDBContext((glite_lbu_DBContext*) &ctx->dbctx, GLITE_LBU_DB_BACKEND_MYSQL) != 0) {
char *ed;
glite_lbu_DBError(ctx->dbctx, NULL, &ed);
#ident "$Header"
+#include <signal.h>
#include "glite/lb/context.h"
+extern volatile sig_atomic_t purge_quit;
+
/** Server side implementation
* besides output to the SSL stream (in the context) it may produce
* the server-side dump files
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
+#include <syslog.h>
#include <errno.h>
#include <time.h>
#include <assert.h>
trio_asprintf(&qbase,"SELECT e.event,j.userid,j.dg_jobid,e.code,"
"e.prog,e.host,u.cert_subj,e.time_stamp,e.usec,e.level,e.arrived,e.seqcode "
"FROM events e,users u,jobs j%s "
- "WHERE %se.jobid=j.jobid AND e.userid=u.userid AND e.code != %d "
+ "WHERE %se.jobid=j.jobid AND j.grey=0 AND e.userid=u.userid AND e.code != %d "
"%s %s %s %s %s %s",
where_flags & FL_SEL_STATUS ? ",states s" : "",
where_flags & FL_SEL_STATUS ? "s.jobid=j.jobid AND " : "",
/* Check non-indexed event conditions */
if ( convert_event_head(ctx, res+2, out+i) || edg_wll_get_event_flesh(ctx, n, out+i) )
{
- free(res[1]);
- free(res[2]);
- memset(out+i, 0, sizeof(*out));
- glite_lbu_FreeStmt(&sh);
- goto cleanup;
+ char *et,*ed, *dbjob;
+
+ /* Most likely sort of internal inconsistency.
+ * Must not be fatal -- just complain
+ */
+ edg_wll_Error(ctx,&et,&ed);
+
+ dbjob = res[2];
+ fprintf(stderr,"%s event %d: %s (%s)\n",dbjob,n,et,ed);
+ syslog(LOG_WARNING,"%s event %d: %s (%s)",dbjob,n,et,ed);
+ free(et); free(ed);
+ edg_wll_ResetError(ctx);
+
+ goto fetch_cycle_cleanup;
}
if ( !match_flesh_conditions(out+i,event_conditions) || check_strict_jobid(ctx,out[i].any.jobId) )
if ( (where_flags & FL_SEL_STATUS) )
trio_asprintf(&qbase,"SELECT DISTINCT j.dg_jobid,j.userid "
- "FROM jobs j, states s WHERE j.jobid=s.jobid %s %s AND %s ORDER BY j.jobid",
+ "FROM jobs j, states s WHERE j.jobid=s.jobid AND j.grey=0 %s %s AND %s ORDER BY j.jobid",
(job_where) ? "AND" : "",
(job_where) ? job_where : "",
(ctx->isProxy) ? "j.proxy='1'" : "j.server='1'");
else
trio_asprintf(&qbase,"SELECT DISTINCT j.dg_jobid,j.userid "
- "FROM jobs j WHERE %s %s %s "
+ "FROM jobs j WHERE j.grey=0 AND %s %s %s "
"ORDER BY j.jobid",
(job_where) ? job_where : "",
(job_where) ? "AND" : "",
#include <string.h>
#include <time.h>
#include <errno.h>
+#include <signal.h>
#include "glite/jobid/cjobid.h"
#include "glite/lbu/trio.h"
#define sizofa(a) (sizeof(a)/sizeof((a)[0]))
+extern volatile sig_atomic_t purge_quit;
+
static const char* const resp_headers[] = {
"Cache-Control: no-cache",
"Server: edg_wll_Server/" PROTO_VERSION "/" COMP_PROTO,
if (request->jobs) {
for (jobs_to_exa=0; request->jobs[jobs_to_exa]; jobs_to_exa++);
- for (i=0; request->jobs[i]; i++) {
+ for (i=0; request->jobs[i] && !purge_quit; i++) {
if (edg_wlc_JobIdParse(request->jobs[i],&job)) {
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_ERROR, "%s: parse error\n", request->jobs[i]);
parse = 1;
}
else {
purge_throttle(jobs_to_exa, purge_end, &time_per_job, &target_runtime);
+ if (purge_quit) break;
memset(&stat,0,sizeof stat);
if (edg_wll_JobStatusServer(ctx,job,EDG_WLL_STAT_CHILDSTAT | EDG_WLL_STAT_CHILDREN,&stat)) {
if ((jobs_to_exa = edg_wll_ExecSQL(ctx, (ctx->isProxy) ? "select dg_jobid from jobs where proxy='1'" :
"select dg_jobid from jobs where server='1'", &s)) < 0) goto abort;
- while (edg_wll_FetchRow(ctx,s,1,NULL,&job_s) > 0) {
+ while (edg_wll_FetchRow(ctx,s,1,NULL,&job_s) > 0 && !purge_quit) {
if (edg_wlc_JobIdParse(job_s,&job)) {
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_ERROR, "%s: parse error (internal inconsistency !)", job_s);
parse = 1;
}
purge_throttle(jobs_to_exa, purge_end, &time_per_job, &target_runtime);
+ if (purge_quit) break;
memset(&stat,0,sizeof stat);
if (edg_wll_JobStatusServer(ctx,job,EDG_WLL_STAT_CHILDSTAT | EDG_WLL_STAT_CHILDREN,&stat)) {
// get job prefix/suffix before its state is deleted
if ( jobtype == EDG_WLL_NUMBER_OF_JOBTYPES) goto rollback;
- if ( get_jobid_suffix(ctx, job, jobtype, &root, &suffix) ) goto rollback;
- if ( get_jobid_prefix(ctx, job, jobtype, &prefix) ) goto rollback;
-
-
+ if (get_jobid_suffix(ctx, job, jobtype, &root, &suffix)
+ || get_jobid_prefix(ctx, job, jobtype, &prefix)) {
+ fprintf(stderr,"[%d] unknown job type of the '%s'.\n", getpid(), dbjob);
+ syslog(LOG_WARNING,"Warning: unknown job type of the '%s'", dbjob);
+ edg_wll_ResetError(ctx);
+ }
}
if ( purge )
free(stmt); stmt = NULL;
}
- if ( purge )
+ if ( purge && prefix && suffix )
{
/* Store zombie prefix */
};
+extern int debug;
+
int edg_wll_InitStatistics(edg_wll_Context ctx)
{
edg_wll_Stats *stats = default_stats; /* XXX: hardcoded */
}
zero = calloc(1,stats[i].grpsize);
write(stats[i].fd,zero,stats[i].grpsize);
- stats[i].map = mmap(NULL,sizeof zero,PROT_READ|PROT_WRITE,MAP_SHARED,stats[i].fd,0);
+ stats[i].map = mmap(NULL,stats[i].grpsize,PROT_READ|PROT_WRITE,MAP_SHARED,stats[i].fd,0);
if (stats[i].map == MAP_FAILED) return edg_wll_SetError(ctx,errno,"mmap()");
glite_common_log(LOG_CATEGORY_LB_SERVER, LOG_PRIORITY_DEBUG,
);
}
+static int stats_remap(edg_wll_Stats *stats)
+{
+ int newgrpno = stats->map->grpno;
+ dprintf(("stats_remap: size changed (%d != %d), remap",stats->grpno,newgrpno));
+ munmap(stats->map,(stats->grpno ? stats->grpno : 1) * stats->grpsize);
+ stats->map = mmap(NULL,newgrpno * stats->grpsize,
+ PROT_READ|PROT_WRITE,MAP_SHARED,stats->fd,0);
+ if (stats->map == MAP_FAILED) {
+ if (debug) abort();
+ return -1;
+ }
+ assert(stats->map->grpno == newgrpno);
+ stats->grpno = newgrpno;
+ return 0;
+}
+
+
static int stats_inc_counter(edg_wll_Context ctx,const edg_wll_JobStat *jobstat,edg_wll_Stats *stats)
{
int i,j;
- char *sig;
+ char *sig = NULL;
struct edg_wll_stats_group *g;
struct edg_wll_stats_archive *a;
time_t now = jobstat->stateEnterTime.tv_sec;
if (flock(stats->fd,LOCK_EX)) return edg_wll_SetError(ctx,errno,"flock()");
/* remap the file if someone changed its size */
- if (stats->map->grpno != stats->grpno) {
- int newgrpno = stats->map->grpno;
- munmap(stats->map,(stats->grpno ? stats->grpno : 1) * stats->grpsize);
- stats->map = mmap(NULL,newgrpno * stats->grpsize,
- PROT_READ|PROT_WRITE,MAP_SHARED,stats->fd,0);
- if (stats->map == MAP_FAILED) {
- edg_wll_SetError(ctx,errno,"mmap()");
- goto cleanup;
- }
- assert(stats->map->grpno == newgrpno);
- stats->grpno = newgrpno;
+ if (stats->map->grpno != stats->grpno && stats_remap(stats)) {
+ edg_wll_SetError(ctx,errno,"shmem remap failed");
+ goto cleanup;
}
sig = str2md5base64(jobstat->destination);
lseek(stats->fd,0,SEEK_END);
write(stats->fd,zero,stats->grpsize);
free(zero);
- stats->map = mmap(NULL,stats->grpno * stats->grpsize,
+ stats->map = mmap(NULL,(stats->grpno+1) * stats->grpsize,
PROT_READ|PROT_WRITE,MAP_SHARED,stats->fd,0);
if (stats->map == MAP_FAILED) {
if (!stats->type) return edg_wll_SetError(ctx,ENOENT,"no matching state counter");
+ /* remap the file if someone changed its size */
+ if (stats->map->grpno != stats->grpno)
+ {
+ if (flock(stats->fd,LOCK_EX)) return edg_wll_SetError(ctx,errno,"flock()");
+ if (stats_remap(stats)) {
+ edg_wll_SetError(ctx,errno,"shmem remap failed");
+ goto cleanup;
+ }
+ }
+
if (flock(stats->fd,LOCK_SH)) return edg_wll_SetError(ctx,errno,"flock()");
/* XXX */
}
if (i == stats->grpno) {
+ dprintf(("no match: %s\n",sig));
edg_wll_SetError(ctx,ENOENT,"no matching group");
goto cleanup;
}
edg_wll_SoapToJobStatCode(*(collection->statName), &(out->attr_id.state));
break;
case EDG_WLL_QUERY_ATTR_USERTAG:
+ case EDG_WLL_QUERY_ATTR_JDL_ATTR:
out->attr_id.tag = strdup(collection->tagName);
break;
default:
version=0.2.0
PREFIX=/opt/glite
-archlib:=lib
-host_cpu:=${shell uname -m}
-ifeq (${host_cpu},x86_64)
- archlib:=lib64
-endif
-
-include Makefile.inc
VPATH = ../src:../interface
XSLTPROC:=xsltproc --novalid
ifneq (${classads_prefix},/usr)
- classadslib := -L${classads_prefix}/${archlib} -L${classads_prefix}/lib
+ classadslib := -L${classads_prefix}/${libdir} -L${classads_prefix}/lib
endif
classadslib := ${classadslib} -lclassad
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
gsoap => '/usr',
mysql => '/usr',
'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
ant => '/usr',
jdk => '/usr',
libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
if ($help) { usage(); exit 0; }
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
- 'lb.client-java' => [ qw/ant:B/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql:R mysql-devel:B/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jpclient => 'jp.client',
);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
vdt=>[qw/globus globus_essentials/],
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
/* where Z.XX is version from indent + 1 (version after commit), Y = Z+1 */
/* and DESCRIPTION is short hit why version changed */
-#define INTSTAT_VERSION "revision 2.7 - usertag sequences"
+#define INTSTAT_VERSION "revision 2.8 - undef status time"
// ".... MAX LENGTH 32 BYTES !! ...."
// Internal error codes
1.0.0-5
- use hostname to identify network server rather than IP (RTM compatibility)
- don't crash on null sequence codes
+
+1.0.0-6
+- updated configure
+
+1.0.0-7
+- Makefile relies on the libdir variable
+- New configure script
+
# $Header$
module.version=1.0.0
-module.age=5
+module.age=7
compile: at3
at3: at3.in
- sed "s?%PREFIX%?${stagedir}?" at3.in >$@
+ #XXX: sed "s?%PREFIX%?${stagedir}?" at3.in >$@
+ cp at3.in $@
stage: compile
$(MAKE) install PREFIX=${stagedir}
my $lines = $ENV{AT3_LINES};
my $prefix;
-BEGIN{ $prefix = '%PREFIX%'; }
+use File::Basename;
+
+BEGIN{ $prefix = dirname($0)."/.."; }
use lib "$prefix/share/perl";
use gLite::LB::MultiStruct;
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
ant => '/usr',
jdk => '/usr',
libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
- 'lb.client-java' => [ qw/ant:B/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jpclient => 'jp.client',
);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
vdt=>[qw/globus globus_essentials/],
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
done
clean:
- rm -rfv ${UTILS} statistics ${MAN_GZ} ${MAN8_GZ} *.{lo,o} .libs/
+ rm -rfv ${ALLUTILS} ${MAN_GZ} ${MAN8_GZ} *.{lo,o} .libs/
rm -rvf log.xml project/ rpmbuild/ RPMS/ tgz/
%.o: %.c
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
ant => '/usr',
jdk => '/usr',
libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
- 'lb.client-java' => [ qw/ant:B/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jpclient => 'jp.client',
);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
vdt=>[qw/globus globus_essentials/],
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
.IP "-t, --target-runtime \fiNNN[smhd]\fR"
Throttle purge to the estimated target runtime.
+.IP "-b, --background \fiN\fR"
+Purge on the background. Default 1 when throttled purging.
+
.\".SH EXAMPLES
.\"To appear :o(
2.0.1-1
- purging client - 'other' jobs selection updated.
+2.0.2-1
+- glite-lb-bkpurge-offline.sh deletes from events_flesh as well
+
+2.0.3-1
+- Man page update
+- Support for background purge funcionality
+
# $Header$
-module.version=2.0.1
+module.version=2.0.3
module.age=1
{ "proxy", no_argument, NULL, 'x' },
{ "sock", required_argument, NULL, 'X' },
{"target-runtime", required_argument, NULL, 't'},
+ {"background", required_argument, NULL, 'b'},
{ NULL, no_argument, NULL, 0 }
};
" -m, --server L&B server machine name\n"
" -x, --proxy purge L&B proxy\n"
" -X, --sock <path> purge L&B proxy using default socket path\n"
- " -t, --target-runtime NNN[smhd] throttle purge to the estimated target runtime\n",
+ " -t, --target-runtime NNN[smhd] throttle purge to the estimated target runtime\n"
+ " -b, --background purge on the background\n",
me);
}
{
edg_wll_PurgeRequest *request;
edg_wll_PurgeResult *result;
- int i, timeout;
+ int i, timeout, background;
char *server = NULL;
char *me;
edg_wll_InitContext(&ctx);
/* get arguments */
- while ((opt = getopt_long(argc,argv,"a:c:n:e:o:j:m:rlsidhvxX:t:",opts,NULL)) != EOF) {
+ while ((opt = getopt_long(argc,argv,"a:c:n:e:o:j:m:rlsidhvxX:t:b:",opts,NULL)) != EOF) {
timeout=-1;
+ background=-1;
switch (opt) {
request->target_runtime=timeout;
}
break;
+ case 'b':
+ background = atoi(optarg);
+ break;
case 'h':
case '?': usage(me); return 1;
}
+
+ if ((background == -1 && request->target_runtime) || background > 0)
+ request->flags |= EDG_WLL_PURGE_BACKGROUND;
}
/* read the jobIds from file, if wanted */
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
ant => '/usr',
jdk => '/usr',
libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
- 'lb.client-java' => [ qw/ant:B/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jpclient => 'jp.client',
);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
vdt=>[qw/globus globus_essentials/],
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
3.0.0-4
- configure script update
+3.0.1-1
+- Initial implementation of WS notifications
+
# $Header$
-module.version=3.0.0
-module.age=4
+module.version=3.0.1
+module.age=1
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
ant => '/usr',
jdk => '/usr',
libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
- 'lb.client-java' => [ qw/ant:B/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jpclient => 'jp.client',
);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
vdt=>[qw/globus globus_essentials/],
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
- configure script update
- new example script
+1.0.1-2
+- configure script update
+
+1.0.1-3
+- Module repacked
+
# : /cvs/jra1mw/org.glite.lb.ws-test/project/version.properties,v 1.1 2009/01/15 15:49:26 zsustr Exp $
module.version=1.0.1
-module.age=1
+module.age=3
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
gsoap => '/usr',
mysql => '/usr',
'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
if ($help) { usage(); exit 0; }
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
'lb.logger' => [ qw/cppunit:B log4c/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
# : /cvs/glite/org.glite.lb/project/version.properties,v 1.164 2008/01/09 15:35:55 mmulac Exp $
-module.version=2.0.2
-module.age=1
+module.version=2.0.5
+module.age=2
DEBUG:=-g -O0 -W -Wall
-archlib:=lib
-host_cpu:=${shell uname -m}
-ifeq (${host_cpu},x86_64)
- archlib:=lib64
-endif
-
-MYSQL_SONAME:=$(shell ../project/get_soname.sh mysqlclient ${mysql-devel_prefix}/${archlib} ${mysql_prefix}/${archlib} ${mysql-devel_prefix}/lib ${mysql_prefix}/lib)
-PSQL_SONAME:=$(shell ../project/get_soname.sh pq ${postgresql_prefix}/${archlib} ${postgresql_prefix}/lib)
+MYSQL_SONAME:=$(shell ../project/get_soname.sh mysqlclient ${mysql-devel_prefix}/${libdir} ${mysql_prefix}/${libdir} ${mysql-devel_prefix}/lib ${mysql_prefix}/lib)
+PSQL_SONAME:=$(shell ../project/get_soname.sh pq ${postgresql_prefix}/${libdir} ${postgresql_prefix}/lib)
MYSQL_CPPFLAGS:=-I${mysql-devel_prefix}/include -I${mysql-devel_prefix}/include/mysql
PSQL_CPPFLAGS:=-I${postgresql_prefix}/include
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
gsoap => '/usr',
mysql => '/usr',
'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
ant => '/usr',
jdk => '/usr',
libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
if ($help) { usage(); exit 0; }
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
- 'lb.client-java' => [ qw/ant:B/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql:R mysql-devel:B/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jpclient => 'jp.client',
);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
vdt=>[qw/globus globus_essentials/],
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
1.0.0-8
- Soname detection logic moved from the Makefille to a shell-out script
+1.0.1-1
+- Using second fractions in timestamps
+
+1.0.1-2
+- Makefile relies on the libdir variable
+- New configure script
+
+1.0.1-3
+- Module repacked.
+
: /cvs/jra1mw/org.glite.lbjp-common.db/project/version.properties,v 1.2 2009/01/21 10:44:34 zsustr Exp $
-module.version=1.0.0
-module.age=8
+module.version=1.0.1
+module.age=3
my $output;
my $lb_tag = '';
my $lbjp_tag = '';
+my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
+ ant => '/usr',
+ jdk => '/usr',
+ libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
+ 'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'stage=s' => \$stagedir,
'lb-tag=s' => \$lb_tag,
'lbjp-common-tag=s' => \$lbjp_tag,
+ 'jp-tag=s' => \$jp_tag,
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
die "--module cannot be used with --enable-* or --disable-*\n"
if $module && ($en || $dis);
-die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}};
+die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}},{$lbmodules{jp}};
if ($dis) {
for (@nodes) {
my %aux;
if ($module) {
+# push @modules,split(/[,.]+/,$module);
push @modules,$module;
}
else {
- @modules = map 'lb.'.($extranodmod{$_} ? $extranodmod{$_} : $_),keys %enable_nodes;
+ @modules = map(($extranodmod{$_} ? $extranodmod{$_} : 'lb.'.$_),(keys %enable_nodes));
my $n;
my %ldeps; undef %ldeps;
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
- my @dnames = keys %ldeps;
+ my @dnames = $module ? () : keys %ldeps;
my $full = full($_);
my $build = $topbuild{$_} ? '': '/build';
}
}
}
+ if ($jp_tag){
+ for (@{$lbmodules{'jp'}}){
+ if ("jp.".$_ eq $module){
+ $tag = '-r '.$jp_tag;
+ }
+ }
+ }
if ($sec_tag){
for (@{$lbmodules{security}}){
if ("security.".$_ eq $module){
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
'lbjp-common.jp-interface' => [ qw/cppunit:B/ ],
- 'security.gss' => [ qw/globus cares cppunit:B/ ],
- 'security.gsoap-plugin' => [ qw/cppunit:B globus cares gsoap:B/ ],
+ 'security.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B/ ],
+ 'security.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares gsoap:B/ ],
'jobid.api-c' => [ qw/cppunit:B/ ],
'jobid.api-cpp' => [ qw/cppunit:B/ ],
- 'jobid.api-java' => [ qw// ],
+ 'jobid.api-java' => [ qw/ant:B jdk:B/ ],
+ 'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.doc' => [],
+ 'jp.index' => [ qw/gsoap globus_essentials:R globus:B/ ],
+ 'jp.primary' => [ qw/classads gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.server-common' => [],
+ 'jp.ws-interface' => [],
);
for my $ext (keys %need_externs_aux) {
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'jobid.api-java' => [ qw// ],
'lbjp-common.jp-interface' => [ qw/lbjp-common.db jobid.api-c/ ],
+
+ 'jp.client' => [ qw/
+ jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.maildir
+ jobid.api-c
+ security.gsoap-plugin
+ / ],
+ 'jp.doc' => [ qw// ],
+ 'jp.index' => [ qw/
+ jp.server-common jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.primary' => [ qw/
+ jobid.api-c
+ jp.server-common jp.ws-interface
+ lb.state-machine
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.server-common' => [ qw/
+ lbjp-common.jp-interface lbjp-common.db
+ / ],
+ 'jp.ws-interface' => [ qw// ],
);
for my $ext (keys %deps_aux) {
%extrafull = ( gridsite=>'org.gridsite.core');
-# %extranodmod = ( java => 'client-java' );
+#( java => 'client-java' );
+%extranodmod = (
+ db => 'lbjp-common.db',
+ jpprimary => 'jp.primary',
+ jpindex => 'jp.index',
+ jpclient => 'jp.client',
+);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
my %etics_projects;
BEGIN{
%etics_externs = (
- globus=>'vdt_globus_essentials',
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
cares=>'c-ares',
- voms=>'org.glite.security.voms-api-c',
+ voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
- vdt=>[qw/globus/],
+ vdt=>[qw/globus globus_essentials/],
'org.glite'=>[qw/voms gridsite lcas/],
);
};
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--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
+ --listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
@{$lbmodules{lb}},@{$lbmodules{security}}
--disable-NODE don't build this node
--lb-tag=tag checkout LB modules with specific tag
+ --jp-tag=tag checkout JP modules with specific tag
--lbjp-common-tag=tag checkout lbjp-common modules with specific tag
--security-tag=tag checkout security modules with specific tag
--jobid-tag=tag checkout jobid modules with specific tag
1.0.0-4
- configure script update (globus flavors added to configure call)
+1.0.0-5
+- configure script update
+
+1.0.0-6
+- Module repacked.
+
#: /cvs/jra1mw/org.glite.lbjp-common.jp-interface/project/version.properties,v 1.1.1.1 2009/01/21 14:43:52 zsustr Exp $
module.version=1.0.0
-module.age=4
+module.age=6
my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
gsoap => '/usr',
mysql => '/usr',
'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
libtar => '/usr',
axis => '/usr',
log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
if ($help) { usage(); exit 0; }
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
'lb.logger' => [ qw/cppunit:B log4c/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql:R mysql-devel:B/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
my $output;
my $lb_tag = '';
my $lbjp_tag = '';
+my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
+ ant => '/usr',
+ jdk => '/usr',
+ libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
+ 'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'stage=s' => \$stagedir,
'lb-tag=s' => \$lb_tag,
'lbjp-common-tag=s' => \$lbjp_tag,
+ 'jp-tag=s' => \$jp_tag,
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
die "--module cannot be used with --enable-* or --disable-*\n"
if $module && ($en || $dis);
-die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}};
+die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}},{$lbmodules{jp}};
if ($dis) {
for (@nodes) {
my %aux;
if ($module) {
+# push @modules,split(/[,.]+/,$module);
push @modules,$module;
}
else {
- @modules = map 'lb.'.($extranodmod{$_} ? $extranodmod{$_} : $_),keys %enable_nodes;
+ @modules = map(($extranodmod{$_} ? $extranodmod{$_} : 'lb.'.$_),(keys %enable_nodes));
my $n;
my %ldeps; undef %ldeps;
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
- my @dnames = keys %ldeps;
+ my @dnames = $module ? () : keys %ldeps;
my $full = full($_);
my $build = $topbuild{$_} ? '': '/build';
}
}
}
+ if ($jp_tag){
+ for (@{$lbmodules{'jp'}}){
+ if ("jp.".$_ eq $module){
+ $tag = '-r '.$jp_tag;
+ }
+ }
+ }
if ($sec_tag){
for (@{$lbmodules{security}}){
if ("security.".$_ eq $module){
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
'lbjp-common.jp-interface' => [ qw/cppunit:B/ ],
- 'security.gss' => [ qw/globus cares cppunit:B/ ],
- 'security.gsoap-plugin' => [ qw/cppunit:B globus cares gsoap:B/ ],
+ 'security.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B/ ],
+ 'security.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares gsoap:B/ ],
'jobid.api-c' => [ qw/cppunit:B/ ],
'jobid.api-cpp' => [ qw/cppunit:B/ ],
- 'jobid.api-java' => [ qw// ],
+ 'jobid.api-java' => [ qw/ant:B jdk:B/ ],
+ 'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.doc' => [],
+ 'jp.index' => [ qw/gsoap globus_essentials:R globus:B/ ],
+ 'jp.primary' => [ qw/classads gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.server-common' => [],
+ 'jp.ws-interface' => [],
);
for my $ext (keys %need_externs_aux) {
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'jobid.api-java' => [ qw// ],
'lbjp-common.jp-interface' => [ qw/lbjp-common.db jobid.api-c/ ],
+
+ 'jp.client' => [ qw/
+ jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.maildir
+ jobid.api-c
+ security.gsoap-plugin
+ / ],
+ 'jp.doc' => [ qw// ],
+ 'jp.index' => [ qw/
+ jp.server-common jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.primary' => [ qw/
+ jobid.api-c
+ jp.server-common jp.ws-interface
+ lb.state-machine
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.server-common' => [ qw/
+ lbjp-common.jp-interface lbjp-common.db
+ / ],
+ 'jp.ws-interface' => [ qw// ],
);
for my $ext (keys %deps_aux) {
%extrafull = ( gridsite=>'org.gridsite.core');
-# %extranodmod = ( java => 'client-java' );
+#( java => 'client-java' );
+%extranodmod = (
+ db => 'lbjp-common.db',
+ jpprimary => 'jp.primary',
+ jpindex => 'jp.index',
+ jpclient => 'jp.client',
+);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
my %etics_projects;
BEGIN{
%etics_externs = (
- globus=>'vdt_globus_essentials',
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
cares=>'c-ares',
- voms=>'org.glite.security.voms-api-c',
+ voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
- vdt=>[qw/globus/],
+ vdt=>[qw/globus globus_essentials/],
'org.glite'=>[qw/voms gridsite lcas/],
);
};
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--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
+ --listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
@{$lbmodules{lb}},@{$lbmodules{security}}
--disable-NODE don't build this node
--lb-tag=tag checkout LB modules with specific tag
+ --jp-tag=tag checkout JP modules with specific tag
--lbjp-common-tag=tag checkout lbjp-common modules with specific tag
--security-tag=tag checkout security modules with specific tag
--jobid-tag=tag checkout jobid modules with specific tag
1.0.0-2
- configure script update (globus flavors added to configure call)
+1.0.0-3
+- configure script update
+
# : /cvs/jra1mw/org.glite.lbjp-common.maildir/project/version.properties,v 1.1 2007/11/01 20:17:45 valtri Exp $
module.version=1.0.0
-module.age=2
+module.age=3
my $output;
my $lb_tag = '';
my $lbjp_tag = '';
+my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
+ ant => '/usr',
+ jdk => '/usr',
+ libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
+ 'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'stage=s' => \$stagedir,
'lb-tag=s' => \$lb_tag,
'lbjp-common-tag=s' => \$lbjp_tag,
+ 'jp-tag=s' => \$jp_tag,
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
die "--module cannot be used with --enable-* or --disable-*\n"
if $module && ($en || $dis);
-die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}};
+die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}},{$lbmodules{jp}};
if ($dis) {
for (@nodes) {
my %aux;
if ($module) {
+# push @modules,split(/[,.]+/,$module);
push @modules,$module;
}
else {
- @modules = map 'lb.'.($extranodmod{$_} ? $extranodmod{$_} : $_),keys %enable_nodes;
+ @modules = map(($extranodmod{$_} ? $extranodmod{$_} : 'lb.'.$_),(keys %enable_nodes));
my $n;
my %ldeps; undef %ldeps;
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
- my @dnames = keys %ldeps;
+ my @dnames = $module ? () : keys %ldeps;
my $full = full($_);
my $build = $topbuild{$_} ? '': '/build';
}
}
}
+ if ($jp_tag){
+ for (@{$lbmodules{'jp'}}){
+ if ("jp.".$_ eq $module){
+ $tag = '-r '.$jp_tag;
+ }
+ }
+ }
if ($sec_tag){
for (@{$lbmodules{security}}){
if ("security.".$_ eq $module){
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
'lbjp-common.jp-interface' => [ qw/cppunit:B/ ],
- 'security.gss' => [ qw/globus cares cppunit:B/ ],
- 'security.gsoap-plugin' => [ qw/cppunit:B globus cares gsoap:B/ ],
+ 'security.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B/ ],
+ 'security.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares gsoap:B/ ],
'jobid.api-c' => [ qw/cppunit:B/ ],
'jobid.api-cpp' => [ qw/cppunit:B/ ],
- 'jobid.api-java' => [ qw// ],
+ 'jobid.api-java' => [ qw/ant:B jdk:B/ ],
+ 'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.doc' => [],
+ 'jp.index' => [ qw/gsoap globus_essentials:R globus:B/ ],
+ 'jp.primary' => [ qw/classads gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.server-common' => [],
+ 'jp.ws-interface' => [],
);
for my $ext (keys %need_externs_aux) {
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'jobid.api-java' => [ qw// ],
'lbjp-common.jp-interface' => [ qw/lbjp-common.db jobid.api-c/ ],
+
+ 'jp.client' => [ qw/
+ jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.maildir
+ jobid.api-c
+ security.gsoap-plugin
+ / ],
+ 'jp.doc' => [ qw// ],
+ 'jp.index' => [ qw/
+ jp.server-common jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.primary' => [ qw/
+ jobid.api-c
+ jp.server-common jp.ws-interface
+ lb.state-machine
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.server-common' => [ qw/
+ lbjp-common.jp-interface lbjp-common.db
+ / ],
+ 'jp.ws-interface' => [ qw// ],
);
for my $ext (keys %deps_aux) {
%extrafull = ( gridsite=>'org.gridsite.core');
-# %extranodmod = ( java => 'client-java' );
+#( java => 'client-java' );
+%extranodmod = (
+ db => 'lbjp-common.db',
+ jpprimary => 'jp.primary',
+ jpindex => 'jp.index',
+ jpclient => 'jp.client',
+);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
my %etics_projects;
BEGIN{
%etics_externs = (
- globus=>'vdt_globus_essentials',
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
cares=>'c-ares',
- voms=>'org.glite.security.voms-api-c',
+ voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
- vdt=>[qw/globus/],
+ vdt=>[qw/globus globus_essentials/],
'org.glite'=>[qw/voms gridsite lcas/],
);
};
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--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
+ --listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
@{$lbmodules{lb}},@{$lbmodules{security}}
--disable-NODE don't build this node
--lb-tag=tag checkout LB modules with specific tag
+ --jp-tag=tag checkout JP modules with specific tag
--lbjp-common-tag=tag checkout lbjp-common modules with specific tag
--security-tag=tag checkout security modules with specific tag
--jobid-tag=tag checkout jobid modules with specific tag
1.0.0-3
- configure script update (globus flavors added to configure call)
+1.0.0-4
+- configure script update
+
# : /cvs/jra1mw/org.glite.lbjp-common.server-bones/project/version.properties,v 1.2 2009/01/21 10:44:34 zsustr Exp $
module.version=1.0.0
-module.age=3
+module.age=4
my $output;
my $lb_tag = '';
my $lbjp_tag = '';
+my $jp_tag = '';
my $sec_tag = '';
my $jobid_tag = '';
+my $libdir = 'lib';
-my @nodes = qw/client server logger utils client-java doc ws-test/;
+my @nodes = qw/client server logger utils client-java doc ws-test db jpprimary jpindex jpclient harvester/;
my %enable_nodes;
my %disable_nodes;
globus => '/opt/globus',
gsoap => '/usr',
mysql => '/usr',
+ 'mysql-devel' => '',
+ 'mysql-server' => '',
voms => '/opt/glite',
gridsite => '/opt/glite',
lcas => '/opt/glite',
+ trustmanager => '/opt/glite',
+ ant => '/usr',
+ jdk => '/usr',
+ libtar => '/usr',
+ axis => '/usr',
+ log4c => '/usr',
+ postgresql => '/usr'
);
my %jar = (
- 'commons-codec' => '/usr/share/java/commons-codec-1.3.jar',
+ 'commons-codec' => '/usr/share/java/commons-codec.jar',
+ 'commons-lang' => '/usr/share/java/commons-lang.jar',
);
my %topbuild;
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester/],
'security' => [qw/gss gsoap-plugin/],
- 'lbjp-common' => [qw/db maildir server-bones trio jp-interface/],
+ 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface/],
'jobid' => [qw/api-c api-cpp api-java/],
+ 'jp' => [ qw/client doc index primary server-common ws-interface/ ],
);
'stage=s' => \$stagedir,
'lb-tag=s' => \$lb_tag,
'lbjp-common-tag=s' => \$lbjp_tag,
+ 'jp-tag=s' => \$jp_tag,
'security-tag=s' => \$sec_tag,
'jobid-tag=s' => \$jobid_tag,
'help' => \$help,
+ 'libdir=s' => \$libdir,
);
for (@nodes) {
GetOptions @opts or die "Errors parsing command line\n";
+$extern_prefix{'mysql-devel'}=$extern_prefix{mysql} if $extern_prefix{'mysql-devel'} eq '';
+$extern_prefix{'mysql-server'}=$extern_prefix{mysql} if $extern_prefix{'mysql-server'} eq '';
+
if ($help) { usage(); exit 0; }
if ($listmodules) {
die "--module cannot be used with --enable-* or --disable-*\n"
if $module && ($en || $dis);
-die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}};
+die "$module: unknown module\n" if $module && ! grep $module,@{$lbmodules{lb}},@{$lbmodules{security}},{$lbmodules{jp}};
if ($dis) {
for (@nodes) {
my %aux;
if ($module) {
+# push @modules,split(/[,.]+/,$module);
push @modules,$module;
}
else {
- @modules = map 'lb.'.($extranodmod{$_} ? $extranodmod{$_} : $_),keys %enable_nodes;
+ @modules = map(($extranodmod{$_} ? $extranodmod{$_} : 'lb.'.$_),(keys %enable_nodes));
my $n;
my %ldeps; undef %ldeps;
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
- my @dnames = keys %ldeps;
+ my @dnames = $module ? () : keys %ldeps;
my $full = full($_);
my $build = $topbuild{$_} ? '': '/build';
}
}
}
+ if ($jp_tag){
+ for (@{$lbmodules{'jp'}}){
+ if ("jp.".$_ eq $module){
+ $tag = '-r '.$jp_tag;
+ }
+ }
+ }
if ($sec_tag){
for (@{$lbmodules{security}}){
if ("security.".$_ eq $module){
BEGIN{
%need_externs_aux = (
'lb.client' => [ qw/cppunit:B classads/ ],
+ 'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager/ ],
'lb.common' => [ qw/expat cppunit:B classads/ ],
'lb.doc' => [],
- 'lb.logger' => [ qw/cppunit:B/ ],
- 'lb.server' => [ qw/globus expat cares mysql cppunit:B gsoap:B classads voms lcas gridsite/ ],
+ 'lb.logger' => [ qw/cppunit:B log4c/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite log4c/ ],
'lb.state-machine' => [ qw/classads/ ],
'lb.utils' => [ qw/cppunit:B/ ],
'lb.ws-interface' => [],
'lb.ws-test' => [ qw/gsoap:B/ ],
'lb.types' => [ qw// ],
- 'lbjp-common.db' => [ qw/mysql/ ],
+ 'lb.harvester' => [ qw/postgresql:R/ ],
+ 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B/ ],
+ 'lbjp-common.log' => [ qw// ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'lbjp-common.trio' => [ qw/cppunit:B/ ],
'lbjp-common.jp-interface' => [ qw/cppunit:B/ ],
- 'security.gss' => [ qw/globus cares cppunit:B/ ],
- 'security.gsoap-plugin' => [ qw/cppunit:B globus cares gsoap:B/ ],
+ 'security.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B/ ],
+ 'security.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares gsoap:B/ ],
'jobid.api-c' => [ qw/cppunit:B/ ],
'jobid.api-cpp' => [ qw/cppunit:B/ ],
- 'jobid.api-java' => [ qw// ],
+ 'jobid.api-java' => [ qw/ant:B jdk:B/ ],
+ 'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.doc' => [],
+ 'jp.index' => [ qw/gsoap globus_essentials:R globus:B/ ],
+ 'jp.primary' => [ qw/classads gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.server-common' => [],
+ 'jp.ws-interface' => [],
);
for my $ext (keys %need_externs_aux) {
%need_jars = (
'jobid.api-java' => [ qw/commons-codec/ ],
+ 'lb.client-java' => [ qw/commons-lang/ ],
);
for my $jar (keys %need_jars) {
/ ],
'lb.client-java' => [ qw/
lb.types:B
+ lb.ws-interface:B
jobid.api-java
/ ],
'lb.common' => [ qw/
'lb.doc' => [ qw/lb.types:B/ ],
'lb.logger' => [ qw/
lbjp-common.trio
+ lbjp-common.log
jobid.api-c
lb.common
security.gss
/ ],
'lb.server' => [ qw/
lb.ws-interface lb.types:B lb.common lb.state-machine
- lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir
+ lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log
jobid.api-c
security.gsoap-plugin security.gss
/ ],
- 'lb.state-machine' => [ qw/lb.common lbjp-common.jp-interface security.gss/ ],
+ 'lb.state-machine' => [ qw/lb.types:B lb.common lbjp-common.jp-interface security.gss/ ],
'lb.utils' => [ qw/
lbjp-common.jp-interface
jobid.api-c
'lb.ws-test' => [ qw/security.gsoap-plugin lb.ws-interface/ ],
'lb.ws-interface' => [ qw/lb.types:B/ ],
'lb.types' => [ qw// ],
+ 'lb.harvester' => [ qw/
+ jobid.api-c lbjp-common.trio lbjp-common.db lb.common lb.client
+ security.gss
+ / ],
'lbjp-common.db' => [ qw/lbjp-common.trio/ ],
'lbjp-common.maildir' => [ qw// ],
'lbjp-common.server-bones' => [ qw// ],
'jobid.api-java' => [ qw// ],
'lbjp-common.jp-interface' => [ qw/lbjp-common.db jobid.api-c/ ],
+
+ 'jp.client' => [ qw/
+ jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.maildir
+ jobid.api-c
+ security.gsoap-plugin
+ / ],
+ 'jp.doc' => [ qw// ],
+ 'jp.index' => [ qw/
+ jp.server-common jp.ws-interface
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.primary' => [ qw/
+ jobid.api-c
+ jp.server-common jp.ws-interface
+ lb.state-machine
+ lbjp-common.jp-interface lbjp-common.trio lbjp-common.db lbjp-common.server-bones
+ security.gsoap-plugin
+ / ],
+ 'jp.server-common' => [ qw/
+ lbjp-common.jp-interface lbjp-common.db
+ / ],
+ 'jp.ws-interface' => [ qw// ],
);
for my $ext (keys %deps_aux) {
%extrafull = ( gridsite=>'org.gridsite.core');
-# %extranodmod = ( java => 'client-java' );
+#( java => 'client-java' );
+%extranodmod = (
+ db => 'lbjp-common.db',
+ jpprimary => 'jp.primary',
+ jpindex => 'jp.index',
+ jpclient => 'jp.client',
+);
-my @t = qw/lb.client-java jobid.api-java lb.types/;
+my @t = qw/lb.client-java jobid.api-java lb.types lbjp-common.log/;
@topbuild{@t} = (1) x ($#t+1);
}
my %aux;
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester
security.gss security.gsoap-plugin
jobid.api-c jobid.api-cpp jobid.api-java
-lbjp-common.db lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+lbjp-common.db lbjp-common.log lbjp-common.maildir lbjp-common.server-bones lbjp-common.trio lbjp-common.jp-interface
+jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface
/;
@aux{@m} = (1) x ($#m+1);
stagedir = $stagedir
thrflavour = $thrflavour
nothrflavour = $nothrflavour
+libdir = $libdir
};
for (@{$need_externs{$short}}) {
my %etics_projects;
BEGIN{
%etics_externs = (
- globus=>'vdt_globus_essentials',
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
cares=>'c-ares',
- voms=>'org.glite.security.voms-api-c',
+ voms=>'org.glite.security.voms-api-cpp',
gridsite=>'org.gridsite.shared',
lcas=>'org.glite.security.lcas',
+ trustmanager=>'org.glite.security.trustmanager',
);
%etics_projects = (
- vdt=>[qw/globus/],
+ vdt=>[qw/globus globus_essentials/],
'org.glite'=>[qw/voms gridsite lcas/],
);
};
@ge{@{$etics_projects{'org.glite'}}} = (1) x ($#{$etics_projects{'org.glite'}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
+ if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/) {
my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ }
}
for (@{$need_jars{"$subsys.$module"}}) {
install = make install
clean = make clean
test = make check
-configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --module $subsys.$module @copts
+configure = cd $confdir && \${moduleName}/configure --thrflavour=\${globus.thr.flavor} --nothrflavour=\${globus.nothr.flavor} --prefix=\${prefix} --stage=\${stageDir} --libdir=\${libdir} --module $subsys.$module @copts
checkstyle = None
[Platform-default:Property]
--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
+ --listmodules=subsys list modules of a subsystem
+ --libdir=libdir typically [lib,lib64] postfix
Mode of operation:
--mode={checkout|build|etics} what to do [build]
@{$lbmodules{lb}},@{$lbmodules{security}}
--disable-NODE don't build this node
--lb-tag=tag checkout LB modules with specific tag
+ --jp-tag=tag checkout JP modules with specific tag
--lbjp-common-tag=tag checkout lbjp-common modules with specific tag
--security-tag=tag checkout security modules with specific tag
--jobid-tag=tag checkout jobid modules with specific tag
1.0.0-4
- configure script update (globus flavors added to configure call)
+1.0.0-5
+- configure script update
+
+1.0.1-1
+- Fixed build with newer gcc versions
+
# : /cvs/jra1mw/org.glite.lbjp-common.trio/project/version.properties,v 1.2 2009/01/21 10:44:34 zsustr Exp $
-module.version=1.0.0
-module.age=4
+module.version=1.0.1
+module.age=1
#include <iostream>
+#include <cstring>
#include <cppunit/extensions/HelperMacros.h>
#include <cppunit/TestFixture.h>