From: Zdeněk Šustr Date: Tue, 25 Oct 2011 13:32:17 +0000 (+0000) Subject: Merge branch_3_0 to HEAD. X-Git-Tag: before_mechglue_support~1 X-Git-Url: http://scientific.zcu.cz/git/?a=commitdiff_plain;h=7760bfc8411a6e6d86b01f26b705a3be88cb201c;p=jra1mw.git Merge branch_3_0 to HEAD. --- diff --git a/org.glite.jobid.api-c/configure b/org.glite.jobid.api-c/configure index 27f197c..e2b3330 100755 --- a/org.glite.jobid.api-c/configure +++ b/org.glite.jobid.api-c/configure @@ -248,6 +248,10 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; @@ -423,7 +427,9 @@ sub mode_build { 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($_); @@ -446,11 +452,13 @@ sub mode_build { @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; @@ -523,7 +531,7 @@ BEGIN{ '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/ ], @@ -539,7 +547,7 @@ BEGIN{ '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' => [], @@ -556,7 +564,7 @@ BEGIN{ '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 ); @@ -716,10 +724,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -815,7 +824,6 @@ for my $ext (keys %deps_aux) { 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', @@ -845,11 +853,11 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -1129,18 +1137,18 @@ sub mode_etics { 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'; @@ -1218,6 +1226,9 @@ $package_description$package_summary$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'; diff --git a/org.glite.jobid.api-c/project/ChangeLog b/org.glite.jobid.api-c/project/ChangeLog index f61346c..82eeef4 100644 --- a/org.glite.jobid.api-c/project/ChangeLog +++ b/org.glite.jobid.api-c/project/ChangeLog @@ -30,6 +30,9 @@ - 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 @@ -57,3 +60,6 @@ 2.0.2-5 - Module rebuilt +2.0.3-1 +- Handling error returned by gethostbyname() (Savannah Bug #67627) + diff --git a/org.glite.jobid.api-c/project/version.properties b/org.glite.jobid.api-c/project/version.properties index c007265..2196c4d 100644 --- a/org.glite.jobid.api-c/project/version.properties +++ b/org.glite.jobid.api-c/project/version.properties @@ -1,3 +1,3 @@ # : /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 diff --git a/org.glite.jobid.api-c/src/cjobid.c b/org.glite.jobid.api-c/src/cjobid.c index bfd4203..57da65c 100644 --- a/org.glite.jobid.api-c/src/cjobid.c +++ b/org.glite.jobid.api-c/src/cjobid.c @@ -51,6 +51,7 @@ int glite_jobid_recreate(const char* bkserver, int port, const char *unique, gli struct timeval tv; int skip; char* portbeg; + char* rndaddr = NULL; struct hostent* he; @@ -58,16 +59,17 @@ int glite_jobid_recreate(const char* bkserver, int port, const char *unique, gli 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; diff --git a/org.glite.jobid.api-cpp/configure b/org.glite.jobid.api-cpp/configure index a67786b..e2b3330 100755 --- a/org.glite.jobid.api-cpp/configure +++ b/org.glite.jobid.api-cpp/configure @@ -248,6 +248,10 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; @@ -423,7 +427,9 @@ sub mode_build { 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($_); @@ -446,11 +452,13 @@ sub mode_build { @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; @@ -523,7 +531,7 @@ BEGIN{ '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/ ], @@ -556,7 +564,7 @@ BEGIN{ '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 ); @@ -716,10 +724,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -815,7 +824,6 @@ for my $ext (keys %deps_aux) { 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', @@ -845,11 +853,11 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -1129,18 +1137,18 @@ sub mode_etics { 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'; @@ -1218,6 +1226,9 @@ $package_description$package_summary$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'; diff --git a/org.glite.jobid.api-cpp/project/ChangeLog b/org.glite.jobid.api-cpp/project/ChangeLog index d052ca3..a1099cf 100644 --- a/org.glite.jobid.api-cpp/project/ChangeLog +++ b/org.glite.jobid.api-cpp/project/ChangeLog @@ -20,6 +20,9 @@ 1.0.1-2 - Module rebuilt +1.0.1-3 +- Module rebuilt + 1.1.0-1 - Fixes for parallel release in EMI & gLite @@ -50,3 +53,6 @@ 1.1.2-6 - Module rebuilt +1.1.3-1 +- experiments with staging in summary Makefile in etics-less build + diff --git a/org.glite.jobid.api-cpp/project/version.properties b/org.glite.jobid.api-cpp/project/version.properties index 0cb77b4..01957f0 100644 --- a/org.glite.jobid.api-cpp/project/version.properties +++ b/org.glite.jobid.api-cpp/project/version.properties @@ -1,3 +1,3 @@ # : /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 diff --git a/org.glite.jobid.api-java/configure b/org.glite.jobid.api-java/configure index 27f197c..e2b3330 100755 --- a/org.glite.jobid.api-java/configure +++ b/org.glite.jobid.api-java/configure @@ -248,6 +248,10 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; @@ -423,7 +427,9 @@ sub mode_build { 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($_); @@ -446,11 +452,13 @@ sub mode_build { @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; @@ -523,7 +531,7 @@ BEGIN{ '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/ ], @@ -539,7 +547,7 @@ BEGIN{ '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' => [], @@ -556,7 +564,7 @@ BEGIN{ '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 ); @@ -716,10 +724,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -815,7 +824,6 @@ for my $ext (keys %deps_aux) { 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', @@ -845,11 +853,11 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -1129,18 +1137,18 @@ sub mode_etics { 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'; @@ -1218,6 +1226,9 @@ $package_description$package_summary$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'; diff --git a/org.glite.jobid.api-java/project/ChangeLog b/org.glite.jobid.api-java/project/ChangeLog index 8ff359c..72a3fde 100644 --- a/org.glite.jobid.api-java/project/ChangeLog +++ b/org.glite.jobid.api-java/project/ChangeLog @@ -10,6 +10,9 @@ 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 @@ -37,3 +40,6 @@ 1.1.3-5 - Module rebuilt +1.1.3-6 +- Module rebuilt + diff --git a/org.glite.jobid.api-java/project/version.properties b/org.glite.jobid.api-java/project/version.properties index 8ab0b9a..4ed0652 100644 --- a/org.glite.jobid.api-java/project/version.properties +++ b/org.glite.jobid.api-java/project/version.properties @@ -1,3 +1,3 @@ # : /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 diff --git a/org.glite.jobid/project/version.properties b/org.glite.jobid/project/version.properties index 89d344d..f7d88ed 100644 --- a/org.glite.jobid/project/version.properties +++ b/org.glite.jobid/project/version.properties @@ -1,3 +1,3 @@ # : /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 diff --git a/org.glite.lb.client-java/Makefile b/org.glite.lb.client-java/Makefile index 65579fe..ebf358d 100644 --- a/org.glite.lb.client-java/Makefile +++ b/org.glite.lb.client-java/Makefile @@ -18,7 +18,7 @@ JAVA:=${jdk_prefix}/bin/java 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 diff --git a/org.glite.lb.client-java/configure b/org.glite.lb.client-java/configure index a67786b..e2b3330 100755 --- a/org.glite.lb.client-java/configure +++ b/org.glite.lb.client-java/configure @@ -248,6 +248,10 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; @@ -423,7 +427,9 @@ sub mode_build { 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($_); @@ -446,11 +452,13 @@ sub mode_build { @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; @@ -523,7 +531,7 @@ BEGIN{ '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/ ], @@ -556,7 +564,7 @@ BEGIN{ '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 ); @@ -716,10 +724,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -815,7 +824,6 @@ for my $ext (keys %deps_aux) { 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', @@ -845,11 +853,11 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -1129,18 +1137,18 @@ sub mode_etics { 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'; @@ -1218,6 +1226,9 @@ $package_description$package_summary$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'; diff --git a/org.glite.lb.client-java/project/ChangeLog b/org.glite.lb.client-java/project/ChangeLog index 17fbf34..56c1dca 100644 --- a/org.glite.lb.client-java/project/ChangeLog +++ b/org.glite.lb.client-java/project/ChangeLog @@ -32,6 +32,9 @@ 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 @@ -68,3 +71,7 @@ - '--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 + diff --git a/org.glite.lb.client-java/project/version.properties b/org.glite.lb.client-java/project/version.properties index 55625ef..01b265a 100644 --- a/org.glite.lb.client-java/project/version.properties +++ b/org.glite.lb.client-java/project/version.properties @@ -1,3 +1,3 @@ # $Header$ -module.version=1.1.5 +module.version=1.1.6 module.age=1 diff --git a/org.glite.lb.client/Makefile b/org.glite.lb.client/Makefile index b4d4a3c..726cc36 100644 --- a/org.glite.lb.client/Makefile +++ b/org.glite.lb.client/Makefile @@ -5,7 +5,6 @@ globalprefix=glite lbprefix=lb package=glite-lb-client version=0.0.0 - CC:=gcc CXX:=g++ @@ -21,6 +20,12 @@ version=${module.version} 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 @@ -107,7 +112,7 @@ EXT_LIB:= 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} @@ -206,28 +211,28 @@ default: all 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 @@ -399,5 +404,25 @@ clean: 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 diff --git a/org.glite.lb.client/configure b/org.glite.lb.client/configure index aace459..2e34da2 100755 --- a/org.glite.lb.client/configure +++ b/org.glite.lb.client/configure @@ -154,14 +154,6 @@ my %externs = ( 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 = ( @@ -248,10 +240,18 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; } @@ -504,18 +504,18 @@ sub mode_checkout() { 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 = ( @@ -560,7 +560,7 @@ BEGIN{ '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 ); @@ -720,10 +720,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -753,6 +754,7 @@ for my $ext (keys %deps_aux) { # (${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 @@ -764,29 +766,37 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -794,10 +804,18 @@ for my $ext (keys %deps_aux) { '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 => { @@ -814,46 +832,55 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -865,7 +892,7 @@ for my $ext (keys %deps_aux) { modules => { 'lb' => [ qw/emi-lb/ ], 'px' => [ qw/emi-px/ ], - } + }, }, ); @@ -1037,28 +1064,30 @@ sub mode_etics { 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; @@ -1133,18 +1162,18 @@ sub mode_etics { 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'; @@ -1161,6 +1190,10 @@ sub mode_etics { $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 = ''; @@ -1222,6 +1255,9 @@ $package_description$package_summary$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'; @@ -1237,36 +1273,59 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; 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; @@ -1337,6 +1396,37 @@ sub getlibdir { 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; diff --git a/org.glite.lb.client/examples/user_jobs.c b/org.glite.lb.client/examples/user_jobs.c index f50e853..8518349 100644 --- a/org.glite.lb.client/examples/user_jobs.c +++ b/org.glite.lb.client/examples/user_jobs.c @@ -20,6 +20,7 @@ limitations under the License. #include #include #include +#include #include "glite/lb/context.h" #include "glite/lb/xml_conversions.h" @@ -31,13 +32,27 @@ limitations under the License. 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) @@ -46,21 +61,31 @@ 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) { @@ -70,8 +95,8 @@ int main(int argc,char **argv) 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); @@ -103,6 +128,13 @@ int main(int argc,char **argv) 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); diff --git a/org.glite.lb.client/interface/stat_fields.h b/org.glite.lb.client/interface/stat_fields.h index 2b1f5f7..95ac0fc 100644 --- a/org.glite.lb.client/interface/stat_fields.h +++ b/org.glite.lb.client/interface/stat_fields.h @@ -24,6 +24,7 @@ void glite_lb_print_stat_fields(void **,edg_wll_JobStat *); void glite_lb_dump_stat_fields(void); #include +#include static char *TimeToStr(time_t t) { diff --git a/org.glite.lb.client/project/ChangeLog b/org.glite.lb.client/project/ChangeLog index 3546e97..8427200 100644 --- a/org.glite.lb.client/project/ChangeLog +++ b/org.glite.lb.client/project/ChangeLog @@ -126,6 +126,12 @@ 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 @@ -176,3 +182,14 @@ 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 + diff --git a/org.glite.lb.client/project/version.properties b/org.glite.lb.client/project/version.properties index c7cfe5d..66da56e 100644 --- a/org.glite.lb.client/project/version.properties +++ b/org.glite.lb.client/project/version.properties @@ -1,3 +1,3 @@ # $Header$ -module.version=5.0.6 +module.version=5.0.8 module.age=1 diff --git a/org.glite.lb.client/src/connection.c b/org.glite.lb.client/src/connection.c index e5ab489..2b56382 100644 --- a/org.glite.lb.client/src/connection.c +++ b/org.glite.lb.client/src/connection.c @@ -568,7 +568,10 @@ int http_check_status( 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: diff --git a/org.glite.lb.common/configure b/org.glite.lb.common/configure index a67786b..e2b3330 100755 --- a/org.glite.lb.common/configure +++ b/org.glite.lb.common/configure @@ -248,6 +248,10 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; @@ -423,7 +427,9 @@ sub mode_build { 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($_); @@ -446,11 +452,13 @@ sub mode_build { @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; @@ -523,7 +531,7 @@ BEGIN{ '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/ ], @@ -556,7 +564,7 @@ BEGIN{ '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 ); @@ -716,10 +724,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -815,7 +824,6 @@ for my $ext (keys %deps_aux) { 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', @@ -845,11 +853,11 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -1129,18 +1137,18 @@ sub mode_etics { 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'; @@ -1218,6 +1226,9 @@ $package_description$package_summary$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'; diff --git a/org.glite.lb.common/interface/context-int.h b/org.glite.lb.common/interface/context-int.h index e348c14..a558155 100644 --- a/org.glite.lb.common/interface/context-int.h +++ b/org.glite.lb.common/interface/context-int.h @@ -172,7 +172,7 @@ glite_lb_padded_struct(_edg_wll_Context,150, void *notif_index_cols; time_t notifDurationMax; - char **super_users; + char **msg_prefixes; time_t rssTime; _edg_wll_authz_policy authz_policy; @@ -181,6 +181,8 @@ glite_lb_padded_struct(_edg_wll_Context,150, 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 @@ -222,6 +224,8 @@ extern int edg_wll_IncSequenceCode(edg_wll_Context ctx); extern void edg_wll_FreeParams(edg_wll_Context context); +extern int edg_wll_ParseMSGConf(char *msg_conf, char ***brokers, char ***prefixes); + #ifdef __cplusplus } #endif diff --git a/org.glite.lb.common/interface/context.h b/org.glite.lb.common/interface/context.h index ab0b1b2..ad5953d 100644 --- a/org.glite.lb.common/interface/context.h +++ b/org.glite.lb.common/interface/context.h @@ -214,6 +214,7 @@ typedef enum _edg_wll_ErrorCode { 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; /** diff --git a/org.glite.lb.common/project/ChangeLog b/org.glite.lb.common/project/ChangeLog index 38bb5e7..d03a9de 100644 --- a/org.glite.lb.common/project/ChangeLog +++ b/org.glite.lb.common/project/ChangeLog @@ -108,6 +108,10 @@ 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 @@ -150,3 +154,8 @@ - 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 + diff --git a/org.glite.lb.common/project/version.properties b/org.glite.lb.common/project/version.properties index e90e8a5..edc2936 100644 --- a/org.glite.lb.common/project/version.properties +++ b/org.glite.lb.common/project/version.properties @@ -1,3 +1,3 @@ # $Header$ -module.version=8.0.5 +module.version=8.0.6 module.age=1 diff --git a/org.glite.lb.common/src/context.c b/org.glite.lb.common/src/context.c index d905525..44d9c8b 100644 --- a/org.glite.lb.common/src/context.c +++ b/org.glite.lb.common/src/context.c @@ -196,6 +196,20 @@ void edg_wll_FreeContext(edg_wll_Context ctx) 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); @@ -225,6 +239,8 @@ static const char* const errTexts[] = { "Interlogger has events pending", "Compared events differ", "DB deadlock detected", + "DB connection lost", + "Background operation accepted", }; const char *edg_wll_GetErrorText(int code) { @@ -679,3 +695,53 @@ edg_wll_add_authz_rule(edg_wll_Context ctx, 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; +} diff --git a/org.glite.lb.common/src/events_parse.c.T b/org.glite.lb.common/src/events_parse.c.T index 438c769..e95070d 100644 --- a/org.glite.lb.common/src/events_parse.c.T +++ b/org.glite.lb.common/src/events_parse.c.T @@ -60,7 +60,7 @@ char *my_edg_wll_ULMGetValueAt( p_edg_wll_ULMFields, int ); #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); \ diff --git a/org.glite.lb.common/src/mini_http.c b/org.glite.lb.common/src/mini_http.c index 0788cdf..472d578 100644 --- a/org.glite.lb.common/src/mini_http.c +++ b/org.glite.lb.common/src/mini_http.c @@ -97,7 +97,14 @@ edg_wll_ErrorCode edg_wll_http_recv(edg_wll_Context ctx,char **firstOut,char *** 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)) && @@ -119,7 +126,14 @@ edg_wll_ErrorCode edg_wll_http_recv(edg_wll_Context ctx,char **firstOut,char *** 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) { @@ -181,7 +195,7 @@ edg_wll_ErrorCode edg_wll_http_recv_proxy(edg_wll_Context ctx,char **firstOut,ch 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 { @@ -199,7 +213,6 @@ edg_wll_ErrorCode edg_wll_http_recv_proxy(edg_wll_Context ctx,char **firstOut,ch 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') diff --git a/org.glite.lb.doc/Makefile b/org.glite.lb.doc/Makefile index 490d011..0051699 100644 --- a/org.glite.lb.doc/Makefile +++ b/org.glite.lb.doc/Makefile @@ -53,7 +53,7 @@ doc: LBUG.pdf LBAG.pdf LBDG.pdf LBTP.pdf LBTG.pdf 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} @@ -72,7 +72,7 @@ install: ${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 @@ -124,7 +124,8 @@ LBTP.pdf: ${COMMON} \ LBTP-IntegrationTests.tex \ LBTP-Tests.tex \ LBTP-PerfTests.tex \ - LBTP-InterTests.tex + LBTP-InterTests.tex \ + LBTP-Nagios.tex LBTG.pdf: ${COMMON} \ LBTG.tex \ diff --git a/org.glite.lb.doc/configure b/org.glite.lb.doc/configure index a67786b..2e34da2 100755 --- a/org.glite.lb.doc/configure +++ b/org.glite.lb.doc/configure @@ -154,14 +154,6 @@ my %externs = ( 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 = ( @@ -248,10 +240,18 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; } @@ -423,7 +423,9 @@ sub mode_build { 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($_); @@ -446,11 +448,13 @@ sub mode_build { @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; @@ -500,18 +504,18 @@ sub mode_checkout() { 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 = ( @@ -523,7 +527,7 @@ BEGIN{ '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/ ], @@ -556,7 +560,7 @@ BEGIN{ '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 ); @@ -716,10 +720,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -749,6 +754,7 @@ for my $ext (keys %deps_aux) { # (${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 @@ -760,29 +766,37 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -790,10 +804,18 @@ for my $ext (keys %deps_aux) { '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 => { @@ -810,46 +832,55 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -861,7 +892,7 @@ for my $ext (keys %deps_aux) { modules => { 'lb' => [ qw/emi-lb/ ], 'px' => [ qw/emi-px/ ], - } + }, }, ); @@ -1033,28 +1064,30 @@ sub mode_etics { 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; @@ -1129,18 +1162,18 @@ sub mode_etics { 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'; @@ -1157,6 +1190,10 @@ sub mode_etics { $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 = ''; @@ -1218,6 +1255,9 @@ $package_description$package_summary$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'; @@ -1233,36 +1273,59 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; 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; @@ -1333,6 +1396,37 @@ sub getlibdir { 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; diff --git a/org.glite.lb.doc/project/ChangeLog b/org.glite.lb.doc/project/ChangeLog index b0bcc7d..3f0802c 100644 --- a/org.glite.lb.doc/project/ChangeLog +++ b/org.glite.lb.doc/project/ChangeLog @@ -78,6 +78,11 @@ 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 @@ -118,3 +123,16 @@ - 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 + diff --git a/org.glite.lb.doc/project/version.properties b/org.glite.lb.doc/project/version.properties index 0a3bff5..edba09e 100644 --- a/org.glite.lb.doc/project/version.properties +++ b/org.glite.lb.doc/project/version.properties @@ -1,3 +1,3 @@ # $Header$ -module.version=1.2.7 +module.version=1.2.9 module.age=1 diff --git a/org.glite.lb.doc/src/LBAG-Installation.tex b/org.glite.lb.doc/src/LBAG-Installation.tex index 43d5926..76bb361 100644 --- a/org.glite.lb.doc/src/LBAG-Installation.tex +++ b/org.glite.lb.doc/src/LBAG-Installation.tex @@ -95,6 +95,7 @@ where all \verb'glite-lbjp-common-*' packages are common both to \LB and 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}. @@ -112,10 +113,37 @@ A file \texttt{log4crc.example-debugging} may be useful to copy to \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} @@ -163,7 +191,7 @@ offered load. 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. @@ -176,11 +204,11 @@ YAIM configuration can be done then: \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}). @@ -196,14 +224,14 @@ According to local retention policy you may want to use different purge timeouts 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\_} -- more detailed tuning of access grants, see Section~\ref{inst:authz} (default: empty, '.*' for logging and job registrations) +\item \texttt{GLITE\_LB\_AUTHZ\_} -- 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}) @@ -216,8 +244,15 @@ export data are written for use by lgcmon/R-GMA (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. @@ -340,7 +375,13 @@ Correct broker settings are infered from BDII by YAIM on configuration. By defau \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} diff --git a/org.glite.lb.doc/src/LBAG-Running.tex b/org.glite.lb.doc/src/LBAG-Running.tex index 09dfa02..56d19a3 100644 --- a/org.glite.lb.doc/src/LBAG-Running.tex +++ b/org.glite.lb.doc/src/LBAG-Running.tex @@ -35,6 +35,10 @@ as standard manual pages installed with the \LB packages. 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. diff --git a/org.glite.lb.doc/src/LBTP-Introduction.tex b/org.glite.lb.doc/src/LBTP-Introduction.tex index 7fd0278..d1631ba 100644 --- a/org.glite.lb.doc/src/LBTP-Introduction.tex +++ b/org.glite.lb.doc/src/LBTP-Introduction.tex @@ -111,7 +111,7 @@ Nagios\footnote{\url{http://www.nagios.org}} is a host and service monitor 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} diff --git a/org.glite.lb.doc/src/LBTP-Nagios.tex b/org.glite.lb.doc/src/LBTP-Nagios.tex new file mode 100644 index 0000000..3ede076 --- /dev/null +++ b/org.glite.lb.doc/src/LBTP-Nagios.tex @@ -0,0 +1,124 @@ +% +%% 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} + + diff --git a/org.glite.lb.doc/src/LBTP-Tests.tex b/org.glite.lb.doc/src/LBTP-Tests.tex index 825e098..a7cba80 100644 --- a/org.glite.lb.doc/src/LBTP-Tests.tex +++ b/org.glite.lb.doc/src/LBTP-Tests.tex @@ -71,6 +71,10 @@ Besides pure System Functionality Tests, this list also includes In-the-Wild tes \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} @@ -197,6 +201,33 @@ states. Thorough tests may also cross check the values supplied in the 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} @@ -365,7 +396,7 @@ immediately. \subsubsection{Delivery to ActiveMQ} -\label{notif1} +\label{notifamq} \req\ All \LB\ services running, ActiveMQ broker configured and running \what @@ -389,6 +420,7 @@ The \path{glite-lb-notify} example can be used to register a notification and \p + \subsection{Server purge} \textbf{WARNING: This test is destructive, it destroys ALL data in an @@ -406,11 +438,11 @@ artificially. 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} @@ -429,30 +461,7 @@ The example \path{org.glite.lb.client/examples/purge\_test} does exactly this se 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} @@ -505,10 +514,43 @@ including the checks. \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). diff --git a/org.glite.lb.doc/src/LBTP.tex b/org.glite.lb.doc/src/LBTP.tex index 1aaa7b5..3809cca 100644 --- a/org.glite.lb.doc/src/LBTP.tex +++ b/org.glite.lb.doc/src/LBTP.tex @@ -19,7 +19,7 @@ \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} @@ -59,6 +59,9 @@ \newpage \input{LBTP-InterTests} +\newpage +\input{LBTP-Nagios} + %\appendix %\newpage %\input{LBTP-Appendix} diff --git a/org.glite.lb.doc/src/LBUG-Introduction.tex b/org.glite.lb.doc/src/LBUG-Introduction.tex index cd68a49..7c37170 100644 --- a/org.glite.lb.doc/src/LBUG-Introduction.tex +++ b/org.glite.lb.doc/src/LBUG-Introduction.tex @@ -707,11 +707,11 @@ The \LB infrastructure can notify its users when something interesting happens o 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. @@ -719,10 +719,10 @@ The registration exists only for a limited amount of time. Validity information 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} diff --git a/org.glite.lb.doc/src/LBUG-Tools.tex b/org.glite.lb.doc/src/LBUG-Tools.tex index 1136501..119ca98 100644 --- a/org.glite.lb.doc/src/LBUG-Tools.tex +++ b/org.glite.lb.doc/src/LBUG-Tools.tex @@ -73,6 +73,10 @@ where verbosity level can be from 0 to 3. \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. @@ -83,7 +87,7 @@ To list all user's jobs, it is possible to query only the \LB server address, e. \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} @@ -93,6 +97,7 @@ A notification ID also have a form of URL. If you direct your browser to a parti \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 @@ -108,6 +113,21 @@ or 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. diff --git a/org.glite.lb.doc/src/emi.cls b/org.glite.lb.doc/src/emi.cls index 28221d9..e51e47b 100644 --- a/org.glite.lb.doc/src/emi.cls +++ b/org.glite.lb.doc/src/emi.cls @@ -54,6 +54,7 @@ \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. diff --git a/org.glite.lb.doc/src/faq.tex b/org.glite.lb.doc/src/faq.tex index 9fb76d0..b8e5d33 100644 --- a/org.glite.lb.doc/src/faq.tex +++ b/org.glite.lb.doc/src/faq.tex @@ -22,3 +22,62 @@ 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} + diff --git a/org.glite.lb.doc/src/images/LB-components-LB-WMS.pdf b/org.glite.lb.doc/src/images/LB-components-LB-WMS.pdf index f6a8e96..52b83a5 100755 Binary files a/org.glite.lb.doc/src/images/LB-components-LB-WMS.pdf and b/org.glite.lb.doc/src/images/LB-components-LB-WMS.pdf differ diff --git a/org.glite.lb.doc/src/images/LB-components-query.pdf b/org.glite.lb.doc/src/images/LB-components-query.pdf index ab433de..bb4f166 100644 Binary files a/org.glite.lb.doc/src/images/LB-components-query.pdf and b/org.glite.lb.doc/src/images/LB-components-query.pdf differ diff --git a/org.glite.lb.doc/src/images/LB-components.pdf b/org.glite.lb.doc/src/images/LB-components.pdf index a900bd1..d2dd3e5 100755 Binary files a/org.glite.lb.doc/src/images/LB-components.pdf and b/org.glite.lb.doc/src/images/LB-components.pdf differ diff --git a/org.glite.lb.doc/src/notify.tex b/org.glite.lb.doc/src/notify.tex index ddd6d62..c37a857 100644 --- a/org.glite.lb.doc/src/notify.tex +++ b/org.glite.lb.doc/src/notify.tex @@ -218,9 +218,11 @@ Delivering notification messages over the messaging infrastructure provided by A -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} diff --git a/org.glite.lb.glite-LB/project/ChangeLog b/org.glite.lb.glite-LB/project/ChangeLog index 438aee9..a3aee8e 100644 --- a/org.glite.lb.glite-LB/project/ChangeLog +++ b/org.glite.lb.glite-LB/project/ChangeLog @@ -35,3 +35,9 @@ 3.3.3-3 - Module rebuilt +3.2.12-10 +- Module rebuilt + +3.2.12-11 +- Module rebuilt + diff --git a/org.glite.lb.logger-msg/src/activemq_cpp_plugin.cpp b/org.glite.lb.logger-msg/src/activemq_cpp_plugin.cpp index 15efa86..4650deb 100644 --- a/org.glite.lb.logger-msg/src/activemq_cpp_plugin.cpp +++ b/org.glite.lb.logger-msg/src/activemq_cpp_plugin.cpp @@ -45,6 +45,7 @@ extern "C" { #include #include +#include #include #include diff --git a/org.glite.lb.logger/configure b/org.glite.lb.logger/configure index a67786b..2e34da2 100755 --- a/org.glite.lb.logger/configure +++ b/org.glite.lb.logger/configure @@ -154,14 +154,6 @@ my %externs = ( 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 = ( @@ -248,10 +240,18 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; } @@ -423,7 +423,9 @@ sub mode_build { 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($_); @@ -446,11 +448,13 @@ sub mode_build { @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; @@ -500,18 +504,18 @@ sub mode_checkout() { 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 = ( @@ -523,7 +527,7 @@ BEGIN{ '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/ ], @@ -556,7 +560,7 @@ BEGIN{ '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 ); @@ -716,10 +720,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -749,6 +754,7 @@ for my $ext (keys %deps_aux) { # (${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 @@ -760,29 +766,37 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -790,10 +804,18 @@ for my $ext (keys %deps_aux) { '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 => { @@ -810,46 +832,55 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -861,7 +892,7 @@ for my $ext (keys %deps_aux) { modules => { 'lb' => [ qw/emi-lb/ ], 'px' => [ qw/emi-px/ ], - } + }, }, ); @@ -1033,28 +1064,30 @@ sub mode_etics { 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; @@ -1129,18 +1162,18 @@ sub mode_etics { 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'; @@ -1157,6 +1190,10 @@ sub mode_etics { $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 = ''; @@ -1218,6 +1255,9 @@ $package_description$package_summary$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'; @@ -1233,36 +1273,59 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; 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; @@ -1333,6 +1396,37 @@ sub getlibdir { 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; diff --git a/org.glite.lb.logger/project/ChangeLog b/org.glite.lb.logger/project/ChangeLog index 81ca9f3..379e796 100644 --- a/org.glite.lb.logger/project/ChangeLog +++ b/org.glite.lb.logger/project/ChangeLog @@ -171,3 +171,6 @@ - Using proper method for setting signal handlers - Daemonize before initializing security +2.2.6-1 +- Further globus signal handler fixes + diff --git a/org.glite.lb.logger/project/version.properties b/org.glite.lb.logger/project/version.properties index 4495a9b..e381f4a 100644 --- a/org.glite.lb.logger/project/version.properties +++ b/org.glite.lb.logger/project/version.properties @@ -1,3 +1,3 @@ # $Header$ -module.version=2.2.5 +module.version=2.2.6 module.age=1 diff --git a/org.glite.lb.logger/src/interlogd.c b/org.glite.lb.logger/src/interlogd.c index 90a03d0..17d1046 100644 --- a/org.glite.lb.logger/src/interlogd.c +++ b/org.glite.lb.logger/src/interlogd.c @@ -512,7 +512,9 @@ main (int argc, char **argv) /* 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."); diff --git a/org.glite.lb.logger/src/logd.c b/org.glite.lb.logger/src/logd.c index 7a1d4ca..03490c1 100644 --- a/org.glite.lb.logger/src/logd.c +++ b/org.glite.lb.logger/src/logd.c @@ -457,7 +457,9 @@ This is LocalLogger, part of Workload Management System in EU DataGrid & EGEE.\n } 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) { @@ -593,7 +595,7 @@ This is LocalLogger, part of Workload Management System in EU DataGrid & EGEE.\n } 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; } diff --git a/org.glite.lb.logger/src/recover.c b/org.glite.lb.logger/src/recover.c index 20a9d9e..b4bf988 100644 --- a/org.glite.lb.logger/src/recover.c +++ b/org.glite.lb.logger/src/recover.c @@ -56,11 +56,13 @@ recover_thread(void *q) 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) @@ -87,6 +89,9 @@ recover_thread(void *q) 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 diff --git a/org.glite.lb.nagios/Makefile b/org.glite.lb.nagios/Makefile index 4c230e1..1676c7e 100644 --- a/org.glite.lb.nagios/Makefile +++ b/org.glite.lb.nagios/Makefile @@ -10,10 +10,12 @@ INSTALL=install 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} diff --git a/org.glite.lb.nagios/configure b/org.glite.lb.nagios/configure index 5f94259..62e2c66 100755 --- a/org.glite.lb.nagios/configure +++ b/org.glite.lb.nagios/configure @@ -24,6 +24,7 @@ # use Getopt::Long; +use POSIX qw(locale_h strftime); my $pwd = `pwd`; chomp $pwd; my $prefix = '/usr'; @@ -731,6 +732,7 @@ for my $ext (keys %deps_aux) { %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 = ( @@ -865,7 +867,7 @@ for my $ext (keys %deps_aux) { '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', @@ -880,6 +882,9 @@ for my $ext (keys %deps_aux) { '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 => { @@ -911,6 +916,8 @@ for my $ext (keys %deps_aux) { openssl => 'libssl-dev', 'tetex-latex' => 'texlive-latex-extra', libxslt=>'xsltproc', + 'httpd-devel' => 'apache2-prefork-dev', + 'fuse-devel' => 'libfuse-dev', }, }, etics_projects => { @@ -969,6 +976,9 @@ for my $ext (keys %deps_aux) { 'lb.yaim' => { default => { 'package.buildarch' => 'noarch' }, }, + 'lb.nagios' => { + default => { 'package.buildarch' => 'noarch' }, + }, 'px.yaim' => { default => { 'package.buildarch' => 'noarch' }, }, @@ -992,6 +1002,7 @@ sub full 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 @@ -1028,10 +1039,23 @@ px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config } } } + + 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 +- 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"); diff --git a/org.glite.lb.nagios/project/ChangeLog b/org.glite.lb.nagios/project/ChangeLog index 139597f..37a33d8 100644 --- a/org.glite.lb.nagios/project/ChangeLog +++ b/org.glite.lb.nagios/project/ChangeLog @@ -1,2 +1,3 @@ - +1.0.0-1 +- Initial version of the nagios module diff --git a/org.glite.lb.nagios/project/package.description b/org.glite.lb.nagios/project/package.description index c97e3c2..a0d9316 100644 --- a/org.glite.lb.nagios/project/package.description +++ b/org.glite.lb.nagios/project/package.description @@ -1 +1 @@ -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. diff --git a/org.glite.lb.nagios/project/version.properties b/org.glite.lb.nagios/project/version.properties index 3d509b5..aa496b1 100644 --- a/org.glite.lb.nagios/project/version.properties +++ b/org.glite.lb.nagios/project/version.properties @@ -1,3 +1,3 @@ # $Header module.version=1.0.0 -module.age=0 +module.age=1 diff --git a/org.glite.lb.server/configure b/org.glite.lb.server/configure index a67786b..2e34da2 100755 --- a/org.glite.lb.server/configure +++ b/org.glite.lb.server/configure @@ -154,14 +154,6 @@ my %externs = ( 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 = ( @@ -248,10 +240,18 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; } @@ -423,7 +423,9 @@ sub mode_build { 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($_); @@ -446,11 +448,13 @@ sub mode_build { @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; @@ -500,18 +504,18 @@ sub mode_checkout() { 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 = ( @@ -523,7 +527,7 @@ BEGIN{ '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/ ], @@ -556,7 +560,7 @@ BEGIN{ '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 ); @@ -716,10 +720,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -749,6 +754,7 @@ for my $ext (keys %deps_aux) { # (${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 @@ -760,29 +766,37 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -790,10 +804,18 @@ for my $ext (keys %deps_aux) { '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 => { @@ -810,46 +832,55 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -861,7 +892,7 @@ for my $ext (keys %deps_aux) { modules => { 'lb' => [ qw/emi-lb/ ], 'px' => [ qw/emi-px/ ], - } + }, }, ); @@ -1033,28 +1064,30 @@ sub mode_etics { 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; @@ -1129,18 +1162,18 @@ sub mode_etics { 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'; @@ -1157,6 +1190,10 @@ sub mode_etics { $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 = ''; @@ -1218,6 +1255,9 @@ $package_description$package_summary$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'; @@ -1233,36 +1273,59 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; 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; @@ -1333,6 +1396,37 @@ sub getlibdir { 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; diff --git a/org.glite.lb.server/project/ChangeLog b/org.glite.lb.server/project/ChangeLog index 83eb9f5..aad65ab 100644 --- a/org.glite.lb.server/project/ChangeLog +++ b/org.glite.lb.server/project/ChangeLog @@ -219,6 +219,17 @@ 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 @@ -282,3 +293,20 @@ - '--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 + diff --git a/org.glite.lb.server/project/version.properties b/org.glite.lb.server/project/version.properties index 62eccf5..f3d4510 100644 --- a/org.glite.lb.server/project/version.properties +++ b/org.glite.lb.server/project/version.properties @@ -1,3 +1,3 @@ # : /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 diff --git a/org.glite.lb.server/src/bkserverd.c b/org.glite.lb.server/src/bkserverd.c index 2240dc9..69de46c 100644 --- a/org.glite.lb.server/src/bkserverd.c +++ b/org.glite.lb.server/src/bkserverd.c @@ -181,8 +181,8 @@ static time_t rss_time = 60*60; 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[] = { @@ -207,7 +207,8 @@ 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'}, @@ -270,7 +271,6 @@ static void usage(char *me) "\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" @@ -293,6 +293,7 @@ static void usage(char *me) "\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); } @@ -402,6 +403,7 @@ int main(int argc, char *argv[]) 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],'/'); @@ -471,9 +473,7 @@ int main(int argc, char *argv[]) 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; @@ -569,6 +569,22 @@ int main(int argc, char *argv[]) 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]; @@ -725,7 +741,10 @@ int main(int argc, char *argv[]) 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); @@ -1045,6 +1064,7 @@ int bk_handle_connection(int conn, struct timeval *timeout, void *data) *name_num = NULL, *name = NULL; int h_errno, ret; + int npref, totpref; @@ -1060,7 +1080,7 @@ int bk_handle_connection(int conn, struct timeval *timeout, void *data) } 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; } @@ -1279,6 +1299,16 @@ int bk_handle_connection(int conn, struct timeval *timeout, void *data) 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; nprefmsg_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; nprefmsg_brokers[npref]=strdup(msg_brokers[npref]); + return 0; } @@ -1442,7 +1472,6 @@ static int handle_server_error(edg_wll_Context ctx) int err,ret = 0; - errt = errd = NULL; switch ( (err = edg_wll_Error(ctx, &errt, &errd)) ) { case ETIMEDOUT: @@ -1450,6 +1479,7 @@ static int handle_server_error(edg_wll_Context ctx) 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 @@ -1466,8 +1496,10 @@ static int handle_server_error(edg_wll_Context ctx) 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: @@ -1483,7 +1515,16 @@ static int handle_server_error(edg_wll_Context ctx) * 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: diff --git a/org.glite.lb.server/src/dump.c b/org.glite.lb.server/src/dump.c index ff785bd..c25f552 100644 --- a/org.glite.lb.server/src/dump.c +++ b/org.glite.lb.server/src/dump.c @@ -50,7 +50,7 @@ int edg_wll_DumpEventsServer(edg_wll_Context ctx,const edg_wll_DumpRequest *req, 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 */ @@ -76,11 +76,11 @@ int edg_wll_DumpEventsServer(edg_wll_Context ctx,const edg_wll_DumpRequest *req, 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, diff --git a/org.glite.lb.server/src/get_events.c.T b/org.glite.lb.server/src/get_events.c.T index 4ff6ca5..cff249e 100644 --- a/org.glite.lb.server/src/get_events.c.T +++ b/org.glite.lb.server/src/get_events.c.T @@ -65,12 +65,18 @@ int edg_wll_get_event_flesh(edg_wll_Context ctx,int n,edg_wll_Event *e) 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); diff --git a/org.glite.lb.server/src/lb_authz.c b/org.glite.lb.server/src/lb_authz.c index ab20cdb..b6130e2 100644 --- a/org.glite.lb.server/src/lb_authz.c +++ b/org.glite.lb.server/src/lb_authz.c @@ -30,6 +30,7 @@ limitations under the License. #include #undef WITHOUT_TRIO +#include #include "glite/jobid/strmd5.h" #include "glite/jobid/cjobid.h" @@ -38,8 +39,9 @@ limitations under the License. #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; diff --git a/org.glite.lb.server/src/lb_http.c b/org.glite.lb.server/src/lb_http.c index 917bf25..8d9b8e2 100644 --- a/org.glite.lb.server/src/lb_http.c +++ b/org.glite.lb.server/src/lb_http.c @@ -57,6 +57,9 @@ int edg_wll_AcceptHTTP(edg_wll_Context ctx, char **body, char **resp, char ***hd 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) { diff --git a/org.glite.lb.server/src/lb_proto.c b/org.glite.lb.server/src/lb_proto.c index 7c532be..e8c8065 100644 --- a/org.glite.lb.server/src/lb_proto.c +++ b/org.glite.lb.server/src/lb_proto.c @@ -381,7 +381,7 @@ static int getJobsRSS(edg_wll_Context ctx, char *feedType, edg_wll_JobStat **sta } else{ *statesOut = NULL; - free(can_peername); + free(can_peername); return -1; } @@ -843,8 +843,13 @@ edg_wll_ErrorCode edg_wll_Proto(edg_wll_Context ctx, 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; @@ -926,10 +931,8 @@ edg_wll_ErrorCode edg_wll_Proto(edg_wll_Context ctx, 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); } @@ -938,7 +941,6 @@ edg_wll_ErrorCode edg_wll_Proto(edg_wll_Context ctx, } 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); } @@ -1026,7 +1028,7 @@ edg_wll_ErrorCode edg_wll_Proto(edg_wll_Context ctx, 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; } } @@ -1046,7 +1048,7 @@ edg_wll_ErrorCode edg_wll_Proto(edg_wll_Context ctx, 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 */ @@ -1061,9 +1063,19 @@ edg_wll_ErrorCode edg_wll_Proto(edg_wll_Context ctx, /* 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); } diff --git a/org.glite.lb.server/src/lb_text.c b/org.glite.lb.server/src/lb_text.c index 0712737..9913e0d 100644 --- a/org.glite.lb.server/src/lb_text.c +++ b/org.glite.lb.server/src/lb_text.c @@ -87,6 +87,35 @@ int edg_wll_QueryToText(edg_wll_Context ctx UNUSED_VAR, edg_wll_Event *eventsOut 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; @@ -243,6 +272,32 @@ int edg_wll_JobStatusToText(edg_wll_Context ctx UNUSED_VAR, edg_wll_JobStat stat 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; diff --git a/org.glite.lb.server/src/lb_text.h b/org.glite.lb.server/src/lb_text.h index 008e7e9..6e70004 100644 --- a/org.glite.lb.server/src/lb_text.h +++ b/org.glite.lb.server/src/lb_text.h @@ -28,6 +28,7 @@ int edg_wll_JobStatusToText(edg_wll_Context, edg_wll_JobStat, char **); 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 */ diff --git a/org.glite.lb.server/src/notification.c b/org.glite.lb.server/src/notification.c index 0fe1d95..968f240 100644 --- a/org.glite.lb.server/src/notification.c +++ b/org.glite.lb.server/src/notification.c @@ -81,6 +81,8 @@ int edg_wll_NotifNewServer( edg_wll_QueryRec **nconds = NULL; char *add_index = NULL; notif_stream_t *arg = NULL; + int npref, okpref; + char *msgpref; /* Format notification ID @@ -138,10 +140,30 @@ int edg_wll_NotifNewServer( 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; } } @@ -253,6 +275,8 @@ int edg_wll_NotifBindServer( { char *time_s = NULL, *addr_s = NULL; + int npref, okpref; + char *msgpref; if ( !address_override ) @@ -297,10 +321,31 @@ int edg_wll_NotifBindServer( 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; } } @@ -340,8 +385,10 @@ int edg_wll_NotifChangeServer( /* 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; @@ -586,8 +633,10 @@ static int check_notif_request( 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 " @@ -714,7 +763,7 @@ static int update_notif( 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; } @@ -864,8 +913,10 @@ static int drop_notif_request(edg_wll_Context ctx, const edg_wll_NotifId nid) { 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); @@ -908,8 +959,10 @@ static int check_notif_age(edg_wll_Context ctx, const edg_wll_NotifId nid) { *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 ) diff --git a/org.glite.lb.server/src/query.c b/org.glite.lb.server/src/query.c index 1020b5e..9fcda60 100644 --- a/org.glite.lb.server/src/query.c +++ b/org.glite.lb.server/src/query.c @@ -349,6 +349,7 @@ typedef struct { glite_jobid_t *jobs; edg_wll_JobStat *states; size_t maxn, n; + int flags; } queryjobs_cb_data_t; @@ -364,15 +365,19 @@ static int queryjobs_cb(edg_wll_Context ctx, glite_jobid_t jobid, edg_wll_JobSta 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; @@ -390,6 +395,7 @@ int edg_wll_QueryJobsServer( size_t i; memset(&store, 0, sizeof store); + store.flags = flags; if (edg_wll_QueryJobsServerStream(ctx, conditions, flags, queryjobs_cb, &store)) goto cleanup; diff --git a/org.glite.lb.server/src/server_state.c b/org.glite.lb.server/src/server_state.c index a95610e..f64d32a 100644 --- a/org.glite.lb.server/src/server_state.c +++ b/org.glite.lb.server/src/server_state.c @@ -51,28 +51,39 @@ int edg_wll_GetServerState(edg_wll_Context ctx,const char *name,char **val) 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); } diff --git a/org.glite.lb.server/src/srv_purge.c b/org.glite.lb.server/src/srv_purge.c index ee917e5..b6370b6 100644 --- a/org.glite.lb.server/src/srv_purge.c +++ b/org.glite.lb.server/src/srv_purge.c @@ -562,6 +562,8 @@ static int get_jobid_suffix(edg_wll_Context ctx, glite_jobid_const_t job, enum e 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); @@ -609,6 +611,8 @@ static int get_jobid_prefix(edg_wll_Context ctx, glite_jobid_const_t job, enum e 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); @@ -723,6 +727,7 @@ int purge_one(edg_wll_Context ctx,edg_wll_JobStat *stat,int dump, int purge, int if ( !purge && dump < 0 ) return 0; do { + if (edg_wll_Transaction(ctx)) goto err; switch (edg_wll_jobMembership(ctx, job)) { @@ -777,6 +782,7 @@ int purge_one(edg_wll_Context ctx,edg_wll_JobStat *stat,int dump, int purge, int dbjob = glite_jobid_getUnique(job); /* XXX: strict jobid already checked */ + if ( purge ) { enum edg_wll_StatJobtype jobtype = get_job_type(ctx, job); @@ -787,10 +793,11 @@ int purge_one(edg_wll_Context ctx,edg_wll_JobStat *stat,int dump, int purge, int || 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 ) diff --git a/org.glite.lb.server/src/stats.c b/org.glite.lb.server/src/stats.c index f9f5678..2219232 100644 --- a/org.glite.lb.server/src/stats.c +++ b/org.glite.lb.server/src/stats.c @@ -37,6 +37,7 @@ limitations under the License. #include "glite/jobid/strmd5.h" #include "stats.h" +#include "authz_policy.h" #define GROUPS_HASHTABLE_SIZE 1000 @@ -546,11 +547,16 @@ static int findStat( ) { 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(); } diff --git a/org.glite.lb.server/src/ws_typeref.c.T b/org.glite.lb.server/src/ws_typeref.c.T index 069400c..aa3a330 100644 --- a/org.glite.lb.server/src/ws_typeref.c.T +++ b/org.glite.lb.server/src/ws_typeref.c.T @@ -19,6 +19,7 @@ limitations under the License. #include #include #include +#include #include "soap_version.h" #include "bk_ws_H.h" @@ -248,6 +249,10 @@ int edg_wll_StatusToSoap(struct soap *soap,edg_wll_JobStat const *src,struct lbt 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; @@ -326,6 +331,11 @@ void edg_wll_SoapToStatus(struct soap *soap,struct lbt__jobStatus const *src,edg } 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 { diff --git a/org.glite.lb.state-machine/Makefile b/org.glite.lb.state-machine/Makefile index 55d18c3..fef41c3 100644 --- a/org.glite.lb.state-machine/Makefile +++ b/org.glite.lb.state-machine/Makefile @@ -5,11 +5,12 @@ distdir=. 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 @@ -59,9 +60,10 @@ PLUGIN_LIBS:= -L${stagedir}${prefix}/${libdir} -lglite_lb_common${default_flavou 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 @@ -69,12 +71,27 @@ default all: compile 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: @@ -84,7 +101,7 @@ stage: compile 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 diff --git a/org.glite.lb.state-machine/project/.post b/org.glite.lb.state-machine/project/.post new file mode 100644 index 0000000..8b0c822 --- /dev/null +++ b/org.glite.lb.state-machine/project/.post @@ -0,0 +1 @@ +/sbin/ldconfig diff --git a/org.glite.lb.utils/configure b/org.glite.lb.utils/configure index a67786b..e2b3330 100755 --- a/org.glite.lb.utils/configure +++ b/org.glite.lb.utils/configure @@ -248,6 +248,10 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; @@ -423,7 +427,9 @@ sub mode_build { 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($_); @@ -446,11 +452,13 @@ sub mode_build { @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; @@ -523,7 +531,7 @@ BEGIN{ '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/ ], @@ -556,7 +564,7 @@ BEGIN{ '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 ); @@ -716,10 +724,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -815,7 +824,6 @@ for my $ext (keys %deps_aux) { 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', @@ -845,11 +853,11 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -1129,18 +1137,18 @@ sub mode_etics { 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'; @@ -1218,6 +1226,9 @@ $package_description$package_summary$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'; diff --git a/org.glite.lb.utils/project/ChangeLog b/org.glite.lb.utils/project/ChangeLog index 8f04d6a..2cbcfb3 100644 --- a/org.glite.lb.utils/project/ChangeLog +++ b/org.glite.lb.utils/project/ChangeLog @@ -51,6 +51,11 @@ 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 @@ -84,3 +89,8 @@ - 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) + diff --git a/org.glite.lb.utils/project/version.properties b/org.glite.lb.utils/project/version.properties index ed1fb08..6e8c734 100755 --- a/org.glite.lb.utils/project/version.properties +++ b/org.glite.lb.utils/project/version.properties @@ -1,3 +1,3 @@ # $Header$ -module.version=2.1.3 +module.version=2.1.4 module.age=1 diff --git a/org.glite.lb.utils/src/dump.c b/org.glite.lb.utils/src/dump.c index 57d34ad..5bcfb01 100644 --- a/org.glite.lb.utils/src/dump.c +++ b/org.glite.lb.utils/src/dump.c @@ -58,15 +58,32 @@ static struct option opts[] = { 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; @@ -76,7 +93,7 @@ int main(int argc,char *argv[]) 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)); @@ -94,8 +111,8 @@ int main(int argc,char *argv[]) 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); @@ -104,6 +121,13 @@ int main(int argc,char *argv[]) } } + 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"); diff --git a/org.glite.lb.utils/src/purge.c b/org.glite.lb.utils/src/purge.c index f8884b8..2cce1d5 100644 --- a/org.glite.lb.utils/src/purge.c +++ b/org.glite.lb.utils/src/purge.c @@ -108,7 +108,7 @@ int main(int argc,char *argv[]) { edg_wll_PurgeRequest *request; edg_wll_PurgeResult *result; - int i, timeout, background; + int i, timeout, background, err = 1; char *server = NULL; char *me; @@ -288,15 +288,19 @@ int main(int argc,char *argv[]) /* 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; } @@ -329,7 +333,7 @@ main_end: } if (result) free(result); edg_wll_FreeContext(ctx); - return 0; + return err != 0; } diff --git a/org.glite.lb.yaim/config/functions/config_glite_lb.in b/org.glite.lb.yaim/config/functions/config_glite_lb.in index d267f56..8a02c45 100644 --- a/org.glite.lb.yaim/config/functions/config_glite_lb.in +++ b/org.glite.lb.yaim/config/functions/config_glite_lb.in @@ -113,6 +113,7 @@ EOF 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" ;; @@ -304,6 +305,7 @@ EOF # 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; ' diff --git a/org.glite.lb.yaim/config/functions/emi/config_info_service_lb b/org.glite.lb.yaim/config/functions/emi/config_info_service_lb index 1af4162..33c62b1 100644 --- a/org.glite.lb.yaim/config/functions/emi/config_info_service_lb +++ b/org.glite.lb.yaim/config/functions/emi/config_info_service_lb @@ -72,6 +72,9 @@ if [ $? != 0 ]; then 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. diff --git a/org.glite.lb.yaim/configure b/org.glite.lb.yaim/configure index a67786b..2e34da2 100644 --- a/org.glite.lb.yaim/configure +++ b/org.glite.lb.yaim/configure @@ -154,14 +154,6 @@ my %externs = ( 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 = ( @@ -248,10 +240,18 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; } @@ -423,7 +423,9 @@ sub mode_build { 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($_); @@ -446,11 +448,13 @@ sub mode_build { @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; @@ -500,18 +504,18 @@ sub mode_checkout() { 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 = ( @@ -523,7 +527,7 @@ BEGIN{ '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/ ], @@ -556,7 +560,7 @@ BEGIN{ '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 ); @@ -716,10 +720,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -749,6 +754,7 @@ for my $ext (keys %deps_aux) { # (${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 @@ -760,29 +766,37 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -790,10 +804,18 @@ for my $ext (keys %deps_aux) { '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 => { @@ -810,46 +832,55 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -861,7 +892,7 @@ for my $ext (keys %deps_aux) { modules => { 'lb' => [ qw/emi-lb/ ], 'px' => [ qw/emi-px/ ], - } + }, }, ); @@ -1033,28 +1064,30 @@ sub mode_etics { 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; @@ -1129,18 +1162,18 @@ sub mode_etics { 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'; @@ -1157,6 +1190,10 @@ sub mode_etics { $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 = ''; @@ -1218,6 +1255,9 @@ $package_description$package_summary$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'; @@ -1233,36 +1273,59 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; 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; @@ -1333,6 +1396,37 @@ sub getlibdir { 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; diff --git a/org.glite.lb.yaim/project/ChangeLog b/org.glite.lb.yaim/project/ChangeLog index abb5904..d55b926 100644 --- a/org.glite.lb.yaim/project/ChangeLog +++ b/org.glite.lb.yaim/project/ChangeLog @@ -69,3 +69,12 @@ 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. + diff --git a/org.glite.lb.yaim/project/version.properties b/org.glite.lb.yaim/project/version.properties index 98f5e3d..2127a2b 100644 --- a/org.glite.lb.yaim/project/version.properties +++ b/org.glite.lb.yaim/project/version.properties @@ -1,3 +1,3 @@ # $Header$ -module.version=4.3.7 -module.age=2 +module.version=4.3.9 +module.age=1 diff --git a/org.glite.lb/configure b/org.glite.lb/configure index 0e0c292..b6f37e5 100755 --- a/org.glite.lb/configure +++ b/org.glite.lb/configure @@ -24,6 +24,7 @@ # use Getopt::Long; +use POSIX qw(locale_h strftime); my $pwd = `pwd`; chomp $pwd; my $prefix = '/usr'; @@ -52,7 +53,7 @@ my (%projects, %project); 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; @@ -154,14 +155,6 @@ my %externs = ( 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 = ( @@ -187,7 +180,7 @@ my (%etics_externs, %etics_projects); # 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/ ], @@ -248,10 +241,18 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; } @@ -504,18 +505,18 @@ sub mode_checkout() { 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 = ( @@ -527,6 +528,7 @@ BEGIN{ '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/ ], @@ -551,15 +553,16 @@ BEGIN{ '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 ); @@ -602,6 +605,11 @@ for my $jar (keys %need_jars) { '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 @@ -725,6 +733,7 @@ for my $ext (keys %deps_aux) { %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 = ( @@ -754,6 +763,7 @@ for my $ext (keys %deps_aux) { # (${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 @@ -765,29 +775,38 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -795,10 +814,18 @@ for my $ext (keys %deps_aux) { '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 => { @@ -808,49 +835,98 @@ for my $ext (keys %deps_aux) { '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/ ], @@ -861,26 +937,35 @@ for my $ext (keys %deps_aux) { 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' }, @@ -897,6 +982,9 @@ for my $ext (keys %deps_aux) { 'lb.yaim' => { default => { 'package.buildarch' => 'noarch' }, }, + 'lb.nagios' => { + default => { 'package.buildarch' => 'noarch' }, + }, 'px.yaim' => { default => { 'package.buildarch' => 'noarch' }, }, @@ -920,9 +1008,10 @@ sub full 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 @@ -956,10 +1045,23 @@ px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config } } } + + 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 +- 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"); @@ -1013,7 +1115,7 @@ sub mode_etics { 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); @@ -1037,28 +1139,30 @@ sub mode_etics { 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; @@ -1117,50 +1221,103 @@ sub mode_etics { 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 </dev/null"; + $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post + echo "/sbin/ldconfig" > project/.postun'; + $cmd{default}{configure} = "cat > src/Makefile.inc <{$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; @@ -1340,6 +1530,62 @@ sub getlibdir { 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; diff --git a/org.glite.lb/etics-tag-with-subsystems.pl b/org.glite.lb/etics-tag-with-subsystems.pl index 3a2e4d4..5ea2cd3 100755 --- a/org.glite.lb/etics-tag-with-subsystems.pl +++ b/org.glite.lb/etics-tag-with-subsystems.pl @@ -235,7 +235,7 @@ usage: $0 [-c ] module.name 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 diff --git a/org.glite.lb/etics-tag.pl b/org.glite.lb/etics-tag.pl index 9c05576..854951a 100755 --- a/org.glite.lb/etics-tag.pl +++ b/org.glite.lb/etics-tag.pl @@ -24,6 +24,56 @@ $GLITE_LB_LOCATION="./org.glite.lb"; 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 () { + $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 () { + $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; @@ -228,7 +278,7 @@ usage: $0 [-i maj|min|rev|age|none|] [-g] [-c > $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"); } diff --git a/org.glite.lb/project/version.properties b/org.glite.lb/project/version.properties index 07c150e..fe762ac 100644 --- a/org.glite.lb/project/version.properties +++ b/org.glite.lb/project/version.properties @@ -1,3 +1,3 @@ # : /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 diff --git a/org.glite.lbjp-common.gsoap-plugin/configure b/org.glite.lbjp-common.gsoap-plugin/configure index 27f197c..e2b3330 100755 --- a/org.glite.lbjp-common.gsoap-plugin/configure +++ b/org.glite.lbjp-common.gsoap-plugin/configure @@ -248,6 +248,10 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; @@ -423,7 +427,9 @@ sub mode_build { 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($_); @@ -446,11 +452,13 @@ sub mode_build { @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; @@ -523,7 +531,7 @@ BEGIN{ '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/ ], @@ -539,7 +547,7 @@ BEGIN{ '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' => [], @@ -556,7 +564,7 @@ BEGIN{ '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 ); @@ -716,10 +724,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -815,7 +824,6 @@ for my $ext (keys %deps_aux) { 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', @@ -845,11 +853,11 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -1129,18 +1137,18 @@ sub mode_etics { 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'; @@ -1218,6 +1226,9 @@ $package_description$package_summary$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'; diff --git a/org.glite.lbjp-common.gsoap-plugin/project/ChangeLog b/org.glite.lbjp-common.gsoap-plugin/project/ChangeLog index 848f3dd..def390d 100644 --- a/org.glite.lbjp-common.gsoap-plugin/project/ChangeLog +++ b/org.glite.lbjp-common.gsoap-plugin/project/ChangeLog @@ -92,3 +92,6 @@ 3.0.2-6 - Module rebuilt +3.0.2-7 +- Module rebuilt + diff --git a/org.glite.lbjp-common.gsoap-plugin/project/version.properties b/org.glite.lbjp-common.gsoap-plugin/project/version.properties index 10e71b6..2c2d07e 100644 --- a/org.glite.lbjp-common.gsoap-plugin/project/version.properties +++ b/org.glite.lbjp-common.gsoap-plugin/project/version.properties @@ -1,3 +1,3 @@ # $Header$ module.version=3.0.2 -module.age=6 +module.age=7 diff --git a/org.glite.lbjp-common.gss/configure b/org.glite.lbjp-common.gss/configure index 27f197c..2e34da2 100755 --- a/org.glite.lbjp-common.gss/configure +++ b/org.glite.lbjp-common.gss/configure @@ -154,14 +154,6 @@ my %externs = ( 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 = ( @@ -248,10 +240,18 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; } @@ -423,7 +423,9 @@ sub mode_build { 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($_); @@ -446,11 +448,13 @@ sub mode_build { @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; @@ -500,18 +504,18 @@ sub mode_checkout() { 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 = ( @@ -523,7 +527,7 @@ BEGIN{ '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/ ], @@ -539,7 +543,7 @@ BEGIN{ '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' => [], @@ -556,7 +560,7 @@ BEGIN{ '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 ); @@ -716,10 +720,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -749,6 +754,7 @@ for my $ext (keys %deps_aux) { # (${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 @@ -760,29 +766,37 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -790,10 +804,18 @@ for my $ext (keys %deps_aux) { '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 => { @@ -810,46 +832,55 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -861,7 +892,7 @@ for my $ext (keys %deps_aux) { modules => { 'lb' => [ qw/emi-lb/ ], 'px' => [ qw/emi-px/ ], - } + }, }, ); @@ -1033,28 +1064,30 @@ sub mode_etics { 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; @@ -1129,18 +1162,18 @@ sub mode_etics { 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'; @@ -1157,6 +1190,10 @@ sub mode_etics { $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 = ''; @@ -1218,6 +1255,9 @@ $package_description$package_summary$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'; @@ -1233,36 +1273,59 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; 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; @@ -1333,6 +1396,37 @@ sub getlibdir { 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; diff --git a/org.glite.lbjp-common.gss/interface/glite_gss.h b/org.glite.lbjp-common.gss/interface/glite_gss.h index 5a1e3fc..162069f 100644 --- a/org.glite.lbjp-common.gss/interface/glite_gss.h +++ b/org.glite.lbjp-common.gss/interface/glite_gss.h @@ -186,6 +186,9 @@ int edg_wll_gss_set_signal_handler(int signum, void (*handler_func)(int)); +void +edg_wll_gss_poll_signal(); + #ifdef __cplusplus } #endif diff --git a/org.glite.lbjp-common.gss/project/ChangeLog b/org.glite.lbjp-common.gss/project/ChangeLog index 940aa38..2eeb42a 100644 --- a/org.glite.lbjp-common.gss/project/ChangeLog +++ b/org.glite.lbjp-common.gss/project/ChangeLog @@ -77,3 +77,11 @@ 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 + diff --git a/org.glite.lbjp-common.gss/project/doc/EMI_Logo_std.pdf b/org.glite.lbjp-common.gss/project/doc/EMI_Logo_std.pdf new file mode 100644 index 0000000..2e79001 Binary files /dev/null and b/org.glite.lbjp-common.gss/project/doc/EMI_Logo_std.pdf differ diff --git a/org.glite.lbjp-common.gss/project/doc/Makefile b/org.glite.lbjp-common.gss/project/doc/Makefile new file mode 100644 index 0000000..7591a3e --- /dev/null +++ b/org.glite.lbjp-common.gss/project/doc/Makefile @@ -0,0 +1,3 @@ +all: + pdflatex lbjp-common-gss_FD.tex + diff --git a/org.glite.lbjp-common.gss/project/doc/cesnet.pdf b/org.glite.lbjp-common.gss/project/doc/cesnet.pdf new file mode 100644 index 0000000..9b07738 Binary files /dev/null and b/org.glite.lbjp-common.gss/project/doc/cesnet.pdf differ diff --git a/org.glite.lbjp-common.gss/project/doc/emi.cls b/org.glite.lbjp-common.gss/project/doc/emi.cls new file mode 100644 index 0000000..28221d9 --- /dev/null +++ b/org.glite.lbjp-common.gss/project/doc/emi.cls @@ -0,0 +1,490 @@ +% 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}} + diff --git a/org.glite.lbjp-common.gss/project/doc/lbjp-common-gss_FD.tex b/org.glite.lbjp-common.gss/project/doc/lbjp-common-gss_FD.tex new file mode 100644 index 0000000..0269a10 --- /dev/null +++ b/org.glite.lbjp-common.gss/project/doc/lbjp-common-gss_FD.tex @@ -0,0 +1,34 @@ +\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} diff --git a/org.glite.lbjp-common.gss/project/version.properties b/org.glite.lbjp-common.gss/project/version.properties index 9a095ee..b349b40 100644 --- a/org.glite.lbjp-common.gss/project/version.properties +++ b/org.glite.lbjp-common.gss/project/version.properties @@ -1,3 +1,3 @@ # $Header$ -module.version=3.0.3 +module.version=3.0.4 module.age=1 diff --git a/org.glite.lbjp-common.gss/src/glite_gss.c b/org.glite.lbjp-common.gss/src/glite_gss.c index db0fdb8..7fada9d 100644 --- a/org.glite.lbjp-common.gss/src/glite_gss.c +++ b/org.glite.lbjp-common.gss/src/glite_gss.c @@ -61,6 +61,9 @@ struct asyn_result { 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); @@ -81,31 +84,40 @@ static void callback_ares_gethostbyname(void *arg, int status, struct hostent *h #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: @@ -139,8 +151,7 @@ static void free_hostent(struct hostent *h){ } } -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; @@ -150,7 +161,7 @@ static int asyn_getservbyname2(int af, struct sockaddr_storage *addrOut, socklen char *name2, *p; size_t namelen; - name2 = name; + name2 = (char *)name; namelen = strlen(name); if (name[0]=='[' && name[namelen-1]==']') { /* IPv6 literal, strip brackets */ @@ -168,11 +179,10 @@ static int asyn_getservbyname2(int af, struct sockaddr_storage *addrOut, socklen /* 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) { @@ -185,7 +195,6 @@ static int asyn_getservbyname2(int af, struct sockaddr_storage *addrOut, socklen 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; @@ -195,7 +204,6 @@ static int asyn_getservbyname2(int af, struct sockaddr_storage *addrOut, socklen switch ( select(nfds, &readers, &writers, NULL, tvp) ) { case -1: if (errno != EINTR) { ares_destroy(channel); - free_hostent(ar.ent); return NETDB_INTERNAL; } else continue; @@ -206,31 +214,7 @@ static int asyn_getservbyname2(int af, struct sockaddr_storage *addrOut, socklen 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); @@ -240,44 +224,38 @@ static int asyn_getservbyname2(int af, struct sockaddr_storage *addrOut, socklen 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; @@ -303,6 +281,7 @@ do_connect(int *s, char const *hostname, int port, struct timeval *timeout) 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); @@ -544,6 +523,9 @@ destroy_proxy(char *proxy_file) 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) @@ -656,18 +638,6 @@ end: 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. @@ -679,12 +649,72 @@ end: 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; @@ -695,12 +725,11 @@ edg_wll_gss_connect(edg_wll_GssCred cred, char const *hostname, int port, 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; @@ -722,6 +751,7 @@ edg_wll_gss_connect(edg_wll_GssCred cred, char const *hostname, int port, } free(servername); + servername = NULL; memset(&input_token, 0, sizeof(input_token)); /* XXX if cred == GSS_C_NO_CREDENTIAL set the ANONYMOUS flag */ @@ -795,7 +825,6 @@ edg_wll_gss_connect(edg_wll_GssCred cred, char const *hostname, int port, connection->sock = sock; connection->context = context; - servername = NULL; ret = 0; end: @@ -805,7 +834,7 @@ 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); @@ -813,6 +842,7 @@ end: 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) @@ -898,6 +928,7 @@ end: 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) @@ -929,6 +960,7 @@ edg_wll_gss_write(edg_wll_GssConnection *connection, const void *buf, size_t buf } +/** 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) @@ -994,6 +1026,7 @@ end: 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, @@ -1028,6 +1061,7 @@ edg_wll_gss_read_full(edg_wll_GssConnection *connection, void *buf, 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, @@ -1036,7 +1070,7 @@ edg_wll_gss_write_full(edg_wll_GssConnection *connection, const void *buf, 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 @@ -1064,12 +1098,13 @@ edg_wll_gss_watch_creds(const char *proxy_file, time_t *last_time) 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); @@ -1099,6 +1134,7 @@ edg_wll_gss_close(edg_wll_GssConnection *con, struct timeval *timeout) return 0; } +/** Get error details. */ int edg_wll_gss_get_error(edg_wll_GssStatus *gss_err, const char *prefix, char **msg) { @@ -1167,6 +1203,10 @@ edg_wll_gss_reject(int sock) } +/** + * 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) { @@ -1184,6 +1224,10 @@ 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) { @@ -1195,6 +1239,9 @@ edg_wll_gss_finalize(void) } +/** + * Release the acquired credentials. + */ int edg_wll_gss_release_cred(edg_wll_GssCred *cred, edg_wll_GssStatus* gss_code) { @@ -1227,6 +1274,9 @@ 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, @@ -1393,6 +1443,9 @@ end: 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, @@ -1460,6 +1513,9 @@ end: return ret; } +/** + * Free the principal. + */ void edg_wll_gss_free_princ(edg_wll_GssPrincipal principal) { @@ -1472,6 +1528,9 @@ 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) { @@ -1485,6 +1544,9 @@ 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) { @@ -1511,6 +1573,9 @@ 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) { @@ -1523,12 +1588,15 @@ 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) { @@ -1553,14 +1621,23 @@ 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)); @@ -1569,13 +1646,23 @@ edg_wll_gss_set_signal_handler(int signum, 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(); +} diff --git a/org.glite.lbjp-common.jp-interface/configure b/org.glite.lbjp-common.jp-interface/configure index 27f197c..e2b3330 100755 --- a/org.glite.lbjp-common.jp-interface/configure +++ b/org.glite.lbjp-common.jp-interface/configure @@ -248,6 +248,10 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; @@ -423,7 +427,9 @@ sub mode_build { 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($_); @@ -446,11 +452,13 @@ sub mode_build { @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; @@ -523,7 +531,7 @@ BEGIN{ '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/ ], @@ -539,7 +547,7 @@ BEGIN{ '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' => [], @@ -556,7 +564,7 @@ BEGIN{ '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 ); @@ -716,10 +724,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -815,7 +824,6 @@ for my $ext (keys %deps_aux) { 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', @@ -845,11 +853,11 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -1129,18 +1137,18 @@ sub mode_etics { 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'; @@ -1218,6 +1226,9 @@ $package_description$package_summary$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'; diff --git a/org.glite.lbjp-common.jp-interface/project/ChangeLog b/org.glite.lbjp-common.jp-interface/project/ChangeLog index 15a19cc..f4e1b71 100644 --- a/org.glite.lbjp-common.jp-interface/project/ChangeLog +++ b/org.glite.lbjp-common.jp-interface/project/ChangeLog @@ -41,6 +41,9 @@ 2.0.3-3 - Module rebuilt +2.0.3-4 +- Module rebuilt + 2.1.0-1 - Fixes for parallel release in EMI & gLite @@ -71,3 +74,6 @@ 2.1.2-6 - Module rebuilt +2.1.2-7 +- Module rebuilt + diff --git a/org.glite.lbjp-common.jp-interface/project/version.properties b/org.glite.lbjp-common.jp-interface/project/version.properties index 3ec1e5f..43d3922 100644 --- a/org.glite.lbjp-common.jp-interface/project/version.properties +++ b/org.glite.lbjp-common.jp-interface/project/version.properties @@ -1,3 +1,3 @@ #: /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 diff --git a/org.glite.lbjp-common.maildir/configure b/org.glite.lbjp-common.maildir/configure index 27f197c..e2b3330 100755 --- a/org.glite.lbjp-common.maildir/configure +++ b/org.glite.lbjp-common.maildir/configure @@ -248,6 +248,10 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; @@ -423,7 +427,9 @@ sub mode_build { 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($_); @@ -446,11 +452,13 @@ sub mode_build { @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; @@ -523,7 +531,7 @@ BEGIN{ '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/ ], @@ -539,7 +547,7 @@ BEGIN{ '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' => [], @@ -556,7 +564,7 @@ BEGIN{ '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 ); @@ -716,10 +724,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -815,7 +824,6 @@ for my $ext (keys %deps_aux) { 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', @@ -845,11 +853,11 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -1129,18 +1137,18 @@ sub mode_etics { 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'; @@ -1218,6 +1226,9 @@ $package_description$package_summary$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'; diff --git a/org.glite.lbjp-common.maildir/project/ChangeLog b/org.glite.lbjp-common.maildir/project/ChangeLog index ca047f5..9f40510 100644 --- a/org.glite.lbjp-common.maildir/project/ChangeLog +++ b/org.glite.lbjp-common.maildir/project/ChangeLog @@ -32,6 +32,9 @@ 2.0.2-3 - Module rebuilt +2.0.2-4 +- Module rebuilt + 2.1.0-1 - Fixes for parallel release in EMI & gLite @@ -62,3 +65,6 @@ 2.1.2-6 - Module rebuilt +2.1.2-7 +- Module rebuilt + diff --git a/org.glite.lbjp-common.maildir/project/version.properties b/org.glite.lbjp-common.maildir/project/version.properties index f3bede9..3afee53 100644 --- a/org.glite.lbjp-common.maildir/project/version.properties +++ b/org.glite.lbjp-common.maildir/project/version.properties @@ -1,3 +1,3 @@ # : /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 diff --git a/org.glite.lbjp-common.server-bones/configure b/org.glite.lbjp-common.server-bones/configure index 27f197c..e2b3330 100755 --- a/org.glite.lbjp-common.server-bones/configure +++ b/org.glite.lbjp-common.server-bones/configure @@ -248,6 +248,10 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; @@ -423,7 +427,9 @@ sub mode_build { 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($_); @@ -446,11 +452,13 @@ sub mode_build { @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; @@ -523,7 +531,7 @@ BEGIN{ '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/ ], @@ -539,7 +547,7 @@ BEGIN{ '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' => [], @@ -556,7 +564,7 @@ BEGIN{ '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 ); @@ -716,10 +724,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -815,7 +824,6 @@ for my $ext (keys %deps_aux) { 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', @@ -845,11 +853,11 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -1129,18 +1137,18 @@ sub mode_etics { 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'; @@ -1218,6 +1226,9 @@ $package_description$package_summary$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'; diff --git a/org.glite.lbjp-common.server-bones/project/ChangeLog b/org.glite.lbjp-common.server-bones/project/ChangeLog index 6d2854a..57c1338 100644 --- a/org.glite.lbjp-common.server-bones/project/ChangeLog +++ b/org.glite.lbjp-common.server-bones/project/ChangeLog @@ -36,6 +36,9 @@ 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 @@ -67,3 +70,6 @@ 2.1.2-6 - Module rebuilt +2.1.3-1 +- Change log priority for slave suicide messages + diff --git a/org.glite.lbjp-common.server-bones/project/version.properties b/org.glite.lbjp-common.server-bones/project/version.properties index 1f48803..15b5d0d 100644 --- a/org.glite.lbjp-common.server-bones/project/version.properties +++ b/org.glite.lbjp-common.server-bones/project/version.properties @@ -1,3 +1,3 @@ # : /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 diff --git a/org.glite.lbjp-common.server-bones/src/srvbones.c b/org.glite.lbjp-common.server-bones/src/srvbones.c index d872903..dd41c39 100644 --- a/org.glite.lbjp-common.server-bones/src/srvbones.c +++ b/org.glite.lbjp-common.server-bones/src/srvbones.c @@ -216,7 +216,7 @@ int glite_srvbones_run( 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; @@ -538,8 +538,11 @@ static int slave(slave_data_init_hnd data_init_hnd, int sock) 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)); diff --git a/org.glite.lbjp-common.trio/configure b/org.glite.lbjp-common.trio/configure index 27f197c..e2b3330 100755 --- a/org.glite.lbjp-common.trio/configure +++ b/org.glite.lbjp-common.trio/configure @@ -248,6 +248,10 @@ $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-serv $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}{$_}; @@ -423,7 +427,9 @@ sub mode_build { 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($_); @@ -446,11 +452,13 @@ sub mode_build { @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; @@ -523,7 +531,7 @@ BEGIN{ '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/ ], @@ -539,7 +547,7 @@ BEGIN{ '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' => [], @@ -556,7 +564,7 @@ BEGIN{ '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 ); @@ -716,10 +724,11 @@ for my $ext (keys %deps_aux) { ); %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 = ( @@ -815,7 +824,6 @@ for my $ext (keys %deps_aux) { 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', @@ -845,11 +853,11 @@ for my $ext (keys %deps_aux) { 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/ ], @@ -1129,18 +1137,18 @@ sub mode_etics { 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'; @@ -1218,6 +1226,9 @@ $package_description$package_summary$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'; diff --git a/org.glite.lbjp-common.trio/project/ChangeLog b/org.glite.lbjp-common.trio/project/ChangeLog index 01e0fc4..4b7befe 100644 --- a/org.glite.lbjp-common.trio/project/ChangeLog +++ b/org.glite.lbjp-common.trio/project/ChangeLog @@ -41,6 +41,9 @@ 2.0.3-3 - Module rebuilt +2.0.3-4 +- Module rebuilt + 2.1.0-1 - Fixes for parallel release in EMI & gLite @@ -71,3 +74,6 @@ 2.1.2-6 - Module rebuilt +2.1.2-7 +- Module rebuilt + diff --git a/org.glite.lbjp-common.trio/project/version.properties b/org.glite.lbjp-common.trio/project/version.properties index cb1ab99..320e968 100644 --- a/org.glite.lbjp-common.trio/project/version.properties +++ b/org.glite.lbjp-common.trio/project/version.properties @@ -1,3 +1,3 @@ # : /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 diff --git a/org.glite.lbjp-common/project/version.properties b/org.glite.lbjp-common/project/version.properties index 68d32cf..8065827 100644 --- a/org.glite.lbjp-common/project/version.properties +++ b/org.glite.lbjp-common/project/version.properties @@ -1,3 +1,3 @@ # : /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