$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
for $_ (keys %{$project{etics_externs}}) {
$etics_externs{$_} = $project{etics_externs}{$_};
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'lbjp-common.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B libtool:B/ ],
'lbjp-common.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares:B gsoap gsoapxx libtool:B/ ],
'jobid.api-c' => [ qw/cppunit:B libtool:B openssl:B/ ],
- 'jobid.api-cpp' => [ qw/cppunit:B/ ],
+ 'jobid.api-cpp' => [ qw/cppunit:B libtool:B/ ],
'jobid.api-java' => [ qw/ant:B jdk:B/ ],
'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
'jp.doc' => [],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
gridsite=>'emi.gridsite.shared',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
gip_service=>'emi.bdii.glite-info-provider-service',
bdii=>'emi.bdii.core',
glite_version=>'emi.misc.glite-version',
jdk=>'java-devel',
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
- Support for IPv6 literal addresses
- Fixed notification ID parsing
+1.0.7-1
+- Handling error returned by gethostbyname() (Savannah Bug #67627)
+
2.0.0-1
- Version numbering fixed
2.0.2-5
- Module rebuilt
+2.0.3-1
+- Handling error returned by gethostbyname() (Savannah Bug #67627)
+
# : /cvs/jra1mw/org.glite.jobid.api-c/project/version.properties,v 1.1 2009/01/16 08:48:52 zsustr Exp $
-module.version=2.0.2
-module.age=5
+module.version=2.0.3
+module.age=1
struct timeval tv;
int skip;
char* portbeg;
+ char* rndaddr = NULL;
struct hostent* he;
return EINVAL;
if (unique == NULL) {
- gethostname(hostname, 100);
- he = gethostbyname(hostname);
- assert(he->h_length > 0);
gettimeofday(&tv, NULL);
srandom(tv.tv_usec);
+ gethostname(hostname, 100);
+ he = gethostbyname(hostname);
+ if (!he) asprintf(&rndaddr,"%d.%d.%d.%d",rand()%256,rand()%256,rand()%256,rand()%256);
skip = strlen(hostname);
skip += sprintf(hostname + skip, "-IP:0x%x-pid:%d-rnd:%d-time:%d:%d",
- *((int*)he->h_addr_list[0]), getpid(), (int)random(),
- (int)tv.tv_sec, (int)tv.tv_usec);
+ rndaddr ? rndaddr : *((int*)he->h_addr_list[0]),
+ getpid(), (int)random(), (int)tv.tv_sec, (int)tv.tv_usec);
+ free(rndaddr);
}
*jobId = NULL;
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
for $_ (keys %{$project{etics_externs}}) {
$etics_externs{$_} = $project{etics_externs}{$_};
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
gridsite=>'emi.gridsite.shared',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
gip_service=>'emi.bdii.glite-info-provider-service',
bdii=>'emi.bdii.core',
glite_version=>'emi.misc.glite-version',
jdk=>'java-devel',
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
1.0.1-2
- Module rebuilt
+1.0.1-3
+- Module rebuilt
+
1.1.0-1
- Fixes for parallel release in EMI & gLite
1.1.2-6
- Module rebuilt
+1.1.3-1
+- experiments with staging in summary Makefile in etics-less build
+
# : /cvs/glite/org.glite.jobid.api-cpp/project/version.properties,v 1.1 2009/01/16 08:48:52 zsustr Exp $
-module.version=1.1.2
-module.age=6
+module.version=1.1.3
+module.age=1
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
for $_ (keys %{$project{etics_externs}}) {
$etics_externs{$_} = $project{etics_externs}{$_};
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'lbjp-common.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B libtool:B/ ],
'lbjp-common.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares:B gsoap gsoapxx libtool:B/ ],
'jobid.api-c' => [ qw/cppunit:B libtool:B openssl:B/ ],
- 'jobid.api-cpp' => [ qw/cppunit:B/ ],
+ 'jobid.api-cpp' => [ qw/cppunit:B libtool:B/ ],
'jobid.api-java' => [ qw/ant:B jdk:B/ ],
'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
'jp.doc' => [],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
gridsite=>'emi.gridsite.shared',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
gip_service=>'emi.bdii.glite-info-provider-service',
bdii=>'emi.bdii.core',
glite_version=>'emi.misc.glite-version',
jdk=>'java-devel',
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
1.0.3-2
- Module rebuilt
+1.0.4-1
+- Makefile using external modules jakarta-commons-*
+
1.1.0-1
- Fixes for parallel release in EMI & gLite
1.1.3-5
- Module rebuilt
+1.1.3-6
+- Module rebuilt
+
# : /cvs/glite/org.glite.jobid.api-java/project/version.properties,v 1.5 2009/01/20 17:25:13 akrenek Exp $
module.version=1.1.3
-module.age=5
+module.age=6
# : /cvs/jra1mw/org.glite.jobid.api-c/project/version.properties,v 1.1 2009/01/16 08:48:52 zsustr Exp $
-module.version=2.0.3
-module.age=6
+module.version=2.0.4
+module.age=1
GEN:=${stagedir}${prefix}/sbin/glite-lb-at3 ${top_srcdir}/project/genEventTypes.pl
AT3DIR:=${stagedir}${prefix}/share/glite-lb/at3
-axis_classpath:=$(shell ls -1 ${axis_prefix}/lib/*.jar 2>/dev/null | tr '\012' :)
+axis_classpath:=$(shell ls -1 ${axis_prefix}/lib/*.jar ${axis_prefix}/share/java/*.jar 2>/dev/null | tr '\012' :)
trustmanager_classpath:=$(shell ls -1 ${trustmanager_prefix}/share/java/glite-security-trustmanager.jar ${trustmanager_prefix}/share/java/trustmanager.jar ${trustmanager_prefix}/share/java/trustmanager-axis.jar ${stagedir}${prefix}/share/java/trustmanager.jar ${stagedir}${prefix}/share/java/trustmanager-axis.jar 2>/dev/null | tr '\012' :)
all compile: compile-java-axis compile-java-lb compile-java-gen compile-java-lb2 build-jar examples build-c
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
for $_ (keys %{$project{etics_externs}}) {
$etics_externs{$_} = $project{etics_externs}{$_};
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
gridsite=>'emi.gridsite.shared',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
gip_service=>'emi.bdii.glite-info-provider-service',
bdii=>'emi.bdii.core',
glite_version=>'emi.misc.glite-version',
jdk=>'java-devel',
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
1.0.5-6
- Module rebuilt
+1.0.6-1
+- Support gcj java
+
1.1.0-1
- Fixes for parallel release in EMI & gLite
- CREAM_CORE->CREAM_EXECUTOR
- '--stage=/' behaviour in fixed configure
- wsdl files moved
+1.1.6-1
+- Distinguish between generated and non-generated java files for FindBugs etics plugin
+- Classes for non-generated files are built in build/classes directory now
+
# $Header$
-module.version=1.1.5
+module.version=1.1.6
module.age=1
lbprefix=lb
package=glite-lb-client
version=0.0.0
-
CC:=gcc
CXX:=g++
VERSION_AHEAD=-3
+# hacks needed for ETICS:
+# - rpath out of installation directory ${PREFIX}
+# (the proper value is ${prefix}/${libdir})
+# - installed *.la files should be removed
+rpath?=${PREFIX}${prefix}/${libdir}
+
VPATH=${top_srcdir}/src:${top_srcdir}/interface:${top_srcdir}/test:${top_srcdir}/examples:${top_srcdir}/doc
AT3=${stagedir}${prefix}/sbin/glite-lb-at3
GENSAM=${top_srcdir}/examples/gen_sample_job
CPPUNIT_LIBS?=-L${cppunit_prefix}/${libdir} -lcppunit
CPPUNIT_CFLAGS?=-I${cppunit_prefix}/include
-LDFLAGS:=${LDFLAGS} -L${stagedir}${prefix}/${libdir} ${COVERAGE_FLAGS}
+LDFLAGS:=${LDFLAGS} -L${stagedir}${prefix}/${libdir} -L${PREFIX}${prefix}/${libdir} ${COVERAGE_FLAGS}
COMPILE:=libtool --mode=compile ${CC} ${CFLAGS}
CXXCOMPILE:=libtool --mode=compile ${CXX} ${CXXFLAGS}
ifeq (${thrflavour},)
${LIB}: ${LIBTHROBJS}
- ${LINK} ${version_info} -o $@ ${LIBTHRLOBJS} -rpath ${prefix}/${libdir} \
+ ${LINK} ${version_info} -o $@ ${LIBTHRLOBJS} -rpath ${rpath} \
${COMMON_LIB} ${TRIO_LIB} \
-lglite_security_gss
${PLUSLIB}: ${PLUSTHROBJS} ${LIB}
- ${LINKXX} ${version_info} -o $@ ${PLUSTHRLOBJS} -rpath ${prefix}/${libdir} ${LIB} ${PLUS_EXTRA_LIB}
+ ${LINKXX} ${version_info} -o $@ ${PLUSTHRLOBJS} -rpath ${rpath} ${LIB} ${PLUS_EXTRA_LIB}
else
${NOTHRLIB}: ${LIBOBJS}
- ${LINK} ${version_info} -o $@ ${LIBLOBJS} -rpath ${prefix}/${libdir} \
+ ${LINK} ${version_info} -o $@ ${LIBLOBJS} -rpath ${rpath} \
${COMMON_LIB_NOTHR} ${TRIO_LIB} \
-lglite_security_gss_${nothrflavour}
${THRLIB}: ${LIBTHROBJS}
- ${LINK} ${version_info} -o $@ ${LIBTHRLOBJS} -rpath ${prefix}/${libdir} \
+ ${LINK} ${version_info} -o $@ ${LIBTHRLOBJS} -rpath ${rpath} \
${COMMON_LIB_THR} ${TRIO_LIB} \
-lglite_security_gss_${thrflavour}
${NOTHRPLUSLIB}: ${PLUSOBJS} ${NOTHRLIB}
- ${LINKXX} ${version_info} -o $@ ${PLUSLOBJS} -rpath ${prefix}/${libdir} ${NOTHRLIB} ${PLUS_EXTRA_LIB}
+ ${LINKXX} ${version_info} -o $@ ${PLUSLOBJS} -rpath ${rpath} ${NOTHRLIB} ${PLUS_EXTRA_LIB}
${THRPLUSLIB}: ${PLUSTHROBJS} ${THRLIB}
- ${LINKXX} ${version_info} -o $@ ${PLUSTHRLOBJS} -rpath ${prefix}/${libdir} ${THRLIB} ${PLUS_EXTRA_LIB}
+ ${LINKXX} ${version_info} -o $@ ${PLUSTHRLOBJS} -rpath ${rpath} ${THRLIB} ${PLUS_EXTRA_LIB}
endif
logevent: logevent.o args.o
check_version:
${CHECK_VERSION} ${stagedir}${prefix}/include/glite/lb/common_version.h
+post-install:
+ rm -rfv ${PREFIX}${prefix}/${libdir}/*.la
+
+post-install-rpath:
+ for file in `find ${PREFIX}${prefix}/${libdir} -type f` \
+ `find ${PREFIX}${prefix}/bin -type f` \
+ `find ${PREFIX}${prefix}/sbin -type f` \
+ ; do \
+ if test -h $$file; then continue; fi; \
+ orpath=`chrpath -l $$file 2>/dev/null`; \
+ if test $$? = 0 ; then \
+ orpath=`echo $$orpath | sed 's:.*RPATH=::'`; \
+ rpath=`echo $$orpath | sed "s:${PREFIX}${prefix}:${sysroot}${prefix}:g" | tr ':' '\n' | grep -v '^$$' | tr '\n' ':' | sed 's/:$$//'`; \
+ if test "$$orpath" = "$$rpath"; then continue; fi; \
+ echo "$$file"; \
+ echo " -> $$rpath"; \
+ chrpath -r $$rpath $$file; \
+ chrpath -d $$file; \
+ fi; \
+ done
-.PHONY: default all compile examples check stage install clean check_version link
+.PHONY: default all compile examples check stage install clean check_version link post-install post-install-rpath
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
-for $_ (keys %{$project{etics_externs}}) {
- $etics_externs{$_} = $project{etics_externs}{$_};
+for my $platform (keys %{$project{etics_externs}}) {
+ for $_ (keys %{$project{etics_externs}{$platform}}) {
+ $etics_externs{$platform}{$_} = $project{etics_externs}{$platform}{$_};
+ }
}
+reshuffle_platforms(\%etics_externs, $project{supported_platforms});
+reshuffle_platforms(\%{$project{etics_externs_devel}}, $project{supported_platforms});
for $_ (keys %{$project{etics_projects}}) {
$etics_projects{$_} = $project{etics_projects}{$_};
}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
vdt=>[qw/globus globus_essentials gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
flavours => '--thrflavour= --nothrflavour=',
local_prefix => '/usr',
etics_externs => {
- globus_essentials=>'globus-gssapi-gsi',
- globus=>'globus-gssapi-gsi-devel',
- gridsite=>'emi.gridsite.shared',
- yaim_core=>'emi.yaim.yaim-core',
- yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
- gip_service=>'emi.bdii.glite-info-provider-service',
- bdii=>'emi.bdii.core',
- glite_version=>'emi.misc.glite-version',
- glue_schema=>'emi.bdii.glue-schema',
- trustmanager=>'emi.java-security.trustmanager',
- trustmanager_axis=>'emi.java-security.trustmanager-axis',
- axis=>'axis1.4',
- lcas=>'emi.sac.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'emi.misc.glite.build-common-cpp',
- jdk=>'java',
+ default => {
+ globus_essentials=>'globus-gssapi-gsi',
+ globus=>'globus-gssapi-gsi-devel',
+ gridsite=>'emi.gridsite.shared',
+ yaim_core=>'emi.yaim.yaim-core',
+ yaim_bdii=>'emi.bdii.yaim-bdii',
+ gip_service=>'emi.bdii.glite-info-provider-service',
+ bdii=>'emi.bdii.core',
+ glite_version=>'emi.misc.glite-version',
+ glue_schema=>'emi.bdii.glue-schema',
+ trustmanager=>'emi.java-security.trustmanager',
+ trustmanager_axis=>'emi.java-security.trustmanager-axis',
+ axis=>'axis1.4',
+ lcas=>'emi.sac.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'emi.misc.glite.build-common-cpp',
+ jdk=>'java',
+ },
+ sl5_x86_64_gcc412EPEL => {
+ 'myproxy-devel' => 'myproxy-devel.x86_64',
+ },
},
etics_externs_devel => {
- cares => 'c-ares-devel',
- classads => 'classads-devel',
- cppunit => 'cppunit-devel',
- expat => 'expat-devel',
- gsoap => 'gsoap-devel',
- voms => 'org.glite.security.voms-api',
- libtar => 'libtar-devel',
- log4c => 'log4c-devel',
- postgresql => 'postgresql-devel',
- curl => 'curl-devel',
- libxml2 => 'libxml2-devel',
- openssl => 'openssl-devel',
- gridsite=>'emi.gridsite.devel',
- jdk=>'java-devel',
+ default => {
+ cares => 'c-ares-devel',
+ classads => 'classads-devel',
+ cppunit => 'cppunit-devel',
+ expat => 'expat-devel',
+ gsoap => 'gsoap-devel',
+ voms => 'org.glite.security.voms-api',
+ libtar => 'libtar-devel',
+ log4c => 'log4c-devel',
+ postgresql => 'postgresql-devel',
+ curl => 'curl-devel',
+ libxml2 => 'libxml2-devel',
+ openssl => 'openssl-devel',
+ gridsite=>'emi.gridsite.devel',
+ jdk=>'java-devel',
+ },
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ },
+ etics_locations => {
+ axis => 'axis',
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
modules => {
'lb' => [ qw/emi-lb/ ],
'px' => [ qw/emi-px/ ],
- }
+ },
},
);
close V;
}
+ # XXX: --with ignored for platform-dependend packages
my @copts = ();
my %ge;
@ge{@{$etics_projects{$project{etics_name}}}} = (1) x ($#{$etics_projects{$project{etics_name}}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/ and (defined $externs{$_} or defined $jar{$_})) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
next if ($eext eq '-');
- if ($project ne 'glite') {
+ if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_}) {
+ $eext = $project{etics_locations}{$_} if ($project{etics_locations}{$_});
+ push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ } else {
if ($ge{$_} and not defined $externs{$_}{pkg}) {
push @copts, "--with-$_=\${stageDir}";
}
- } else {
- push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
}
}
}
for (@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
- push @copts,"--with-$_ \${$eext.location}$jar{$_}" if ($project eq 'glite');
+ push @copts,"--with-$_ \${$eext.location}$jar{$_}" if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_});
}
my $conf;
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
$cmd{compile} = 'make';
$cmd{test} = 'make check';
$cmd{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_} ? $etics_externs{$platform}{$_} : $_;
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+ next if ($eext eq '-');
+ # dependencies not listed in etics_externs only for
+ # default platform
+ if (not defined $etics_externs{$platform}{$_} and
+ $platform ne 'default') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
+
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ $used = 1;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ $eext = $edev; # no runtime - change to devel pkg
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ print C "$proj|$edev = B\n"; # additional devel pkg
+ }
}
+ print C "$proj|$eext = $type\n";
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+};
+ $used = 1;
+ }
+ print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ }
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ if (defined $data->{default}{$_}) {
+ $value = $data->{default}{$_};
+ $data->{default}{$_} = '-';
+#print " deleted $_ from default\n";
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print " added $value to $platform\n"
+ }
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <getopt.h>
#include "glite/lb/context.h"
#include "glite/lb/xml_conversions.h"
int use_proxy = 0;
+static const char *get_opt_string = "hxn";
+
+static struct option opts[] = {
+ {"help", 0, NULL, 'h'},
+ {"proxy", 0, NULL, 'x'},
+ {"no-states", 0, NULL, 'n'},
+ {NULL, 0, NULL, 0}
+};
+
int (*user_jobs)(edg_wll_Context, edg_wlc_JobId **, edg_wll_JobStat **);
void
usage(char *me)
{
- fprintf(stderr,"usage: %s [-h] [-x] [userid]\n", me);
+ fprintf(stderr,"usage: %s [options] [userid]\n"
+ "\t-h, --help show this help\n"
+ "\t-x, --proxy contact proxy\n"
+ "\t-n, --no-states do not show job states"
+ "\n",
+ me);
}
int main(int argc,char **argv)
char *errt,*errd;
edg_wlc_JobId *jobs = NULL;
edg_wll_JobStat *states = NULL;
- int i,j;
+ int opt,i,j;
char *owner = NULL;
+ int show_states = 1;
user_jobs = edg_wll_UserJobs;
- for ( i = 1; i < argc; i++ ) {
- if ( !strcmp(argv[i], "-h") || !strcmp(argv[i], "--help") ) {
+
+ while ((opt = getopt_long(argc, argv, get_opt_string, opts, NULL)) != EOF) {
+ switch (opt) {
+ case 'h':
usage(argv[0]);
exit(0);
- } else if ( !strcmp(argv[i], "-x") ) {
+ case 'x':
user_jobs = edg_wll_UserJobsProxy;
- continue;
+ break;
+ case 'n':
+ show_states = 0;
+ break;
+ default:
+ if (owner || !optarg) {
+ usage(argv[0]);
+ exit(1);
+ }
+ owner = strdup(optarg);
+ break;
}
-
- owner = strdup(argv[i]);
- break;
}
if (edg_wll_InitContext(&ctx) != 0) {
if ( user_jobs == edg_wll_UserJobsProxy && owner )
edg_wll_SetParam(ctx, EDG_WLL_PARAM_LBPROXY_USER, owner);
- if (user_jobs(ctx,&jobs,&states)) goto err;
- for (i=0; states[i].state != EDG_WLL_JOB_UNDEF; i++) {
+ if (user_jobs(ctx,&jobs,show_states ? &states : NULL)) goto err;
+ for (i=0; states && states[i].state != EDG_WLL_JOB_UNDEF; i++) {
char *id = edg_wlc_JobIdUnparse(states[i].jobId),
*st = edg_wll_StatToString(states[i].state);
free(id);
free(st);
}
+ if (!show_states) {
+ for (i = 0; jobs[i]; i++) {
+ char *id = edg_wlc_JobIdUnparse(jobs[i]);
+ printf(" %s\n", id);
+ free(id);
+ }
+ }
printf("\nFound %d jobs\n",i);
void glite_lb_dump_stat_fields(void);
#include <time.h>
+#include <stdio.h>
static char *TimeToStr(time_t t)
{
4.1.8-1
- Optimized handling of simultaneous proxy&direct logging (fix for bug #77366)
+4.1.9-1
+- Fixed default setting for GLITE_LB_EXPORT_PURGE_ARGS
+
+4.1.10-1
+- Proper handling of background purge error messages (fix for bug #77974)
+
5.0.0-1
- Fixes for parallel release in EMI & gLite
- Version numbering fixed
5.0.6-1
- Using rpath only as $prefix/$libdir (fixes rpmlint rpath check in mock environment)
+
+5.0.7-1
+- Fixed default setting for GLITE_LB_EXPORT_PURGE_ARGS
+- Proper handling of background purge error messages (fix for bug #77974)
+- Fix locations in automatic purge (SB #81646).
+- Makefile adjustments for eticsless build
+
+5.0.8-1
+- Finalized ETICS+rpath+libtool mock build problem, workaround inside ETICS configurations now
+- Fixing rpath problem in mock builds
+
# $Header$
-module.version=5.0.6
+module.version=5.0.8
module.age=1
break;
case HTTP_UNSUPPORTED:
edg_wll_SetError(ctx, ENOTSUP, "Protocol versions incompatible");
- break;
+ break;
+ case HTTP_ACCEPTED:
+ edg_wll_SetError(ctx,EDG_WLL_ERROR_ACCEPTED_OK,response+len);
+ break;
case HTTP_INTERNAL:
/* fall through */
default:
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
for $_ (keys %{$project{etics_externs}}) {
$etics_externs{$_} = $project{etics_externs}{$_};
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
gridsite=>'emi.gridsite.shared',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
gip_service=>'emi.bdii.glite-info-provider-service',
bdii=>'emi.bdii.core',
glite_version=>'emi.misc.glite-version',
jdk=>'java-devel',
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
void *notif_index_cols;
time_t notifDurationMax;
- char **super_users;
+ char **msg_prefixes;
time_t rssTime;
_edg_wll_authz_policy authz_policy;
int (*processRequest_cb)(edg_wll_Context ctx);
void *processRequestUserData;
+
+ char **msg_brokers;
)
/* to be used internally: set, update and and clear the error information in
extern void edg_wll_FreeParams(edg_wll_Context context);
+extern int edg_wll_ParseMSGConf(char *msg_conf, char ***brokers, char ***prefixes);
+
#ifdef __cplusplus
}
#endif
EDG_WLL_ERROR_COMPARE_EVENTS, /**< Two compared events differ. */
EDG_WLL_ERROR_DB_TRANS_DEADLOCK, /**< Deadlock detected during DB operation. */
EDG_WLL_ERROR_DB_LOST_CONNECTION, /**< Lost connection to DB */
+ EDG_WLL_ERROR_ACCEPTED_OK, /**< Deferred or background operation accepted. */
} edg_wll_ErrorCode;
/**
7.1.9-1
- Prevent interlogger files from getting corrupted when disk is full
+7.1.10-1
+- Proper handling of background purge error messages (fix for bug #77974)
+- Better detection of excessively long lines in HTTP requests.
+
8.0.0-1
- Fixes for parallel release in EMI & gLite
- Version numbering fixed
- at3 location detection reverted
- '--stage=/' behaviour fixed in configure
+8.0.6-1
+- Proper handling of background purge error messages (fix for bug #77974)
+- Better detection of excessively long lines in HTTP requests.
+- Interpretting Messaging broker names and topic prefixes
+
# $Header$
-module.version=8.0.5
+module.version=8.0.6
module.age=1
if (ctx->jpreg_dir) free(ctx->jpreg_dir);
if (ctx->serverIdentity) free(ctx->serverIdentity);
+ if (ctx->msg_prefixes) {
+ char **fm;
+ for (fm = ctx->msg_prefixes; fm && *fm; fm++)
+ free(*fm);
+ free(ctx->msg_prefixes);
+ ctx->msg_prefixes = NULL;
+ }
+ if (ctx->msg_brokers) {
+ char **fm;
+ for (fm = ctx->msg_brokers; fm && *fm; fm++)
+ free(*fm);
+ free(ctx->msg_brokers);
+ ctx->msg_brokers = NULL;
+ }
edg_wll_FreeParams(ctx);
"Interlogger has events pending",
"Compared events differ",
"DB deadlock detected",
+ "DB connection lost",
+ "Background operation accepted",
};
const char *edg_wll_GetErrorText(int code) {
return 0;
}
+
+int
+edg_wll_ParseMSGConf(char *msg_conf, char ***brokers, char ***prefixes) {
+ FILE *conf;
+ char l[512];
+ char *data, *d_to_parse;
+ int inmsg = 0, ntoks;
+ char *tok_r = NULL;
+ char *token;
+ char **tokens;
+
+
+ conf = fopen (msg_conf, "r");
+ if (conf == NULL) return -1; //Cannot open file
+
+ while( 1 ) {
+ fgets(l, 512, conf);
+ if ( feof(conf) ) break;
+
+ if (l[0] == '[') { // Detect section [msg]
+ if (!strncasecmp(l, "[msg]", 5)) inmsg = 1;
+ else inmsg = 0;
+ }
+ else if (inmsg) {
+ if ((!strncasecmp(l, "prefix", 6)) || (!strncasecmp(l, "broker", 6))) {
+ data=strchr(l, '=');
+ if (!data) return -2; // No '='
+// data = data[1];
+ if (strlen(data) < 1) return -2; // No text after '='
+
+ tokens = NULL; ntoks = 0;
+ for (d_to_parse = data+1; ; d_to_parse = NULL) {
+ token = strtok_r(d_to_parse, " \t\n", &tok_r);
+ if (token == NULL) break;
+
+ tokens = (char**) realloc (tokens, sizeof(char**) * (ntoks + 2));
+ asprintf(&(tokens[ntoks]), "%s", token);
+ tokens[++ntoks] = NULL;
+ }
+
+ if (!strncasecmp(l, "prefix", 6)) *prefixes=tokens;
+ else *brokers=tokens;
+ }
+
+ }
+
+ }
+
+ return 0;
+}
#define MISUSE { \
char *e = edg_wll_EventToString(eventcode); \
char *k = edg_wll_KeyNameToString(keycode); \
- sprintf(err_desc,"Key %s schouldn't be used for event type %s.", k,e); \
+ sprintf(err_desc,"Key %s shouldn't be used for event type %s.", k,e); \
free(e); \
free(k); \
ret=edg_wll_SetError(context,EDG_WLL_ERROR_PARSE_KEY_MISUSE,err_desc); \
first = strdup(connPTR->buf);
bshift(cr-connPTR->buf+2);
pstat = HEAD;
- } else rdmore = 1;
+ } else {
+ if (connPTR->bufUse >= connPTR->bufSize) {
+ edg_wll_SetError(ctx,E2BIG,"HTTP Request FIRST line too long");
+ free(connPTR->buf); connPTR->buf = NULL;
+ connPTR->bufUse = 0; connPTR->bufSize = 0;
+ goto error; }
+ rdmore = 1;
+ }
break;
case HEAD:
if ((cr = memchr(connPTR->buf,'\r',connPTR->bufUse)) &&
clen = atoi(connPTR->buf+sizeof(CONTENT_LENGTH)-1);
bshift(cr-connPTR->buf+2);
- } else rdmore = 1;
+ } else {
+ if (connPTR->bufUse >= connPTR->bufSize) {
+ edg_wll_SetError(ctx,E2BIG,"HTTP Request HEAD line too long");
+ free(connPTR->buf); connPTR->buf = NULL;
+ connPTR->bufUse = 0; connPTR->bufSize = 0;
+ goto error; }
+ rdmore = 1;
+ }
break;
case BODY:
if (connPTR->bufUse) {
if ( !ctx->connProxy->buf ) {
ctx->connProxy->bufSize = BUFSIZ;
ctx->connProxy->bufUse = 0;
- ctx->connProxy->buf = malloc(BUFSIZ);
+ ctx->connProxy->buf = malloc(ctx->connProxy->bufSize);
}
do {
while (!rdmore && pstat != DONE) switch (pstat) {
char *cr;
-
case FIRST:
if ((cr = memchr(ctx->connProxy->buf,'\r',ctx->connProxy->bufUse)) &&
ctx->connProxy->bufUse >= cr-ctx->connProxy->buf+2 && cr[1] == '\n')
chmod -w $@ >/dev/null
ver.tex:
- @echo "\def\version{${version}}" > ver.tex
+ printf "\134def\134version{${version}}\n" > ver.tex
stage: doc
$(MAKE) install PREFIX=${stagedir}
${INSTALL} -m 644 LBTG.pdf ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version}
# install DG example sources
for p in ${top_srcdir}/examples/*; do \
- if [ "$$p" == "${top_srcdir}/examples/CVS" ]; then continue; fi; \
+ if [ "$$p" = "${top_srcdir}/examples/CVS" ]; then continue; fi; \
${INSTALL} -m 644 "$$p" "${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version}/examples"; \
done
LBTP-IntegrationTests.tex \
LBTP-Tests.tex \
LBTP-PerfTests.tex \
- LBTP-InterTests.tex
+ LBTP-InterTests.tex \
+ LBTP-Nagios.tex
LBTG.pdf: ${COMMON} \
LBTG.tex \
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
-for $_ (keys %{$project{etics_externs}}) {
- $etics_externs{$_} = $project{etics_externs}{$_};
+for my $platform (keys %{$project{etics_externs}}) {
+ for $_ (keys %{$project{etics_externs}{$platform}}) {
+ $etics_externs{$platform}{$_} = $project{etics_externs}{$platform}{$_};
+ }
}
+reshuffle_platforms(\%etics_externs, $project{supported_platforms});
+reshuffle_platforms(\%{$project{etics_externs_devel}}, $project{supported_platforms});
for $_ (keys %{$project{etics_projects}}) {
$etics_projects{$_} = $project{etics_projects}{$_};
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
vdt=>[qw/globus globus_essentials gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
flavours => '--thrflavour= --nothrflavour=',
local_prefix => '/usr',
etics_externs => {
- globus_essentials=>'globus-gssapi-gsi',
- globus=>'globus-gssapi-gsi-devel',
- gridsite=>'emi.gridsite.shared',
- yaim_core=>'emi.yaim.yaim-core',
- yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
- gip_service=>'emi.bdii.glite-info-provider-service',
- bdii=>'emi.bdii.core',
- glite_version=>'emi.misc.glite-version',
- glue_schema=>'emi.bdii.glue-schema',
- trustmanager=>'emi.java-security.trustmanager',
- trustmanager_axis=>'emi.java-security.trustmanager-axis',
- axis=>'axis1.4',
- lcas=>'emi.sac.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'emi.misc.glite.build-common-cpp',
- jdk=>'java',
+ default => {
+ globus_essentials=>'globus-gssapi-gsi',
+ globus=>'globus-gssapi-gsi-devel',
+ gridsite=>'emi.gridsite.shared',
+ yaim_core=>'emi.yaim.yaim-core',
+ yaim_bdii=>'emi.bdii.yaim-bdii',
+ gip_service=>'emi.bdii.glite-info-provider-service',
+ bdii=>'emi.bdii.core',
+ glite_version=>'emi.misc.glite-version',
+ glue_schema=>'emi.bdii.glue-schema',
+ trustmanager=>'emi.java-security.trustmanager',
+ trustmanager_axis=>'emi.java-security.trustmanager-axis',
+ axis=>'axis1.4',
+ lcas=>'emi.sac.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'emi.misc.glite.build-common-cpp',
+ jdk=>'java',
+ },
+ sl5_x86_64_gcc412EPEL => {
+ 'myproxy-devel' => 'myproxy-devel.x86_64',
+ },
},
etics_externs_devel => {
- cares => 'c-ares-devel',
- classads => 'classads-devel',
- cppunit => 'cppunit-devel',
- expat => 'expat-devel',
- gsoap => 'gsoap-devel',
- voms => 'org.glite.security.voms-api',
- libtar => 'libtar-devel',
- log4c => 'log4c-devel',
- postgresql => 'postgresql-devel',
- curl => 'curl-devel',
- libxml2 => 'libxml2-devel',
- openssl => 'openssl-devel',
- gridsite=>'emi.gridsite.devel',
- jdk=>'java-devel',
+ default => {
+ cares => 'c-ares-devel',
+ classads => 'classads-devel',
+ cppunit => 'cppunit-devel',
+ expat => 'expat-devel',
+ gsoap => 'gsoap-devel',
+ voms => 'org.glite.security.voms-api',
+ libtar => 'libtar-devel',
+ log4c => 'log4c-devel',
+ postgresql => 'postgresql-devel',
+ curl => 'curl-devel',
+ libxml2 => 'libxml2-devel',
+ openssl => 'openssl-devel',
+ gridsite=>'emi.gridsite.devel',
+ jdk=>'java-devel',
+ },
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ },
+ etics_locations => {
+ axis => 'axis',
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
modules => {
'lb' => [ qw/emi-lb/ ],
'px' => [ qw/emi-px/ ],
- }
+ },
},
);
close V;
}
+ # XXX: --with ignored for platform-dependend packages
my @copts = ();
my %ge;
@ge{@{$etics_projects{$project{etics_name}}}} = (1) x ($#{$etics_projects{$project{etics_name}}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/ and (defined $externs{$_} or defined $jar{$_})) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
next if ($eext eq '-');
- if ($project ne 'glite') {
+ if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_}) {
+ $eext = $project{etics_locations}{$_} if ($project{etics_locations}{$_});
+ push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ } else {
if ($ge{$_} and not defined $externs{$_}{pkg}) {
push @copts, "--with-$_=\${stageDir}";
}
- } else {
- push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
}
}
}
for (@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
- push @copts,"--with-$_ \${$eext.location}$jar{$_}" if ($project eq 'glite');
+ push @copts,"--with-$_ \${$eext.location}$jar{$_}" if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_});
}
my $conf;
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
$cmd{compile} = 'make';
$cmd{test} = 'make check';
$cmd{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_} ? $etics_externs{$platform}{$_} : $_;
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+ next if ($eext eq '-');
+ # dependencies not listed in etics_externs only for
+ # default platform
+ if (not defined $etics_externs{$platform}{$_} and
+ $platform ne 'default') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
+
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ $used = 1;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ $eext = $edev; # no runtime - change to devel pkg
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ print C "$proj|$edev = B\n"; # additional devel pkg
+ }
}
+ print C "$proj|$eext = $type\n";
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+};
+ $used = 1;
+ }
+ print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ }
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ if (defined $data->{default}{$_}) {
+ $value = $data->{default}{$_};
+ $data->{default}{$_} = '-';
+#print " deleted $_ from default\n";
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print " added $value to $platform\n"
+ }
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
1.1.11-3
- Module rebuilt
+1.1.12-1
+- Extended information on logging
+- More on logging to syslog
+- A few typos fixed
+
1.2.0-1
- Documentation updated to cover new features to be released with EMI-1
- Update on changes in L&B 3.0
- Grammar fixes
+1.2.8-1
+- Portable syntax of test condition in install commands.
+- Extended information on logging
+- More on logging to syslog
+- A few typos fixed
+- Support for GLITE_LB_WMS_DN and GLITE_LB_AUTHZ_* yaim parameters
+- More thorough distinction between EMI and gLite installation
+- Polishing of the installation documentation
+- Switch to yet another EMI template
+
+1.2.9-1
+- New FAQ on WMS and LB_SUPER_USERS
+
# $Header$
-module.version=1.2.7
+module.version=1.2.9
module.age=1
Job Provenance (\JP).
\subsection{Common logging format}
+\label{inst:comlog}
Since \LBver{2.1} \LB service follows the \textbf{gLite common logging recommendations v1.1}:
\begin{center}
\url{https://twiki.cern.ch/twiki/pub/EGEE/EGEEgLite/logging.html}.
\texttt{\$HOME/.log4crc} (or by setting the \texttt{LOG4C\_RCPATH} environment variable
to a directory containing the \texttt{log4crc} file) to obtain detailed debugging output.
One can debug only specific parts of the LB system, for example
-by uncommenting \texttt{LB.SERVER.DB} cathegory in the \texttt{log4crc} file,
+by uncommenting \texttt{LB.SERVER.DB} category in the \texttt{log4crc} file,
one gets only the debugging info related to the underlying database subsystem calls.
+Currently supported log categories are:
+
+\begin{tabularx}{\textwidth}{>{\tt}lX}
+SECURITY & Security matters \\
+ACCESS & Communication issues \\
+CONTROL & \LB server control \\
+LB & \emph{unused} \\
+LB.LOGD & Messages from the \LB local logger \\
+LB.INTERLOGD & Messages from the \LB interlogger \\
+LB.NOTIFINTERLOGD & Messages from the notification interlogger \\
+LB.SERVER & Processing within the \LB server \\
+LB.SERVER.DB & DB calls made by the server \\
+LB.SERVER.REQUEST & Processing \LB server requests \\
+LB.HARVESTER & Messages from the \LB harvester \\
+LB.HARVESTER.DB & DB calls made by the harvester \\
+LB.AUTHZ & Authentication matters \\
+\end{tabularx}
+
+The following log priorities are recognized, in a descending order of severity: \texttt{fatal}, \texttt{error}, \texttt{warn}, \texttt{info}, \texttt{debug}. Note that running with any of the logging categories set do \texttt{debug} for a prolonged period of time will result in the logfile growing uncontroledly.
+
+In a typical setup, logging messages generated by the \LB service will be found in \texttt{/var/log/messages}.
+
+\note\ \emph{syslog} is typically configured to drop log messages with priority \texttt{debug}. You may want to enable it, for example by using something like this in \texttt{/etc/syslog.conf} and then restarting {syslog}:
+\begin{verbatim}
+*.debug;mail.none;authpriv.none;cron.none -/var/log/messages
+\end{verbatim}
+
\subsection{\LB server}
\subsubsection{Hardware requirements}
Install and configure a clean system, the \textbf{EPEL} repository, and the \textbf{EMI} repository as per instructions given in \htmladdnormallink{https://twiki.cern.ch/twiki/bin/view/EMI/GenericInstallationConfigurationEMI1}{https://twiki.cern.ch/twiki/bin/view/EMI/GenericInstallationConfigurationEMI1}. Then install metapackage \texttt{emi-lb}.
-\item Installing from \textbf{gLite's note-type repository} (applies to \LBver{up to 2.1}):
+\item Installing from \textbf{gLite's node-type repository} (applies to \LBver{up to 2.1}):
% XXX Don't forget to increase version if ever LB 3 releases with gLite
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 install metapackage \texttt{glite-LB} from an appropriate gLite software repository.
\texttt{/opt/glite/yaim/bin/yaim -c -s site-info.def -n glite-LB}
\end{quote}
-Available parameters specific to LB server are:
+Available parameters specific to LB server are (mandatory parameters are \textbf{highlighted}):
%variable&meaning&default value &further details\\
\begin{itemize}
-\item \texttt{MYSQL\_PASSWORD} -- root password of MySQL server (mandatory)
+\item \textbf{MYSQL\_PASSWORD} -- root password of MySQL server (mandatory)
\item \texttt{GLITE\_LB\_EXPORT\_PURGE\_ARGS} -- purge timeouts (default: \texttt{--cleared 2d --aborted 15d --cancelled 15d --other 60d})
According to local retention policy you may want to use different purge timeouts (for example WLCG would need \texttt{--cleared 90d --aborted 90d --cancelled 90d --other 90d}).
Authorization:
\begin{itemize}
-\item \texttt{GLITE\_LB\_SUPER\_USERS} -- additional super-users (default: empty)
-\item \texttt{GLITE\_LB\_WMS\_DN} -- DNs of WMS servers (default: empty)
+\item \texttt{GLITE\_LB\_SUPER\_USERS} -- additional super-users (default: empty)\footnote{The use of this parameter is a FAQ. See section \ref{FAQ:WMS_superusers}.}
+\item \texttt{GLITE\_LB\_WMS\_DN} -- DNs of WMS servers (default: empty)\footnotemark[\thefootnote]
\item \texttt{GLITE\_LB\_RTM\_DN} -- DNs using to get notifications from \LB server\\
(default: \texttt{heppc24.hep.ph.ic.ac.uk} machine certificate)
-\item \texttt{GLITE\_LB\_AUTHZ\_<category>} -- more detailed tuning of access grants, see Section~\ref{inst:authz} (default: empty, '.*' for logging and job registrations)
+\item \texttt{GLITE\_LB\_AUTHZ\_<category>} -- more detailed tuning of access grants, see Section~\ref{inst:authz} (default: empty, '\texttt{.*}' for logging and job registrations)
\end{itemize}
-Additional helper or legacy parameters for \LB:
+Additional helper or legacy parameters:
\begin{itemize}
\item \texttt{GLITE\_LB\_LOCATION} -- \LB prefix (default: \texttt{/opt/glite} or \texttt{/usr})
\item \texttt{GLITE\_LB\_LOCATION\_ETC} -- system config directory (default: \texttt{/opt/glite/etc} or \texttt{/etc})
(default: \texttt{/var/glite/logging/status.log}). \emph{Note: This feature is now obsolete and only available in \LBver{1.x}.}
\end{itemize}
+
In addition to those, YAIM LB module uses following parameters:
-\texttt{INSTALL\_ROOT}, \texttt{GLITE\_LOCATION\_VAR}, \texttt{GLITE\_USER}, \texttt{SITE\_EMAIL}.
+\begin{itemize}
+\item \texttt{INSTALL\_ROOT} -- installation root, shouldn't be changed (default: '/opt' or '/')
+\item \texttt{GLITE\_LOCATION\_VAR} -- directory for local state files (default: '/opt/glite/var' or '/var/glite')
+\item \texttt{GLITE\_USER} -- unprivileged user name (default: 'glite')
+\item \textbf{SITE\_NAME} -- site name (mandatory)
+\item \textbf{SITE\_EMAIL} -- site email, for cron scripts (mandatory)
+\end{itemize}
Lists are separated by comma.
\end{verbatim}
\end{quote}
-Alongside the broker address and port, \texttt{msg.conf} also specifies the messaging plugin to be used by the notification interlogger. Plugin settings should be correct \emph{ab initio} and do not require modification by administrators. Broker settings may require an adaptive change in case the currently configured broker disapears and automatic checks fail to switch the settings to another one on time.
+Overall, \texttt{msg.conf} specifies the following information:
+
+\begin{itemize}
+\item The messaging plugin to be used by the notification interlogger. Plugin settings should be correct \emph{ab initio} and do not require modification by administrators.
+\item Broker settings (attribute \texttt{broker}). They may require an adaptive change in case the currently configured broker disappears and automatic checks fail to switch the settings to another one on time.
+\item Permissible topic title prefixes (attribute \texttt{prefix}). Registrations for delivery to topics not matching the prefix will be rejected. In case no prefix is specified, \LB applies the default EGI prefix: \texttt{grid.emi.}
+\end{itemize}
\subsubsection{Index configuration}
In normal operation \LB server sends error messages to syslog.
Informational messages are generally avoided in order to prevent syslog congestion.
+Since \LBver{2.1}, the service implements a common logging format\footnote{\url{http://en.wikipedia.org/wiki/Common_Log_Format}} (see section\,\ref{inst:comlog}, page\,\pageref{inst:comlog}).
+
+For \LBver{2.0 and lower}, the following instructions apply:
+
\begin{sloppypar}
When tracing problems, GLITE\_LB\_SERVER\_DEBUG environment variable can be set to
non-empty value when starting the service.
designed to inform you of network problems before your clients, end-users or
managers do.
-%\TODO{ruda: More about Nagios. How LB is integrated - LB sensors for Nagios}
+There is a Nagios plugin that tests the status of the \LB server. It is discussed in detail in section~\ref{s:nagios}, page~\pageref{s:nagios}.
\subsubsection{ETICS}
--- /dev/null
+%
+%% Copyright (c) Members of the EGEE Collaboration. 2004-2010.
+%% See http://www.eu-egee.org/partners for details on the copyright holders.
+%%
+%% Licensed under the Apache License, Version 2.0 (the "License");
+%% you may not use this file except in compliance with the License.
+%% You may obtain a copy of the License at
+%%
+%% http://www.apache.org/licenses/LICENSE-2.0
+%%
+%% Unless required by applicable law or agreed to in writing, software
+%% distributed under the License is distributed on an "AS IS" BASIS,
+%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+%% See the License for the specific language governing permissions and
+%% limitations under the License.
+%
+% System tests
+
+\section{Nagios Probe}
+\label{s:nagios}
+
+There is a Nagios probe to check the service status of an \LB server node. It is distributed from the EMI repository and the name of the package is \texttt{emi-lb-nagios-plugins}.
+
+\subsection{Tests Performed}
+Before starting the actual test the probe checks for existence and validity of a proxy certificate, and for availability of commands (essential system commands, various \LB Client commands and grid proxy manipulation commands).
+
+The following tests are performed by the probe. Various tests check the working status of various processes running on the \LB server node:
+
+\begin{enumerate}
+\item Register job
+ \begin{itemize}
+ \item \LB server (\texttt{glite-lb-bkserverd})
+ \end{itemize}
+\item Register to receive notifications
+ \begin{itemize}
+ \item \LB server (\texttt{glite-lb-bkserverd})
+ \end{itemize}
+\item Log events resulting in state \emph{cleared}
+ \begin{itemize}
+ \item \LB logger (\texttt{glite-lb-logd})
+ \end{itemize}
+\item Check job state
+ \begin{itemize}
+ \item \LB server (\texttt{glite-lb-bkserverd})
+ \item Interlogger (\texttt{glite-lb-interlogd})
+ \end{itemize}
+\item Receive notifications
+ \begin{itemize}
+ \item Notification interlogger (\texttt{glite-lb-notif-interlogd})
+ \end{itemize}
+\end{enumerate}
+
+The test also tries to drop the test notification and purge the test job to clean up after itself. However, purging the job won't probably be allowed by the \LB server's policy and the test job will remain registered on the \LB server until removed by a regular purge.
+
+\subsection{Return Values}
+Return values follow the Nagios pattern:
+
+\begin{description}
+\item[0] The service is running normally
+\item[1] The service is running but there were warnings
+\item[2] The service status is critical
+\item[3] The service status is unknown, probe could not run
+\end{description}
+
+\subsection{Console Output}
+Text output indicates the results of the probe and gives a more detailed description of failure causes.
+
+The probe can return one of the following:
+
+\begin{tabularx}{\textwidth}{|c|p{5cm}|X|}
+\hline
+\multirow{3}{*}{WARNING} & \emph{Unexpected version output} & The server responded to a query for server version over the WS interface, but the format of the response did not match the expected pattern. \\
+& \emph{Unexpected state of test job} & The state of the test job did not remain unchanged (\texttt{Submitted}) but neither did it reach status \texttt{Cleared} in the alotted time. All deamons seem to work but the processing is slow.\\
+& \emph{Could not drop notification} & The owner should be able to drop their own notification. Failure to do so is unexpected but does not mean that the service is not functioning. \\
+\hline
+\multirow{6}{*}{DOWN} & \emph{Unable to Get Server Version} & The server did not respond to a query for server version over the WS interface. It is probably not running, is unaccessible or SSL handshake failed due to faulty/outdated certificates/CRLs. \\
+& \emph{Job Registration Failed Locally} & The probe was unable to perform the local side of job registration. This should be rare. \\
+& \emph{\LB Server Not Running} & The probe was unable to register a test job or a test notification with the \LB server. It is probably not running or is unaccessible. \\
+& \emph{Event Delivery Chain (Logger/Interlogger) Not Running} & The server process is running but events are not being delivered by \LB's local logger/interlogger. Check the Logger and the Interlogger. \\
+& \emph{Notification Interlogger Not Running} & Events are being delivered correctly and server responds properly to status queries, but it its not delivering notification messages. The notification interlogger is probably not running.\\
+\hline
+\multirow{5}{*}{UNKNOWN} & \emph{Probe timed out} & The probe was unable to finish before the alotted time. Consider increasing the timeout with \texttt{-t}. The minimum reasonable value is 10\,s. \\
+& \emph{No server specified} & Server address was not specified when running the probe. Give one with \texttt{-H} \\
+& \emph{Probe could not write temporary files} & The temporary directory was not writable. Check the default location or specify a new one with \texttt{-T}.\\
+& \emph{Some commands are not available} & Probe could not run. Some of the required commands are not present on the system. Run probe from command line with \texttt{-v[vv]} and check output. \\
+& \emph{No Credentials} & No proxy certificate was found. Probe could not run. \\
+& \emph{Credentials Expired} & A proxy certificate was found, but expired. Probe could not run. \\
+\hline
+\end{tabularx}
+
+\subsection{Running the Probe}
+
+\subsubsection{Command Line Arguments}
+The probe recognizes the following command line arguments:
+
+\begin{tabularx}{\textwidth}{l l X}
+ \texttt{-h} & \texttt{-{}-help} & Print out simple console help \\
+ \texttt{-v[vv]} & \texttt{-{}-verbose} & Set verbosity level (\texttt{-{}-verbose} denotes a single \texttt{v}). \\
+ \texttt{-H} & \texttt{-{}-hostname} & \LB node address. Environmental variable \texttt{GLITE\_WMS\_QUERY\_SERVER} used if unspecified. \\
+ \texttt{-p} & \texttt{-{}-port} & \LB server port. Other port numbers (logger, WS interface) are derrived from it. Environmental variable \texttt{GLITE\_WMS\_QUERY\_SERVER} or default port \texttt{9000} used if unspecified. \\
+ \texttt{-t} & \texttt{-{}-timeout} & Timeout in seconds. The minimum reasonable timeout is approx.~10\,s. There is no default, except the internal waiting cycle for notifications, which will time out after approx.~20\,s.\footnote{The probe adjusts the internal waiting cycle to spend a maximum of $\frac{3}{4}$ of the specified timeout interval while waiting for notifications to deliver. It will finish correctly before timing out if undelivered notifications are the only problem.} \\
+ \texttt{-T} & \texttt{-{}-tmpdir} & Directory to store temporary files. By default the probe uses \texttt{/var/lib/grid-monitoring/emi.lb} and falls back to \texttt{/tmp} if the former does not exist or is not writable. \\
+\end{tabularx}
+
+\subsubsection{Environmental Variables}
+In essence the probe recognizes the same environmental variables as the \LB client. No environmental variables need to be set if hostname is specified as a command line argument to the probe.
+
+\begin{tabularx}{\textwidth}{p{4.5cm} X}
+\texttt{GLITE\_WMS\_QUERY\_SERVER} & \textbf{The} \LB server. This is the server that will be contacted and tested if no hostname is supplied to the probe. \\
+\texttt{GLITE\_LB\_SERVER\_PORT GLITE\_LB\_LOGGER\_PORT} & Specifies the \LB server port or the \LB local logger port, respectively. It is used only in case a hostname is given as a command line argument to the probe wit no port number. \\
+% This is not a very nice way to set two parapgraps aside. I hate the fixed width setting but I could not find any other solution.
+\end{tabularx}
+
+\subsubsection{Sample Nagios Service Definition}
+Simple definition to be included in \texttt{/etc/nagios/commands.cfg}:
+
+\begin{verbatim}
+define command{
+ command_name check-lb-server
+ command_line /usr/libexec/grid-monitoring/probes/emi.lb/LB-probe \$HOSTADDRESS$
+ }
+\end{verbatim}
+
+
\hline
{\tt lb-test-notif-msg.sh} & Implemented & Test delivery of \LB notifications over ActiveMQ \\
\hline
+{\tt lb-test-permissions.sh} & Implemented & Check ownership and permission settings for config and runtime files \\
+\hline
+{\tt lb-test-nagios-probe.sh} & Implemented & Run the nagios probe and check results \\
+\hline
\end{tabularx}
\subsubsection{Event logging examples}
events (e.g. destination computing element) wrt. the values reported in the job states.
+\subsubsection{Sandbox Transfers}
+
+\req\ All \LB\ services running
+
+\what\
+\begin{enumerate}
+\item Register a compute job.
+\item Register input sandbox transfer.
+\item Register output sandbox transfer.
+\item Generate events to trigger job state changes in one of the sandbox transfer jobs.
+ \begin{enumerate}
+ \item Start the transfer and check that state has changed appropriately.
+ \item Finish the transfer and check that state has changed appropriately.
+ \end{enumerate}
+\item Use another sandbox transfer job registered above to start, then fail the transfer and check that this is reflected by the resulting transfer job status.
+\item Check that the compute job and its sandbox transfer jobs link up correctly.
+
+\end{enumerate}
+
+\how\ \ctblb{lb-test-sandbox-transfer.sh}
+
+\note\ The test includes artificial delays. Takes approx. 50\,s to finish.
+
+\result\ Job states should change on event delivery as expect, related jobs should ``know'' their IDs.
+
+
+
%\subsubsection{Non-simple job states}
\subsubsection{Delivery to ActiveMQ}
-\label{notif1}
+\label{notifamq}
\req\ All \LB\ services running, ActiveMQ broker configured and running
\what
+
\subsection{Server purge}
\textbf{WARNING: This test is destructive, it destroys ALL data in an
that the sets can be distinguished from each other.
\item \label{purgel}
Using \code{edg\_wll\_JobLog} retrieve events of all the jobs
-\item \label{purge1}
+\item \label{purge2}
Purge the first set of jobs (by specifying appropriate timestamp),
letting the server dump the purged events.
-\item \label{purge2} Purge the other set of jobs, also dumping the events.
-\item \label{purge3} Run purge once more.
+\item \label{purge3} Purge the other set of jobs, also dumping the events.
+\item \label{purge4} Run purge once more.
\end{enumerate}
\how\ \ctblb{lb-test-purge.pl}
including the checks.
\end{hints}
-\subsubsection{Sandbox Transfers}
-
-\req\ All \LB\ services running
-
-\what\
-\begin{enumerate}
-\item Register a compute job.
-\item Register input sandbox transfer.
-\item Register output sandbox transfer.
-\item Generate events to trigger job state changes in one of the sandbox transfer jobs.
- \begin{enumerate}
- \item Start the transfer and check that state has changed appropriately.
- \item Finish the transfer and check that state has changed appropriately.
- \end{enumerate}
-\item Use another sandbox transfer job registered above to start, then fail the transfer and check that this is reflected by the resulting transfer job status.
-\item Check that the compute job and its sandbox transfer jobs link up correctly.
-
-\end{enumerate}
-
-\how\ \ctblb{lb-test-sandbox-transfer.sh}
-
-\note\ The test includes artificial delays. Takes approx. 50\,s to finish.
-
-\result\ Job states should change on event delivery as expect, related jobs should ``know'' their IDs.
+\subsection{Other Service Tests}
\subsubsection{ACL Parsing}
\how\ \ctblb{lb-test-threaded.sh}
-\note\ The is not a thorough test. It is not capable of discovering rare or improbable problems but it will check the essentials of multi-threaded opration.
+\note\ This is not a thorough test. It is not capable of discovering rare or improbable problems but it will check the essentials of multi-threaded opration.
\result\ The test must not hang. Meaningful results (albeit errors) must be returned by all threads.
+\subsubsection{Config and Runtime File Permissions}
+\label{permissions}
+\req\ All \LB\ services configured and running.
+
+\what
+\begin{enumerate}
+\item Decide on permission/ownership masks for various files identified for checking.
+\item Check ownership and permission settings for selected files.
+\item Compare that with a pre-determined mask.
+\end{enumerate}
+
+\how\ \ctblb{lb-test-permissions.sh}
+
+\result\ The status of all files should match the pre-determined mask.
+
+
+\subsubsection{Nagios probe}
+\label{permissions}
+\req\ All \LB\ services configured and running, nagios probe\footnote{see also page \pageref{s:nagios}} installed.
+
+\what
+\begin{enumerate}
+\item Check probe for presence
+\item Run the probe
+\item Check if text and exit code are OK or at least consistent
+\end{enumerate}
+
+\how\ \ctblb{lb-test-nagios-probe.sh}
+
+\result\ The probe has returned OK and exit code was 0.
+
+\note\ The probe includes artificial delays. The test takes approx. 10\,s to finish.
+
\section{LB ``In the Wild''---Real-World WMS Test}
\req\ All \LB services running, working grid infrastructure accessible (including permissions).
\input{definitions}
-\title{Logging and Bookkeeping -- Test Plan Test Suite Documentation}
+\title{Logging and Bookkeeping -- Test Plan \& Test Suite Documentation}
%\Subtitle{Test Plan Test Suite Documentation}
\author{CESNET EGEE III JRA1 and SA3 team}
%\DocIdentifier{glite-lb-doc-tp-\version}
\newpage
\input{LBTP-InterTests}
+\newpage
+\input{LBTP-Nagios}
+
%\appendix
%\newpage
%\input{LBTP-Appendix}
Users register for notifications via the notification client \verb'glite-lb-notify', described in Section
\ref{s:lb-notify}
-Conditions under which the notifications are sent can be specified. For example -- job XY reaches status
+Conditions under which the notifications are sent can be specified. For example -- job XY reaches state
DONE. In \LBver{1.x}, one or more JOBID's are required in the condition and only a single occurence
-of a specific attribute is allowed among ANDed conditions. More complex conditions are allowed since \LBver{2.0}
+of a specific attribute is allowed among ANDed conditions. More complex conditions are allowed since \LBver{2.0}, including specification of job owner, or requesting to receive notifications only on actual job state change. \LBver{3.0} introduces an option to deliver notification messages over OpenWire or STOMP-based messaging infrastructure.\footnote{Such as Apache's ActiveMQ.}
-The registration is then delivered to the \LB server where it is stored.
+Each registration is delivered to the \LB server where it is stored.
At the same time, the server generates a unique notification ID for the registration and returns it to the
user.
the notification ID when registering. During this period the user can attach to the server and receive notification messages,
change conditions which triger the notification, prolong validity of the registration, or remove the registration
from the \LB server.
-It is also possible to specify on registration that notification messages for a given registration are not supposed to be delivered through the notification client but through the messaging infrastructure instead.
While the registration is valid, the user is able to repeatably connect to the \LB server from different places in the
-network and continue receiving notifications associated with the given notification ID. When relying on \LB's event delivery infrastructure to deliver messages, even notifications generated
+network and continue receiving notifications associated with the given notification ID.\footnote{Should the user have opted to receive notification messages over the messaging infrastructure, then---obviously---they need to connect to the correct topic on a messaging broker, rather than contacting the \LB sever. If unsure what messaging brokers are available in your grid environment, read that information from BDII or use the \LB Server's configuration page (Section \ref{s:findbroker}).
+} Notifications generated
while the user was not connected are stored and waiting until the user reconnects.
\subsubsection{Caveats}
\subsection{HTML and plain text interface}
+
+It is possible to use a standard Web browser or a command-line tool such as \texttt{wget} or \texttt{curl} to extract information from the \LB server. Although the querying power is higly limited, the HTTP or Plain Text interface can still serve as a simple tool to access information.
+
+\subsubsection{Job ID or Notification ID as URL}
\label{simple}
Since the gLite jobId has the form of a unique URL, it is possible to cut and paste it directly
to the web browser to view the information about the job (esp. its status), e.g.
\begin{verbatim}
firefox https://pelargir.ics.muni.cz:9000
\end{verbatim}
-To list all user's notification registration curently valid on a given \LB server, use a URL constructed as in folowing example:
+To list all user's notification registrations curently valid on a given \LB server, use a URL constructed as in folowing example:
\begin{verbatim}
firefox https://pelargir.ics.muni.cz:9000/NOTIF
\end{verbatim}
\end{verbatim}
In all cases it is necessary to have the user certificate installed in the browser.
+\subsubsection{Plain Text Modifier}
Since \LBver{2.0}, it is also possible to obtain the above results in a machine readable
\verb'key=value' form by adding a suffix \verb'text' to the above URLs. For example
https://pelargir.ics.muni.cz:9000/1234567890?text
\end{verbatim}
+\subsubsection{\LB Server Configuration}
+
+As of \LBver{3.0}, it is also possible to use the HTTPs interface to retrieve essential information on \LB Server configuration. For example:
+\begin{verbatim}
+ firefox https://scientific65.zcu.cz:9010/?configuration
+\end{verbatim}
+
+Among others, the following fields may be discerned from the URL:
+
+\begin{tabularx}{\textwidth}{lX}
+\label{s:findbroker}
+\texttt{msg\_brokers} & A list of messaging brokers that \LB server uses to deliver messages.\\
+\texttt{msg\_prefixes} & A list of permissible prefixes that must be used in messaging topics.\\
+\end{tabularx}
+
\subsection{Job state changes as an RSS feed}
The \LB includes an RSS interface allowing users to keep trace of their jobs in a very simple way using an RSS reader. The parameters of the RSS feeds are predefined, so no configuration is required.
\usepackage[hang,bf,small]{caption}
\usepackage[T1]{fontenc}
\usepackage[scaled]{helvet}
+\usepackage{multirow}
\renewcommand*\familydefault{\sfdefault}
%
% We now define a new \if command to test for PDF being enabled.
Jobs stay in state \emph{Running} until a \emph{Done} event is received from the workload management system. \emph{Done} events from local resource managers are not enough since the job in question may have been resubmitted in the meantime.
+\subsection{WMS Cannot Purge Jobs or Perform Other Privileged Tasks}
+\label{FAQ:WMS_superusers}
+
+In short, WMS has not been given adequate permissions when configuring the \LB server. You need to modify your configuration and restart the server:
+
+\subsubsection{For \LBver {3.0.11 or higher}, using YAIM}
+\label{FAQ:WMS_superusers_3_0_11}
+Modify your \texttt{siteinfo.def}, specifying the DN of your WMS server in YAIM parameter \texttt{GLITE\_LB\_WMS\_DN}; for instance:
+
+\begin{center}
+\texttt{GLITE\_LB\_WMS\_DN=/DC=cz/DC=cesnet-ca/O=CESNET/CN=wms01.cesnet.cz}
+\end{center}
+
+Then rerun YAIM:
+\texttt{/opt/glite/yaim/bin/yaim -c -s site-info.def -n glite-LB}
+
+ This will give your WMS exactly the right permissions to carry out all required operations.
+
+\subsubsection{For all versions of \LB, using YAIM}
+
+Modify your \texttt{siteinfo.def}, specifying the DN of your WMS server in YAIM parameter \texttt{GLITE\_LB\_SUPER\_USERS}; for instance:
+
+\begin{center}
+\texttt{GLITE\_LB\_SUPER\_USERS=/DC=cz/DC=cesnet-ca/O=CESNET/CN=wms01.cesnet.cz}
+\end{center}
+
+Then rerun YAIM:
+\texttt{/opt/glite/yaim/bin/yaim -c -s site-info.def -n glite-LB}
+
+This will give your WMS adequate rights to perform its operations and requests (running purge, querying for statistics, etc.) but it will also grant it additional administrator rights (such as granting job ownership). On newer installations, the method explained in section \ref{FAQ:WMS_superusers_3_0_11} is preferrable.
+
+\subsubsection{For \LBver {2.1 or higher}, without YAIM}
+
+\LB{}'s authorization settings can be found in file \texttt{[/opt/glite]/etc/glite-lb/glite-lb-authz.conf}
+
+Permit actions \texttt{PURGE}, \texttt{READ\_ALL} and \texttt{GET\_STATISTICS} for your WMS and restart the \LB server.
+This will lead to results equivalent to \ref{FAQ:WMS_superusers_3_0_11}.
+For instance, change the adequate sections in \texttt{glite-lb-authz.conf} to:
+
+\begin{verbatim}
+action "READ_ALL" {
+ rule permit {
+ subject = "/DC=cz/DC=cesnet-ca/O=CESNET/CN=wms01.cesnet.cz"
+ }
+}
+
+action "PURGE" {
+ rule permit {
+ subject = "/DC=cz/DC=cesnet-ca/O=CESNET/CN=wms01.cesnet.cz"
+ }
+}
+
+action "GET_STATISTICS" {
+ rule permit {
+ subject = "/DC=cz/DC=cesnet-ca/O=CESNET/CN=wms01.cesnet.cz"
+ }
+}
+\end{verbatim}
+
-O -a x-msg://grid.emi.lbexample
\end{verbatim}
-Rather than using the \LB notification API to receive messages, tap to the given messaging topic (\texttt{grid.emi.lbexample} in our case) in the messaging infrastructure.
+Rather than using the \LB notification API to receive messages, access the messaging infrastructure and tap into the given messaging topic (\texttt{grid.emi.lbexample} in our case).
-Note that production environments can impose restrictions on topic names. In the context of EGI, for instance, the ``\texttt{grid.emi.}'' prefix is mandatory.
+Note that production environments can impose restrictions on topic names. In the context of EGI, for instance, prefix ``\texttt{grid.emi.}'' is mandatory. A full list of permissible topic may be obtained from the \LB Server's configuration page (Section \ref{s:findbroker}).
+
+Also note that in case you are unsure what messaging brokers are available in your grid environment, you can read that information in the \LB Server's configuration page (Section \ref{s:findbroker}).
\subsubsection{Example: Waiting for more notifications on one socket}
3.3.3-3
- Module rebuilt
+3.2.12-10
+- Module rebuilt
+
+3.2.12-11
+- Module rebuilt
+
#include <string>
#include <sstream>
+#include <cstdio>
#include <assert.h>
#include <string.h>
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
-for $_ (keys %{$project{etics_externs}}) {
- $etics_externs{$_} = $project{etics_externs}{$_};
+for my $platform (keys %{$project{etics_externs}}) {
+ for $_ (keys %{$project{etics_externs}{$platform}}) {
+ $etics_externs{$platform}{$_} = $project{etics_externs}{$platform}{$_};
+ }
}
+reshuffle_platforms(\%etics_externs, $project{supported_platforms});
+reshuffle_platforms(\%{$project{etics_externs_devel}}, $project{supported_platforms});
for $_ (keys %{$project{etics_projects}}) {
$etics_projects{$_} = $project{etics_projects}{$_};
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
vdt=>[qw/globus globus_essentials gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
flavours => '--thrflavour= --nothrflavour=',
local_prefix => '/usr',
etics_externs => {
- globus_essentials=>'globus-gssapi-gsi',
- globus=>'globus-gssapi-gsi-devel',
- gridsite=>'emi.gridsite.shared',
- yaim_core=>'emi.yaim.yaim-core',
- yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
- gip_service=>'emi.bdii.glite-info-provider-service',
- bdii=>'emi.bdii.core',
- glite_version=>'emi.misc.glite-version',
- glue_schema=>'emi.bdii.glue-schema',
- trustmanager=>'emi.java-security.trustmanager',
- trustmanager_axis=>'emi.java-security.trustmanager-axis',
- axis=>'axis1.4',
- lcas=>'emi.sac.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'emi.misc.glite.build-common-cpp',
- jdk=>'java',
+ default => {
+ globus_essentials=>'globus-gssapi-gsi',
+ globus=>'globus-gssapi-gsi-devel',
+ gridsite=>'emi.gridsite.shared',
+ yaim_core=>'emi.yaim.yaim-core',
+ yaim_bdii=>'emi.bdii.yaim-bdii',
+ gip_service=>'emi.bdii.glite-info-provider-service',
+ bdii=>'emi.bdii.core',
+ glite_version=>'emi.misc.glite-version',
+ glue_schema=>'emi.bdii.glue-schema',
+ trustmanager=>'emi.java-security.trustmanager',
+ trustmanager_axis=>'emi.java-security.trustmanager-axis',
+ axis=>'axis1.4',
+ lcas=>'emi.sac.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'emi.misc.glite.build-common-cpp',
+ jdk=>'java',
+ },
+ sl5_x86_64_gcc412EPEL => {
+ 'myproxy-devel' => 'myproxy-devel.x86_64',
+ },
},
etics_externs_devel => {
- cares => 'c-ares-devel',
- classads => 'classads-devel',
- cppunit => 'cppunit-devel',
- expat => 'expat-devel',
- gsoap => 'gsoap-devel',
- voms => 'org.glite.security.voms-api',
- libtar => 'libtar-devel',
- log4c => 'log4c-devel',
- postgresql => 'postgresql-devel',
- curl => 'curl-devel',
- libxml2 => 'libxml2-devel',
- openssl => 'openssl-devel',
- gridsite=>'emi.gridsite.devel',
- jdk=>'java-devel',
+ default => {
+ cares => 'c-ares-devel',
+ classads => 'classads-devel',
+ cppunit => 'cppunit-devel',
+ expat => 'expat-devel',
+ gsoap => 'gsoap-devel',
+ voms => 'org.glite.security.voms-api',
+ libtar => 'libtar-devel',
+ log4c => 'log4c-devel',
+ postgresql => 'postgresql-devel',
+ curl => 'curl-devel',
+ libxml2 => 'libxml2-devel',
+ openssl => 'openssl-devel',
+ gridsite=>'emi.gridsite.devel',
+ jdk=>'java-devel',
+ },
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ },
+ etics_locations => {
+ axis => 'axis',
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
modules => {
'lb' => [ qw/emi-lb/ ],
'px' => [ qw/emi-px/ ],
- }
+ },
},
);
close V;
}
+ # XXX: --with ignored for platform-dependend packages
my @copts = ();
my %ge;
@ge{@{$etics_projects{$project{etics_name}}}} = (1) x ($#{$etics_projects{$project{etics_name}}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/ and (defined $externs{$_} or defined $jar{$_})) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
next if ($eext eq '-');
- if ($project ne 'glite') {
+ if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_}) {
+ $eext = $project{etics_locations}{$_} if ($project{etics_locations}{$_});
+ push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ } else {
if ($ge{$_} and not defined $externs{$_}{pkg}) {
push @copts, "--with-$_=\${stageDir}";
}
- } else {
- push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
}
}
}
for (@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
- push @copts,"--with-$_ \${$eext.location}$jar{$_}" if ($project eq 'glite');
+ push @copts,"--with-$_ \${$eext.location}$jar{$_}" if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_});
}
my $conf;
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
$cmd{compile} = 'make';
$cmd{test} = 'make check';
$cmd{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_} ? $etics_externs{$platform}{$_} : $_;
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+ next if ($eext eq '-');
+ # dependencies not listed in etics_externs only for
+ # default platform
+ if (not defined $etics_externs{$platform}{$_} and
+ $platform ne 'default') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
+
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ $used = 1;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ $eext = $edev; # no runtime - change to devel pkg
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ print C "$proj|$edev = B\n"; # additional devel pkg
+ }
}
+ print C "$proj|$eext = $type\n";
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+};
+ $used = 1;
+ }
+ print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ }
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ if (defined $data->{default}{$_}) {
+ $value = $data->{default}{$_};
+ $data->{default}{$_} = '-';
+#print " deleted $_ from default\n";
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print " added $value to $platform\n"
+ }
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
- Using proper method for setting signal handlers
- Daemonize before initializing security
+2.2.6-1
+- Further globus signal handler fixes
+
# $Header$
-module.version=2.2.5
+module.version=2.2.6
module.age=1
/* get credentials */
if (CAcert_dir)
setenv("X509_CERT_DIR", CAcert_dir, 1);
- edg_wll_gss_watch_creds(cert_file,&cert_mtime);
+ ret = edg_wll_gss_watch_creds(cert_file,&cert_mtime);
+ if (ret < 0)
+ glite_common_log(LOG_CATEGORY_SECURITY,LOG_PRIORITY_WARN,"edg_wll_gss_watch_creds failed, unable to access credentials\n");
cred_handle = malloc(sizeof(*cred_handle));
if(cred_handle == NULL) {
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "Failed to allocate structure for credentials.");
}
edg_wll_gss_initialize();
- edg_wll_gss_watch_creds(cert_file,&cert_mtime);
+ ret = edg_wll_gss_watch_creds(cert_file,&cert_mtime);
+ if (ret < 0)
+ glite_common_log(LOG_CATEGORY_SECURITY,LOG_PRIORITY_WARN,"edg_wll_gss_watch_creds failed, unable to access credentials\n");
/* XXX DK: support noAuth */
ret = edg_wll_gss_acquire_cred_gsi(cert_file, key_file, &cred, &gss_stat);
if (ret) {
}
break;
case -1:
- glite_common_log(LOG_CATEGORY_SECURITY,LOG_PRIORITY_WARN,"edg_wll_gss_watch_creds failed\n");
+ glite_common_log(LOG_CATEGORY_SECURITY,LOG_PRIORITY_WARN,"edg_wll_gss_watch_creds failed, unable to access credentials\n");
break;
}
exit(1);
}
glite_common_log(LOG_CATEGORY_SECURITY, LOG_PRIORITY_DEBUG, "Checking for new certificate.");
- if (edg_wll_gss_watch_creds(cert_file, &cert_mtime) > 0) {
+ int ret;
+ ret = edg_wll_gss_watch_creds(cert_file, &cert_mtime);
+ if (ret > 0) {
edg_wll_GssCred new_creds = NULL;
- int ret;
- ret = edg_wll_gss_acquire_cred_gsi(cert_file,key_file,
+ int int_ret;
+ int_ret = edg_wll_gss_acquire_cred_gsi(cert_file,key_file,
&new_creds, NULL);
if (new_creds != NULL) {
if(pthread_mutex_lock(&cred_handle_lock) < 0)
new_creds->name);
}
}
+ else if ( ret < 0)
+ glite_common_log(LOG_CATEGORY_SECURITY,LOG_PRIORITY_WARN,"edg_wll_gss_watch_creds failed, unable to access credetials\n");
+
#ifndef LB_PERF
sleep(RECOVER_TIMEOUT);
#else
install:
mkdir -p ${DESTDIR}${PREFIX}/var/lib/grid-monitoring/emi.lb
+ mkdir -p ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version}
chmod 750 ${DESTDIR}${PREFIX}/var/lib/grid-monitoring/emi.lb
-chown nagios:nagios ${DESTDIR}${PREFIX}/var/lib/grid-monitoring/emi.lb
mkdir -p ${DESTDIR}${PREFIX}${prefix}/libexec/grid-monitoring/probes/emi.lb
${INSTALL} -m 0755 src/LB-probe ${DESTDIR}${PREFIX}${prefix}/libexec/grid-monitoring/probes/emi.lb
+ ( cd ${top_srcdir}/project && ${INSTALL} -m 644 ChangeLog package.description package.summary ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version} )
stage:
$(MAKE) install PREFIX=${stagedir}
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
%provides = (
'lbjp-common.gss' => [ qq/glite-security-gss/ ],
'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
+ 'lb.nagios' => [ qq/glite-lb-nagios-plugins/ ],
);
%cvs_prefix = (
'myproxy-devel' => 'myproxy-devel.x86_64',
},
deb6_x86_64_gcc445 => {
- globus_essentials => 'globus-gssapi-gsi4',
+ globus_essentials => 'libglobus-gssapi-gsi4',
globus => 'libglobus-gssapi-gsi-dev',
globus_proxy_utils=>'globus-proxy-utils',
axis => 'libaxis-java',
'jakarta-commons-codec' => 'libcommons-codec-java',
'jakarta-commons-lang' => 'libcommons-lang-java',
'tetex-latex' => 'texlive-latex-extra',
+ 'perl-LDAP' => 'libnet-ldap-perl',
+ 'fuse-lib' => 'libfuse2',
+ 'fuse' => 'fuse-utils',
},
},
etics_externs_devel => {
openssl => 'libssl-dev',
'tetex-latex' => 'texlive-latex-extra',
libxslt=>'xsltproc',
+ 'httpd-devel' => 'apache2-prefork-dev',
+ 'fuse-devel' => 'libfuse-dev',
},
},
etics_projects => {
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
sub mkinc
{
my %aux;
+ my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
-
+1.0.0-1
+- Initial version of the nagios module
-This is a package to distribute a nagios probe that checks the EMI L&B server. It is a shell-based script titled check_lb_server.
+This is a nagios probe, a shell script to check the L&B server.
# $Header
module.version=1.0.0
-module.age=0
+module.age=1
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
-for $_ (keys %{$project{etics_externs}}) {
- $etics_externs{$_} = $project{etics_externs}{$_};
+for my $platform (keys %{$project{etics_externs}}) {
+ for $_ (keys %{$project{etics_externs}{$platform}}) {
+ $etics_externs{$platform}{$_} = $project{etics_externs}{$platform}{$_};
+ }
}
+reshuffle_platforms(\%etics_externs, $project{supported_platforms});
+reshuffle_platforms(\%{$project{etics_externs_devel}}, $project{supported_platforms});
for $_ (keys %{$project{etics_projects}}) {
$etics_projects{$_} = $project{etics_projects}{$_};
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
vdt=>[qw/globus globus_essentials gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
flavours => '--thrflavour= --nothrflavour=',
local_prefix => '/usr',
etics_externs => {
- globus_essentials=>'globus-gssapi-gsi',
- globus=>'globus-gssapi-gsi-devel',
- gridsite=>'emi.gridsite.shared',
- yaim_core=>'emi.yaim.yaim-core',
- yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
- gip_service=>'emi.bdii.glite-info-provider-service',
- bdii=>'emi.bdii.core',
- glite_version=>'emi.misc.glite-version',
- glue_schema=>'emi.bdii.glue-schema',
- trustmanager=>'emi.java-security.trustmanager',
- trustmanager_axis=>'emi.java-security.trustmanager-axis',
- axis=>'axis1.4',
- lcas=>'emi.sac.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'emi.misc.glite.build-common-cpp',
- jdk=>'java',
+ default => {
+ globus_essentials=>'globus-gssapi-gsi',
+ globus=>'globus-gssapi-gsi-devel',
+ gridsite=>'emi.gridsite.shared',
+ yaim_core=>'emi.yaim.yaim-core',
+ yaim_bdii=>'emi.bdii.yaim-bdii',
+ gip_service=>'emi.bdii.glite-info-provider-service',
+ bdii=>'emi.bdii.core',
+ glite_version=>'emi.misc.glite-version',
+ glue_schema=>'emi.bdii.glue-schema',
+ trustmanager=>'emi.java-security.trustmanager',
+ trustmanager_axis=>'emi.java-security.trustmanager-axis',
+ axis=>'axis1.4',
+ lcas=>'emi.sac.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'emi.misc.glite.build-common-cpp',
+ jdk=>'java',
+ },
+ sl5_x86_64_gcc412EPEL => {
+ 'myproxy-devel' => 'myproxy-devel.x86_64',
+ },
},
etics_externs_devel => {
- cares => 'c-ares-devel',
- classads => 'classads-devel',
- cppunit => 'cppunit-devel',
- expat => 'expat-devel',
- gsoap => 'gsoap-devel',
- voms => 'org.glite.security.voms-api',
- libtar => 'libtar-devel',
- log4c => 'log4c-devel',
- postgresql => 'postgresql-devel',
- curl => 'curl-devel',
- libxml2 => 'libxml2-devel',
- openssl => 'openssl-devel',
- gridsite=>'emi.gridsite.devel',
- jdk=>'java-devel',
+ default => {
+ cares => 'c-ares-devel',
+ classads => 'classads-devel',
+ cppunit => 'cppunit-devel',
+ expat => 'expat-devel',
+ gsoap => 'gsoap-devel',
+ voms => 'org.glite.security.voms-api',
+ libtar => 'libtar-devel',
+ log4c => 'log4c-devel',
+ postgresql => 'postgresql-devel',
+ curl => 'curl-devel',
+ libxml2 => 'libxml2-devel',
+ openssl => 'openssl-devel',
+ gridsite=>'emi.gridsite.devel',
+ jdk=>'java-devel',
+ },
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ },
+ etics_locations => {
+ axis => 'axis',
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
modules => {
'lb' => [ qw/emi-lb/ ],
'px' => [ qw/emi-px/ ],
- }
+ },
},
);
close V;
}
+ # XXX: --with ignored for platform-dependend packages
my @copts = ();
my %ge;
@ge{@{$etics_projects{$project{etics_name}}}} = (1) x ($#{$etics_projects{$project{etics_name}}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/ and (defined $externs{$_} or defined $jar{$_})) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
next if ($eext eq '-');
- if ($project ne 'glite') {
+ if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_}) {
+ $eext = $project{etics_locations}{$_} if ($project{etics_locations}{$_});
+ push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ } else {
if ($ge{$_} and not defined $externs{$_}{pkg}) {
push @copts, "--with-$_=\${stageDir}";
}
- } else {
- push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
}
}
}
for (@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
- push @copts,"--with-$_ \${$eext.location}$jar{$_}" if ($project eq 'glite');
+ push @copts,"--with-$_ \${$eext.location}$jar{$_}" if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_});
}
my $conf;
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
$cmd{compile} = 'make';
$cmd{test} = 'make check';
$cmd{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_} ? $etics_externs{$platform}{$_} : $_;
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+ next if ($eext eq '-');
+ # dependencies not listed in etics_externs only for
+ # default platform
+ if (not defined $etics_externs{$platform}{$_} and
+ $platform ne 'default') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
+
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ $used = 1;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ $eext = $edev; # no runtime - change to devel pkg
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ print C "$proj|$edev = B\n"; # additional devel pkg
+ }
}
+ print C "$proj|$eext = $type\n";
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+};
+ $used = 1;
+ }
+ print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ }
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ if (defined $data->{default}{$_}) {
+ $value = $data->{default}{$_};
+ $data->{default}{$_} = '-';
+#print " deleted $_ from default\n";
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print " added $value to $platform\n"
+ }
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
2.1.16-1
- Increased severity for DB open errors
+2.1.17-1
+- Proper handling of background purge error messages (fix for bug #77974)
+- Handling HTTP requests that are too long to fit into the server-side buffer
+ - Throw error for HTTP requests longer than allocated buffer.
+- Minor fixes in server-side L&B dump code
+- Benign reaction to unknown event types in edg_wll_get_event_flesh() for forward compatibility
+- Refactoring of server state storing routine to avoid unnecessary error reports
+- fixed RSS feeds with disable indexing
+- fixed empty RSS feeds
+- Support zombification of single SB transfer jobs
+
2.2.0-1
- Fixes for parallel release in EMI & gLite
- Extended authorization: Support for the TAG operation in the ACLs
- '--stage=/' behaviour fixed in configure
- wsdl files moved
+2.2.8-1
+- fixed empty RSS feed and disabling RSS with no indexing also on HEAD
+- Proper handling of background purge error messages (fix for bug #77974)
+- Handling HTTP requests that are too long to fit into the server-side buffer
+ - Throw error for HTTP requests longer than allocated buffer.
+- Minor fixes in server-side L&B dump code
+- Benign reaction to unknown event types in edg_wll_get_event_flesh() for forward compatibility
+- Refactoring of server state storing routine to avoid unnecessary error reports
+- fixed RSS feeds with disable indexing
+- fixed empty RSS feeds
+- Support zombification of single SB transfer jobs
+- Reading Messaging broker names and topic prefixes from a configuration file (option -F)
+- Publishing server configuration over HTTPs -- initial implementation
+
+2.2.9-1
+- Proper permission category for statistics
+
# : /cvs/jra1mw/org.glite.lb.server/project/version.properties,v 1.185 2008/06/25 13:12:58 akrenek Exp $
-module.version=2.2.7
+module.version=2.2.9
module.age=1
char * policy_file = NULL;
struct _edg_wll_authz_policy authz_policy = { NULL, 0};
static int exclusive_zombies = 1;
-
-
+static char **msg_brokers = NULL;
+static char **msg_prefixes = NULL;
static struct option opts[] = {
{"jpreg-dir", 1, NULL, 'J'},
{"enable-jpreg-export", 1, NULL, 'j'},
{"super-user", 1, NULL, 'R'},
- {"super-users-file", 1, NULL,'F'},
+// {"super-users-file", 1, NULL,'F'},
+ {"msg-conf", 1, NULL,'F'},
{"no-index", 1, NULL, 'x'},
{"strict-locking",0, NULL, 'O'},
{"limits", 1, NULL, 'L'},
"\t-J, --jpreg-dir\t JP registration temporary files prefix (implies '-j')\n"
"\t-j, --enable-jpreg-export\t enable JP registration export (disabled by default)\n"
"\t--super-user\t user allowed to bypass authorization and indexing\n"
- "\t--super-users-file (deprecated)\t the same but read the subjects from a file\n"
"\t--no-index=1\t don't enforce indices for superusers\n"
"\t =2\t don't enforce indices at all\n"
"\t--strict-locking=1\t lock jobs also on storing events (may be slow)\n"
"\t-I,--rss-time\t age (in seconds) of job states published via RSS\n"
"\t-l,--policy\tauthorization policy file\n"
"\t-E,--exclusive-zombies-off\twith 'exclusive' flag, allow reusing IDs of purged jobs\n"
+ "\t-F,--msg-conf\t path to configuration file with messaging settings\n"
,me);
}
struct timeval to;
int request_timeout = REQUEST_TIMEOUT;
char socket_path_prefix[PATH_MAX] = GLITE_LBPROXY_SOCK_PREFIX;
+ char * msg_conf = NULL;
name = strrchr(argv[0],'/');
case 'Y': notif_ilog_file_prefix = strdup(optarg); break;
case 'i': strcpy(pidfile,optarg); pidfile_forced = 1; break;
case 'R': add_root(ctx, optarg, ADMIN_ACCESS); break;
- case 'F': glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL,
- "%s: Option --super-users-file is deprecated, specify policy using --policy instead", argv[0]);
- return 1;
+ case 'F': msg_conf = strdup(optarg); break;
case 'x': noIndex = atoi(optarg);
if (noIndex < 0 || noIndex > 2) { usage(name); return 1; }
break;
return 1;
}
+ if (msg_conf) {
+ int retv_msg;
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_DEBUG, "Parsing MSG conf file: %s", msg_conf);
+ retv_msg = edg_wll_ParseMSGConf(msg_conf, &msg_brokers, &msg_prefixes);
+ if (retv_msg) {
+ switch(retv_msg) {
+ case -1: glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_WARN, "Error opening MSG conf file: %s", msg_conf); break;
+ case -2: glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_WARN, "Error parsing MSG conf file: %s", msg_conf); break;
+ }
+ }
+ }
+ if (!msg_prefixes) { // Prefixes not extracted from file, put in defaults
+ msg_prefixes = (char**) calloc(sizeof(char**), 2);
+ asprintf(&(msg_prefixes[0]), "grid.emi.");
+ }
+
if (enable_lcas) {
char s[3];
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_WARN, "%s: key or certificate file not specified - unable to watch them for changes!", argv[0]);
if ( cadir ) setenv("X509_CERT_DIR", cadir, 1);
- edg_wll_gss_watch_creds(server_cert, &cert_mtime);
+ int ret;
+ ret = edg_wll_gss_watch_creds(server_cert, &cert_mtime);
+ if (ret < 0)
+ glite_common_log(LOG_CATEGORY_SECURITY,LOG_PRIORITY_WARN,"edg_wll_gss_watch_creds failed, unable to access credentials\n");
if ( !edg_wll_gss_acquire_cred_gsi(server_cert, server_key, &mycred, &gss_code) )
{
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_INFO, "Server identity: %s", mycred->name);
*name_num = NULL,
*name = NULL;
int h_errno, ret;
+ int npref, totpref;
}
break;
case -1:
- glite_common_log(LOG_CATEGORY_SECURITY, LOG_PRIORITY_ERROR, "[%d] edg_wll_gss_watch_creds failed", getpid());
+ glite_common_log(LOG_CATEGORY_SECURITY, LOG_PRIORITY_ERROR, "[%d] edg_wll_gss_watch_creds failed, unable to access credentials", getpid());
break;
}
ctx->greyjobs = greyjobs;
ctx->exclusive_zombies = exclusive_zombies;
+ for (totpref = 0; msg_prefixes[totpref]; totpref++);
+ ctx->msg_prefixes = (char**) calloc(sizeof(char*), totpref+1);
+ for (npref = 0; npref<totpref; npref++)
+ ctx->msg_prefixes[npref]=strdup(msg_prefixes[npref]);
+
+ for (totpref = 0; msg_brokers && msg_brokers[totpref]; totpref++);
+ ctx->msg_brokers = (char**) calloc(sizeof(char*), totpref+1);
+ for (npref = 0; npref<totpref; npref++)
+ ctx->msg_brokers[npref]=strdup(msg_brokers[npref]);
+
return 0;
}
int err,ret = 0;
- errt = errd = NULL;
switch ( (err = edg_wll_Error(ctx, &errt, &errd)) )
{
case ETIMEDOUT:
case EPIPE:
case EIO:
case EDG_WLL_IL_PROTO:
+ case E2BIG:
glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_WARN,
"[%d] %s (%s)", getpid(), errt, errd);
/* fallthrough
case EPERM:
case EEXIST:
case EDG_WLL_ERROR_NOINDEX:
- case E2BIG:
case EIDRM:
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_WARN,
+ "[%d] %s (%s)", getpid(), errt, errd);
+ break;
case EINVAL:
case EDG_WLL_ERROR_PARSE_BROKEN_ULM:
case EDG_WLL_ERROR_PARSE_EVENT_UNDEF:
* no action for non-fatal errors
*/
break;
-
+
+ case EDG_WLL_ERROR_ACCEPTED_OK:
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_INFO,
+ "[%d] %s (%s)", getpid(), errt, errd);
+ /*
+ * all OK, but slave needs to be restarted
+ */
+ ret = -EINPROGRESS;
+ break;
+
case EDG_WLL_ERROR_DB_INIT:
case EDG_WLL_ERROR_DB_CALL:
case EDG_WLL_ERROR_SERVER_RESPONSE:
char *tmpfname;
time_t start,end;
glite_lbu_Statement q = NULL;
- char *res[10];
+ char *res[11];
int event;
edg_wll_Event e;
int ret,dump = 2; /* TODO: manage dump file */
glite_lbu_TimeToStr(to, &to_s);
trio_asprintf(&stmt,
- "select event,dg_jobid,code,prog,host,u.cert_subj,time_stamp,usec,level,arrived "
+ "select event,dg_jobid,code,prog,host,u.cert_subj,time_stamp,usec,level,arrived,seqcode "
"from events e,users u,jobs j "
"where u.userid=e.userid "
"and j.jobid = e.jobid "
- "and j.dg_jobid like 'https://%|Ss:%d%%' "
+ "and j.dg_jobid like 'https://%|Ss:%d/%%' "
"and arrived > %s and arrived <= %s "
"order by arrived",
ctx->srvName,ctx->srvPort,
edg_wll_ParseEvent(ctx,nameval[0],&f);
free(nameval[0]);
- f->any.arrived = e->any.arrived;
- edg_wll_FreeEvent(e);
+ if(f) {
+ f->any.arrived = e->any.arrived;
+ edg_wll_FreeEvent(e);
- memcpy(e, f, sizeof *e);
- free(f);
- ret=edg_wll_CheckEvent(ctx,e);
+ memcpy(e, f, sizeof *e);
+ free(f);
+ ret=edg_wll_CheckEvent(ctx,e);
+ }
+ else {
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_WARN, "Unknown event type encountered during dump; jobid %s, event %d", jobid, n);
+ ret = EINVAL;
+ }
} else ret = ENOENT;
free(q); q = NULL;
glite_lbu_FreeStmt(&sh);
#include <libxml/parser.h>
#undef WITHOUT_TRIO
+#include <gridsite-gacl.h>
#include "glite/jobid/strmd5.h"
#include "glite/jobid/cjobid.h"
#include "authz_policy.h"
-/* XXX should be defined in gridsite-gacl.h */
+#if GRST_VERSION <= 010713
GRSTgaclEntry *GACLparseEntry(xmlNodePtr cur);
+#endif
extern char *server_key;
extern char *server_cert;
if ((err = edg_wll_Proto(ctx,req,hdr,*body,resp,hdrOut,bodyOut,httpErr)))
edg_wll_Error(ctx,NULL,&err_desc);
}
+ else
+ asprintf(resp,"HTTP/1.1 %d %s", HTTP_BADREQ, edg_wll_HTTPErrorMessage(HTTP_BADREQ));
+
free(req);
if (hdr) {
}
else{
*statesOut = NULL;
- free(can_peername);
+ free(can_peername);
return -1;
}
if (edg_wll_WSDLOutput(ctx, &message, filename))
ret = HTTP_INTERNAL;
free(filename);
+ /* GET /?version */
} else if (strncmp(requestPTR, "/?version", strlen("/?version")) == 0) {
asprintf(&message, "%s", VERSION);
+ /* GET /?configuration*/
+ } else if (strncmp(requestPTR, "/?configuration", strlen("/?configuration")) == 0) {
+ // also browser-readable HTML version here?
+ edg_wll_ConfigurationToText(ctx, &message);
/* GET [something else]: not understood */
} else ret = HTTP_BADREQ;
free(requestPTR); requestPTR = NULL;
retCode;
if (flags & EDG_WLL_STAT_NO_JOBS) {
- flags -= EDG_WLL_STAT_NO_JOBS;
jobsOut = NULL;
if (flags & EDG_WLL_STAT_NO_STATES) {
- flags -= EDG_WLL_STAT_NO_STATES;
statesOut = NULL;
retCode = edg_wll_QueryJobsServer(ctx, (const edg_wll_QueryRec **)conditions, flags, NULL, NULL);
}
}
else {
if (flags & EDG_WLL_STAT_NO_STATES) {
- flags -= EDG_WLL_STAT_NO_STATES;
statesOut = NULL;
retCode = edg_wll_QueryJobsServer(ctx, (const edg_wll_QueryRec **)conditions, flags, &jobsOut, NULL);
}
default: /* client request handler */
ret = HTTP_ACCEPTED;
/* to end this parent */
- edg_wll_SetError(ctx, EDG_WLL_ERROR_SERVER_RESPONSE, edg_wll_HTTPErrorMessage(ret));
+ edg_wll_SetError(ctx, EDG_WLL_ERROR_ACCEPTED_OK, edg_wll_HTTPErrorMessage(ret));
goto err;
}
}
if (edg_wll_PurgeResultToXML(ctx, &result, &message))
ret = HTTP_INTERNAL;
else
- printf("%s", message);
+ glite_common_log_msg(LOG_CATEGORY_CONTROL, LOG_PRIORITY_DEBUG, message);
}
/* result is now packed in message, free it */
/* forked cleaner sends no results */
if ((request.flags & EDG_WLL_PURGE_BACKGROUND)) {
- *response = NULL;
+ char *et, *ed;
+
free(message);
message = NULL;
+ if (ret != HTTP_OK && ret != HTTP_ACCEPTED) {
+ edg_wll_Error(ctx, &et, &ed);
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_ERROR, "Background purge failed, %s (%s)",et, ed);
+ free(et);
+ free(ed);
+ } else {
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_INFO, "Background purge done successfully.");
+ }
+ *response = NULL;
if (requestPTR) free(requestPTR);
exit(0);
}
free(a); a=NULL; \
}
+#define TRS(name,type,field) \
+{ \
+ int l; \
+ if (field) \
+ l = asprintf(&a,"%s=" type "", \
+ name, field); \
+ else \
+ l = asprintf(&a,"%s=", name); \
+ b = realloc(b, sizeof(*b)*(pomL+l+1)); \
+ strcpy(b+pomL, a); \
+ pomL += l; \
+ free(a); a=NULL; \
+}
+
+#define TRA(type,field) \
+{ \
+ int l; \
+ if (field) \
+ l = asprintf(&a,"," type "", \
+ field); \
+ else \
+ l = asprintf(&a,"\n"); \
+ b = realloc(b, sizeof(*b)*(pomL+l+1)); \
+ strcpy(b+pomL, a); \
+ pomL += l; \
+ free(a); a=NULL; \
+}
+
+
int edg_wll_UserInfoToText(edg_wll_Context ctx, edg_wlc_JobId *jobsOut, char **message)
{
char *a = NULL, *b;
return 0;
}
+int edg_wll_ConfigurationToText(edg_wll_Context ctx, char **message){
+ char *a = NULL, *b;
+ int pomL = 0;
+ int i;
+ b = strdup("");
+
+ if (ctx->msg_brokers)
+ for (i = 0; ctx->msg_brokers[i]; i++){
+ if (i == 0) TRS("msg_brokers", "%s", ctx->msg_brokers[i])
+ else TRA("%s", ctx->msg_brokers[i]);
+ }
+ if (i > 0)
+ TRA("%s", NULL);
+
+ if (ctx->msg_prefixes)
+ for (i = 0; ctx->msg_prefixes[i]; i++)
+ if (i == 0) TRS("msg_prefixes", "%s", ctx->msg_prefixes[i])
+ else TRA("%s", ctx->msg_prefixes[i]);
+ if (i > 0)
+ TRA("%s", NULL);
+
+ *message = b;
+
+ return 0;
+}
+
char *edg_wll_ErrorToText(edg_wll_Context ctx,int code)
{
char *out,*et,*ed;
int edg_wll_UserInfoToText(edg_wll_Context, edg_wlc_JobId *, char **);
int edg_wll_UserNotifsToText(edg_wll_Context ctx, char **notifids, char **message);
int edg_wll_NotificationToText(edg_wll_Context ctx, notifInfo *ni, char **message);
+int edg_wll_ConfigurationToText(edg_wll_Context ctx, char **message);
char *edg_wll_ErrorToText(edg_wll_Context,int);
#endif /* GLITE_LB_TEXT */
edg_wll_QueryRec **nconds = NULL;
char *add_index = NULL;
notif_stream_t *arg = NULL;
+ int npref, okpref;
+ char *msgpref;
/* Format notification ID
edg_wll_SetError(ctx, EINVAL, "Addres override not in format host:port");
goto cleanup;
}
- if ( strstr(address_override, "x-msg")) {
- // XXX: Quick ugly hack. This will be made configurable soon
- if ( !strstr(address_override,"x-msg://grid.emi.")) {
- edg_wll_SetError(ctx, EINVAL, "This site requires that all topic names start with prefix 'grid.emi.'");
+ if ( !strncmp(address_override, "x-msg", 5)) {
+ npref = 0; okpref = 0;
+ while (ctx->msg_prefixes[npref]) {
+ asprintf(&msgpref, "x-msg://%s", ctx->msg_prefixes[npref++]);
+ if ( !strncmp(address_override, msgpref, strlen(msgpref))) {
+ okpref = 1;
+ free(msgpref);
+ break;
+ }
+ free(msgpref);
+ }
+ if (!okpref) {
+ char *prefmsg, *prefmsg2;
+ asprintf(&prefmsg,"This site requires that all topic names start with prefix %s", ctx->msg_prefixes[0]);
+ npref = 1;
+ while (ctx->msg_prefixes[npref]) {
+ prefmsg2 = prefmsg;
+ asprintf(&prefmsg,"%s or %s", prefmsg2, ctx->msg_prefixes[npref++]);
+ free(prefmsg2);
+ }
+
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_DEBUG, "Rejecting notification with disallowed prefix (%s)", address_override);
+ edg_wll_SetError(ctx, EINVAL, prefmsg);
+ free(prefmsg);
goto cleanup;
}
}
{
char *time_s = NULL,
*addr_s = NULL;
+ int npref, okpref;
+ char *msgpref;
if ( !address_override )
edg_wll_SetError(ctx, EINVAL, "Addres override not in format host:port");
goto rollback;
}
- if ( strstr(address_override, "x-msg")) {
- // XXX: Quick ugly hack. This will be made configurable soon
- if ( !strstr(address_override,"x-msg://grid.emi.")) {
- edg_wll_SetError(ctx, EINVAL, "This site requires that all topic names start with prefix 'grid.emi.'");
+ if ( !strncmp(address_override, "x-msg", 5)) {
+
+ npref = 0; okpref = 0;
+ while (ctx->msg_prefixes[npref]) {
+ asprintf(&msgpref, "x-msg://%s", ctx->msg_prefixes[npref++]);
+ if ( !strncmp(address_override, msgpref, strlen(msgpref))) {
+ okpref = 1;
+ free(msgpref);
+ break;
+ }
+ free(msgpref);
+ }
+ if (!okpref) {
+ char *prefmsg, *prefmsg2;
+ asprintf(&prefmsg,"This site requires that all topic names start with prefix %s", ctx->msg_prefixes[0]);
+ npref = 1;
+ while (ctx->msg_prefixes[npref]) {
+ prefmsg2 = prefmsg;
+ asprintf(&prefmsg,"%s or %s", prefmsg2, ctx->msg_prefixes[npref++]);
+ free(prefmsg2);
+ }
+
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_DEBUG, "Rejecting notification with disallowed prefix (%s)", address_override);
+ edg_wll_SetError(ctx, EINVAL, prefmsg);
+ free(prefmsg);
goto rollback;
}
}
/* Format notification ID
*/
- if ( !(nid_s = edg_wll_NotifIdGetUnique(nid)) )
+ if ( !(nid_s = edg_wll_NotifIdGetUnique(nid)) ) {
+ edg_wll_SetError(ctx, EINVAL, "Malformed notification ID");
goto err;
+ }
do {
if (edg_wll_Transaction(ctx) != 0) goto err;
return edg_wll_Error(ctx, NULL, NULL);
}
- if ( !(nid_s = edg_wll_NotifIdGetUnique(nid)) )
+ if ( !(nid_s = edg_wll_NotifIdGetUnique(nid)) ) {
+ edg_wll_SetError(ctx, EINVAL, "Malformed notification ID");
goto cleanup;
+ }
trio_asprintf(&stmt,
"select destination from notif_registrations "
if ( !(nid_s = edg_wll_NotifIdGetUnique(nid)) )
{
- edg_wll_SetError(ctx, EINVAL, "Malformed notification ID.");
+ edg_wll_SetError(ctx, EINVAL, "Malformed notification ID");
goto cleanup;
}
errCode = edg_wll_Error(ctx, NULL, &errDesc);
- if ( !(nid_s = edg_wll_NotifIdGetUnique(nid)) )
+ if ( !(nid_s = edg_wll_NotifIdGetUnique(nid)) ) {
+ edg_wll_SetError(ctx, EINVAL, "Malformed notification ID");
goto rollback;
+ }
trio_asprintf(&stmt, "delete from notif_registrations where notifid='%|Ss'", nid_s);
glite_common_log_msg(LOG_CATEGORY_LB_SERVER_DB, LOG_PRIORITY_DEBUG, stmt);
*q = NULL;
int ret;
- if ( !(nid_s = edg_wll_NotifIdGetUnique(nid)) )
+ if ( !(nid_s = edg_wll_NotifIdGetUnique(nid)) ) {
+ edg_wll_SetError(ctx, EINVAL, "Malformed notification ID");
goto cleanup;
+ }
glite_lbu_TimeToStr(now, &time_s);
if ( !time_s )
glite_jobid_t *jobs;
edg_wll_JobStat *states;
size_t maxn, n;
+ int flags;
} queryjobs_cb_data_t;
return edg_wll_SetError(ctx, errno ? : ENOMEM, NULL);
store->jobs = tmp;
- if ((tmp = realloc(store->states, maxn * sizeof(*store->states))) == NULL)
- return edg_wll_SetError(ctx, errno ? : ENOMEM, NULL);
- store->states = tmp;
+ if (!(store->flags & EDG_WLL_STAT_NO_STATES)) {
+ if ((tmp = realloc(store->states, maxn * sizeof(*store->states))) == NULL)
+ return edg_wll_SetError(ctx, errno ? : ENOMEM, NULL);
+ store->states = tmp;
+ }
store->maxn = maxn;
}
store->jobs[n] = jobid;
- if (status) store->states[n] = *status;
- else memset(&store->states[n], 0, sizeof(*store->states));
+ if (!(store->flags & EDG_WLL_STAT_NO_STATES)) {
+ if (status) store->states[n] = *status;
+ else memset(&store->states[n], 0, sizeof(*store->states));
+ }
store->n++;
return 0;
size_t i;
memset(&store, 0, sizeof store);
+ store.flags = flags;
if (edg_wll_QueryJobsServerStream(ctx, conditions, flags, queryjobs_cb, &store))
goto cleanup;
int edg_wll_SetServerState(edg_wll_Context ctx,const char *name,const char *val)
{
char *stmt = NULL;
+ int sql_retval;
- trio_asprintf(&stmt,"insert into server_state (prefix,name,value) "
- "values ('https://%|Ss:%d','%|Ss','%|Ss')",
- ctx->srvName,ctx->srvPort,name,val);
+ // Check if record exists
+ trio_asprintf(&stmt,"select value from server_state "
+ "where prefix = 'https://%|Ss:%d' and name = '%|Ss'",
+ ctx->srvName,ctx->srvPort,name);
glite_common_log_msg(LOG_CATEGORY_LB_SERVER_DB, LOG_PRIORITY_DEBUG, stmt);
- switch(edg_wll_ExecSQL(ctx,stmt,NULL)) {
- case 1: break;
- case -1: if (edg_wll_Error(ctx,NULL,NULL) == EEXIST) {
- free(stmt);
- trio_asprintf(&stmt,"update server_state set value = '%|Ss' "
- "where prefix = 'https://%|Ss:%d' "
- "and name = '%|Ss'",
- val,ctx->srvName,ctx->srvPort,name);
- glite_common_log_msg(LOG_CATEGORY_LB_SERVER_DB,
- LOG_PRIORITY_DEBUG, stmt);
- edg_wll_ExecSQL(ctx,stmt,NULL);
- }
- break;
+ sql_retval = edg_wll_ExecSQL(ctx,stmt,NULL);
- default: abort();
- }
free(stmt);
+
+ if (!sql_retval) {
+ trio_asprintf(&stmt,"insert into server_state (prefix,name,value) "
+ "values ('https://%|Ss:%d','%|Ss','%|Ss')",
+ ctx->srvName,ctx->srvPort,name,val);
+ glite_common_log_msg(LOG_CATEGORY_LB_SERVER_DB, LOG_PRIORITY_DEBUG, stmt);
+ edg_wll_ExecSQL(ctx,stmt,NULL);
+ free(stmt);
+ }
+ else {
+ if (sql_retval > 0) {
+ trio_asprintf(&stmt,"update server_state set value = '%|Ss' "
+ "where prefix = 'https://%|Ss:%d' "
+ "and name = '%|Ss'",
+ val,ctx->srvName,ctx->srvPort,name);
+ glite_common_log_msg(LOG_CATEGORY_LB_SERVER_DB,
+ LOG_PRIORITY_DEBUG, stmt);
+ edg_wll_ExecSQL(ctx,stmt,NULL);
+ free(stmt);
+ }
+ else abort();
+ }
+
return edg_wll_Error(ctx,NULL,NULL);
}
case EDG_WLL_STAT__PARTITIONABLE_UNUSED:
case EDG_WLL_STAT__PARTITIONED_UNUSED:
case EDG_WLL_STAT_COLLECTION:
+ case EDG_WLL_STAT_FILE_TRANSFER:
+ case EDG_WLL_STAT_FILE_TRANSFER_COLLECTION:
// glite jobs, no suffix
*suffix = strdup("");
*unique = strdup(dbjob);
case EDG_WLL_STAT__PARTITIONABLE_UNUSED:
case EDG_WLL_STAT__PARTITIONED_UNUSED:
case EDG_WLL_STAT_COLLECTION:
+ case EDG_WLL_STAT_FILE_TRANSFER:
+ case EDG_WLL_STAT_FILE_TRANSFER_COLLECTION:
// glite job prefix
ser = glite_jobid_getServer(job);
asprintf(prefix,"%s/",ser);
if ( !purge && dump < 0 ) return 0;
do {
+
if (edg_wll_Transaction(ctx)) goto err;
switch (edg_wll_jobMembership(ctx, job)) {
dbjob = glite_jobid_getUnique(job); /* XXX: strict jobid already checked */
+
if ( purge )
{
enum edg_wll_StatJobtype jobtype = get_job_type(ctx, job);
|| get_jobid_prefix(ctx, job, jobtype, &prefix)) {
glite_common_log(LOG_CATEGORY_CONTROL,
LOG_PRIORITY_WARN,
- "[%d] unknown job type of the '%s'.",
- getpid(), dbjob);
+ "[%d] unknown job type %d of job %s",
+ getpid(), jobtype, dbjob);
edg_wll_ResetError(ctx);
}
+
}
if ( purge )
#include "glite/jobid/strmd5.h"
#include "stats.h"
+#include "authz_policy.h"
#define GROUPS_HASHTABLE_SIZE 1000
)
{
edg_wll_JobStatCode later_state;
+ struct _edg_wll_GssPrincipal_data princ;
+ edg_wll_ResetError(ctx);
+ memset(&princ, 0, sizeof princ);
+ princ.name = ctx->peerName;
+ princ.fqans = ctx->fqans;
switch (ctx->count_statistics) {
case 0: return edg_wll_SetError(ctx,ENOSYS,NULL);
- case 1: if (!ctx->noAuth) return edg_wll_SetError(ctx,EPERM,NULL);
- break;
+ case 1: if (!ctx->noAuth && !check_authz_policy(&ctx->authz_policy, &princ, GET_STATISTICS))
+ return edg_wll_SetError(ctx, EPERM, NULL);
case 2: break;
default: abort();
}
#include <stdlib.h>
#include <string.h>
#include <stdsoap2.h>
+#include <cclassad.h>
#include "soap_version.h"
#include "bk_ws_H.h"
gen "\tjs->$usuc->tvUsec = src->$_.tv_usec;\n";
} elsif ($ft eq 'string') {
gen "\tjs->$usuc = soap_strdup(soap,src->$_);\n";
+ } elsif ($ft eq 'cclassad') {
+ gen "\ts = src->$_ ? cclassad_unparse(src->$_) : NULL;\n";
+ gen "\tjs->$usuc = s ? soap_strdup(soap, s) : NULL;\n";
+ gen "\tfree(s);\n";
} elsif ($f->{null}) {
gen qq{
! if (src->$_ == $f->{null}) js->$usuc = NULL;
} elsif ($ft eq 'string') {
gen "\tdest->$_ = src->$usuc;\n";
gen "\tsoap_unlink(soap,src->$usuc);\n";
+ } elsif ($ft eq 'cclassad') {
+ gen "\tif (src->$usuc) {";
+ gen "\t\tdest->$_ = cclassad_create(src->$usuc);\n";
+ gen "\t\tsoap_unlink(soap,src->$usuc);\n";
+ gen "\t}";
} elsif ($f->{null}) {
gen "\tdest->$_ = (src->$usuc) ? *(src->$usuc) : $f->{null};\n";
} else {
globalprefix=glite
lbprefix=lb
package=glite-lb-state-machine
-version=0.2.0
PREFIX=/opt/glite
prefix=
-include Makefile.inc
+-include ${top_srcdir}/project/version.properties
+version=${module.version}
VPATH = ${top_srcdir}/src:${top_srcdir}/interface
PLUGIN_LOBJS:=seqcode_aux.lo process_event.lo process_event_pbs.lo process_event_condor.lo process_event_cream.lo lb_plugin.lo process_event_file_transfer.lo process_event_file_transfer_collection.lo
MACHINE_OBJS:=seqcode_aux.o process_event.o process_event_pbs.o process_event_condor.o process_event_cream.o process_event_file_transfer.o process_event_file_transfer_collection.o intjobstat_supp.o
+MACHINE_LOBJS:=${MACHINE_OBJS:.o=.lo}
PLUGIN_LIB=glite_lb_plugin.la
-MACHINE_LIB=libglite_lb_statemachine.a
+MACHINE_LIB=libglite_lb_statemachine.la
XSD=lb-job-attrs2.xsd
compile: ${MACHINE_LIB} ${PLUGIN_LIB} ${XSD}
+# In order to use libtool versioning correcty, we must have:
+#
+# current = major + minor + offset
+# revision = patch
+# age = minor
+#
+# where offset is a sum of maximal released minor's of all previous major's
+#
+
+# counted minors: 1.0
+offset=0
+version_info:=-version-info ${shell \
+ perl -e '$$,=":"; @F=split /\./,"${version}"; print $$F[0]+$$F[1]+${offset},$$F[2],$$F[1]' }
+
${PLUGIN_LIB}: ${PLUGIN_LOBJS}
${SOLINK} -o $@ ${PLUGIN_LOBJS} ${PLUGIN_LIBS}
${MACHINE_LIB}: ${MACHINE_OBJS}
- ar crv $@ ${MACHINE_OBJS}
- -ranlib $@
+ ${LINK} ${version_info} -o $@ ${MACHINE_LOBJS}
+# ar crv $@ ${MACHINE_OBJS}
+# -ranlib $@
doc:
install:
-mkdir -p ${DESTDIR}${PREFIX}${prefix}/${libdir} ${DESTDIR}${PREFIX}${prefix}/interface ${DESTDIR}${PREFIX}${prefix}/include/glite/lb
- install -m 644 ${MACHINE_LIB} ${DESTDIR}${PREFIX}${prefix}/${libdir}
+ ${INSTALL} -m 644 ${MACHINE_LIB} ${DESTDIR}${PREFIX}${prefix}/${libdir}
${INSTALL} -m 755 ${PLUGIN_LIB} ${DESTDIR}${PREFIX}${prefix}/${libdir}
install -m 644 ${top_srcdir}/interface/lb-job-attrs.xsd ${DESTDIR}${PREFIX}${prefix}/interface
install -m 644 lb-job-attrs2.xsd ${DESTDIR}${PREFIX}${prefix}/interface
--- /dev/null
+/sbin/ldconfig
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
for $_ (keys %{$project{etics_externs}}) {
$etics_externs{$_} = $project{etics_externs}{$_};
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
gridsite=>'emi.gridsite.shared',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
gip_service=>'emi.bdii.glite-info-provider-service',
bdii=>'emi.bdii.core',
glite_version=>'emi.misc.glite-version',
jdk=>'java-devel',
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
2.0.8-4
- Module rebuilt
+2.0.9-1
+- Essential checking of temporal arguments to glite-lb-dump for validity
+- Support for special date values (now, last dump start/end) in glite-lb-dump
+- Proper handling of background purge error messages (fix for bug #77974)
+
2.1.0-1
- Fixes for parallel release in EMI & gLite
- Check result of InitContext calls
- at3 location detection reverted
- '--stage=/' behaviour fixed in configure
+2.1.4-1
+> - Essential checking of temporal arguments to glite-lb-dump for validity
+> - Support for special date values (now, last dump start/end) in glite-lb-dump
+> - Proper handling of background purge error messages (fix for bug #77974)
+
# $Header$
-module.version=2.1.3
+module.version=2.1.4
module.age=1
static void usage(char *me)
{
fprintf(stderr,"usage: %s [option]\n"
- " -f, --from YYYYMMDDHHmmss beginning of the time interval for events to be dumped\n"
- " -t, --to YYYYMMDDHHmmss end of the time interval for events to be dumped\n"
+ " -f, --from YYYYMMDDHHmmss beginning of the time interval for events to be dumped*\n"
+ " -t, --to YYYYMMDDHHmmss end of the time interval for events to be dumped*\n"
" -h, --help display this help\n"
" -v, --version display version\n"
" -d, --debug diagnostic output\n"
- " -m, --server L&B server machine name\n",
+ " -m, --server L&B server machine name\n\n"
+ " * Special values for temporal arguments '-f' and '-t':\n"
+ " 'now' this exact moment\n"
+ " 'last_start' last dump starting time\n"
+ " 'last_end' last dump ending time\n",
me);
}
+double ParseDate(const char *s) {
+ if (!strcmp(s,"now")) return EDG_WLL_DUMP_NOW;
+ if (!strcmp(s,"last_start")) return EDG_WLL_DUMP_LAST_START;
+ if (!strcmp(s,"last_end")) return EDG_WLL_DUMP_LAST_END;
+
+ if(strlen(s)<14) return -16;
+
+ int i;
+ for (i = 0; i<14; i++) if((s[i]<'0')||(s[i]>'9')) return -16;
+
+ return edg_wll_ULMDateToDouble(s);
+}
+
int main(int argc,char *argv[])
{
edg_wll_DumpRequest *request;
char *me;
int opt;
- edg_wll_Context ctx;
+ edg_wll_Context ctx = NULL;
/* initialize request to server defaults */
request = (edg_wll_DumpRequest *) calloc(1,sizeof(edg_wll_DumpRequest));
switch (opt) {
- case 'f': request->from = (time_t) edg_wll_ULMDateToDouble(optarg); break;
- case 't': request->to = (time_t) edg_wll_ULMDateToDouble(optarg); break;
+ case 'f': request->from = (time_t) ParseDate(optarg); break;
+ case 't': request->to = (time_t) ParseDate(optarg); break;
case 'm': server = optarg; break;
case 'd': debug = 1; break;
case 'v': fprintf(stdout,"%s:\t%s\n",me,rcsid); exit(0);
}
}
+ if(request->from < -15) {
+ fprintf(stdout, "Invalid 'from' date\n");
+ goto main_end; }
+ if(request->to < -15) {
+ fprintf(stdout, "Invalid 'to' date\n");
+ goto main_end; }
+
/* check request */
if (debug) {
printf("Dump request:\n");
{
edg_wll_PurgeRequest *request;
edg_wll_PurgeResult *result;
- int i, timeout, background;
+ int i, timeout, background, err = 1;
char *server = NULL;
char *me;
/* that is the Purge */
dprintf(("Running the edg_wll_Purge...\n"));
- if (edg_wll_Purge(ctx, request, result) != 0) {
- fprintf(stderr,"Error running the edg_wll_Purge().\n");
+ if ((err = edg_wll_Purge(ctx, request, result)) != 0) {
+ if (err == EDG_WLL_ERROR_ACCEPTED_OK) err = 0;
+ else fprintf(stderr,"Error running the edg_wll_Purge().\n");
printerr(ctx);
+
switch ( edg_wll_Error(ctx, NULL, NULL) )
{
case ENOENT:
case EPERM:
case EINVAL:
break;
+ case EDG_WLL_ERROR_ACCEPTED_OK:
+ /* fall-through */
default:
goto main_end;
}
}
if (result) free(result);
edg_wll_FreeContext(ctx);
- return 0;
+ return err != 0;
}
eval value=\"$`echo GLITE_LB_AUTHZ_$section`\"
case "$section" in
ADMIN_ACCESS) value="$value,$superusers" ;;
+ GET_STATISTICS) value="$value,$wms" ;;
READ_ALL) value="$value,$wms,$rtm" ;;
PURGE) value="$value,$wms" ;;
LOG_WMS_EVENTS) value="$value,$wms" ;;
# Create cron for purging
mkdir -p /var/log/glite
+ chown $GLITE_USER:$GLITE_USER /var/log/glite
logfile=/var/log/glite/glite-lb-purger.log
if $LB_PURGE --help 2>&1 | grep 'target-runtime' > /dev/null; then
purge_target_runtime_cmd='export GLITE_LB_PURGE_TARGET_RUNTIME=84600s; '
yaimlog ERROR "Copying glue2 service template failed"
exit 1
fi
+# workaround SB #85209 ($GLITE_LOCATION/etc in provider scripts)
+sed -i 's/\$GLITE_LOCATION//' ${INFO_SERVICE_CONFIG}/glite-info-service-${SERVICE_LC}.conf
+sed -i 's/\$GLITE_LOCATION//' ${INFO_SERVICE_CONFIG}/glite-info-glue2-${SERVICE_LC}.conf
# Note: the configuration file may need to be altered if non standard values have been used.
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
-for $_ (keys %{$project{etics_externs}}) {
- $etics_externs{$_} = $project{etics_externs}{$_};
+for my $platform (keys %{$project{etics_externs}}) {
+ for $_ (keys %{$project{etics_externs}{$platform}}) {
+ $etics_externs{$platform}{$_} = $project{etics_externs}{$platform}{$_};
+ }
}
+reshuffle_platforms(\%etics_externs, $project{supported_platforms});
+reshuffle_platforms(\%{$project{etics_externs_devel}}, $project{supported_platforms});
for $_ (keys %{$project{etics_projects}}) {
$etics_projects{$_} = $project{etics_projects}{$_};
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
vdt=>[qw/globus globus_essentials gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
flavours => '--thrflavour= --nothrflavour=',
local_prefix => '/usr',
etics_externs => {
- globus_essentials=>'globus-gssapi-gsi',
- globus=>'globus-gssapi-gsi-devel',
- gridsite=>'emi.gridsite.shared',
- yaim_core=>'emi.yaim.yaim-core',
- yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
- gip_service=>'emi.bdii.glite-info-provider-service',
- bdii=>'emi.bdii.core',
- glite_version=>'emi.misc.glite-version',
- glue_schema=>'emi.bdii.glue-schema',
- trustmanager=>'emi.java-security.trustmanager',
- trustmanager_axis=>'emi.java-security.trustmanager-axis',
- axis=>'axis1.4',
- lcas=>'emi.sac.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'emi.misc.glite.build-common-cpp',
- jdk=>'java',
+ default => {
+ globus_essentials=>'globus-gssapi-gsi',
+ globus=>'globus-gssapi-gsi-devel',
+ gridsite=>'emi.gridsite.shared',
+ yaim_core=>'emi.yaim.yaim-core',
+ yaim_bdii=>'emi.bdii.yaim-bdii',
+ gip_service=>'emi.bdii.glite-info-provider-service',
+ bdii=>'emi.bdii.core',
+ glite_version=>'emi.misc.glite-version',
+ glue_schema=>'emi.bdii.glue-schema',
+ trustmanager=>'emi.java-security.trustmanager',
+ trustmanager_axis=>'emi.java-security.trustmanager-axis',
+ axis=>'axis1.4',
+ lcas=>'emi.sac.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'emi.misc.glite.build-common-cpp',
+ jdk=>'java',
+ },
+ sl5_x86_64_gcc412EPEL => {
+ 'myproxy-devel' => 'myproxy-devel.x86_64',
+ },
},
etics_externs_devel => {
- cares => 'c-ares-devel',
- classads => 'classads-devel',
- cppunit => 'cppunit-devel',
- expat => 'expat-devel',
- gsoap => 'gsoap-devel',
- voms => 'org.glite.security.voms-api',
- libtar => 'libtar-devel',
- log4c => 'log4c-devel',
- postgresql => 'postgresql-devel',
- curl => 'curl-devel',
- libxml2 => 'libxml2-devel',
- openssl => 'openssl-devel',
- gridsite=>'emi.gridsite.devel',
- jdk=>'java-devel',
+ default => {
+ cares => 'c-ares-devel',
+ classads => 'classads-devel',
+ cppunit => 'cppunit-devel',
+ expat => 'expat-devel',
+ gsoap => 'gsoap-devel',
+ voms => 'org.glite.security.voms-api',
+ libtar => 'libtar-devel',
+ log4c => 'log4c-devel',
+ postgresql => 'postgresql-devel',
+ curl => 'curl-devel',
+ libxml2 => 'libxml2-devel',
+ openssl => 'openssl-devel',
+ gridsite=>'emi.gridsite.devel',
+ jdk=>'java-devel',
+ },
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ },
+ etics_locations => {
+ axis => 'axis',
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
modules => {
'lb' => [ qw/emi-lb/ ],
'px' => [ qw/emi-px/ ],
- }
+ },
},
);
close V;
}
+ # XXX: --with ignored for platform-dependend packages
my @copts = ();
my %ge;
@ge{@{$etics_projects{$project{etics_name}}}} = (1) x ($#{$etics_projects{$project{etics_name}}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/ and (defined $externs{$_} or defined $jar{$_})) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
next if ($eext eq '-');
- if ($project ne 'glite') {
+ if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_}) {
+ $eext = $project{etics_locations}{$_} if ($project{etics_locations}{$_});
+ push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ } else {
if ($ge{$_} and not defined $externs{$_}{pkg}) {
push @copts, "--with-$_=\${stageDir}";
}
- } else {
- push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
}
}
}
for (@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
- push @copts,"--with-$_ \${$eext.location}$jar{$_}" if ($project eq 'glite');
+ push @copts,"--with-$_ \${$eext.location}$jar{$_}" if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_});
}
my $conf;
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
$cmd{compile} = 'make';
$cmd{test} = 'make check';
$cmd{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_} ? $etics_externs{$platform}{$_} : $_;
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+ next if ($eext eq '-');
+ # dependencies not listed in etics_externs only for
+ # default platform
+ if (not defined $etics_externs{$platform}{$_} and
+ $platform ne 'default') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
+
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ $used = 1;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ $eext = $edev; # no runtime - change to devel pkg
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ print C "$proj|$edev = B\n"; # additional devel pkg
+ }
}
+ print C "$proj|$eext = $type\n";
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+};
+ $used = 1;
+ }
+ print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ }
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ if (defined $data->{default}{$_}) {
+ $value = $data->{default}{$_};
+ $data->{default}{$_} = '-';
+#print " deleted $_ from default\n";
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print " added $value to $platform\n"
+ }
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
4.3.7-2
- Module rebuilt
+4.3.8-1
+- Support for GLITE_LB_WMS_DN and GLITE_LB_AUTHZ_* yaim parameters
+- Fix locations in automatic purge (SB #81646)
+- Make directory with the logs writable (automatic purge runs under glite user)
+
+4.3.9-1
+- Added missing support for GET_STATISTICS auth section
+- Access to statistics granted to WMS_DN by yaim.
+
# $Header$
-module.version=4.3.7
-module.age=2
+module.version=4.3.9
+module.age=1
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
-for $_ (keys %{$project{etics_externs}}) {
- $etics_externs{$_} = $project{etics_externs}{$_};
+for my $platform (keys %{$project{etics_externs}}) {
+ for $_ (keys %{$project{etics_externs}{$platform}}) {
+ $etics_externs{$platform}{$_} = $project{etics_externs}{$platform}{$_};
+ }
}
+reshuffle_platforms(\%etics_externs, $project{supported_platforms});
+reshuffle_platforms(\%{$project{etics_externs_devel}}, $project{supported_platforms});
for $_ (keys %{$project{etics_projects}}) {
$etics_projects{$_} = $project{etics_projects}{$_};
}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'jp.primary' => [ qw/classads gsoap libtar globus_essentials:R globus:B/ ],
'jp.server-common' => [],
'jp.ws-interface' => [],
- 'gridsite.core' => [ qw/httpd-devel:B gsoap:B globus:B curl:B doxygen:B fuse-devel:B libxml2 openssl:B build_common_cpp:B doxygen:B/ ],
+ 'gridsite.core' => [ qw/httpd-devel:B gsoap:B globus:B curl:B doxygen:B fuse-devel:B libxml2:B openssl:B build_common_cpp:B doxygen:B/ ],
'gridsite.commands' => [ qw/curl:R openssl:R/ ],
'gridsite.apache' => [ qw/libxml2:R openssl:R curl:R/ ],
'gridsite.shared' => [ qw/libxml2:R openssl:R/ ],
'gridsite.devel' => [ qw// ],
- 'gridsite.slashgrid' => [ qw/curl:R fuse-libs:R fuse:R/],
+ 'gridsite.slashgrid' => [ qw/curl:R fuse:R/],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
+ 'gridsite.1.5-compat' => [ qw/httpd-devel:B gsoap:B globus:B curl:B doxygen:B fuse-devel:B libxml2:B openssl:B build_common_cpp:B doxygen:B/ ],
'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
'lb.logger-msg' => [ qw/
lb.logger
/ ],
+ 'lb.nagios' => [ qw/
+ lb.client:R
+ lb.ws-test:R
+ lb.utils:R
+ / ],
'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.log
%provides = (
'lbjp-common.gss' => [ qq/glite-security-gss/ ],
'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
+ 'lb.nagios' => [ qq/glite-lb-nagios-plugins/ ],
);
%cvs_prefix = (
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
},
tag_prefix => { %cvs_tag_prefix },
flavours => '--thrflavour= --nothrflavour=',
local_prefix => '/usr',
etics_externs => {
- globus_essentials=>'globus-gssapi-gsi',
- globus=>'globus-gssapi-gsi-devel',
- gridsite=>'emi.gridsite.shared',
- yaim_core=>'emi.yaim.yaim-core',
- yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_service=>'emi.bdii.glite-info-provider-service',
- bdii=>'emi.bdii.core',
- glite_version=>'emi.misc.glite-version',
- glue_schema=>'emi.bdii.glue-schema',
- trustmanager=>'emi.java-security.trustmanager',
- trustmanager_axis=>'emi.java-security.trustmanager-axis',
- axis=>'axis1.4',
- lcas=>'emi.sac.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'emi.misc.glite.build-common-cpp',
- jdk=>'java',
+ default => {
+ globus_essentials=>'globus-gssapi-gsi',
+ globus=>'globus-gssapi-gsi-devel',
+ globus_proxy_utils=>'globus-proxy-utils',
+ gridsite=>'emi.gridsite.shared',
+ yaim_core=>'emi.yaim.yaim-core',
+ yaim_bdii=>'emi.bdii.yaim-bdii',
+ gip_service=>'emi.bdii.glite-info-provider-service',
+ bdii=>'emi.bdii.core',
+ glite_version=>'emi.misc.glite-version',
+ glue_schema=>'emi.bdii.glue-schema',
+ trustmanager=>'emi.java-security.trustmanager',
+ trustmanager_axis=>'emi.java-security.trustmanager-axis',
+ axis=>'axis1.4',
+ lcas=>'emi.sac.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'emi.misc.glite.build-common-cpp',
+ jdk=>'java',
+ },
+ sl5_x86_64_gcc412EPEL => {
+ 'myproxy-devel' => 'myproxy-devel.x86_64',
+ },
+ sl6_x86_64_gcc445EPEL => {
+ 'myproxy-devel' => 'myproxy-devel.x86_64',
+ },
+ deb6_x86_64_gcc445 => {
+ globus_essentials => 'libglobus-gssapi-gsi4',
+ globus => 'libglobus-gssapi-gsi-dev',
+ axis => 'libaxis-java',
+ cares => 'libc-ares2',
+ cppunit => 'libcppunit',
+ expat => 'libexpat1',
+ log4c => 'liblog4c3',
+ curl => 'libcurl3',
+ 'mysql' => 'libmysqlclient6',
+ 'mysql-devel' => 'libmysqlclient-dev',
+ libxslt => 'xsltproc',
+ 'jakarta-commons-codec' => 'libcommons-codec-java',
+ 'jakarta-commons-lang' => 'libcommons-lang-java',
+ 'tetex-latex' => 'texlive-latex-extra',
+ 'perl-LDAP' => 'libnet-ldap-perl',
+ 'fuse-lib' => 'libfuse2',
+ 'fuse' => 'fuse-utils',
+ },
},
etics_externs_devel => {
- cares => 'c-ares-devel',
- classads => 'classads-devel',
- cppunit => 'cppunit-devel',
- expat => 'expat-devel',
- gsoap => 'gsoap-devel',
- voms => 'org.glite.security.voms-api',
- libtar => 'libtar-devel',
- log4c => 'log4c-devel',
- postgresql => 'postgresql-devel',
- curl => 'curl-devel',
- libxml2 => 'libxml2-devel',
- openssl => 'openssl-devel',
- gridsite=>'emi.gridsite.devel',
- jdk=>'java-devel',
+ default => {
+ cares => 'c-ares-devel',
+ classads => 'classads-devel',
+ cppunit => 'cppunit-devel',
+ expat => 'expat-devel',
+ gsoap => 'gsoap-devel',
+ voms => 'org.glite.security.voms-api',
+ libtar => 'libtar-devel',
+ log4c => 'log4c-devel',
+ postgresql => 'postgresql-devel',
+ curl => 'curl-devel',
+ libxml2 => 'libxml2-devel',
+ openssl => 'openssl-devel',
+ gridsite=>'emi.gridsite.devel',
+ jdk=>'java-devel',
+ },
+ deb6_x86_64_gcc445 => {
+ cares => 'libc-ares-dev',
+ cppunit => 'libcppunit-dev',
+ expat => 'libexpat1-dev',
+ libtar => 'libtar-dev',
+ log4c => 'liblog4c-dev',
+ postgresql => 'libpq-dev',
+ curl => 'libcurl4-openssl-dev',
+ libxml2 => 'libxml2-dev',
+ openssl => 'libssl-dev',
+ 'tetex-latex' => 'texlive-latex-extra',
+ libxslt=>'xsltproc',
+ 'httpd-devel' => 'apache2-prefork-dev',
+ 'fuse-devel' => 'libfuse-dev',
+ gsoap => 'gsoap',
+ },
},
etics_projects => {
'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
+ etics_locations => {
+ axis => 'axis',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
supported_platforms => {
sl5_x86_64_gcc412EPEL => 1,
sl5_ia32_gcc412EPEL => 1,
+ sl6_x86_64_gcc445EPEL => 1,
+# deb6_x86_64_gcc445 => 1,
},
modules => {
'lb' => [ qw/emi-lb/ ],
'px' => [ qw/emi-px/ ],
- }
+ },
},
);
+my %gridsite_rpm = (
+ 'package.RPMSLocation' => "\${moduleDir}/RPMTMP/RPMS",
+ 'package.SRPMSLocation' => "\${moduleDir}/RPMTMP/SRPMS",
+);
+my %gridsite_deb = (
+ 'package.DEBSLocation' => "\${moduleDir}/RPMTMP",
+);
%platform_properties = (
'gridsite.core' => {
- sl5_x86_64_gcc412 => { aprSuffix => '1' },
- sl5_ia32_gcc412 => { aprSuffix => '1' },
- sl5_x86_64_gcc412EPEL => { aprSuffix => '1' },
- sl5_ia32_gcc412EPEL => { aprSuffix => '1' },
- deb5_x86_64_gcc432 => { aprSuffix => '1.0' },
- deb5_ia32_gcc432 => { aprSuffix => '1.0' },
- slc4_x86_64_gcc346 => { aprSuffix => '0' },
- slc4_ia32_gcc346 => { aprSuffix => '0' },
- default => {
- }
+ sl5_x86_64_gcc412 => \%gridsite_rpm,
+ sl5_ia32_gcc412 => \%gridsite_rpm,
+ sl5_x86_64_gcc412EPEL => \%gridsite_rpm,
+ sl5_ia32_gcc412EPEL => \%gridsite_rpm,
+ deb5_x86_64_gcc432 => \%gridsite_deb,
+ deb5_ia32_gcc432 => \%gridsite_deb,
+ slc4_x86_64_gcc346 => \%gridsite_rpm,
+ slc4_ia32_gcc346 => \%gridsite_rpm,
+ sl6_x86_64_gcc445 => \%gridsite_rpm,
+ deb6_x86_64_gcc445 => \%gridsite_deb,
},
'jobid.api-java' => {
default => { 'package.buildarch' => 'noarch' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
sub mkinc
{
my %aux;
+ my ($old_locale, $date);
undef %aux;
my @m=qw/
-lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB
+lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB
lbjp-common.gss lbjp-common.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 lbjp-common.gss lbjp-common.gsoap-plugin
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
close V;
}
+ # XXX: --with ignored for platform-dependend packages
my @copts = ();
my %ge;
@ge{@{$etics_projects{$project{etics_name}}}} = (1) x ($#{$etics_projects{$project{etics_name}}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/ and (defined $externs{$_} or defined $jar{$_})) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
next if ($eext eq '-');
- if ($project ne 'glite') {
+ if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_}) {
+ $eext = $project{etics_locations}{$_} if ($project{etics_locations}{$_});
+ push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ } else {
if ($ge{$_} and not defined $externs{$_}{pkg}) {
push @copts, "--with-$_=\${stageDir}";
}
- } else {
- push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
}
}
}
for (@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
- push @copts,"--with-$_ \${$eext.location}$jar{$_}" if ($project eq 'glite');
+ push @copts,"--with-$_ \${$eext.location}$jar{$_}" if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_});
}
my $conf;
print STDERR "package.summary not found for $subsys.$module!\n"; }
my %cmd;
- @cmd{qw/configure compile test install packaging clean/} = ('None') x 6;
- $cmd{clean} = 'make clean';
- $cmd{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.$module 2>/dev/null";
- #$cmd{checkout} = "(test -d jra1mw/.git && (cd jra1mw; git pull) || git clone http://scientific.zcu.cz/git/jra1mw.git)";
- #$cmd{checkout} .= " && (cd jra1mw; git checkout \${tag})" unless ($conftag =~ /HEAD/);
- #$cmd{checkout} .= " && ln -s jra1mw/$cvs_prefix{$subsys}.$subsys.$module \${moduleName}";
- $cmd{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.$module 2>/dev/null";
+ #$cmd_vcs{checkout} = "(test -d jra1mw/.git && (cd jra1mw; git pull) || git clone http://scientific.zcu.cz/git/jra1mw.git)";
+ #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout \${tag})" unless ($conftag =~ /HEAD/);
+ #$cmd_vcs{checkout} .= " && ln -s jra1mw/$cvs_prefix{$subsys}.$subsys.$module \${moduleName}";
+ $cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
+
+ $cmd{default}{init} = 'None';
+ $cmd{default}{configure} = 'None';
+ $cmd{default}{compile} = 'None';
+ $cmd{default}{test} = 'None';
+ $cmd{default}{install} = 'None';
+ $cmd{default}{packaging} = 'None';
+ $cmd{default}{clean} = 'make clean';
if ($subsys eq 'gridsite') {
- $cmd{tag} = 'None';
+ $cmd_vcs{tag} = 'None';
if ($module eq 'core') {
- my ($flags, $prefix);
+ my $flags;
if ($project ne 'glite') {
- $flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = 'prefix=${prefix}/usr';
+ # don't evaluate pkg-config calls to get them into source package
+ $flags = 'RELEASE_VERSION=${age}.${platformFamily}
+ GSOAPDIR=\`pkg-config gsoap --variable=prefix\`
+ OPENSSL_GLOBUS_FLAGS=\`pkg-config globus-openssl --cflags\`
+ OPENSSL_GLOBUS_LIBS=\`pkg-config globus-openssl --libs\`';
} else {
- $flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = 'prefix=${prefix}';
+ $flags = 'RELEASE_VERSION=${age}.${platformFamily}
+ GSOAPDIR=${gsoap.location}
+ OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor}
+ OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}
+ HTTPD_FLAGS=-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-1 -I${httpd-devel.location}/include/apr-1.0 -I${httpd-devel.location}/include/apr-0 -I${httpd-devel.location}/include/pcre';
}
- $cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
- $cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
- $cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
- make $prefix $flags rpm && \
+ $cmd{default}{configure} = "cat > Makefile.inc <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
printf("\nNew tag: $tag\n\n");
- die "This tag already exists; reported by assertion" unless system("cvs log -h $module/Makefile | grep \"$tag\"");
+ die "This tag already exists; reported by assertion" unless system("cvs log -h $module/project/version.properties | grep \"$tag\"");
# **********************************
# Create the execution script
if ($TMPDIR eq "") {$TMPDIR="/tmp";}
+sub ConstructChangeLog {
+ my ($CCLtag,$CCLmod,$CCLchl) = @_;
+ my $orig_tag = "";
+ my $new_tag = "";
+ my $filename = "";
+
+ open(CHANGELOG, ">>$CCLchl");
+
+
+ open(CCLFILES, "cvs diff -r $CCLtag $CCLmod | grep -E '^RCS file' -A 2 | ");
+ while (<CCLFILES>) {
+ $inline=$_;
+ chomp($inline);
+
+ if($inline =~/^RCS file: \/cvs\/.*?\/(.*),.*$/) {
+ $filename=$1;
+ $orig_tag="";
+ $new_tag="";
+ }
+ if ($inline =~/^retrieving revision ([0-9\.]*)/) {
+ if ($orig_tag == "") {
+ $orig_tag=$1;
+ }
+ else {
+ $new_tag=$1;
+
+ open(OUTLINES, "cvs log -S -N -r" . "$orig_tag" . "::$new_tag $filename | egrep -v \"^locks:|^access list:|^keyword substitution:|^total revisions:|^branch:|^description:|^head:|^RCS file:|^---|^===|^revision|^Working[ ]file: \" |");
+ $CCLnames = "";
+ while (<OUTLINES>) {
+ $logline=$_;
+ chomp($logline);
+ if ($logline=~/^date:.*author:\s+(.*?);\s+state.*/) {
+ unless ($CCLnames=~/$1/) {
+ $CCLnames = $CCLnames . ", $1";
+ }
+ }
+ else {
+ print CHANGELOG "$_";
+ }
+ }
+ print CHANGELOG " ==$filename $orig_tag to $new_tag$CCLnames==";
+ close(OUTLINES);
+ }
+ }
+ }
+ close(CCLFILES);
+ close(CHANGELOG);
+
+}
+
getopts('i:c:m:p:gh');
$module = shift;
chomp($editline);
if ($increment eq "a") {system("echo \"- Module rebuilt\" >> $tmpChangeLog"); system("echo \"\" >> $tmpChangeLog");}
- else { system("cvs log -S -N -r" . "$current_tag" . ":: $module | egrep -v \"^locks:|^access list:|^keyword substitution:|^total revisions:|^branch:|^description:|^head:|^RCS file:|^date:|^---|^===|^revision \" >> $tmpChangeLog"); }
+ else { ConstructChangeLog($current_tag, $module, $tmpChangeLog); }
$ChangeLogRet=system("vim +$editline -c \"norm z.\" $tmpChangeLog");
}
# : /cvs/glite/org.glite.lb/project/version.properties,v 1.164 2008/01/09 15:35:55 mmulac Exp $
-module.version=3.0.10
+module.version=3.1.0
module.age=1
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
for $_ (keys %{$project{etics_externs}}) {
$etics_externs{$_} = $project{etics_externs}{$_};
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'lbjp-common.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B libtool:B/ ],
'lbjp-common.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares:B gsoap gsoapxx libtool:B/ ],
'jobid.api-c' => [ qw/cppunit:B libtool:B openssl:B/ ],
- 'jobid.api-cpp' => [ qw/cppunit:B/ ],
+ 'jobid.api-cpp' => [ qw/cppunit:B libtool:B/ ],
'jobid.api-java' => [ qw/ant:B jdk:B/ ],
'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
'jp.doc' => [],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
gridsite=>'emi.gridsite.shared',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
gip_service=>'emi.bdii.glite-info-provider-service',
bdii=>'emi.bdii.core',
glite_version=>'emi.misc.glite-version',
jdk=>'java-devel',
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
3.0.2-6
- Module rebuilt
+3.0.2-7
+- Module rebuilt
+
# $Header$
module.version=3.0.2
-module.age=6
+module.age=7
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
-for $_ (keys %{$project{etics_externs}}) {
- $etics_externs{$_} = $project{etics_externs}{$_};
+for my $platform (keys %{$project{etics_externs}}) {
+ for $_ (keys %{$project{etics_externs}{$platform}}) {
+ $etics_externs{$platform}{$_} = $project{etics_externs}{$platform}{$_};
+ }
}
+reshuffle_platforms(\%etics_externs, $project{supported_platforms});
+reshuffle_platforms(\%{$project{etics_externs_devel}}, $project{supported_platforms});
for $_ (keys %{$project{etics_projects}}) {
$etics_projects{$_} = $project{etics_projects}{$_};
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'lbjp-common.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B libtool:B/ ],
'lbjp-common.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares:B gsoap gsoapxx libtool:B/ ],
'jobid.api-c' => [ qw/cppunit:B libtool:B openssl:B/ ],
- 'jobid.api-cpp' => [ qw/cppunit:B/ ],
+ 'jobid.api-cpp' => [ qw/cppunit:B libtool:B/ ],
'jobid.api-java' => [ qw/ant:B jdk:B/ ],
'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
'jp.doc' => [],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
vdt=>[qw/globus globus_essentials gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
flavours => '--thrflavour= --nothrflavour=',
local_prefix => '/usr',
etics_externs => {
- globus_essentials=>'globus-gssapi-gsi',
- globus=>'globus-gssapi-gsi-devel',
- gridsite=>'emi.gridsite.shared',
- yaim_core=>'emi.yaim.yaim-core',
- yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
- gip_service=>'emi.bdii.glite-info-provider-service',
- bdii=>'emi.bdii.core',
- glite_version=>'emi.misc.glite-version',
- glue_schema=>'emi.bdii.glue-schema',
- trustmanager=>'emi.java-security.trustmanager',
- trustmanager_axis=>'emi.java-security.trustmanager-axis',
- axis=>'axis1.4',
- lcas=>'emi.sac.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'emi.misc.glite.build-common-cpp',
- jdk=>'java',
+ default => {
+ globus_essentials=>'globus-gssapi-gsi',
+ globus=>'globus-gssapi-gsi-devel',
+ gridsite=>'emi.gridsite.shared',
+ yaim_core=>'emi.yaim.yaim-core',
+ yaim_bdii=>'emi.bdii.yaim-bdii',
+ gip_service=>'emi.bdii.glite-info-provider-service',
+ bdii=>'emi.bdii.core',
+ glite_version=>'emi.misc.glite-version',
+ glue_schema=>'emi.bdii.glue-schema',
+ trustmanager=>'emi.java-security.trustmanager',
+ trustmanager_axis=>'emi.java-security.trustmanager-axis',
+ axis=>'axis1.4',
+ lcas=>'emi.sac.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'emi.misc.glite.build-common-cpp',
+ jdk=>'java',
+ },
+ sl5_x86_64_gcc412EPEL => {
+ 'myproxy-devel' => 'myproxy-devel.x86_64',
+ },
},
etics_externs_devel => {
- cares => 'c-ares-devel',
- classads => 'classads-devel',
- cppunit => 'cppunit-devel',
- expat => 'expat-devel',
- gsoap => 'gsoap-devel',
- voms => 'org.glite.security.voms-api',
- libtar => 'libtar-devel',
- log4c => 'log4c-devel',
- postgresql => 'postgresql-devel',
- curl => 'curl-devel',
- libxml2 => 'libxml2-devel',
- openssl => 'openssl-devel',
- gridsite=>'emi.gridsite.devel',
- jdk=>'java-devel',
+ default => {
+ cares => 'c-ares-devel',
+ classads => 'classads-devel',
+ cppunit => 'cppunit-devel',
+ expat => 'expat-devel',
+ gsoap => 'gsoap-devel',
+ voms => 'org.glite.security.voms-api',
+ libtar => 'libtar-devel',
+ log4c => 'log4c-devel',
+ postgresql => 'postgresql-devel',
+ curl => 'curl-devel',
+ libxml2 => 'libxml2-devel',
+ openssl => 'openssl-devel',
+ gridsite=>'emi.gridsite.devel',
+ jdk=>'java-devel',
+ },
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ },
+ etics_locations => {
+ axis => 'axis',
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
modules => {
'lb' => [ qw/emi-lb/ ],
'px' => [ qw/emi-px/ ],
- }
+ },
},
);
close V;
}
+ # XXX: --with ignored for platform-dependend packages
my @copts = ();
my %ge;
@ge{@{$etics_projects{$project{etics_name}}}} = (1) x ($#{$etics_projects{$project{etics_name}}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/ and (defined $externs{$_} or defined $jar{$_})) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
next if ($eext eq '-');
- if ($project ne 'glite') {
+ if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_}) {
+ $eext = $project{etics_locations}{$_} if ($project{etics_locations}{$_});
+ push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ } else {
if ($ge{$_} and not defined $externs{$_}{pkg}) {
push @copts, "--with-$_=\${stageDir}";
}
- } else {
- push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
}
}
}
for (@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
- push @copts,"--with-$_ \${$eext.location}$jar{$_}" if ($project eq 'glite');
+ push @copts,"--with-$_ \${$eext.location}$jar{$_}" if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_});
}
my $conf;
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
$cmd{compile} = 'make';
$cmd{test} = 'make check';
$cmd{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_} ? $etics_externs{$platform}{$_} : $_;
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+ next if ($eext eq '-');
+ # dependencies not listed in etics_externs only for
+ # default platform
+ if (not defined $etics_externs{$platform}{$_} and
+ $platform ne 'default') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
+
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ $used = 1;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ $eext = $edev; # no runtime - change to devel pkg
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ print C "$proj|$edev = B\n"; # additional devel pkg
+ }
}
+ print C "$proj|$eext = $type\n";
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+};
+ $used = 1;
+ }
+ print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ }
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ if (defined $data->{default}{$_}) {
+ $value = $data->{default}{$_};
+ $data->{default}{$_} = '-';
+#print " deleted $_ from default\n";
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print " added $value to $platform\n"
+ }
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
edg_wll_gss_set_signal_handler(int signum,
void (*handler_func)(int));
+void
+edg_wll_gss_poll_signal();
+
#ifdef __cplusplus
}
#endif
3.0.3-1
- edg_wll_gss_set_signal_handler() added
+3.0.4-1
+- Next stage for globus signal handler fixes:
+ - globus common module loaded only in edg_wll_initialize()
+ - using globus_poll_nonblocking() before checking signals in logger,
+ new function in gss (needed for non-threaded globus flavour)
+ - warning fixes (type cast, 32/64 portability)
+ - gss functions documented in code
+
--- /dev/null
+all:
+ pdflatex lbjp-common-gss_FD.tex
+
--- /dev/null
+% emi.cls:
+% Branched from egee.cls 1.6
+% revision 2.0 [based on word template]
+% Emidio Giorgio -- emidio.giorgio@ct.infn.it
+% March 31, 2011
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% License
+%
+% This work is licensed under Creative Commons Attribution-ShareAlike 3.0.
+% http://creativecommons.org/licenses/by/3.0/
+% You are free:
+% * to Share Ñ to copy, distribute and transmit the work
+% * to Remix Ñ to adapt the work
+%
+% Under the following conditions:
+% * Attribution. You must attribute the work in the manner specified by the author or licensor
+% (but not in any way that suggests that they endorse you or your use of the work).
+% * Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting
+% work only under the same, similar or a compatible license.
+%
+% * For any reuse or distribution, you must make clear to others the license terms of this work.
+% The best way to do this is with a link to this web page : http://creativecommons.org/licenses/by/3.0/
+% * Any of the above conditions can be waived if you get permission from the copyright holder.
+% * Nothing in this license impairs or restricts the author's moral rights.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{emi}[2011/03/24 EMI LaTeX Class]
+\typeout{EMI LaTeX class -- 2011/03/24}
+%
+%% Interface - example of an option, should we want to use these later.
+%\newif\ifmonotitle\monotitlefalse
+
+%\DeclareOption{mono}{\monotitletrue}
+
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
+\ProcessOptions
+
+
+% Inherit!
+\LoadClass[11pt]{article}
+
+% Necessary packages:
+\RequirePackage{lastpage}
+\RequirePackage{tabularx}
+\RequirePackage{pslatex}
+\RequirePackage{times}
+\RequirePackage{verbatim}
+\RequirePackage{geometry}
+\RequirePackage{url}
+
+\usepackage[hang,bf,small]{caption}
+\usepackage[T1]{fontenc}
+\usepackage[scaled]{helvet}
+\renewcommand*\familydefault{\sfdefault}
+%
+% We now define a new \if command to test for PDF being enabled.
+% It is important because loading graphicx overrides the definition
+% of \pdfoutput and sets it to true even when PDF is not enabled.
+% Use \ifpdf instead of \ifx\pdfoutput\undefined hereafter.
+%
+
+\newif\ifpdf
+\ifx\pdfoutput\undefined
+ \pdffalse
+ % \typeout{PDF _not_ defined}
+\else
+ \pdfoutput=1
+ \pdftrue
+ % \typeout{PDF _is_ defined}
+\fi
+
+\ifpdf
+ \usepackage[pdftex,
+ pdfpagemode={UseOutlines},bookmarks=true,bookmarksopen=true,
+ bookmarksopenlevel=0,bookmarksnumbered=true,
+ hypertexnames=false,colorlinks,linkcolor={blue},
+ citecolor={blue},urlcolor={red},
+ pdfstartview={FitV}]{hyperref}
+\else
+ \usepackage[hypertex]{hyperref}
+\fi
+
+\ifpdf
+ \usepackage[pdftex]{graphicx}
+ \pdfcompresslevel 9
+ \pdfadjustspacing 1
+\else
+ \usepackage[dvips]{graphicx}
+\fi
+
+\usepackage{color}
+
+\def\footsize{5mm}
+
+%%
+%% PAGE GEOMETRY DEFINITIONS
+%%
+% From Template file
+\geometry{centering,includeheadfoot}
+%\geometry{a4paper,top=12.5mm,headheight=12.5mm,headsep=5mm,foot=\footsize,footskip=13.3mm,bottom=12.5mm}
+\geometry{a4paper,top=15.5mm,headheight=20mm,headsep=5mm,foot=\footsize,footskip=13.3mm,bottom=12.5mm}
+\geometry{right=25mm,left=25mm}
+
+
+
+% APM -- I don't think these are right, my impression is above is correct
+%\geometry{a4paper,margin=0.98in,headheight=0.72in}
+
+
+%%
+%% PAGE COLOUR DEFINITIONS
+%%
+
+
+
+% paulm's prefered name ...
+\def\bibname{References}
+
+\setlength{\parindent}{0pt}
+\setlength{\parskip}{1.4mm plus 0.4mm minus 0.2mm}
+
+\def\@defaultfooter{
+ \def\@oddfoot{\vbox to \footsize {%
+ {\color{blue}\hrule width \textwidth height 1pt depth 0pt}%
+ \vfil
+ %\small\hbox to \textwidth{\ISTNumber%
+ \small\hbox to \textwidth{%
+ %\hfil
+ %\hbox{\colorbox{yellow}{\MakeUppercase{\@Dissemination}}}%
+ \hfil
+ \hbox{\thepage/\pageref{LastPage}}}%
+ }%
+ }%
+}
+
+
+\def\ps@title{%
+ \@defaultfooter
+ \def\@oddhead{\hbox to \textwidth{\EMILogo\hfil\LargeCESNETLogo}}
+}
+
+\def\ps@headings{%
+ \@defaultfooter
+ \def\@oddhead{\vbox to \headheight{%
+%\hrule width \textwidth height 1pt\relax
+ \vbox to 0.75\headheight{%
+ \hbox to \textwidth{%
+ \hbox to 0pt{\EMILogo\hss}%
+ \hfil
+
+%% \hbox to 8cm{%
+%% \vbox to 0.75\headheight{%
+%% \vfil
+%% \parbox{8cm}{%
+%% \centering\color{blue}%
+%% \textbf{\MakeUppercase{\@title}}%
+%% %\ifx\@Subtitle\@empty\else
+%% % \par\textbf{\scriptsize\@Subtitle}%
+%% %\fi
+%% }%
+%% \vfil
+%% }%
+%% \hss}%
+
+ \hfil
+%\hbox to 0pt{\vrule width 1pt height 10pt depth 0pt \hss}%
+%% {\scriptsize\setlength{\parskip}{0pt}\setlength{\topsep}{0pt}%
+%% % \vbox to 0.75\headheight{%
+%% \parbox{4cm}{x%
+%% \begin{flushright}%
+%% \textit{Doc. Identifier}:\\
+%% \textbf{\@DocIdentifier}\\
+%% \vfil
+%% \textit{Date}: \textbf{\@Date}
+%% \end{flushright}%
+%% }%
+%% % }%
+%% }%
+
+\hbox to 0pt{\hss\vbox to 0.75\headheight{%\hrule
+\small
+\parfillskip0pt
+\leftskip 0pt plus 1fil
+\parskip0ex
+\textsc{Title}:
+\par
+\textbf{\@title}
+
+
+\textit{Date}: \textbf{\@Date}
+\vfil
+%\hrule
+}}%
+% \hbox to 4cm{\scriptsize
+% \vbox to 0.75\headheight{%
+% \parbox{4cm}{
+% \halign{\hfill####\cr
+% \textit{Doc. Identifier}:\cr
+% \textbf{\@DocIdentifier}\cr
+% % \noalign{\vfil}
+% \textit{Date}: \textbf{\@Date}\cr
+% }}%
+% \vfil
+% }%
+% }%
+ }%
+ }%
+%\hrule width \textwidth height 1pt\relax
+ \vfil\vskip 2.5mm\relax
+ {\color{blue}\hrule width \textwidth height 1pt depth 0pt}%
+ }%
+ }%
+}
+
+\pagestyle{headings}
+
+\setlength{\captionmargin}{1cm}
+
+% image file extensions respective to the output format
+\ifpdf
+ \DeclareGraphicsExtensions{.jpg,.pdf,.png}
+ \pdfcompresslevel=9
+ \pdfinfo{ /Title (EMI) }
+\else
+ \DeclareGraphicsExtensions{.eps}
+\fi
+
+\def\frontboxwidth{11cm}%
+
+\definecolor{MyTeal}{rgb}{0,0.46,0.46}
+\definecolor{blue}{rgb}{0.05,0.26,0.5}
+%\definecolor{blue}{rgb}{0.1,0.1,0.5} %% egee blue
+\definecolor{lightgrey}{gray}{0.65}
+
+%%
+%% Define our title page
+%%
+\AtBeginDocument{
+\pagestyle{title}%
+\hbox{}% Force top of page
+\vfill
+{\centering
+ \fontsize{30}{50}{\textbf{\textsc{\textcolor{blue}{European Middleware Initiative}}}}\\[40mm]%
+ %\Huge{\textbf{\textsc{\textcolor{blue}{European Middleware Initiative}}}}\\[20mm]%
+
+ \fontsize{22}{28}{\textbf{\textsc{\@title}}}\\[2mm]%
+ %\ifx\@Subtitle\@empty\else
+ % \normalsize\textsf{\@Subtitle}\\[10mm]%
+ %\fi
+}
+\vfill
+
+\begin{center}
+\hbox to \textwidth{
+
+ \vbox{
+
+ {\color{MyTeal}\hrule width \frontboxwidth height 1mm depth 0pt}
+
+ \hbox to \frontboxwidth{\sf
+ \begin{tabularx}{\frontboxwidth}{l>{\raggedright\arraybackslash}X}
+\\
+ Document version: & \textbf{\@DocVersion}\\[3mm]
+ EMI Component Version: & \textbf{\@EMICompVersion}\\[3mm]
+ Date: & \textbf{\@Date}\\[3mm]
+ %Document status: & \textbf{\@DocStatus}\\[3mm]
+
+ \end{tabularx}
+
+ }
+
+ {\color{MyTeal}\hrule width \frontboxwidth height 1mm depth 0pt}
+ %}%centering
+ }
+
+}
+\end{center}
+
+%\vfill
+%{\sf\underline{Abstract}: \@Abstract}
+\vfill
+\newpage % end of the first page
+\pagestyle{headings}
+\setcounter{tocdepth}{3}
+} % End of AtBeginningDocument
+
+
+%
+% EMI style small-capital section titles.
+%
+% The numbering is aligned with the WinWord style,
+% although it is not common in the english typography...
+%
+\newcommand{\sectionbreak}{\newpage}
+%\renewcommand{\thesection}{\arabic{section}.}
+%\renewcommand{\thesubsection}{\thesection\arabic{subsection}.}
+%\renewcommand{\thesubsubsection}{\thesubsection\arabic{subsubsection}.}
+
+\renewcommand\section{\@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\normalfont\Large\bfseries\sffamily\scshape}}
+
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\large\bfseries\sffamily\scshape}}
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\normalfont\normalsize\bfseries\sffamily\scshape}}
+
+
+
+%% APM NEED TO REDEFINE section
+%\titleformat{\section}{\Large\bfseries\sffamily\scshape}{\thesection}{1em}{}
+%\titlecontents{section} [2em] {\vspace*{4pt}}
+% {\large \sc \bfseries \contentslabel{2em}}
+% {\large \sc \bfseries \hspace*{-2em}}
+% {\large \textbf{\titlerule*[1ex]{.}\contentspage}} [\vspace*{4pt}]
+
+%\titleformat{\subsection}{\large\bfseries\sffamily\scshape}{\thesubsection}{1em}{}
+%\titlecontents{subsection} [5em] {}
+% {\sc \contentslabel{3em}}
+% {\sc \hspace*{-3em}}
+% {\titlerule*[1ex]{.}\contentspage}
+
+
+%
+% common constants
+%
+%\def\ISTNumber{INFSO-RI-508833}
+\newsavebox{\@EMILogo}
+%\savebox{\@EMILogo}{\includegraphics[height=0.75\headheight]{EMI_Logo_std}}
+\savebox{\@EMILogo}{\includegraphics[height=0.95\headheight]{EMI_Logo_std}}
+\def\EMILogo{\usebox{\@EMILogo}}
+%\def\LargeEMILogo{\includegraphics[height=\headheight]{EMI_Logo_std}}
+\def\SmallEMILogo{\includegraphics[height=\headheight]{EMI_Logo_std}}
+\def\LargeCESNETLogo{\includegraphics[height=\headheight]{cesnet}}
+% DEL \def\ISTLogo{\includegraphics[height=\headheight]{isi}}
+
+%
+% parameters to be supplied by the author
+%
+% EG : subtitle seems no more needed
+%\def\Subtitle#1{\gdef\@Subtitle{#1}}
+%\gdef\@Subtitle{\@latex@warning@no@line{No \noexpand\Subtitle given}}
+
+%\def\DeliverableId#1{\gdef\@DeliverableId{#1}}
+%\gdef\@DeliverableId{\@latex@warning@no@line{No \noexpand\DeliverableId given}}
+
+
+\def\DocVersion#1{\gdef\@DocVersion{#1}}
+\gdef\@DocVersion{\@latex@warning@no@line{No \noexpand\DocVersion given %
+ (e.g. 0.1.2)}}
+
+\def\EMICompVersion#1{\gdef\@EMICompVersion{#1}}
+\gdef\@EMICompVersion{\@latex@warning@no@line{No \noexpand\EMICompVersion given %
+ (e.g. 1.2.3)}}
+
+\def\Date#1{\gdef\@Date{#1}}
+\gdef\@Date{\@latex@warning@no@line{No \noexpand\Date given %
+ (e.g. 01/04/2010)}}
+
+%\def\Activity#1{\gdef\@Activity{#1}}
+%\gdef\@Activity{\@latex@warning@no@line{No \noexpand\Activity given %
+% (e.g. NA2 Dissemination and Outreach )}}
+
+%\def\LeadPartner#1{\gdef\@LeadPartner{#1}}
+%\gdef\@LeadPartner{\@latex@warning@no@line{No \noexpand\LeadPartner given %
+% (e.g. CERN, RAL )}}
+
+%\def\DocStatus#1{\gdef\@DocStatus{#1}}
+%\gdef\@DocStatus{\@latex@warning@no@line{No \noexpand\DocStatus given %
+% (e.g. DRAFT, WORKING, DELIVERED)}}
+
+%\def\Dissemination#1{\gdef\@Dissemination{#1}}
+%\gdef\@Dissemination{\@latex@warning@no@line{No \noexpand\Dissemination given %
+% (e.g. PUBLIC, INTERNAL, ...)}}
+
+
+\long\def\Abstract#1{\gdef\@Abstract{#1}}
+\gdef\@Abstract{\@latex@warning@no@line{No \noexpand\Abstract given}}
+
+%%
+%% Define the abstract using an environment abstract
+
+%
+% This will produce the mailto link in the PDF file
+%
+%
+% We use the URL package, which does this nicely. The old way (\HTTP) was
+% a bit buggy as it had problems with '~'s and '_'s
+%
+\urlstyle{sf}
+\ifpdf
+ \newcommand{\Email}[1]{\href{mailto:#1}{<{#1}>}}
+ \newcommand{\HTTP}[1]{\href{#1}{\url{#1}}}
+\else
+ \newcommand{\Email}[1]{\textsf{<{#1}>}}
+ \newcommand{\HTTP}[1]{\url{#1}}
+\fi
+
+
+%
+% We now redifine \part and \section so that the table of contents
+% has the sections/parts in upper case.
+%
+% Note: need to use \uppercase because \MakeUppercase is not robust
+%
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >\m@ne
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}\uppercase{#1}}%
+ \else
+ \addcontentsline{toc}{part}{\uppercase{#1}}%
+ \fi
+ {\parindent \z@ \raggedright
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \Large\bfseries \partname\nobreakspace\thepart
+ \par\nobreak
+ \fi
+ \huge \bfseries #2%
+ \markboth{}{}\par}%
+ \nobreak
+ \vskip 3ex
+ \@afterheading}
+
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #6{%
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ \interlinepenalty \@M #8\@@par}%
+ \endgroup
+ \csname #1mark\endcsname{\uppercase{#7}}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ \texorpdfstring{\uppercase{#7}}{#7}}%
+ \else
+ \def\@svsechd{%
+ #6{\hskip #3\relax
+ \@svsec #8}%
+ \csname #1mark\endcsname{\uppercase{#7}}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ \texorpdfstring{\uppercase{#7}}{#7}}}%
+ \fi
+ \@xsect{#5}}
+
+% \addcontentsline{toc} expands to \contentsline{NAME}
+% which in turn expands to \l@NAME. So, to specify
+% the table of contents, we must define \l@chapter, \l@section,
+% \l@subsection, ... ; to specify the list of figures, we must define
+% \l@figure; and so on. Most of these can be defined with the
+% \@dottedtocline command, which produces a contents line with dots
+% between the title and the page number. It works as follows:
+%
+% \@dottedtocline{LEVEL}{INDENT}{NUMWIDTH}
+% LEVEL : An entry is produced only if LEVEL < or = value of
+% 'tocdepth' counter. Note, \chapter is level 0, \section
+% is level 1, etc.
+% INDENT : The indentation from the outer left margin of the start of
+% the contents line.
+% NUMWIDTH : The width of a box in which the section number is to go,
+% if TITLE includes a \numberline command.
+%
+
+\def\l@part{\@dottedtocline{1}{4em}{2.0em}}
+\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\def\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
+\def\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
+
--- /dev/null
+\documentclass[]{emi}
+\usepackage[ascii]{inputenc}
+\usepackage[pdftex]{graphicx}
+
+\title{gLite GSS \& gSOAP Plugin Libraries -- Functional Description}
+%\Subtitle{Functional Description}
+\author{CESNET}
+%\DocIdentifier{emi-lbjp-common-gss-fd-1.0.0-1}
+%\DeliverableId{}
+\Date{\today}
+%\DocStatus{FINAL}
+\DocVersion{1.0.0-1}
+%\DocumentLink{\url{http://egee.cesnet.cz/cvsweb/PR/lbjp-common-gss\_FD.pdf}}
+\Abstract{
+GSS and gSOAP Plugin are security-oriented modules used exclusively within other EMI products.}
+\EMICompVersion{All versions}
+
+\begin{document}
+
+\tableofcontents
+
+\newpage
+
+\section{Introduction}
+
+Both security-oriented modules discussed in this Functional Description are internal libraries used exclusively within other EMI products.
+
+\section{GSS}
+The GSS module (\texttt{glite-lbjp-common-gss}) provides GSS functions (GSS-API\footnote{\url{http://tools.ietf.org/html/rfc2744}} and several non-GSS Globus calls) wrapped to a secure network communication library with strict timing control (via timeout arguments) of all remote operations.
+
+\section{gSOAP Plugin}
+The GSS plugin for gSoap (\texttt{glite-lbjp-common-gsoap-plugin}) provides secured communication via GSS, as well as strict timing control of all operations through \texttt{glite-lbjp-common-gss}.
+
+\end{document}
# $Header$
-module.version=3.0.3
+module.version=3.0.4
module.age=1
static int globus_common_activated = 0;
+static void free_hostent(struct hostent *h);
+static int try_conn_and_auth (edg_wll_GssCred cred, char const *hostname, char *addr, int addrtype, int port, struct timeval *timeout, edg_wll_GssConnection *connection,
+ edg_wll_GssStatus* gss_code);
static int decrement_timeout(struct timeval *timeout, struct timeval before, struct timeval after)
{
(*timeout).tv_sec = (*timeout).tv_sec - (after.tv_sec - before.tv_sec);
#endif
{
struct asyn_result *arp = (struct asyn_result *) arg;
+ int n_addr = 0;
+ int i = 0;
switch (status) {
case ARES_SUCCESS:
- if (h && h->h_addr_list[0]) {
- arp->ent->h_addr_list =
- (char **) malloc(2 * sizeof(char *));
- if (arp->ent->h_addr_list == NULL) {
- arp->err = NETDB_INTERNAL;
- break;
- }
- arp->ent->h_addr_list[0] =
- malloc(h->h_length);
- if (arp->ent->h_addr_list[0] == NULL) {
- free(arp->ent->h_addr_list);
+ if (h == NULL || h->h_addr_list[0] == NULL){
+ arp->err = NO_DATA;
+ break;
+ }
+ /*how many addresses are there in h->h_addr_list*/
+ while (h->h_addr_list[n_addr])
+ n_addr++;
+
+ arp->ent->h_addr_list = (char **) calloc((n_addr+1), sizeof(char *));
+ if (arp->ent->h_addr_list == NULL) {
+ arp->err = NETDB_INTERNAL;
+ break;
+ }
+ for (i = 0; i < n_addr; i++) {
+ arp->ent->h_addr_list[i] = malloc(h->h_length);
+ if (arp->ent->h_addr_list[i] == NULL) {
+ free_hostent (arp->ent);
+ arp->ent = NULL;
arp->err = NETDB_INTERNAL;
break;
}
- memcpy(arp->ent->h_addr_list[0], h->h_addr_list[0],
+ memcpy(arp->ent->h_addr_list[i], h->h_addr_list[i],
h->h_length);
- arp->ent->h_addr_list[1] = NULL;
+ }
+ /* rest of h members might be assigned here(name,aliases), not necessery now */
+ arp->ent->h_addr_list[n_addr] = NULL;
arp->ent->h_addrtype = h->h_addrtype;
+ arp->ent->h_length = h->h_length;
arp->err = NETDB_SUCCESS;
- } else {
- arp->err = NO_DATA;
- }
break;
case ARES_EBADNAME:
case ARES_ENOTFOUND:
}
}
-static int asyn_getservbyname2(int af, struct sockaddr_storage *addrOut, socklen_t *a_len,char const *name, int port, struct timeval *timeout) {
- struct asyn_result ar;
+static int asyn_getservbyname(int af, struct asyn_result *ar,char const *name, int port, struct timeval *timeout) {
ares_channel channel;
int nfds;
fd_set readers, writers;
char *name2, *p;
size_t namelen;
- name2 = name;
+ name2 = (char *)name;
namelen = strlen(name);
if (name[0]=='[' && name[namelen-1]==']') {
/* IPv6 literal, strip brackets */
/* ares init */
if ( ares_init(&channel) != ARES_SUCCESS ) return(NETDB_INTERNAL);
- ar.ent = (struct hostent *) calloc (sizeof(*ar.ent),1);
/* query DNS server asynchronously */
ares_gethostbyname(channel, name2, af, callback_ares_gethostbyname,
- (void *) &ar);
+ (void *) ar);
/* wait for result */
while (1) {
gettimeofday(&check_time,0);
if (timeout && decrement_timeout(timeout, start_time, check_time)) {
ares_destroy(channel);
- free_hostent(ar.ent);
return(TRY_AGAIN);
}
start_time = check_time;
switch ( select(nfds, &readers, &writers, NULL, tvp) ) {
case -1: if (errno != EINTR) {
ares_destroy(channel);
- free_hostent(ar.ent);
return NETDB_INTERNAL;
} else
continue;
default: ares_process(channel, &readers, &writers);
}
}
-
- if (ar.err == NETDB_SUCCESS) {
- struct sockaddr_in *p4 = (struct sockaddr_in *)addrOut;
- struct sockaddr_in6 *p6 = (struct sockaddr_in6 *)addrOut;
-
- memset(addrOut, 0, sizeof *addrOut);
- addrOut->ss_family = ar.ent->h_addrtype;
- switch (ar.ent->h_addrtype) {
- case AF_INET:
- memcpy(&p4->sin_addr,ar.ent->h_addr_list[0], sizeof(struct in_addr));
- p4->sin_port = htons(port);
- *a_len = sizeof (struct sockaddr_in);
- break;
- case AF_INET6:
- memcpy(&p6->sin6_addr,ar.ent->h_addr_list[0], sizeof(struct in6_addr));
- p6->sin6_port = htons(port);
- *a_len = sizeof (struct sockaddr_in6);
- break;
- default:
- return NETDB_INTERNAL;
- break;
- }
- }
- free_hostent(ar.ent); ar.ent = NULL;
- err = ar.err;
+ err = ar->err;
/* literal conversion should always succeed */
if (name2 != name) free(name2-1);
return err;
}
-static int asyn_getservbyname(struct sockaddr_storage *addrOut, socklen_t *a_len,char const *name, int port, struct timeval *timeout) {
- int res;
-
- res = asyn_getservbyname2(AF_INET6, addrOut, a_len, name, port, timeout);
- if (res != HOST_NOT_FOUND) return res;
- res = asyn_getservbyname2(AF_INET, addrOut, a_len, name, port, timeout);
- return res;
-}
-
static int
-do_connect(int *s, char const *hostname, int port, struct timeval *timeout)
+do_connect(int *s, char *addr, int addrtype, int port, struct timeval *timeout)
{
int sock;
struct timeval before,after,to;
struct sockaddr_storage a;
+ struct sockaddr_storage *p_a=&a;
socklen_t a_len;
int sock_err;
socklen_t err_len;
- int h_errno;
int opt;
- /* XXX todo: try multiple addresses */
- switch (h_errno = asyn_getservbyname(&a, &a_len, hostname, port, timeout)) {
- case NETDB_SUCCESS:
- break;
- case TRY_AGAIN:
- close(sock);
- return EDG_WLL_GSS_ERROR_TIMEOUT;
- case NETDB_INTERNAL:
- /* fall through */
- default:
- close(sock);
- /* h_errno may be thread safe with Linux pthread libs,
- * but such an assumption is not portable
- */
- errno = h_errno;
- return EDG_WLL_GSS_ERROR_HERRNO;
- }
+ struct sockaddr_in *p4 = (struct sockaddr_in *)p_a;
+ struct sockaddr_in6 *p6 = (struct sockaddr_in6 *)p_a;
+
+ memset(p_a, 0, sizeof *p_a);
+ p_a->ss_family = addrtype;
+ switch (addrtype) {
+ case AF_INET:
+ memcpy(&p4->sin_addr, addr, sizeof(struct in_addr));
+ p4->sin_port = htons(port);
+ a_len = sizeof (struct sockaddr_in);
+ break;
+ case AF_INET6:
+ memcpy(&p6->sin6_addr, addr, sizeof(struct in6_addr));
+ p6->sin6_port = htons(port);
+ a_len = sizeof (struct sockaddr_in6);
+ break;
+ default:
+ return NETDB_INTERNAL;
+ break;
+ }
sock = socket(a.ss_family, SOCK_STREAM, 0);
if (sock < 0) return EDG_WLL_GSS_ERROR_ERRNO;
case -1: close(sock);
return EDG_WLL_GSS_ERROR_ERRNO;
case 0: close(sock);
+ tv_sub(*timeout, *timeout);
return EDG_WLL_GSS_ERROR_TIMEOUT;
}
gettimeofday(&after,NULL);
return 0;
}
+/** Load or reload credentials. It should be called regularly (credential files can be changed).
+ @see edg_wll_gss_watch_creds
+ */
int
edg_wll_gss_acquire_cred_gsi(const char *cert_file, const char *key_file, edg_wll_GssCred *cred,
edg_wll_GssStatus* gss_code)
return ret;
}
-
-/* XXX XXX This is black magic. "Sometimes" server refuses the client with SSL
- * * alert "certificate expired" even if it is not true. In this case the server
- * * slave terminates (which helps, usually), and we can reconnect transparently.
- * */
-
-/* This string appears in the error message in this case */
-#define _EXPIRED_ALERT_MESSAGE "function SSL3_READ_BYTES: sslv3 alert certificate expired"
-#define _EXPIRED_ALERT_RETRY_COUNT 10 /* default number of slaves, hope that not all
- are in the bad state */
-#define _EXPIRED_ALERT_RETRY_DELAY 10 /* ms */
-
/* XXX XXX This is black magic. "Sometimes" server refuses the client with SSL
* * alert "certificate expired" even if it is not true. In this case the server
* * slave terminates (which helps, usually), and we can reconnect transparently.
are in the bad state */
#define _EXPIRED_ALERT_RETRY_DELAY 10 /* ms */
+/** Create a socket and initiate secured connection. */
int
edg_wll_gss_connect(edg_wll_GssCred cred, char const *hostname, int port,
struct timeval *timeout, edg_wll_GssConnection *connection,
edg_wll_GssStatus* gss_code)
{
- int sock, ret;
+ int ret;
+ struct asyn_result ar;
+ int h_errno;
+ int addr_types[] = {AF_INET6, AF_INET};
+ int ipver = AF_INET6; //def value; try IPv6 first
+ unsigned int j;
+ int i;
+
+ memset(connection, 0, sizeof(*connection));
+ for (j = 0; j< sizeof(addr_types)/sizeof(*addr_types); j++) {
+ ipver = addr_types[j];
+ ar.ent = (struct hostent *) calloc (1, sizeof(struct hostent));
+ switch (h_errno = asyn_getservbyname(ipver, &ar, hostname, port, timeout)) {
+ case NETDB_SUCCESS:
+ break;
+ case TRY_AGAIN:
+ ret = EDG_WLL_GSS_ERROR_TIMEOUT;
+ goto end;
+ case NETDB_INTERNAL:
+ errno = h_errno;
+ ret = EDG_WLL_GSS_ERROR_HERRNO;
+ goto end;
+ default:
+ /* h_errno may be thread safe with Linux pthread libs,
+ * but such an assumption is not portable
+ */
+ errno = h_errno;
+ ret = EDG_WLL_GSS_ERROR_HERRNO;
+ continue;
+ }
+
+ i = 0;
+ while (ar.ent->h_addr_list[i])
+ {
+ ret = try_conn_and_auth (cred, hostname, ar.ent->h_addr_list[i],
+ ar.ent->h_addrtype, port, timeout, connection, gss_code);
+ if (ret == 0)
+ goto end;
+ if (timeout->tv_sec < 0 ||(timeout->tv_sec == 0 && timeout->tv_usec <= 0))
+ goto end;
+ i++;
+ }
+ free_hostent(ar.ent);
+ ar.ent = NULL;
+ }
+
+ end:
+ if (ar.ent != NULL){
+ free_hostent(ar.ent);
+ ar.ent = NULL;
+ }
+ return ret;
+}
+
+/* try connection and authentication for the given addr*/
+static int try_conn_and_auth (edg_wll_GssCred cred, char const *hostname, char *addr, int addrtype, int port, struct timeval *timeout, edg_wll_GssConnection *connection,
+ edg_wll_GssStatus* gss_code)
+{
+ int sock;
+ int ret = 0;
OM_uint32 maj_stat, min_stat, min_stat2, req_flags;
int context_established = 0;
gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
int retry = _EXPIRED_ALERT_RETRY_COUNT;
maj_stat = min_stat = min_stat2 = req_flags = 0;
- memset(connection, 0, sizeof(*connection));
/* GSI specific */
req_flags = GSS_C_GLOBUS_SSL_COMPATIBLE;
- ret = do_connect(&sock, hostname, port, timeout);
+ ret = do_connect(&sock, addr, addrtype, port, timeout);
if (ret)
return ret;
}
free(servername);
+ servername = NULL;
memset(&input_token, 0, sizeof(input_token));
/* XXX if cred == GSS_C_NO_CREDENTIAL set the ANONYMOUS flag */
connection->sock = sock;
connection->context = context;
- servername = NULL;
ret = 0;
end:
}
if (server != GSS_C_NO_NAME)
gss_release_name(&min_stat2, &server);
- if (servername == NULL)
+ if (servername != NULL)
free(servername);
if (ret)
close(sock);
return ret;
}
+/** Accept a new secured connection on the listening socket. */
int
edg_wll_gss_accept(edg_wll_GssCred cred, int sock, struct timeval *timeout,
edg_wll_GssConnection *connection, edg_wll_GssStatus* gss_code)
return ret;
}
+/** Send data over the opened connection. */
int
edg_wll_gss_write(edg_wll_GssConnection *connection, const void *buf, size_t bufsize,
struct timeval *timeout, edg_wll_GssStatus* gss_code)
}
+/** Read a data chunk through the opened connection. */
int
edg_wll_gss_read(edg_wll_GssConnection *connection, void *buf, size_t bufsize,
struct timeval *timeout, edg_wll_GssStatus* gss_code)
return ret;
}
+/** Read data from the opened connection, repeat reading up to 'bufsize' or end of the stream. */
int
edg_wll_gss_read_full(edg_wll_GssConnection *connection, void *buf,
size_t bufsize, struct timeval *timeout, size_t *total,
return 0;
}
+/** Send data over the opened connection. */
int
edg_wll_gss_write_full(edg_wll_GssConnection *connection, const void *buf,
size_t bufsize, struct timeval *timeout, size_t *total,
return edg_wll_gss_write(connection, buf, bufsize, timeout, gss_code);
}
-/* Request credential reload each 60 seconds in order to work around
+/** Request credential reload each 60 seconds in order to work around
* Globus bug (not reloading expired CRLs)
*/
#define GSS_CRED_WATCH_LIMIT 60
return 0;
}
+/** Close the connection. */
int
edg_wll_gss_close(edg_wll_GssConnection *con, struct timeval *timeout)
{
OM_uint32 min_stat;
gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
- struct timeval def_timeout = { 0, 100000};
+ /*struct timeval def_timeout = { 0, 100000};*/
if (con->context != GSS_C_NO_CONTEXT) {
gss_delete_sec_context(&min_stat, (gss_ctx_id_t *)&con->context, &output_token);
return 0;
}
+/** Get error details. */
int
edg_wll_gss_get_error(edg_wll_GssStatus *gss_err, const char *prefix, char **msg)
{
}
+/**
+ * Initialize routine of glite gss module.
+ * It activates globus modules, and it should be called before using other gss routines.
+ */
int
edg_wll_gss_initialize(void)
{
}
+/**
+ * Clean up routine of gss module.
+ * It can be called after using gss routines to free initializeted resources.
+ */
void
edg_wll_gss_finalize(void)
{
}
+/**
+ * Release the acquired credentials.
+ */
int
edg_wll_gss_release_cred(edg_wll_GssCred *cred, edg_wll_GssStatus* gss_code)
{
return ret;
}
+/**
+ * Get information about the the connection - principal (display name).
+ */
int
edg_wll_gss_get_client_conn(edg_wll_GssConnection *connection,
edg_wll_GssPrincipal *principal,
return ret;
}
+/**
+ * Get information about the the connection - pem string.
+ */
int
edg_wll_gss_get_client_pem(edg_wll_GssConnection *connection,
const char *my_cert_file, const char *my_key_file,
return ret;
}
+/**
+ * Free the principal.
+ */
void
edg_wll_gss_free_princ(edg_wll_GssPrincipal principal)
{
free(principal);
}
+/**
+ * Get the hostname (using globus call if possible, or system's gethostbyname() if globus is not initialized).
+ */
int
edg_wll_gss_gethostname(char *name, int len)
{
return ret;
}
+/**
+ * Normalize subject name (stripping email address, /CN=proxy, ...).
+ */
char *
edg_wll_gss_normalize_subj(char *in, int replace_in)
{
return new;
}
+/**
+ * Compare subject names.
+ */
int
edg_wll_gss_equal_subj(const char *a, const char *b)
{
if (!an || !bn)
res = 0;
else
- res = !strcmp(an,bn);
+ res = !strcasecmp(an,bn);
free(an); free(bn);
return res;
}
+/**
+ * Return data to the reading buffer.
+ */
int
edg_wll_gss_unread(edg_wll_GssConnection *con, void *data, size_t len)
{
}
+/**
+ * Signal handler compatible with globus.
+ * It is required to use this function instead of sigaction(), when using threaded globus flavour.
+ *
+ * As for many other gss routenes, edg_wll_initialize() must be called before using this routine.
+ * edg_wll_gss_set_signal_handler() will falback to sigaction() if gss is not initialized.
+ *
+ * @see edg_wll_initialize
+ */
int
edg_wll_gss_set_signal_handler(int signum,
void (*handler_func)(int))
{
int ret;
+ intptr_t signum2;
- ret = globus_module_activate(GLOBUS_COMMON_MODULE);
- if (ret != GLOBUS_SUCCESS) {
+ if (!globus_common_activated) {
struct sigaction sa,osa;
memset(&sa, 0, sizeof(sa));
ret = sigaction(signum, &sa, &osa);
return ret;
}
+
+ signum2 = signum;
ret = globus_callback_space_register_signal_handler(signum,
GLOBUS_TRUE,
(globus_callback_func_t)handler_func,
- (void *)signum,
+ (void *)signum2,
GLOBUS_CALLBACK_GLOBAL_SPACE);
- globus_module_deactivate(GLOBUS_COMMON_MODULE);
-
return ret;
}
+
+
+/**
+ * Check posix signals and performs signal handlers eventually.
+ * Required when using non-threaded globus flavour.
+ */
+void
+edg_wll_gss_poll_signal() {
+ globus_poll_nonblocking();
+}
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
for $_ (keys %{$project{etics_externs}}) {
$etics_externs{$_} = $project{etics_externs}{$_};
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'lbjp-common.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B libtool:B/ ],
'lbjp-common.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares:B gsoap gsoapxx libtool:B/ ],
'jobid.api-c' => [ qw/cppunit:B libtool:B openssl:B/ ],
- 'jobid.api-cpp' => [ qw/cppunit:B/ ],
+ 'jobid.api-cpp' => [ qw/cppunit:B libtool:B/ ],
'jobid.api-java' => [ qw/ant:B jdk:B/ ],
'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
'jp.doc' => [],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
gridsite=>'emi.gridsite.shared',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
gip_service=>'emi.bdii.glite-info-provider-service',
bdii=>'emi.bdii.core',
glite_version=>'emi.misc.glite-version',
jdk=>'java-devel',
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
2.0.3-3
- Module rebuilt
+2.0.3-4
+- Module rebuilt
+
2.1.0-1
- Fixes for parallel release in EMI & gLite
2.1.2-6
- Module rebuilt
+2.1.2-7
+- Module rebuilt
+
#: /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=2.1.2
-module.age=6
+module.age=7
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
for $_ (keys %{$project{etics_externs}}) {
$etics_externs{$_} = $project{etics_externs}{$_};
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'lbjp-common.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B libtool:B/ ],
'lbjp-common.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares:B gsoap gsoapxx libtool:B/ ],
'jobid.api-c' => [ qw/cppunit:B libtool:B openssl:B/ ],
- 'jobid.api-cpp' => [ qw/cppunit:B/ ],
+ 'jobid.api-cpp' => [ qw/cppunit:B libtool:B/ ],
'jobid.api-java' => [ qw/ant:B jdk:B/ ],
'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
'jp.doc' => [],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
gridsite=>'emi.gridsite.shared',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
gip_service=>'emi.bdii.glite-info-provider-service',
bdii=>'emi.bdii.core',
glite_version=>'emi.misc.glite-version',
jdk=>'java-devel',
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
2.0.2-3
- Module rebuilt
+2.0.2-4
+- Module rebuilt
+
2.1.0-1
- Fixes for parallel release in EMI & gLite
2.1.2-6
- Module rebuilt
+2.1.2-7
+- Module rebuilt
+
# : /cvs/jra1mw/org.glite.lbjp-common.maildir/project/version.properties,v 1.1 2007/11/01 20:17:45 valtri Exp $
module.version=2.1.2
-module.age=6
+module.age=7
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
for $_ (keys %{$project{etics_externs}}) {
$etics_externs{$_} = $project{etics_externs}{$_};
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'lbjp-common.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B libtool:B/ ],
'lbjp-common.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares:B gsoap gsoapxx libtool:B/ ],
'jobid.api-c' => [ qw/cppunit:B libtool:B openssl:B/ ],
- 'jobid.api-cpp' => [ qw/cppunit:B/ ],
+ 'jobid.api-cpp' => [ qw/cppunit:B libtool:B/ ],
'jobid.api-java' => [ qw/ant:B jdk:B/ ],
'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
'jp.doc' => [],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
gridsite=>'emi.gridsite.shared',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
gip_service=>'emi.bdii.glite-info-provider-service',
bdii=>'emi.bdii.core',
glite_version=>'emi.misc.glite-version',
jdk=>'java-devel',
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
2.0.3-2
- Module rebuilt
+2.0.3-3
+- Module rebuilt
+
2.1.0-1
- Documentation update and cleanup
- Fixes for parallel release in EMI & gLite
2.1.2-6
- Module rebuilt
+2.1.3-1
+- Change log priority for slave suicide messages
+
# : /cvs/jra1mw/org.glite.lbjp-common.server-bones/project/version.properties,v 1.2 2009/01/21 10:44:34 zsustr Exp $
-module.version=2.1.2
-module.age=6
+module.version=2.1.3
+module.age=1
if ( !die )
{
int newpid = slave(slave_data_init, sock_slave[1]);
- glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_ERROR, "[master] Servus mortuus [%d] miraculo resurrexit [%d]", pid, newpid);
+ glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_INFO, "[master] Servus mortuus [%d] miraculo resurrexit [%d]", pid, newpid);
}
}
child_died = 0;
srv = -1;
glite_common_log(set_log_category, LOG_PRIORITY_DEBUG, "[%d] %s, connection closed",getpid(),strerror(rv));
continue;
- }
- else if ( rv < 0 ) {
+ } else if (rv == -EINPROGRESS) {
+ /* background operation -> parent forked -> kill slave */
+ glite_common_log(set_log_category, LOG_PRIORITY_DEBUG, "[%d] terminating parent",getpid());
+ exit(0);
+ } else if ( rv < 0 ) {
/* unknown error -> clasified as FATAL -> kill slave
*/
glite_common_log(set_log_category, LOG_PRIORITY_INFO, "[%d] %s, terminating",getpid(),strerror(-rv));
$externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
$externs{'gsoapxx'}{prefix}=$externs{gsoap}{prefix} if $externs{'gsoapxx'}{prefix} eq '';
+$externs{'mysql-server'}{withprefix}=$externs{mysql}{withprefix} if $externs{'mysql-server'}{withprefix} eq '';
+$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
+$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+
%project = %{$projects{$project}};
for $_ (keys %{$project{etics_externs}}) {
$etics_externs{$_} = $project{etics_externs}{$_};
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool: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 bison:B libtool:B libxml2/ ],
+ '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 bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
'lb.ws-interface' => [ qw/libxslt:B/ ],
'lbjp-common.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B libtool:B/ ],
'lbjp-common.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares:B gsoap gsoapxx libtool:B/ ],
'jobid.api-c' => [ qw/cppunit:B libtool:B openssl:B/ ],
- 'jobid.api-cpp' => [ qw/cppunit:B/ ],
+ 'jobid.api-cpp' => [ qw/cppunit:B libtool:B/ ],
'jobid.api-java' => [ qw/ant:B jdk:B/ ],
'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
'jp.doc' => [],
'gridsite.services' => [ qw/curl:R gsoap:R/ ],
'gridsite.service-clients' => [ qw/curl:R gsoap:R gsoapxx:R/ ],
'gridsite.gsexec' => [ qw// ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
);
);
%conflicts = (
- 'lb.glite-LB' => [ qq/emi-lb/ ],
- 'px.glite-PX' => [ qq/emi-px/ ],
- 'lb.emi-lb' => [ qq/glite-LB/ ],
- 'px.emi-px' => [ qq/glite-PX/ ],
+);
+
+%provides = (
+ 'lbjp-common.gss' => [ qq/glite-security-gss/ ],
+ 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ],
);
%cvs_prefix = (
gridsite=>'emi.gridsite.shared',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_release=>'emi.bdii.glite-info-provider-release',
gip_service=>'emi.bdii.glite-info-provider-service',
bdii=>'emi.bdii.core',
glite_version=>'emi.misc.glite-version',
jdk=>'java-devel',
},
etics_projects => {
- 'emi'=>[qw/voms voms-devel gridsite lcas gip_release gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+ 'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
- 'lb.glite-LB' => [ qw/fetchcrl:R gip_release:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
+ 'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
'lb.yaim' => [ qw/yaim_core:R yaim_bdii:R perl-LDAP:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R yaim_bdii:R/ ],
if ($project ne 'glite') {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=`pkg-config gsoap --variable=prefix` OPENSSL_GLOBUS_FLAGS=`pkg-config globus-openssl --cflags` OPENSSL_GLOBUS_LIBS=`pkg-config globus-openssl --libs` FLAVOR_GLOBUS_EXT= HTTPD_FLAGS="-I/usr/include/httpd -I/usr/include/apache2 -I/usr/include/apr-${aprSuffix} -I/usr/include/pcre"';
- $prefix = "prefix=${prefix}/usr";
+ $prefix = 'prefix=${prefix}/usr';
} else {
$flags = 'RELEASE_VERSION=${age}.${platformFamily} libdir=${libdir} GSOAPDIR=${gsoap.location} OPENSSL_GLOBUS_FLAGS=-I${globus.location}/include/${globus.dbg.nothr.flavor} OPENSSL_GLOBUS_LIBS=-L${globus.location}/${libdir}/ FLAVOR_GLOBUS_EXT=_${globus.dbg.nothr.flavor} HTTPD_FLAGS="-I${httpd-devel.location}/include/httpd -I${httpd-devel.location}/include/apache2 -I${httpd-devel.location}/include/apr-${aprSuffix} -I${httpd-devel.location}/include/pcre"';
- $prefix = "prefix=${prefix}";
+ $prefix = 'prefix=${prefix}';
}
$cmd{compile} = "echo 'make $flags' > build.sh\n\tmake $flags build";
$cmd{clean} = "rm -rvf build.sh; $cmd{clean}";
$cmd{install} = "make $prefix $flags install";
- $cmd{packaging} = "mkdir ${moduleDir}/src/tgz
+ $cmd{packaging} = "mkdir \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz
make $prefix $flags rpm && \
- cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz";
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
}
else {
$cmd{clean} = 'None';
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
2.0.3-3
- Module rebuilt
+2.0.3-4
+- Module rebuilt
+
2.1.0-1
- Fixes for parallel release in EMI & gLite
2.1.2-6
- Module rebuilt
+2.1.2-7
+- Module rebuilt
+
# : /cvs/jra1mw/org.glite.lbjp-common.trio/project/version.properties,v 1.2 2009/01/21 10:44:34 zsustr Exp $
module.version=2.1.2
-module.age=6
+module.age=7
# : /cvs/glite/org.glite.lbjp-common/project/version.properties,v 1.1 2009/01/21 12:57:26 akrenek Exp $
-module.version=3.0.4
-module.age=2
+module.version=3.0.6
+module.age=1