From 205a0f35b8dc9ffff33aaaaf605a2b6806b640bc Mon Sep 17 00:00:00 2001 From: =?utf8?q?Zden=C4=9Bk=20=C5=A0ustr?= Date: Wed, 14 Dec 2011 10:44:22 +0000 Subject: [PATCH] Merge from branch 3.0 to HEAD --- org.glite.jobid.api-c/Makefile | 6 +- org.glite.jobid.api-c/configure | 638 +++++++++++++----- org.glite.jobid.api-c/project/ChangeLog | 3 + org.glite.jobid.api-c/project/version.properties | 2 +- org.glite.jobid.api-cpp/Makefile | 6 +- org.glite.jobid.api-cpp/configure | 638 +++++++++++++----- org.glite.jobid.api-cpp/project/ChangeLog | 3 + org.glite.jobid.api-cpp/project/version.properties | 2 +- org.glite.jobid.api-java/Makefile | 6 +- org.glite.jobid.api-java/configure | 638 +++++++++++++----- org.glite.jobid.api-java/project/ChangeLog | 3 + .../project/version.properties | 2 +- org.glite.jobid/project/version.properties | 2 +- org.glite.lb.client-java/Makefile | 6 +- org.glite.lb.client-java/configure | 638 +++++++++++++----- org.glite.lb.client-java/project/ChangeLog | 3 + .../project/version.properties | 2 +- .../src/org/glite/lb/SeqCode.java | 12 +- org.glite.lb.client/Makefile | 13 +- org.glite.lb.client/configure | 421 ++++++++---- org.glite.lb.client/project/ChangeLog | 5 + org.glite.lb.client/project/version.properties | 2 +- org.glite.lb.client/src/notification.c | 77 ++- org.glite.lb.common/Makefile | 8 +- org.glite.lb.common/configure | 638 +++++++++++++----- org.glite.lb.common/project/ChangeLog | 3 + org.glite.lb.common/project/version.properties | 2 +- org.glite.lb.doc/Makefile | 6 +- org.glite.lb.doc/configure | 421 ++++++++---- org.glite.lb.doc/project/ChangeLog | 11 + org.glite.lb.doc/project/version.properties | 2 +- org.glite.lb.doc/src/LBAG-Installation.tex | 1 + org.glite.lb.doc/src/LBTP-Tests.tex | 12 +- org.glite.lb.doc/src/faq.tex | 15 +- org.glite.lb.doc/src/versions.tex | 1 + org.glite.lb.emi-lb/Makefile | 8 +- org.glite.lb.emi-lb/configure | 721 +++++++++++++++------ org.glite.lb.harvester/Makefile | 6 +- org.glite.lb.harvester/config/startup | 11 +- org.glite.lb.harvester/configure | 669 +++++++++++++------ org.glite.lb.harvester/project/.pre | 7 + org.glite.lb.harvester/project/ChangeLog | 3 + org.glite.lb.harvester/project/version.properties | 4 +- org.glite.lb.harvester/src/harvester.c | 101 ++- org.glite.lb.logger-msg/Makefile | 5 +- org.glite.lb.logger-msg/configure | 669 +++++++++++++------ org.glite.lb.logger-msg/project/ChangeLog | 3 + .../project/package.description | 2 +- org.glite.lb.logger-msg/project/version.properties | 2 +- org.glite.lb.logger/Makefile | 16 +- org.glite.lb.logger/config/startup | 11 +- org.glite.lb.logger/configure | 421 ++++++++---- org.glite.lb.logger/project/.pre | 7 + org.glite.lb.logger/project/ChangeLog | 4 + org.glite.lb.logger/project/version.properties | 2 +- org.glite.lb.logger/src/logd_proto.c | 102 +-- org.glite.lb.nagios/Makefile | 4 +- org.glite.lb.nagios/configure | 333 ++++++---- org.glite.lb.nagios/project/ChangeLog | 3 + org.glite.lb.nagios/project/version.properties | 2 +- org.glite.lb.server/Makefile | 25 +- org.glite.lb.server/config/glite-lb-lcas.logrotate | 5 + .../config/glite-lb-proxy-purge.cron | 1 + .../config/glite-lb-purge.logrotate | 5 + .../config/glite-lb-server-purge.cron | 1 + org.glite.lb.server/config/startup | 11 +- org.glite.lb.server/configure | 421 ++++++++---- org.glite.lb.server/project/.pre | 7 + org.glite.lb.server/project/ChangeLog | 12 + org.glite.lb.server/project/version.properties | 2 +- org.glite.lb.server/src/bkserverd.c | 93 +-- org.glite.lb.server/src/lb_proto.c | 10 +- org.glite.lb.state-machine/Makefile | 4 +- org.glite.lb.state-machine/configure | 669 +++++++++++++------ org.glite.lb.state-machine/project/.postun | 1 + org.glite.lb.state-machine/project/ChangeLog | 3 + .../project/version.properties | 4 +- org.glite.lb.state-machine/src/process_event.c | 118 ++++ .../src/process_event_cream.c | 134 ++-- .../src/process_event_file_transfer.c | 7 + org.glite.lb.types/Makefile | 6 +- org.glite.lb.types/configure | 669 +++++++++++++------ org.glite.lb.types/project/ChangeLog | 3 + org.glite.lb.types/project/version.properties | 2 +- org.glite.lb.utils/Makefile | 4 +- org.glite.lb.utils/configure | 638 +++++++++++++----- org.glite.lb.utils/project/ChangeLog | 9 +- org.glite.lb.utils/project/version.properties | 2 +- org.glite.lb.ws-interface/Makefile | 4 +- org.glite.lb.ws-interface/configure | 669 +++++++++++++------ org.glite.lb.ws-interface/project/ChangeLog | 3 + .../project/version.properties | 2 +- org.glite.lb.ws-test/Makefile | 6 +- org.glite.lb.ws-test/configure | 669 +++++++++++++------ org.glite.lb.ws-test/project/ChangeLog | 3 + org.glite.lb.ws-test/project/version.properties | 2 +- org.glite.lb.yaim/Makefile | 11 +- org.glite.lb.yaim/config/defaults/glite-lb.pre | 62 +- .../config/functions/config_glite_lb.in | 95 +-- org.glite.lb.yaim/config/node-info.d/emi/glite-lb | 1 - org.glite.lb.yaim/configure | 421 ++++++++---- org.glite.lb.yaim/project/ChangeLog | 4 + org.glite.lb.yaim/project/version.properties | 2 +- org.glite.lb/configure | 152 +++-- org.glite.lb/project/version.properties | 2 +- org.glite.lbjp-common.db/Makefile | 8 +- org.glite.lbjp-common.db/configure | 671 +++++++++++++------ org.glite.lbjp-common.db/project/ChangeLog | 3 + .../project/version.properties | 2 +- org.glite.lbjp-common.db/test/timezone.cpp | 2 +- org.glite.lbjp-common.gsoap-plugin/Makefile | 4 +- org.glite.lbjp-common.gsoap-plugin/configure | 638 +++++++++++++----- .../project/ChangeLog | 3 + .../project/version.properties | 2 +- org.glite.lbjp-common.gss/Makefile | 4 +- org.glite.lbjp-common.gss/configure | 421 ++++++++---- org.glite.lbjp-common.gss/project/ChangeLog | 5 + .../project/version.properties | 2 +- org.glite.lbjp-common.gss/src/glite_gss.c | 7 +- org.glite.lbjp-common.jp-interface/Makefile | 4 +- org.glite.lbjp-common.jp-interface/configure | 638 +++++++++++++----- .../project/ChangeLog | 3 + .../project/version.properties | 2 +- org.glite.lbjp-common.log/Makefile | 6 +- org.glite.lbjp-common.log/configure | 671 +++++++++++++------ org.glite.lbjp-common.log/project/ChangeLog | 3 + .../project/version.properties | 2 +- org.glite.lbjp-common.maildir/Makefile | 8 +- org.glite.lbjp-common.maildir/configure | 638 +++++++++++++----- org.glite.lbjp-common.maildir/project/ChangeLog | 3 + .../project/version.properties | 2 +- org.glite.lbjp-common.server-bones/Makefile | 16 +- org.glite.lbjp-common.server-bones/configure | 638 +++++++++++++----- .../examples/cnt_example.c | 66 +- .../examples/run_test.sh | 37 ++ .../examples/srv_example.c | 41 +- .../interface/srvbones.h | 7 + .../project/ChangeLog | 3 + .../project/version.properties | 2 +- org.glite.lbjp-common.server-bones/src/srvbones.c | 61 ++ org.glite.lbjp-common.trio/Makefile | 6 +- org.glite.lbjp-common.trio/configure | 638 +++++++++++++----- org.glite.lbjp-common.trio/project/ChangeLog | 3 + .../project/version.properties | 2 +- org.glite.lbjp-common/project/version.properties | 2 +- 145 files changed, 12595 insertions(+), 5017 deletions(-) create mode 100644 org.glite.lb.harvester/project/.pre create mode 100644 org.glite.lb.logger/project/.pre create mode 100644 org.glite.lb.server/config/glite-lb-lcas.logrotate create mode 100644 org.glite.lb.server/config/glite-lb-proxy-purge.cron create mode 100644 org.glite.lb.server/config/glite-lb-purge.logrotate create mode 100644 org.glite.lb.server/config/glite-lb-server-purge.cron create mode 100644 org.glite.lb.server/project/.pre create mode 100644 org.glite.lb.state-machine/project/.postun create mode 100644 org.glite.lbjp-common.server-bones/examples/run_test.sh diff --git a/org.glite.jobid.api-c/Makefile b/org.glite.jobid.api-c/Makefile index f1de15c..c403eed 100644 --- a/org.glite.jobid.api-c/Makefile +++ b/org.glite.jobid.api-c/Makefile @@ -68,7 +68,9 @@ base64_test: %: %.cpp compile clean: rm -rvf *.o *.lo .libs/ lib* *.c *.cpp *.h rm -vf base64_test base64_test.xml - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ stage: $(MAKE) install PREFIX=${stagedir} @@ -84,4 +86,4 @@ install: ${LIB} ${COMPILE} -o $@ -c $< -.PHONY: default all compile check stage install clean +.PHONY: default all compile check stage install clean distclean diff --git a/org.glite.jobid.api-c/configure b/org.glite.jobid.api-c/configure index e2b3330..16595a2 100755 --- a/org.glite.jobid.api-c/configure +++ b/org.glite.jobid.api-c/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -253,9 +249,13 @@ $externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mys $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}{$_}; } @@ -271,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -354,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -476,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -497,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -508,18 +526,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 = ( @@ -531,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -555,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -606,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -689,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -701,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -711,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -729,6 +758,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 = ( @@ -738,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -747,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -758,6 +790,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 @@ -769,29 +802,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/ ], @@ -799,10 +841,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 => { @@ -812,79 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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/ ], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -901,6 +1013,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' }, }, @@ -918,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -960,10 +1081,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"); @@ -1017,7 +1151,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); @@ -1026,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1041,28 +1176,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; @@ -1098,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1109,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1121,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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; @@ -1344,6 +1569,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; @@ -1378,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.jobid.api-c/project/ChangeLog b/org.glite.jobid.api-c/project/ChangeLog index 82eeef4..20f6938 100644 --- a/org.glite.jobid.api-c/project/ChangeLog +++ b/org.glite.jobid.api-c/project/ChangeLog @@ -63,3 +63,6 @@ 2.0.3-1 - Handling error returned by gethostbyname() (Savannah Bug #67627) +2.0.3-2 +- Module rebuilt + diff --git a/org.glite.jobid.api-c/project/version.properties b/org.glite.jobid.api-c/project/version.properties index 2196c4d..f1c52c6 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.3 -module.age=1 +module.age=2 diff --git a/org.glite.jobid.api-cpp/Makefile b/org.glite.jobid.api-cpp/Makefile index ebb9ab0..7586462 100644 --- a/org.glite.jobid.api-cpp/Makefile +++ b/org.glite.jobid.api-cpp/Makefile @@ -43,7 +43,9 @@ check: compile clean: rm -rvf *.o *.lo .libs lib* *.c *.cpp *.h - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ install: mkdir -p ${DESTDIR}${PREFIX}${prefix}/include/${globalprefix}/${jobidprefix} @@ -56,4 +58,4 @@ stage: ${COMPILE} -o $@ -c $< -.PHONY: default all compile check install clean +.PHONY: default all compile check install clean distclean diff --git a/org.glite.jobid.api-cpp/configure b/org.glite.jobid.api-cpp/configure index e2b3330..16595a2 100755 --- a/org.glite.jobid.api-cpp/configure +++ b/org.glite.jobid.api-cpp/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -253,9 +249,13 @@ $externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mys $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}{$_}; } @@ -271,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -354,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -476,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -497,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -508,18 +526,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 = ( @@ -531,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -555,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -606,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -689,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -701,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -711,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -729,6 +758,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 = ( @@ -738,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -747,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -758,6 +790,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 @@ -769,29 +802,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/ ], @@ -799,10 +841,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 => { @@ -812,79 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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/ ], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -901,6 +1013,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' }, }, @@ -918,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -960,10 +1081,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"); @@ -1017,7 +1151,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); @@ -1026,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1041,28 +1176,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; @@ -1098,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1109,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1121,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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; @@ -1344,6 +1569,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; @@ -1378,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.jobid.api-cpp/project/ChangeLog b/org.glite.jobid.api-cpp/project/ChangeLog index a1099cf..42fb57e 100644 --- a/org.glite.jobid.api-cpp/project/ChangeLog +++ b/org.glite.jobid.api-cpp/project/ChangeLog @@ -56,3 +56,6 @@ 1.1.3-1 - experiments with staging in summary Makefile in etics-less build +1.1.3-2 +- Module rebuilt + diff --git a/org.glite.jobid.api-cpp/project/version.properties b/org.glite.jobid.api-cpp/project/version.properties index 01957f0..9916424 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.3 -module.age=1 +module.age=2 diff --git a/org.glite.jobid.api-java/Makefile b/org.glite.jobid.api-java/Makefile index 77bde52..9f11d6b 100644 --- a/org.glite.jobid.api-java/Makefile +++ b/org.glite.jobid.api-java/Makefile @@ -19,6 +19,8 @@ check: clean: ${ant_prefix}/bin/ant ${ANT_ARGS} clean - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ -.PHONY: all compile stage install check clean +distclean: + rm -rvf Makefile.inc *.spec debian/ + +.PHONY: all compile stage install check clean distclean diff --git a/org.glite.jobid.api-java/configure b/org.glite.jobid.api-java/configure index e2b3330..16595a2 100755 --- a/org.glite.jobid.api-java/configure +++ b/org.glite.jobid.api-java/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -253,9 +249,13 @@ $externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mys $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}{$_}; } @@ -271,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -354,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -476,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -497,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -508,18 +526,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 = ( @@ -531,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -555,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -606,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -689,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -701,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -711,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -729,6 +758,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 = ( @@ -738,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -747,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -758,6 +790,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 @@ -769,29 +802,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/ ], @@ -799,10 +841,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 => { @@ -812,79 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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/ ], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -901,6 +1013,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' }, }, @@ -918,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -960,10 +1081,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"); @@ -1017,7 +1151,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); @@ -1026,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1041,28 +1176,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; @@ -1098,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1109,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1121,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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; @@ -1344,6 +1569,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; @@ -1378,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.jobid.api-java/project/ChangeLog b/org.glite.jobid.api-java/project/ChangeLog index 72a3fde..43e18fd 100644 --- a/org.glite.jobid.api-java/project/ChangeLog +++ b/org.glite.jobid.api-java/project/ChangeLog @@ -43,3 +43,6 @@ 1.1.3-6 - Module rebuilt +1.1.3-7 +- Module rebuilt + diff --git a/org.glite.jobid.api-java/project/version.properties b/org.glite.jobid.api-java/project/version.properties index 4ed0652..24d69a6 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=6 +module.age=7 diff --git a/org.glite.jobid/project/version.properties b/org.glite.jobid/project/version.properties index f7d88ed..ae477cc 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.4 -module.age=1 +module.age=2 diff --git a/org.glite.lb.client-java/Makefile b/org.glite.lb.client-java/Makefile index ebf358d..574bfc3 100644 --- a/org.glite.lb.client-java/Makefile +++ b/org.glite.lb.client-java/Makefile @@ -103,6 +103,8 @@ install: clean: rm -rf build - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ -.PHONY: all compile compile-java-axis compile-java-lb compile-java-gen compile-java-lb2 build-jar build-c examples genevents genws check stage install clean +distclean: + rm -rvf Makefile.inc *.spec debian/ + +.PHONY: all compile compile-java-axis compile-java-lb compile-java-gen compile-java-lb2 build-jar build-c examples genevents genws check stage install clean distclean diff --git a/org.glite.lb.client-java/configure b/org.glite.lb.client-java/configure index e2b3330..16595a2 100755 --- a/org.glite.lb.client-java/configure +++ b/org.glite.lb.client-java/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -253,9 +249,13 @@ $externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mys $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}{$_}; } @@ -271,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -354,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -476,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -497,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -508,18 +526,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 = ( @@ -531,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -555,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -606,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -689,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -701,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -711,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -729,6 +758,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 = ( @@ -738,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -747,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -758,6 +790,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 @@ -769,29 +802,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/ ], @@ -799,10 +841,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 => { @@ -812,79 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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/ ], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -901,6 +1013,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' }, }, @@ -918,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -960,10 +1081,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"); @@ -1017,7 +1151,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); @@ -1026,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1041,28 +1176,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; @@ -1098,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1109,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1121,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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; @@ -1344,6 +1569,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; @@ -1378,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.client-java/project/ChangeLog b/org.glite.lb.client-java/project/ChangeLog index 56c1dca..16f1e27 100644 --- a/org.glite.lb.client-java/project/ChangeLog +++ b/org.glite.lb.client-java/project/ChangeLog @@ -75,3 +75,6 @@ - Distinguish between generated and non-generated java files for FindBugs etics plugin - Classes for non-generated files are built in build/classes directory now +1.1.7-1 +- Build on Debian 6 and SL 6 + diff --git a/org.glite.lb.client-java/project/version.properties b/org.glite.lb.client-java/project/version.properties index 01b265a..03a30da 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.6 +module.version=1.1.7 module.age=1 diff --git a/org.glite.lb.client-java/src/org/glite/lb/SeqCode.java b/org.glite.lb.client-java/src/org/glite/lb/SeqCode.java index 7a97fda..1cfd673 100644 --- a/org.glite.lb.client-java/src/org/glite/lb/SeqCode.java +++ b/org.glite.lb.client-java/src/org/glite/lb/SeqCode.java @@ -30,6 +30,7 @@ public class SeqCode { public static final int PBS = 2; public static final int CONDOR = 4; public static final int CREAM = 4; + public static final int CREAMWMS = 5; private int[] seqCode = {0, 0, 0, 0, 0, 0, 0, 0, 0}; private int type = 0; @@ -66,6 +67,11 @@ public class SeqCode { throw new IllegalArgumentException("SeqCode part"); seqCode[part-1]++; break; + case CREAMWMS: + if (src == null) + throw new IllegalArgumentException("SeqCode part"); + seqCode[src.LRMS-1] += 1000; //XXX hardcoded to add 1000 to LRMS when WMS jobs goes through CREAM + break; default: break; } } @@ -81,9 +87,10 @@ public class SeqCode { switch (type) { case NORMAL: case DUPLICATE: + case CREAMWMS: if (!seqCodeString.matches("UI=\\d{1,}:NS=\\d{1,}:WM=\\d{1,}:BH=\\d{1,}:" + "JSS=\\d{1,}:LM=\\d{1,}:LRMS=\\d{1,}:APP=\\d{1,}:LBS=\\d{1,}")) { - throw new IllegalArgumentException("this is not correct sequence code"); + throw new IllegalArgumentException("this is not correct sequence code: " + seqCodeString); } int currentPosition = 0; @@ -112,6 +119,7 @@ public class SeqCode { switch (type) { case NORMAL: case DUPLICATE: + case CREAMWMS: String tmp = Integer.toString(seqCode[0]); String output = "UI="; output += "000000".substring(0, 6 - tmp.length ()) + tmp; @@ -136,7 +144,7 @@ public class SeqCode { tmp = Integer.toString(seqCode[5]); output += "0000000000".substring(0, 6 - tmp.length ()) + tmp; output += ":"; - output += "LMRS="; + output += "LRMS="; tmp = Integer.toString(seqCode[6]); output += "0000000000".substring(0, 6 - tmp.length ()) + tmp; output += ":"; diff --git a/org.glite.lb.client/Makefile b/org.glite.lb.client/Makefile index 726cc36..5b858f1 100644 --- a/org.glite.lb.client/Makefile +++ b/org.glite.lb.client/Makefile @@ -244,14 +244,11 @@ notify: notify.o register_sandbox: %: %.o ${LINK} -o $@ $@.o ${default_clientlib} ${EXT_LIB} -${TOOLS} ${EXAMPLES}: %: %.o - ${LINK} -o $@ $< ${default_clientlib} ${EXT_LIB} - -${EXAMPLES_CL}: %: %.o +${TOOLS} ${EXAMPLES} ${EXAMPLES_CL}: %: %.o ${LINK} -o $@ $< ${default_clientlib} ${default_commonlib} ${EXT_LIB} ${EXAMPLES_CL_THR}: %: %.o - ${LINK} -o $@ $< ${default_clientlib_thr} ${default_commonlib_thr} ${EXT_LIB} + ${LINK} -o $@ $< ${default_clientlib_thr} ${default_commonlib_thr} ${EXT_LIB} -lpthread ${TOOLS}: ${default_clientlib} @@ -399,7 +396,9 @@ clean: rm -rvf ${lib_LTLIBRARIES} ${TOOLS} logevent register_sandbox ${MAN_GZ} ${MAN8_GZ} rm -rvf ${EXAMPLES} ${EXAMPLES_CL} ${EXAMPLES_CL_THR} ${sh_PROGS} rm -f EventAttrNames.pl StatusAttrNames.pl uiwrap.T - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ check_version: ${CHECK_VERSION} ${stagedir}${prefix}/include/glite/lb/common_version.h @@ -425,4 +424,4 @@ post-install-rpath: fi; \ done -.PHONY: default all compile examples check stage install clean check_version link post-install post-install-rpath +.PHONY: default all compile examples check stage install clean distclean check_version link post-install post-install-rpath diff --git a/org.glite.lb.client/configure b/org.glite.lb.client/configure index 2e34da2..16595a2 100755 --- a/org.glite.lb.client/configure +++ b/org.glite.lb.client/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -179,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -208,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -472,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -493,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -527,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -551,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -602,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -685,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -697,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -707,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -725,6 +758,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 = ( @@ -734,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -743,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -769,6 +805,7 @@ for my $ext (keys %deps_aux) { 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', @@ -791,7 +828,7 @@ for my $ext (keys %deps_aux) { }, }, 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 => { @@ -825,8 +862,9 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => 'emi-', }, tag_prefix => { %cvs_tag_prefix }, flavours => '--thrflavour= --nothrflavour=', @@ -835,12 +873,13 @@ for my $ext (keys %deps_aux) { 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', + glite_version=>'emi.emi-version', glue_schema=>'emi.bdii.glue-schema', trustmanager=>'emi.java-security.trustmanager', trustmanager_axis=>'emi.java-security.trustmanager-axis', @@ -853,6 +892,30 @@ for my $ext (keys %deps_aux) { sl5_x86_64_gcc412EPEL => { 'myproxy-devel' => 'myproxy-devel.x86_64', }, + sl6_x86_64_gcc445EPEL => { + 'myproxy-devel' => 'myproxy-devel.x86_64', + }, + deb6_x86_64_gcc445 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { default => { @@ -871,6 +934,23 @@ for my $ext (keys %deps_aux) { gridsite=>'emi.gridsite.devel', jdk=>'java-devel', }, + deb6_x86_64_gcc445 => { + # mappings in ETICS project configuration + #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/], @@ -880,14 +960,16 @@ for my $ext (keys %deps_aux) { }, 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/ ], + 'lb.emi-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.emi-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/ ], }, 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/ ], @@ -896,18 +978,25 @@ for my $ext (keys %deps_aux) { }, ); +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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -924,6 +1013,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' }, }, @@ -941,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -983,10 +1081,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"); @@ -1040,7 +1151,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); @@ -1049,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1123,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1134,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1146,53 +1260,102 @@ 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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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"; } 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}{$_} ? $etics_externs{$platform}{$_} : $_; + my $eext = $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') { + + # 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; } - if (not $used) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; - $used = 1; - } - my $proj = 'externals'; for my $p (keys %etics_projects) { for $m (@{$etics_projects{$p}}) { @@ -1306,26 +1474,31 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; if ($edev) { if ($type eq 'B') { - $eext = $edev; # no runtime - change to devel pkg + # no runtime - change to devel pkg + $eext = $edev; } elsif ($type eq 'BR' or $type eq 'RB') { - print C "$proj|$edev = B\n"; # additional devel pkg + # additional devel pkg + if ($edev ne '-') { $output .= "$proj|$edev = B\n"; } } } - print C "$proj|$eext = $type\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) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; $used = 1; } - print C "$project{etics_name}|$project{etics_name}.$_ = $type\n"; + $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n"; } } + + if ($output) { + print C qq{ +[Platform-$platform:DynamicDependency] +$output}; + } } close C; @@ -1412,16 +1585,41 @@ sub reshuffle_platforms($$) { } for $_ (keys %blacklist) { - if (defined $data->{default}{$_}) { - $value = $data->{default}{$_}; - $data->{default}{$_} = '-'; -#print " deleted $_ from default\n"; + $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) { - next if $platform eq 'default'; - if (not defined $data->{$platform}{$_}) { - $data->{$platform}{$_} = $value; -#print " added $value to $platform\n" - } + delete $data->{$platform}{$_}; } } } @@ -1461,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.client/project/ChangeLog b/org.glite.lb.client/project/ChangeLog index 8427200..eb401e1 100644 --- a/org.glite.lb.client/project/ChangeLog +++ b/org.glite.lb.client/project/ChangeLog @@ -193,3 +193,8 @@ - Finalized ETICS+rpath+libtool mock build problem, workaround inside ETICS configurations now - Fixing rpath problem in mock builds +5.0.9-1 +- Examples linked explicitely with L&B common library +- Reduce memory consumption on query (SB #46437) +- Support Debian 6 build + diff --git a/org.glite.lb.client/project/version.properties b/org.glite.lb.client/project/version.properties index 66da56e..970d27e 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.8 +module.version=5.0.9 module.age=1 diff --git a/org.glite.lb.client/src/notification.c b/org.glite.lb.client/src/notification.c index a1427f6..b20663d 100644 --- a/org.glite.lb.client/src/notification.c +++ b/org.glite.lb.client/src/notification.c @@ -54,6 +54,7 @@ static const char* const request_headers[] = { NULL }; +static int zero = 0; @@ -94,58 +95,74 @@ static void get_name_and_port(const char *address, char **name, int *port) } -static int my_bind(edg_wll_Context ctx, const char *name, int port, int *fd) -{ - int sock; - int ret; - struct addrinfo *ai; - struct addrinfo hints; - char *portstr = NULL; - - asprintf(&portstr, "%d", port); - if (portstr == NULL) { - return edg_wll_SetError(ctx, ENOMEM, "my_bind(): ENOMEM converting port number"); - } +static int daemon_listen(edg_wll_Context ctx, const char *name, char *port, int *conn_out) { + struct addrinfo *ai; + struct addrinfo hints; + int conn; + int gaie; memset (&hints, '\0', sizeof (hints)); hints.ai_flags = AI_NUMERICHOST | AI_NUMERICSERV | AI_PASSIVE | AI_ADDRCONFIG; hints.ai_socktype = SOCK_STREAM; + hints.ai_family = AF_INET6; - ret = getaddrinfo (name, portstr, &hints, &ai); - free(portstr); - if (ret != 0) { - return edg_wll_SetError(ctx, EADDRNOTAVAIL, gai_strerror(ret)); + gaie = getaddrinfo (name, port, &hints, &ai); + if (gaie != 0 || ai == NULL) { + hints.ai_family = 0; + gaie = getaddrinfo (NULL, port, &hints, &ai); + } + + gaie = getaddrinfo (name, port, &hints, &ai); + if (gaie != 0) { + return edg_wll_SetError(ctx, EADDRNOTAVAIL, gai_strerror(gaie)); } if (ai == NULL) { return edg_wll_SetError(ctx, EADDRNOTAVAIL, "no result from getaddrinfo"); } - sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if (sock == -1) { + conn = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if ( conn < 0 ) { freeaddrinfo(ai); - return edg_wll_SetError(ctx, errno, "socket() failed"); + return edg_wll_SetError(ctx, errno, "socket() failed"); } + //setsockopt(conn, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); + if (ai->ai_family == AF_INET6) + setsockopt(conn, IPPROTO_IPV6, IPV6_V6ONLY, &zero, sizeof(zero)); -// setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); - ret = bind(sock, ai->ai_addr, ai->ai_addrlen); - if (ret == -1) { + if ( bind(conn, ai->ai_addr, ai->ai_addrlen) ) + { edg_wll_SetError(ctx, errno, "bind() failed"); - close(sock); + close(conn); freeaddrinfo(ai); return edg_wll_Error(ctx, NULL, NULL); } - freeaddrinfo(ai); - ret = listen(sock, CON_QUEUE); - if (ret == -1) { + if ( listen(conn, CON_QUEUE) ) { edg_wll_SetError(ctx, errno, "listen() failed"); - close(sock); + close(conn); return edg_wll_Error(ctx, NULL, NULL); } - *fd = sock; - - return edg_wll_Error(ctx,NULL,NULL); + freeaddrinfo(ai); + + *conn_out = conn; + return 0; +} + + +static int my_bind(edg_wll_Context ctx, const char *name, int port, int *fd) +{ + int ret; + char *portstr = NULL; + + asprintf(&portstr, "%d", port); + if (portstr == NULL) { + return edg_wll_SetError(ctx, ENOMEM, "my_bind(): ENOMEM converting port number"); + } + ret = daemon_listen(ctx, name, portstr, fd); + free(portstr); + + return ret; } diff --git a/org.glite.lb.common/Makefile b/org.glite.lb.common/Makefile index bddaa50..fe6edb2 100644 --- a/org.glite.lb.common/Makefile +++ b/org.glite.lb.common/Makefile @@ -222,8 +222,8 @@ olddoc: generate events.tex status.tex install: mkdir -p ${DESTDIR}${PREFIX}${prefix}/${libdir} - mkdir -p ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version}/examples - ${INSTALL} -m 644 ${lib_LTLIBRARIES} ${DESTDIR}${PREFIX}${prefix}/${libdir} + mkdir -p ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version} + ${INSTALL} -m 755 ${lib_LTLIBRARIES} ${DESTDIR}${PREFIX}${prefix}/${libdir} ${INSTALL} -m 644 ${top_srcdir}/LICENSE ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version} ( cd ${top_srcdir}/project && ${INSTALL} -m 644 ChangeLog package.description package.summary ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version} ) # cp -r C CPP ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version} @@ -239,7 +239,9 @@ install: clean: rm -rvf *.o *.lo .libs lib* *.c *.h *.dox C/ CPP/ test_parse il_test parse.cpp events.tex status.tex - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ %.o: %.c ${COMPILE} ${CFLAGS} -c $< diff --git a/org.glite.lb.common/configure b/org.glite.lb.common/configure index e2b3330..16595a2 100755 --- a/org.glite.lb.common/configure +++ b/org.glite.lb.common/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -253,9 +249,13 @@ $externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mys $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}{$_}; } @@ -271,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -354,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -476,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -497,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -508,18 +526,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 = ( @@ -531,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -555,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -606,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -689,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -701,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -711,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -729,6 +758,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 = ( @@ -738,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -747,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -758,6 +790,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 @@ -769,29 +802,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/ ], @@ -799,10 +841,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 => { @@ -812,79 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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/ ], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -901,6 +1013,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' }, }, @@ -918,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -960,10 +1081,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"); @@ -1017,7 +1151,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); @@ -1026,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1041,28 +1176,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; @@ -1098,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1109,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1121,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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; @@ -1344,6 +1569,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; @@ -1378,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.common/project/ChangeLog b/org.glite.lb.common/project/ChangeLog index d03a9de..00c3c4f 100644 --- a/org.glite.lb.common/project/ChangeLog +++ b/org.glite.lb.common/project/ChangeLog @@ -159,3 +159,6 @@ - Better detection of excessively long lines in HTTP requests. - Interpretting Messaging broker names and topic prefixes +8.0.7-1 +- Typo fix in error output + diff --git a/org.glite.lb.common/project/version.properties b/org.glite.lb.common/project/version.properties index edc2936..4d7895b 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.6 +module.version=8.0.7 module.age=1 diff --git a/org.glite.lb.doc/Makefile b/org.glite.lb.doc/Makefile index 0051699..1bd193b 100644 --- a/org.glite.lb.doc/Makefile +++ b/org.glite.lb.doc/Makefile @@ -78,7 +78,9 @@ install: clean: rm -rvf LBUG* LBAG* LBDG* LBTP* events.tex status.tex ver.tex comment* - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ # dependencies: @@ -132,4 +134,4 @@ LBTG.pdf: ${COMMON} \ LBTG-Abstract.tex \ LBAG-Troubleshooting.tex -.PHONY: all clean doc +.PHONY: default all generate doc stage check install clean distclean doc diff --git a/org.glite.lb.doc/configure b/org.glite.lb.doc/configure index 2e34da2..16595a2 100755 --- a/org.glite.lb.doc/configure +++ b/org.glite.lb.doc/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -179,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -208,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -472,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -493,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -527,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -551,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -602,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -685,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -697,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -707,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -725,6 +758,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 = ( @@ -734,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -743,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -769,6 +805,7 @@ for my $ext (keys %deps_aux) { 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', @@ -791,7 +828,7 @@ for my $ext (keys %deps_aux) { }, }, 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 => { @@ -825,8 +862,9 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => 'emi-', }, tag_prefix => { %cvs_tag_prefix }, flavours => '--thrflavour= --nothrflavour=', @@ -835,12 +873,13 @@ for my $ext (keys %deps_aux) { 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', + glite_version=>'emi.emi-version', glue_schema=>'emi.bdii.glue-schema', trustmanager=>'emi.java-security.trustmanager', trustmanager_axis=>'emi.java-security.trustmanager-axis', @@ -853,6 +892,30 @@ for my $ext (keys %deps_aux) { sl5_x86_64_gcc412EPEL => { 'myproxy-devel' => 'myproxy-devel.x86_64', }, + sl6_x86_64_gcc445EPEL => { + 'myproxy-devel' => 'myproxy-devel.x86_64', + }, + deb6_x86_64_gcc445 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { default => { @@ -871,6 +934,23 @@ for my $ext (keys %deps_aux) { gridsite=>'emi.gridsite.devel', jdk=>'java-devel', }, + deb6_x86_64_gcc445 => { + # mappings in ETICS project configuration + #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/], @@ -880,14 +960,16 @@ for my $ext (keys %deps_aux) { }, 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/ ], + 'lb.emi-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.emi-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/ ], }, 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/ ], @@ -896,18 +978,25 @@ for my $ext (keys %deps_aux) { }, ); +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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -924,6 +1013,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' }, }, @@ -941,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -983,10 +1081,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"); @@ -1040,7 +1151,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); @@ -1049,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1123,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1134,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1146,53 +1260,102 @@ 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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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"; } 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}{$_} ? $etics_externs{$platform}{$_} : $_; + my $eext = $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') { + + # 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; } - if (not $used) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; - $used = 1; - } - my $proj = 'externals'; for my $p (keys %etics_projects) { for $m (@{$etics_projects{$p}}) { @@ -1306,26 +1474,31 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; if ($edev) { if ($type eq 'B') { - $eext = $edev; # no runtime - change to devel pkg + # no runtime - change to devel pkg + $eext = $edev; } elsif ($type eq 'BR' or $type eq 'RB') { - print C "$proj|$edev = B\n"; # additional devel pkg + # additional devel pkg + if ($edev ne '-') { $output .= "$proj|$edev = B\n"; } } } - print C "$proj|$eext = $type\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) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; $used = 1; } - print C "$project{etics_name}|$project{etics_name}.$_ = $type\n"; + $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n"; } } + + if ($output) { + print C qq{ +[Platform-$platform:DynamicDependency] +$output}; + } } close C; @@ -1412,16 +1585,41 @@ sub reshuffle_platforms($$) { } for $_ (keys %blacklist) { - if (defined $data->{default}{$_}) { - $value = $data->{default}{$_}; - $data->{default}{$_} = '-'; -#print " deleted $_ from default\n"; + $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) { - next if $platform eq 'default'; - if (not defined $data->{$platform}{$_}) { - $data->{$platform}{$_} = $value; -#print " added $value to $platform\n" - } + delete $data->{$platform}{$_}; } } } @@ -1461,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.doc/project/ChangeLog b/org.glite.lb.doc/project/ChangeLog index 3f0802c..9310af7 100644 --- a/org.glite.lb.doc/project/ChangeLog +++ b/org.glite.lb.doc/project/ChangeLog @@ -136,3 +136,14 @@ 1.2.9-1 - New FAQ on WMS and LB_SUPER_USERS +1.2.10-1 +- Syntax fixed to work in both SL & Deb +- New description of the Nagios probe +- Typo fixes +- Version info updated +- New test for the Nagios probe +- TestPlan sections reshuffled to match intended structure +- More on messaging and related topics +- New FAQ entry (Duplicate entry ... for key 1) +- Architecture images updated - MSG added into the notification part + diff --git a/org.glite.lb.doc/project/version.properties b/org.glite.lb.doc/project/version.properties index edba09e..fe9a406 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.9 +module.version=1.2.10 module.age=1 diff --git a/org.glite.lb.doc/src/LBAG-Installation.tex b/org.glite.lb.doc/src/LBAG-Installation.tex index 76bb361..aa5c573 100644 --- a/org.glite.lb.doc/src/LBAG-Installation.tex +++ b/org.glite.lb.doc/src/LBAG-Installation.tex @@ -55,6 +55,7 @@ glite-lb-state-machine & state machine and LB plugin for Job Provenance \\ glite-lb-utils & auxiliary utilities \\ glite-lb-ws-interface & web service interface \\ glite-lb-yaim & YAIM initialization scripts for \LB (since \LBver{2.1}) \\ +glite-lb-nagios-plugins & Nagios plugin that checks the \LB server (since \LBver{3.1}) \\ \end{tabularx} diff --git a/org.glite.lb.doc/src/LBTP-Tests.tex b/org.glite.lb.doc/src/LBTP-Tests.tex index a7cba80..38b18f5 100644 --- a/org.glite.lb.doc/src/LBTP-Tests.tex +++ b/org.glite.lb.doc/src/LBTP-Tests.tex @@ -436,23 +436,25 @@ artificially. \item Purge all data on the server with \path{glite-lb-purge} \item Log two sets of jobs, separated with delay of at least 60s so that the sets can be distinguished from each other. -\item \label{purgel} +\item \label{purge1} Using \code{edg\_wll\_JobLog} retrieve events of all the jobs \item \label{purge2} Purge the first set of jobs (by specifying appropriate timestamp), letting the server dump the purged events. \item \label{purge3} Purge the other set of jobs, also dumping the events. \item \label{purge4} Run purge once more. +\item Check if purged jobs turned into zombies. +\item In addition, check if a \emph{cron} task exists to run the \emph{purge} operation regularly and that it logs its output correctly. \end{enumerate} \how\ \ctblb{lb-test-purge.pl} -\note\ The test includes artificial delays. Takes approx. 2\,minutes to finish. +\note\ The test includes artificial delays. Takes approx. 3.5\,minutes to finish. -\note\ This test is destructive to your data. You need to run it with the \texttt{--i-want-to-purge} option to confirm your intention. Also, you need to provide the \LB server \texttt{address:port} explicitly as an argument to rule out any confusion. +\note\ This test is destructive to your data. You need to run it with the \texttt{-{}-i-want-to-purge} option to confirm your intention. Also, you need to provide the \LB server \texttt{address:port} explicitly as an argument to rule out any confusion. -\result\ The data dumped in steps \ref{purge1}, \ref{purge2} should be the -same as retrieved in~\ref{purgel}. The final purge invocation should +\result\ Data dumped in steps \ref{purge1} and \ref{purge2} should be the +same as retrieved in~\ref{purge1}. The final purge invocation should do nothing (i.e. nothing was left in the database). % test_purge diff --git a/org.glite.lb.doc/src/faq.tex b/org.glite.lb.doc/src/faq.tex index b8e5d33..a9a7927 100644 --- a/org.glite.lb.doc/src/faq.tex +++ b/org.glite.lb.doc/src/faq.tex @@ -51,7 +51,7 @@ Modify your \texttt{siteinfo.def}, specifying the DN of your WMS server in YAIM 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. +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 preferable. \subsubsection{For \LBver {2.1 or higher}, without YAIM} @@ -81,3 +81,16 @@ action "GET_STATISTICS" { } \end{verbatim} +\subsection{\LB Server Throws ``Duplicate entry~\dots~for key~1'' Errors} + +The \LB server will occasionally report errors through \emph{syslog} saying, + +\begin{verbatim} +ERROR CONTROL - ... : File exists (Duplicate entry '...' for key 1) +\end{verbatim} + +These error messages are caused by certain portions of code that take care of storing database records for keys, which may or may not already exist in the database, and do so by trying to insert the record first (hence the key violation) and modify the record if the insert fails. This has the unfortunate side effect of the unsuccessful insert being reported as an \texttt{ERROR} in the logging output. + +Unless you are experiencing trouble with the specific data entity\footnote{Usually a \emph{Job~ID}} referenced in the error message, it is safe to disregard. + + diff --git a/org.glite.lb.doc/src/versions.tex b/org.glite.lb.doc/src/versions.tex index 9cdbe84..7d71ea9 100644 --- a/org.glite.lb.doc/src/versions.tex +++ b/org.glite.lb.doc/src/versions.tex @@ -47,6 +47,7 @@ The complete \LB Documentation consists of the following parts: \begin{itemize} %\item \LBver{x.x}: included in the EMI-3 Monte Bianco release %\item \LBver{x.x}: included in the EMI-2 Matterhorn release +\item \LBver{3.1}: an update for the EMI-1 Kebnekaise release \item \LBver{3.0}: included in the EMI-1 Kebnekaise release \item \LBver{2.1}: replacement for \LBver{2.0} in gLite 3.2, \item \LBver{2.0}: current stable version, in production as part of gLite 3.2, diff --git a/org.glite.lb.emi-lb/Makefile b/org.glite.lb.emi-lb/Makefile index 13a1e41..c035bc2 100644 --- a/org.glite.lb.emi-lb/Makefile +++ b/org.glite.lb.emi-lb/Makefile @@ -1,6 +1,6 @@ top_srcdir=.. stagedir=. -package=glite-lb-yaim +package=glite-lb-emi-lb version=0.0.0 PREFIX=/opt/glite prefix= @@ -18,6 +18,8 @@ stage: check: clean: - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ -.PHONY: default all check install stage clean +distclean: + rm -rvf Makefile.inc *.spec debian/ + +.PHONY: default all check install stage clean distclean diff --git a/org.glite.lb.emi-lb/configure b/org.glite.lb.emi-lb/configure index 96cd3e0..16595a2 100755 --- a/org.glite.lb.emi-lb/configure +++ b/org.glite.lb.emi-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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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 = ( @@ -181,13 +175,19 @@ my %deps_type; my %buildroot; my (%etics_externs, %etics_projects); +# +# modules of the subsystems +# +# 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 glite-LB 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], - 'px' => [ qw/proxyrenewal glite-PX myproxy-yaim/ ], + 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -211,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -232,7 +233,6 @@ my @keeparg = @ARGV; GetOptions @opts or die "Errors parsing command line\n"; $prefix=~s/\/$//; -$stagedir=~s/\/$// if ($stagedir); $root=~s/\/$//; $sysroot=~s/\/$//; if (not $sysconfdir) { $sysconfdir = $prefix eq '/usr' ? '/etc' : "$prefix/etc"; } @@ -244,10 +244,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}{$_}; } @@ -263,6 +271,13 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} +for $_ (keys %{$project{modules}}) { + push @{$lbmodules{$_}},@{$project{modules}{$_}}; +} if ($help) { usage(); exit 0; } @@ -302,6 +317,7 @@ if (!$en && !$dis) { for (@nodes) { $enable_nodes{$_} = 1 if ($default_nodes{$_} for (keys %enable_nodes) { delete $enable_nodes{$_} unless $enable_nodes{$_}; } $stagedir = $root unless $stagedir; +$stagedir=~s/\/$// if ($stagedir); if ($mode eq 'build') { for my $ext (keys %externs) { if (defined $externs{$ext} and defined $externs{$ext}{withprefix}) { $externs{$ext}{prefix} = $externs{$ext}{withprefix}; } @@ -342,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -415,7 +438,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($_); @@ -438,11 +463,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; @@ -460,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -481,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -492,18 +526,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 = ( @@ -515,10 +549,11 @@ 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/ ], - 'lb.state-machine' => [ qw/classads 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/ ], - 'lb.ws-interface' => [], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -530,8 +565,8 @@ BEGIN{ 'lbjp-common.jp-interface' => [ qw/cppunit:B log4c:B libtool:B/ ], 'lbjp-common.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B libtool:B/ ], 'lbjp-common.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares:B gsoap gsoapxx libtool:B/ ], - 'jobid.api-c' => [ qw/cppunit:B libtool:B/ ], - 'jobid.api-cpp' => [ qw/cppunit:B/ ], + 'jobid.api-c' => [ qw/cppunit:B libtool:B openssl: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' => [], @@ -539,17 +574,19 @@ 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' => [], - 'gridsite.slashgrid' => [ qw/curl:R fuse-libs:R fuse:R/], + 'gridsite.devel' => [ qw// ], + '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// ], - 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ], + '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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -590,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -601,7 +643,7 @@ for my $jar (keys %need_jars) { lbjp-common.jp-interface jobid.api-c lbjp-common.trio lbjp-common.maildir - lb.client lb.state-machine + lb.client lb.state-machine lb.types:B / ], 'lb.ws-test' => [ qw/lbjp-common.gsoap-plugin lb.ws-interface/ ], 'lb.ws-interface' => [ qw/lb.types:B/ ], @@ -616,6 +658,11 @@ for my $jar (keys %need_jars) { lb.ws-test:R lb.harvester:R lb.yaim:R lb.client-java:R lb.logger-msg:R / ], + 'lb.emi-lb' => [ qw/ + lb.logger:R lb.server:R lb.utils:R lb.doc:R + lb.ws-test:R lb.harvester:R lb.yaim:R lb.client-java:R + lb.logger-msg:R + / ], 'lbjp-common.db' => [ qw/lbjp-common.trio lbjp-common.log/ ], 'lbjp-common.maildir' => [ qw// ], 'lbjp-common.log' => [ qw// ], @@ -654,19 +701,22 @@ for my $jar (keys %need_jars) { 'jp.ws-interface' => [ qw// ], 'gridsite.core' => [ qw// ], - 'gridsite.commands' => [ qw/gridsite.shared:R/ ], - 'gridsite.apache' => [ qw/gridsite.shared:R/ ], - 'gridsite.shared' => [ qw// ], - 'gridsite.devel' => [ qw/gridsite.shared:R/ ], - 'gridsite.slashgrid' => [ qw/gridsite.shared:R/], - 'gridsite.services' => [ qw/gridsite.shared:R/ ], - 'gridsite.service-clients' => [ qw/gridsite.shared:R/ ], - 'gridsite.gsexec' => [ qw// ], + 'gridsite.commands' => [ qw/gridsite.core:B gridsite.shared:R/ ], + 'gridsite.apache' => [ qw/gridsite.core:B gridsite.shared:R/ ], + 'gridsite.shared' => [ qw/gridsite.core:B / ], + 'gridsite.devel' => [ qw/gridsite.core:B gridsite.shared:R/ ], + 'gridsite.slashgrid' => [ qw/gridsite.core:B gridsite.shared:R/], + 'gridsite.services' => [ qw/gridsite.core:B gridsite.shared:R/ ], + 'gridsite.service-clients' => [ qw/gridsite.core:B gridsite.shared:R/ ], + 'gridsite.gsexec' => [ qw/gridsite.core:B/ ], 'px.proxyrenewal' => [ qw// ], 'px.glite-PX' => [qw/px.myproxy-yaim:R/], + 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -679,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -689,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -699,8 +750,15 @@ for my $ext (keys %deps_aux) { 'px.myproxy-config' => [ qq/myproxy-config/ ], # in myproxy-config.spec 'lbjp-common.gss' => [ qq/glite-security-gss/ ], 'lbjp-common.gsoap-plugin' => [ qq/glite-security-gsoap-plugin/ ], - 'lb.glite-LB' => [ qq/glite-LB/ ], - 'px.glite-PX' => [ qq/glite-PX/ ], +); + +%conflicts = ( +); + +%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 = ( @@ -710,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -719,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -730,8 +790,10 @@ 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 %projects = ( glite => { etics_name => 'org.glite', @@ -740,36 +802,57 @@ 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/ ], - 'lb.yaim' => [ qw/yaim_core:R/ ], + 'lb.yaim' => [ qw/yaim_core:R perl-LDAP:R/ ], 'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/], 'px.myproxy-yaim' => [ qw/yaim_core:R/ ], }, + supported_platforms => { + sl5_x86_64_gcc412 => 1, + sl5_ia32_gcc412 => 1, + deb5_x86_64_gcc432 => 1, + deb5_ia32_gcc432 => 1, + slc4_x86_64_gcc346 => 1, + slc4_ia32_gcc346 => 1, + }, + modules => { + 'lb' => [ qw/glite-LB/ ], + 'px' => [ qw/glite-PX/ ], + }, }, emi => { @@ -779,74 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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_release=>'emi.bdii.glite-info-provider-release', - gip_service=>'emi.bdii.glite-info-provider-service', - bdii=>'emi.bdii.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', + 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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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', + 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 => { + # mappings in ETICS project configuration + #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_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.yaim' => [ qw/yaim_core:R yaim_bdii:R/ ], - 'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -863,6 +1013,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' }, }, @@ -880,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -922,10 +1081,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"); @@ -979,7 +1151,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); @@ -988,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1003,28 +1176,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; @@ -1060,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1071,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1083,47 +1260,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 \${moduleName}/.git && (cd \${moduleName}; git pull) || git clone http://scientific.zcu.cz/git/jra1mw.git \${moduleName})"; - #$cmd{checkout} .= " && (cd \${moduleName}; git checkout ${tag})" unless ($conftag =~ /HEAD/); - $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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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} = "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}/$cvs_prefix{$subsys}.$subsys.$module/RPMTMP/RPMS -package.SRPMSLocation = \${moduleDir}/$cvs_prefix{$subsys}.$subsys.$module/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"; } } - 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) { + $used = 1; + } + $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n"; + } + } + + if ($output) { + print C qq{ +[Platform-$platform:DynamicDependency] +$output}; + } } close C; @@ -1297,6 +1569,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; @@ -1331,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.harvester/Makefile b/org.glite.lb.harvester/Makefile index 0bf9435..8c94ae3 100644 --- a/org.glite.lb.harvester/Makefile +++ b/org.glite.lb.harvester/Makefile @@ -84,7 +84,9 @@ install: compile clean: rm -rfv *.o *.lo *.loT .libs/ manpage.links manpage.refs rm -rvf harvester harvester-dbg glite-lb-harvester.* startup - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ harvester: harvester.o ${LINK} -o $@ $+ ${LIBS} @@ -102,4 +104,4 @@ harvester-dbg.o: harvester.c docbook2man $< mv $(@:.8=.1) $@ -.PHONY: default all compile debug check doc stage install clean +.PHONY: default all compile debug check doc stage install clean distclean diff --git a/org.glite.lb.harvester/config/startup b/org.glite.lb.harvester/config/startup index 2768571..44462cb 100755 --- a/org.glite.lb.harvester/config/startup +++ b/org.glite.lb.harvester/config/startup @@ -1,4 +1,12 @@ #!/bin/sh +### BEGIN INIT INFO +# Provides: glite-lb-harvester +# Description: L&B harvester deamon +# Required-Start: $remote_fs $network $syslog +# Required-Stop: $remote_fs $network $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +### END INIT INFO # chkconfig: 345 75 25 # # Copyright (c) Members of the EGEE Collaboration. 2004-2010. @@ -21,6 +29,7 @@ GLITE_LB_LOCATION=${GLITE_LB_LOCATION:-'@glite_prefix@'} GLITE_LB_LOCATION_ETC=${GLITE_LB_LOCATION_ETC:-'@glite_etc@'} GLITE_LB_LOCATION_VAR=${GLITE_LB_LOCATION_VAR:-'@glite_var@'} +[ -f /etc/profile.d/grid-env.sh ] && . /etc/profile.d/grid-env.sh [ -f /etc/glite.conf ] && . /etc/glite.conf [ -f $GLITE_LB_LOCATION_ETC/glite-wms.conf ] && . $GLITE_LB_LOCATION_ETC/glite-wms.conf @@ -185,7 +194,7 @@ cleanup() case x$1 in xstart) start;; xstop) stop;; - xrestart) stop; start;; + xrestart|xforce-reload) stop; start;; xstatus) status;; xcleanup) cleanup;; x*) echo usage: $0 start,stop,restart,status,cleanup >&2 diff --git a/org.glite.lb.harvester/configure b/org.glite.lb.harvester/configure index a67786b..16595a2 100755 --- a/org.glite.lb.harvester/configure +++ b/org.glite.lb.harvester/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -248,10 +244,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}{$_}; } @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -423,7 +438,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 +463,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; @@ -468,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -489,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -500,18 +526,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,10 +549,11 @@ 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.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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -547,17 +574,19 @@ 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// ], - 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ], + '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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -598,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -681,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -693,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -703,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -716,10 +753,12 @@ 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/ ], + 'lb.nagios' => [ qq/glite-lb-nagios-plugins/ ], ); %cvs_prefix = ( @@ -729,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -738,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -749,6 +790,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 +802,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/ ], @@ -790,10 +841,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 => { @@ -803,80 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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_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', + 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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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_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.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -893,6 +1013,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' }, }, @@ -910,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -952,10 +1081,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"); @@ -1009,7 +1151,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); @@ -1018,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1033,28 +1176,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; @@ -1090,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1101,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1113,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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}/src/tgz - make $prefix $flags rpm && \ - cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz"; + $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; @@ -1333,6 +1569,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; @@ -1367,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.harvester/project/.pre b/org.glite.lb.harvester/project/.pre new file mode 100644 index 0000000..573de45 --- /dev/null +++ b/org.glite.lb.harvester/project/.pre @@ -0,0 +1,7 @@ +getent group glite >/dev/null || groupadd -r glite +getent passwd glite >/dev/null || useradd -r -g glite -d /var/glite -c "gLite user" glite + +mkdir -p /var/glite 2>/dev/null || true +chown glite:glite /var/glite + +exit 0 diff --git a/org.glite.lb.harvester/project/ChangeLog b/org.glite.lb.harvester/project/ChangeLog index fc9229f..9206d62 100644 --- a/org.glite.lb.harvester/project/ChangeLog +++ b/org.glite.lb.harvester/project/ChangeLog @@ -100,3 +100,6 @@ 1.1.6-3 - Module rebuilt +1.1.7-1 +- LSB-compliant init scripts + diff --git a/org.glite.lb.harvester/project/version.properties b/org.glite.lb.harvester/project/version.properties index 0ac3509..5290b42 100644 --- a/org.glite.lb.harvester/project/version.properties +++ b/org.glite.lb.harvester/project/version.properties @@ -1,2 +1,2 @@ -module.version=1.1.6 -module.age=3 +module.version=1.1.7 +module.age=1 diff --git a/org.glite.lb.harvester/src/harvester.c b/org.glite.lb.harvester/src/harvester.c index f755a72..b23b447 100644 --- a/org.glite.lb.harvester/src/harvester.c +++ b/org.glite.lb.harvester/src/harvester.c @@ -77,6 +77,8 @@ limitations under the License. #define RTM_SUMMARY_JOBS 100 +#define CON_QUEUE 10 + #define RTM_DB_TABLE_JOBS "jobs" #define RTM_DB_TABLE_LBS "lb20" #define DBPAR(N) ("$" (N)) @@ -1629,6 +1631,69 @@ void db_free_notifs() { } +static int daemon_listen(thread_t *t, const char *name, char *port, int *conn_out) { + struct addrinfo *ai; + struct addrinfo hints; + char pretty_addr[256]; + int conn; + int gaie; + const int zero = 0; + const int one = 1; + + memset (&hints, '\0', sizeof (hints)); + hints.ai_flags = AI_NUMERICSERV | AI_PASSIVE | AI_ADDRCONFIG; + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = AF_INET6; + + gaie = getaddrinfo (name, port, &hints, &ai); + if (gaie != 0 || ai == NULL) { + hints.ai_family = 0; + gaie = getaddrinfo (NULL, port, &hints, &ai); + } + + gaie = getaddrinfo (name, port, &hints, &ai); + if (gaie != 0) { + lprintf(t, ERR, "getaddrinfo: %s", gai_strerror (gaie)); + return 1; + } + if (ai == NULL) { + lprintf(t, ERR, "getaddrinfo: no result"); + return 1; + } + + conn = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if ( conn < 0 ) { + lprintf(t, ERR, "socket(): %s", strerror(errno)); + freeaddrinfo(ai); + return 1; + } + lprintf(t, DBG, "socket created: %d", conn); + setsockopt(conn, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); + if (ai->ai_family == AF_INET6) + setsockopt(conn, IPPROTO_IPV6, IPV6_V6ONLY, &zero, sizeof(zero)); + + if ( bind(conn, ai->ai_addr, ai->ai_addrlen) ) + { + lprintf(t, ERR, "bind(%s): %s", port, strerror(errno)); + close(conn); + freeaddrinfo(ai); + return 1; + } + + if ( listen(conn, CON_QUEUE) ) { + lprintf(t, ERR, "listen(): %s", strerror(errno)); + close(conn); + freeaddrinfo(ai); + return 1; + } + + freeaddrinfo(ai); + + *conn_out = conn; + return 0; +} + + void *notify_thread(void *thread_data) { int i, j, err; time_t now, bootstrap; @@ -1641,10 +1706,7 @@ void *notify_thread(void *thread_data) { thread_t *t = (thread_t *)thread_data; edg_wll_Context ctx = NULL; int flags = 0; - struct addrinfo *ai = NULL; - struct addrinfo hints; char *portstr; - const int one = 1; lprintf(t, DBG, "thread started"); @@ -1659,41 +1721,13 @@ void *notify_thread(void *thread_data) { if (config.key) edg_wll_SetParam(ctx, EDG_WLL_PARAM_X509_KEY, config.key); // listen - memset(&hints, 0, sizeof hints); - hints.ai_flags = AI_NUMERICHOST | AI_NUMERICSERV | AI_PASSIVE | AI_ADDRCONFIG; - hints.ai_socktype = SOCK_STREAM; asprintf(&portstr, "%d", listen_port ? (listen_port + t->id) : 0); if (!portstr) { lprintf(t, ERR, "can't convert port number: ENOMEM"); goto exit; } - err = getaddrinfo(NULL, portstr, &hints, &ai); - free(portstr); portstr = NULL; - if (err != 0) { - lprintf(t, ERR, "getaddrinfo() failed: %s", gai_strerror(err)); - goto exit; - } - if (!ai) { - lprintf(t, ERR, "no result from getaddrinfo()"); + if (daemon_listen(t, NULL, portstr, &sock) != 0) goto exit; - } - if ((sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol)) < 0) { - lprintf(t, ERR, "can't create socket: %s", strerror(errno)); - goto exit; - } - lprintf(t, DBG, "socket created: %d", sock); - - setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); - - if (bind(sock, ai->ai_addr, ai->ai_addrlen) != 0) { - lprintf(t, ERR, "can't bind socket: %s, port = %d", strerror(errno), listen_port ? listen_port + t->id : -1); - goto exit; - } - if (listen(sock, 10) != 0) { - lprintf(t, ERR, "can't listen on socket: %s", strerror(errno)); - goto exit; - } - freeaddrinfo(ai); ai = NULL; #ifdef WITH_LBU_DB if (db_init(t, &t->dbctx) == 0) @@ -1706,7 +1740,7 @@ void *notify_thread(void *thread_data) { "SET ce=$1, queue=$2, ui=$3, state=$4, state_entered=$5, rtm_timestamp=$6, active=$7, state_changed=$8, registered=$9 WHERE jobid=$10 AND lb=$11", &t->updatecmd) != 0 || glite_lbu_PrepareStmt(t->dbctx, "UPDATE " DBAMP RTM_DB_TABLE_JOBS DBAMP " " "SET vo=$1 WHERE jobid=$2 AND lb=$3", - &t->updatecmd_vo) != 0 || glite_lbu_PrepareStmt(t->dbctx, "UPDATE " DBAMP RTM_DB_TABLE_LBS DBAMP " " + &t->updatecmd_vo) != 0 || glite_lbu_PrepareStmt(t->dbctx, "UPDATE " DBAMP RTM_DB_TABLE_JOBS DBAMP " " "SET rb=$1 WHERE jobid=$2 AND lb=$3", &t->updatecmd_rb) != 0 || glite_lbu_PrepareStmt(t->dbctx, "UPDATE " DBAMP RTM_DB_TABLE_LBS DBAMP " " "SET monitored=$1 WHERE ip=$2", @@ -2032,7 +2066,6 @@ cont: exit: if (sock != -1) close(sock); - if (ai) freeaddrinfo(ai); // for (i = 0; conditions[i]; i++) free(conditions[i]); if (t->nservers && quit != RTM_QUIT_PRESERVE && quit != RTM_QUIT_RELOAD) { for (i = 0; i < t->nservers; i++) { diff --git a/org.glite.lb.logger-msg/Makefile b/org.glite.lb.logger-msg/Makefile index 8e7cc12..206eee1 100644 --- a/org.glite.lb.logger-msg/Makefile +++ b/org.glite.lb.logger-msg/Makefile @@ -99,7 +99,6 @@ check: install: -mkdir -p ${DESTDIR}${PREFIX}${prefix}/${libdir}/glite-lb/examples -mkdir -p ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version} - -mkdir -p ${DESTDIR}${PREFIX}${prefix}/etc/glite-lb -mkdir -p ${DESTDIR}${PREFIX}${prefix}/share/glite-lb -mkdir -p ${DESTDIR}${PREFIX}${sysconfdir}/glite-lb ${INSTALL} -m 644 ${top_srcdir}/LICENSE ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version} @@ -115,4 +114,6 @@ install: clean: rm -rvf .libs/ *.o *.lo ${PLUGIN_LIB} ${MAN_GZ} ${EXAMPLES} - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ diff --git a/org.glite.lb.logger-msg/configure b/org.glite.lb.logger-msg/configure index a67786b..16595a2 100755 --- a/org.glite.lb.logger-msg/configure +++ b/org.glite.lb.logger-msg/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -248,10 +244,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}{$_}; } @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -423,7 +438,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 +463,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; @@ -468,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -489,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -500,18 +526,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,10 +549,11 @@ 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.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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -547,17 +574,19 @@ 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// ], - 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ], + '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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -598,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -681,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -693,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -703,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -716,10 +753,12 @@ 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/ ], + 'lb.nagios' => [ qq/glite-lb-nagios-plugins/ ], ); %cvs_prefix = ( @@ -729,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -738,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -749,6 +790,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 +802,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/ ], @@ -790,10 +841,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 => { @@ -803,80 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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_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', + 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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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_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.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -893,6 +1013,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' }, }, @@ -910,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -952,10 +1081,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"); @@ -1009,7 +1151,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); @@ -1018,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1033,28 +1176,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; @@ -1090,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1101,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1113,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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}/src/tgz - make $prefix $flags rpm && \ - cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz"; + $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; @@ -1333,6 +1569,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; @@ -1367,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.logger-msg/project/ChangeLog b/org.glite.lb.logger-msg/project/ChangeLog index d53fa6d..d90a2fe 100644 --- a/org.glite.lb.logger-msg/project/ChangeLog +++ b/org.glite.lb.logger-msg/project/ChangeLog @@ -29,3 +29,6 @@ 1.0.6-1 - cmsclient example extended +1.0.7-1 +- Support build with gcc 4.4.4 (SL6) + diff --git a/org.glite.lb.logger-msg/project/package.description b/org.glite.lb.logger-msg/project/package.description index f6dd3e3..f2ca5cf 100644 --- a/org.glite.lb.logger-msg/project/package.description +++ b/org.glite.lb.logger-msg/project/package.description @@ -1 +1 @@ -Plugin for delivering L&B notification messages into the messaging infrustructure. +Plugin for delivering L&B notification messages into the messaging infrastructure. diff --git a/org.glite.lb.logger-msg/project/version.properties b/org.glite.lb.logger-msg/project/version.properties index c861a22..c866296 100644 --- a/org.glite.lb.logger-msg/project/version.properties +++ b/org.glite.lb.logger-msg/project/version.properties @@ -1,3 +1,3 @@ # $Header$ -module.version=1.0.6 +module.version=1.0.7 module.age=1 diff --git a/org.glite.lb.logger/Makefile b/org.glite.lb.logger/Makefile index b9c7c4b..352c0e6 100644 --- a/org.glite.lb.logger/Makefile +++ b/org.glite.lb.logger/Makefile @@ -3,7 +3,7 @@ top_srcdir=.. stagedir=. globalprefix=glite lbprefix=lb -package=glite-lb-client +package=glite-lb-logger version=0.0.0 PREFIX=/opt/glite prefix= @@ -147,19 +147,19 @@ glite-lb-logd-perf-nofile: ${LOGD_NOBJS} ${LINK} -o $@ ${LOGD_NOBJS} ${COMMON_LIB}${default_nothrflavour} ${EXT_LIB} glite-lb-interlogd: ${INTERLOG_OBJS} - ${LINK} -o $@ ${INTERLOG_OBJS} ${COMMON_LIB}${default_thrflavour} ${EXT_LIB} + ${LINK} -o $@ ${INTERLOG_OBJS} ${COMMON_LIB}${default_thrflavour} ${EXT_LIB} -lpthread glite-lb-notif-interlogd: ${INTERLOG_NOTIF_OBJS} - ${LINK} -export-dynamic -o $@ ${INTERLOG_NOTIF_OBJS} ${COMMON_LIB}${default_thrflavour} ${EXT_LIB} + ${LINK} -export-dynamic -o $@ ${INTERLOG_NOTIF_OBJS} ${COMMON_LIB}${default_thrflavour} ${EXT_LIB} -lpthread glite-lb-interlogd-perf: ${INTERLOG_PERF_OBJS} - ${LINK} -o $@ ${INTERLOG_PERF_OBJS} ${COMMON_LIB}${default_thrflavour} ${EXT_LIB} + ${LINK} -o $@ ${INTERLOG_PERF_OBJS} ${COMMON_LIB}${default_thrflavour} ${EXT_LIB} -lpthread glite-lb-interlogd-perf-empty: ${INTERLOG_EMPTY_OBJS} - ${LINK} -o $@ ${INTERLOG_EMPTY_OBJS} ${COMMON_LIB}${default_thrflavour} ${EXT_LIB} + ${LINK} -o $@ ${INTERLOG_EMPTY_OBJS} ${COMMON_LIB}${default_thrflavour} ${EXT_LIB} -lpthread glite-lb-ws-interlogd: ${INTERLOG_WS_OBJS} - ${LINK} -o $@ ${INTERLOG_WS_OBJS} ${COMMON_LIB}${default_thrflavour} ${EXT_LIB} + ${LINK} -o $@ ${INTERLOG_WS_OBJS} ${COMMON_LIB}${default_thrflavour} ${EXT_LIB} -lpthread #glite-lb-interlogd-perf-inline-empty: ${INTERLOG_INLINE_EMPTY_OBJS} # ${LINK} -o $@ ${INTERLOG_INLINE_EMPTY_OBJS} \ @@ -244,4 +244,6 @@ il_test.o IlTestBase.o server_msgTest.o event_queueTest.o input_queue_socketTest clean: rm -rvf .libs/ *.o *.lo *.no ${LOGD} ${INTERLOGD} ${NOTIF_INTERLOGD} ${MAN_GZ} startup - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ diff --git a/org.glite.lb.logger/config/startup b/org.glite.lb.logger/config/startup index 9d7285f..2058325 100755 --- a/org.glite.lb.logger/config/startup +++ b/org.glite.lb.logger/config/startup @@ -1,4 +1,12 @@ #!/bin/sh +### BEGIN INIT INFO +# Provides: glite-lb-locallogger +# Description: L&B local logger and interlogger deamons +# Required-Start: $remote_fs $network $syslog +# Required-Stop: $remote_fs $network $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +### END INIT INFO # chkconfig: 345 76 24 # # Copyright (c) Members of the EGEE Collaboration. 2004-2010. @@ -21,6 +29,7 @@ GLITE_LB_LOCATION=${GLITE_LB_LOCATION:-'@glite_prefix@'} GLITE_LB_LOCATION_ETC=${GLITE_LB_LOCATION_ETC:-'@glite_etc@'} GLITE_LB_LOCATION_VAR=${GLITE_LB_LOCATION_VAR:-'@glite_var@'} +[ -f /etc/profile.d/grid-env.sh ] && . /etc/profile.d/grid-env.sh [ -f /etc/glite.conf ] && . /etc/glite.conf [ -f $GLITE_LB_LOCATION_ETC/glite-wms.conf ] && . $GLITE_LB_LOCATION_ETC/glite-wms.conf @@ -177,7 +186,7 @@ status() case x$1 in xstart) start;; xstop) stop;; - xrestart) stop; start;; + xrestart|xforce-reload) stop; start;; xstatus) status;; x*) echo usage: $0 start,stop,restart,status >&2 exit 1;; diff --git a/org.glite.lb.logger/configure b/org.glite.lb.logger/configure index 2e34da2..16595a2 100755 --- a/org.glite.lb.logger/configure +++ b/org.glite.lb.logger/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -179,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -208,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -472,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -493,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -527,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -551,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -602,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -685,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -697,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -707,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -725,6 +758,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 = ( @@ -734,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -743,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -769,6 +805,7 @@ for my $ext (keys %deps_aux) { 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', @@ -791,7 +828,7 @@ for my $ext (keys %deps_aux) { }, }, 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 => { @@ -825,8 +862,9 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => 'emi-', }, tag_prefix => { %cvs_tag_prefix }, flavours => '--thrflavour= --nothrflavour=', @@ -835,12 +873,13 @@ for my $ext (keys %deps_aux) { 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', + glite_version=>'emi.emi-version', glue_schema=>'emi.bdii.glue-schema', trustmanager=>'emi.java-security.trustmanager', trustmanager_axis=>'emi.java-security.trustmanager-axis', @@ -853,6 +892,30 @@ for my $ext (keys %deps_aux) { sl5_x86_64_gcc412EPEL => { 'myproxy-devel' => 'myproxy-devel.x86_64', }, + sl6_x86_64_gcc445EPEL => { + 'myproxy-devel' => 'myproxy-devel.x86_64', + }, + deb6_x86_64_gcc445 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { default => { @@ -871,6 +934,23 @@ for my $ext (keys %deps_aux) { gridsite=>'emi.gridsite.devel', jdk=>'java-devel', }, + deb6_x86_64_gcc445 => { + # mappings in ETICS project configuration + #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/], @@ -880,14 +960,16 @@ for my $ext (keys %deps_aux) { }, 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/ ], + 'lb.emi-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.emi-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/ ], }, 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/ ], @@ -896,18 +978,25 @@ for my $ext (keys %deps_aux) { }, ); +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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -924,6 +1013,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' }, }, @@ -941,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -983,10 +1081,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"); @@ -1040,7 +1151,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); @@ -1049,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1123,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1134,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1146,53 +1260,102 @@ 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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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"; } 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}{$_} ? $etics_externs{$platform}{$_} : $_; + my $eext = $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') { + + # 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; } - if (not $used) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; - $used = 1; - } - my $proj = 'externals'; for my $p (keys %etics_projects) { for $m (@{$etics_projects{$p}}) { @@ -1306,26 +1474,31 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; if ($edev) { if ($type eq 'B') { - $eext = $edev; # no runtime - change to devel pkg + # no runtime - change to devel pkg + $eext = $edev; } elsif ($type eq 'BR' or $type eq 'RB') { - print C "$proj|$edev = B\n"; # additional devel pkg + # additional devel pkg + if ($edev ne '-') { $output .= "$proj|$edev = B\n"; } } } - print C "$proj|$eext = $type\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) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; $used = 1; } - print C "$project{etics_name}|$project{etics_name}.$_ = $type\n"; + $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n"; } } + + if ($output) { + print C qq{ +[Platform-$platform:DynamicDependency] +$output}; + } } close C; @@ -1412,16 +1585,41 @@ sub reshuffle_platforms($$) { } for $_ (keys %blacklist) { - if (defined $data->{default}{$_}) { - $value = $data->{default}{$_}; - $data->{default}{$_} = '-'; -#print " deleted $_ from default\n"; + $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) { - next if $platform eq 'default'; - if (not defined $data->{$platform}{$_}) { - $data->{$platform}{$_} = $value; -#print " added $value to $platform\n" - } + delete $data->{$platform}{$_}; } } } @@ -1461,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.logger/project/.pre b/org.glite.lb.logger/project/.pre new file mode 100644 index 0000000..bb8f272 --- /dev/null +++ b/org.glite.lb.logger/project/.pre @@ -0,0 +1,7 @@ +getent group glite >/dev/null || groupadd -r glite +getent passwd glite >/dev/null || useradd -r -g glite -d /var/glite -c "gLite user" glite + +mkdir -p /var/glite /var/log/glite 2>/dev/null || true +chown glite:glite /var/glite /var/log/glite + +exit 0 diff --git a/org.glite.lb.logger/project/ChangeLog b/org.glite.lb.logger/project/ChangeLog index 379e796..5c87cad 100644 --- a/org.glite.lb.logger/project/ChangeLog +++ b/org.glite.lb.logger/project/ChangeLog @@ -174,3 +174,7 @@ 2.2.6-1 - Further globus signal handler fixes +2.2.7-1 +- LSB-compliant init scripts +- interlogger now reports edg_wll_gss_watch_creds failures (SB 84694) + diff --git a/org.glite.lb.logger/project/version.properties b/org.glite.lb.logger/project/version.properties index e381f4a..d5bfc92 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.6 +module.version=2.2.7 module.age=1 diff --git a/org.glite.lb.logger/src/logd_proto.c b/org.glite.lb.logger/src/logd_proto.c index 8d88f26..8eca13a 100644 --- a/org.glite.lb.logger/src/logd_proto.c +++ b/org.glite.lb.logger/src/logd_proto.c @@ -39,6 +39,9 @@ limitations under the License. #include "logd_proto.h" +#define CON_QUEUE 5 + +static const int zero = 0; static const int one = 1; extern char* socket_path; @@ -131,6 +134,64 @@ static int send_answer_back(edg_wll_GssConnection *con, int answer, struct timev } } +static int daemon_listen(const char *name, char *port, int *conn_out) { + struct addrinfo *ai; + struct addrinfo hints; + int conn; + int gaie; + + memset (&hints, '\0', sizeof (hints)); + hints.ai_flags = AI_NUMERICSERV | AI_PASSIVE | AI_ADDRCONFIG; + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = AF_INET6; + + gaie = getaddrinfo (name, port, &hints, &ai); + if (gaie != 0 || ai == NULL) { + hints.ai_family = 0; + gaie = getaddrinfo (NULL, port, &hints, &ai); + } + + gaie = getaddrinfo (name, port, &hints, &ai); + if (gaie != 0) { + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: %s", gai_strerror (gaie)); + return 1; + } + if (ai == NULL) { + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: no result"); + return 1; + } + + conn = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if ( conn < 0 ) { + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "socket(): %s", strerror(errno)); + freeaddrinfo(ai); + return 1; + } + setsockopt(conn, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); + if (ai->ai_family == AF_INET6) + setsockopt(conn, IPPROTO_IPV6, IPV6_V6ONLY, &zero, sizeof(zero)); + + if ( bind(conn, ai->ai_addr, ai->ai_addrlen) ) + { + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "bind(%s): %s", port, strerror(errno)); + close(conn); + freeaddrinfo(ai); + return 1; + } + + if ( listen(conn, CON_QUEUE) ) { + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "listen(): %s", strerror(errno)); + close(conn); + freeaddrinfo(ai); + return 1; + } + + freeaddrinfo(ai); + + *conn_out = conn; + return 0; +} + /* *---------------------------------------------------------------------- * @@ -259,8 +320,6 @@ int do_listen(int port) { int ret; int sock; - struct addrinfo *ai; - struct addrinfo hints; char *portstr = NULL; asprintf(&portstr, "%d", port); @@ -269,45 +328,8 @@ int do_listen(int port) return -1; } - memset (&hints, '\0', sizeof (hints)); - hints.ai_flags = AI_NUMERICSERV | AI_PASSIVE | AI_ADDRCONFIG; - hints.ai_socktype = SOCK_STREAM; - - ret = getaddrinfo (NULL, portstr, &hints, &ai); - if (ret != 0) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: %s", gai_strerror (ret)); - return -1; - } - if (ai == NULL) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: no return"); + if (daemon_listen(NULL, portstr, &sock) != 0) return -1; - } - - sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if (sock == -1) { - glite_common_log_SYS_ERROR("socket"); - glite_common_log(LOG_CATEGORY_ACCESS,LOG_PRIORITY_ERROR,"do_listen(): error creating socket\n"); - freeaddrinfo(ai); - return -1; - } - - setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); - ret = bind(sock, ai->ai_addr, ai->ai_addrlen); - if (ret == -1) { - glite_common_log_SYS_ERROR("bind"); - glite_common_log(LOG_CATEGORY_ACCESS,LOG_PRIORITY_ERROR,"do_listen(): error binding socket\n"); - freeaddrinfo(ai); - return -1; - } - freeaddrinfo(ai); - - ret = listen(sock, 5); - if (ret == -1) { - glite_common_log_SYS_ERROR("listen"); - glite_common_log(LOG_CATEGORY_ACCESS,LOG_PRIORITY_ERROR,"do_listen(): error listening on socket\n"); - close(sock); - return -1; - } return sock; } diff --git a/org.glite.lb.nagios/Makefile b/org.glite.lb.nagios/Makefile index 1676c7e..10fe7bb 100644 --- a/org.glite.lb.nagios/Makefile +++ b/org.glite.lb.nagios/Makefile @@ -1,6 +1,6 @@ top_srcdir=.. stagedir=. -package=emi-nagios-lb +package=emi-lb-nagios-plugins version=0.0.0 prefix= INSTALL=install @@ -8,6 +8,8 @@ INSTALL=install -include Makefile.inc -include ${top_srcdir}/project/version.properties +version=${module.version} + install: mkdir -p ${DESTDIR}${PREFIX}/var/lib/grid-monitoring/emi.lb mkdir -p ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version} diff --git a/org.glite.lb.nagios/configure b/org.glite.lb.nagios/configure index 62e2c66..16595a2 100755 --- a/org.glite.lb.nagios/configure +++ b/org.glite.lb.nagios/configure @@ -137,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -186,6 +187,7 @@ my %lbmodules = ( 'jp' => [ qw/client doc index primary server-common ws-interface/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -209,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -268,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -351,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -473,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -494,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -532,7 +553,7 @@ BEGIN{ '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/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -553,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -610,7 +633,7 @@ for my $jar (keys %need_jars) { lb.utils:R / ], 'lb.server' => [ qw/ - lb.ws-interface lb.types:B lb.common lb.state-machine + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -692,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -704,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -714,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -742,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -751,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -836,6 +864,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'emi-', 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => 'emi-', }, tag_prefix => { %cvs_tag_prefix }, flavours => '--thrflavour= --nothrflavour=', @@ -850,7 +879,7 @@ for my $ext (keys %deps_aux) { yaim_bdii=>'emi.bdii.yaim-bdii', gip_service=>'emi.bdii.glite-info-provider-service', bdii=>'emi.bdii.core', - glite_version=>'emi.misc.glite-version', + glite_version=>'emi.emi-version', glue_schema=>'emi.bdii.glue-schema', trustmanager=>'emi.java-security.trustmanager', trustmanager_axis=>'emi.java-security.trustmanager-axis', @@ -863,28 +892,29 @@ for my $ext (keys %deps_aux) { sl5_x86_64_gcc412EPEL => { 'myproxy-devel' => 'myproxy-devel.x86_64', }, - sl6_x86_64_gcc444EPEL => { + sl6_x86_64_gcc445EPEL => { 'myproxy-devel' => 'myproxy-devel.x86_64', }, deb6_x86_64_gcc445 => { - globus_essentials => 'libglobus-gssapi-gsi4', - globus => 'libglobus-gssapi-gsi-dev', - globus_proxy_utils=>'globus-proxy-utils', - 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', + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { @@ -905,19 +935,21 @@ for my $ext (keys %deps_aux) { 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', + # mappings in ETICS project configuration + #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 => { @@ -928,16 +960,16 @@ for my $ext (keys %deps_aux) { }, 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/ ], + 'lb.emi-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.emi-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/ ], }, supported_platforms => { sl5_x86_64_gcc412EPEL => 1, sl5_ia32_gcc412EPEL => 1, - sl6_x86_64_gcc444EPEL => 1, -# deb6_x86_64_gcc445 => 1, + sl6_x86_64_gcc445EPEL => 1, + deb6_x86_64_gcc445 => 1, }, modules => { 'lb' => [ qw/emi-lb/ ], @@ -946,20 +978,25 @@ for my $ext (keys %deps_aux) { }, ); +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' }, - sl6_x86_64_gcc444 => { aprSuffix => '1' }, - deb6_x86_64_gcc445 => { aprSuffix => '1.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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -996,7 +1033,11 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } sub mkinc @@ -1005,12 +1046,13 @@ sub mkinc 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 +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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -1109,7 +1151,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); @@ -1118,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1192,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1203,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1215,61 +1260,102 @@ 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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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, $make_patches); + 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}'; - } - if ($project eq 'emi') { - # proper dependency name in spec-file - $cmd{checkout} .= " && \\ - (cd \${moduleName}; test -f src/make-gridsite-spec.orig || sed -i.orig 's/\\(Buildrequires: libxml2-devel.*\\)/\\1,globus-gssapi-gsi-devel/' src/make-gridsite-spec)"; - $make_patches = " - diff -up make-gridsite-spec.orig make-gridsite-spec > \${moduleDir}/RPMTMP/SOURCES/emi-deps.patch - diff -up make-gridsite-spec.orig make-gridsite-spec > \${moduleDir}/src/tgz/emi-deps.patch"; + $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 $prefix $flags build"; - $cmd{clean} = "rm -rvf build.sh \${moduleDir}/src/tgz; $cmd{clean}"; - $cmd{install} = "make $prefix $flags install"; - $cmd{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true $make_patches - 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"; } @@ -1569,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.nagios/project/ChangeLog b/org.glite.lb.nagios/project/ChangeLog index 37a33d8..81cd54d 100644 --- a/org.glite.lb.nagios/project/ChangeLog +++ b/org.glite.lb.nagios/project/ChangeLog @@ -1,3 +1,6 @@ 1.0.0-1 - Initial version of the nagios module +1.0.0-2 +- Module rebuilt + diff --git a/org.glite.lb.nagios/project/version.properties b/org.glite.lb.nagios/project/version.properties index aa496b1..190acfa 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=1 +module.age=2 diff --git a/org.glite.lb.server/Makefile b/org.glite.lb.server/Makefile index 5cbe9ce..09bea31 100644 --- a/org.glite.lb.server/Makefile +++ b/org.glite.lb.server/Makefile @@ -247,6 +247,9 @@ EXAMPLES= TESTS=test_coverage test_xml test_query_events test_soap_conv +SCRIPTS=startup glite-lb-server-purge.cron glite-lb-proxy-purge.cron +SCRIPTS_SRC=$(addprefix ${top_srcdir}/config/,${SCRIPTS}) + glite-lb-bkserverd: ${NSMAP} ${BKSERVER_OBJS} ${LINKXX} -o $@ ${BKSERVER_OBJS} ${BKSERVER_LIBS} -Wl,--export-dynamic @@ -256,17 +259,16 @@ glite-lb-bkindex: ${INDEX_OBJS} glite-lb-mon-db: ${MONDB_OBJS} ${LINKXX} -o $@ ${MONDB_OBJS} ${MONDB_LIBS} -compile: generate startup glite-lb-bkserverd glite-lb-bkindex glite-lb-mon-db ${STATIC_LIB_BK} ${LCAS_PLUGIN_LIB} ${MAN_GZ} +compile: generate ${SCRIPTS} glite-lb-bkserverd glite-lb-bkindex glite-lb-mon-db ${STATIC_LIB_BK} ${LCAS_PLUGIN_LIB} ${MAN_GZ} generate: store.c index.c -startup: ${top_srcdir}/config/startup +${SCRIPTS}: ${SCRIPTS_SRC} glite_var="${localstatedir}/glite"; \ if echo "${localstatedir}" | grep 'glite'>/dev/null; then \ glite_var="${localstatedir}"; \ fi; \ - sed -e 's:@glite_prefix@:${sysroot}${prefix}:' -e 's:@glite_etc@:${sysconfdir}:' -e "s:@glite_var@:$$glite_var:" $< > $@ - chmod +x $@ + sed -e 's:@glite_prefix@:${sysroot}${prefix}:' -e 's:@glite_etc@:${sysconfdir}:' -e "s:@glite_var@:$$glite_var:" ${top_srcdir}/config/$@ > $@ check: compile test.xml test.query -echo check.query not complete yet @@ -344,9 +346,11 @@ install: -mkdir -p ${DESTDIR}${PREFIX}${prefix}/bin ${DESTDIR}${PREFIX}${sysconfdir}/glite-lb ${DESTDIR}${PREFIX}${sysconfdir}/init.d -mkdir -p ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version} -mkdir -p ${DESTDIR}${PREFIX}${prefix}/share/man/man1 + -mkdir -p ${DESTDIR}${PREFIX}${prefix}/share/man/man8 -mkdir -p ${DESTDIR}${PREFIX}${prefix}/${libdir} -mkdir -p ${DESTDIR}${PREFIX}${prefix}/include/${globalprefix}/${lbprefix} - mkdir -p ${DESTDIR}${PREFIX}${prefix}/share/man/man8 + -mkdir -p ${DESTDIR}${PREFIX}${sysconfdir}/logrotate.d + -mkdir -p ${DESTDIR}${PREFIX}${sysconfdir}/cron.d ${INSTALL} -m 644 ${top_srcdir}/LICENSE ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version} ( cd ${top_srcdir}/project && ${INSTALL} -m 644 ChangeLog package.description package.summary ${DESTDIR}${PREFIX}${prefix}/share/doc/${package}-${version} ) ${INSTALL} -m 644 ${MAN_GZ} ${DESTDIR}${PREFIX}${prefix}/share/man/man1 @@ -364,6 +368,10 @@ install: ${INSTALL} -m 755 ${top_srcdir}/config/glite-lb-migrate_db2version20 ${DESTDIR}${PREFIX}${sysconfdir}/glite-lb ${INSTALL} -m 755 startup ${DESTDIR}${PREFIX}${sysconfdir}/init.d/glite-lb-bkserverd + ${INSTALL} -m 644 glite-lb-server-purge.cron ${DESTDIR}${PREFIX}${sysconfdir}/cron.d/glite-lb-server-purge + ${INSTALL} -m 644 glite-lb-proxy-purge.cron ${DESTDIR}${PREFIX}${sysconfdir}/cron.d/glite-lb-proxy-purge + ${INSTALL} -m 644 ${top_srcdir}/config/glite-lb-purge.logrotate ${DESTDIR}${PREFIX}${sysconfdir}/logrotate.d/glite-lb-purge + ${INSTALL} -m 644 ${top_srcdir}/config/glite-lb-lcas.logrotate ${DESTDIR}${PREFIX}${sysconfdir}/logrotate.d/glite-lb-lcas mkdir -p ${DESTDIR}${PREFIX}${prefix}/include/${globalprefix}/${lbprefix} (cd ${top_srcdir}/interface && install -m 644 ${HDRS} ${DESTDIR}${PREFIX}${prefix}/include/${globalprefix}/${lbprefix}) @@ -376,8 +384,11 @@ ifdef LB_PERF endif clean: - rm -rvf *.c *.h *.ch *.xh *.xml *.nsmap *.o *.lo .libs glite-lb-* ${STATIC_LIB_BK} ${LCAS_PLUGIN_LIB} ${TESTS} ${MAN_GZ} ${EXAMPLES} startup - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + rm -rvf *.c *.h *.ch *.xh *.xml *.nsmap *.o *.lo .libs glite-lb-* ${STATIC_LIB_BK} ${LCAS_PLUGIN_LIB} ${TESTS} ${MAN_GZ} ${EXAMPLES} ${SCRIPTS} + rm -rvf test_xml.cpp + +distclean: + rm -rvf Makefile.inc *.spec debian/ %.c: %.c.T rm -f $@ diff --git a/org.glite.lb.server/config/glite-lb-lcas.logrotate b/org.glite.lb.server/config/glite-lb-lcas.logrotate new file mode 100644 index 0000000..c485adb --- /dev/null +++ b/org.glite.lb.server/config/glite-lb-lcas.logrotate @@ -0,0 +1,5 @@ +/var/log/glite/glite-lb-lcas.log { + daily + rotate 4 + missingok +} diff --git a/org.glite.lb.server/config/glite-lb-proxy-purge.cron b/org.glite.lb.server/config/glite-lb-proxy-purge.cron new file mode 100644 index 0000000..016c0ef --- /dev/null +++ b/org.glite.lb.server/config/glite-lb-proxy-purge.cron @@ -0,0 +1 @@ +31 1 * * * glite ( test -f /etc/profile.d/grid-env.sh || exit 0; . /etc/profile.d/grid-env.sh; export GLITE_LB_EXPORT_BKSERVER=$HOSTNAME; export GLITE_LB_PURGE_TARGET_RUNTIME=84600s; export GLITE_LB_PURGE_OTHER_OPTIONS="$GLITE_LB_PURGE_OTHER_OPTIONS -x"; printf "`date "+\%b \%e \%T"` `hostname -s` glite-lb-export.sh: "; @glite_prefix@/sbin/glite-lb-export.sh ) >> /var/log/glite/glite-lb-proxy-purge.log 2>&1 diff --git a/org.glite.lb.server/config/glite-lb-purge.logrotate b/org.glite.lb.server/config/glite-lb-purge.logrotate new file mode 100644 index 0000000..908dec0 --- /dev/null +++ b/org.glite.lb.server/config/glite-lb-purge.logrotate @@ -0,0 +1,5 @@ +/var/log/glite/glite-lb-server-purge.log /var/log/glite/glite-lb-proxy-purge.log { + weekly + rotate 4 + missingok +} \ No newline at end of file diff --git a/org.glite.lb.server/config/glite-lb-server-purge.cron b/org.glite.lb.server/config/glite-lb-server-purge.cron new file mode 100644 index 0000000..bb8e5ab --- /dev/null +++ b/org.glite.lb.server/config/glite-lb-server-purge.cron @@ -0,0 +1 @@ +1 1 * * * glite ( test -f /etc/profile.d/grid-env.sh || exit 0; . /etc/profile.d/grid-env.sh; export GLITE_LB_EXPORT_BKSERVER=$HOSTNAME; export GLITE_LB_PURGE_TARGET_RUNTIME=84600s; printf "`date "+\%b \%e \%T"` `hostname -s` glite-lb-export.sh: "; @glite_prefix@/sbin/glite-lb-export.sh ) >> /var/log/glite/glite-lb-server-purge.log 2>&1 diff --git a/org.glite.lb.server/config/startup b/org.glite.lb.server/config/startup index 40795d9..e71b1e2 100755 --- a/org.glite.lb.server/config/startup +++ b/org.glite.lb.server/config/startup @@ -1,4 +1,12 @@ #!/bin/sh +### BEGIN INIT INFO +# Provides: glite-lb-bkserverd +# Description: L&B server daemon +# Required-Start: $remote_fs $network $syslog +# Required-Stop: $remote_fs $network $syslog +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +### END INIT INFO # chkconfig: 345 75 25 # # Copyright (c) Members of the EGEE Collaboration. 2004-2010. @@ -22,6 +30,7 @@ GLITE_LB_LOCATION_VAR=${GLITE_LB_LOCATION_VAR:-'@glite_var@'} GLITE_LB_LOCATION_ETC=${GLITE_LB_LOCATION_ETC:-'@glite_etc@'} GLITE_JP_LOCATION=${GLITE_JP_LOCATION:-$GLITE_LB_LOCATION} +[ -f /etc/profile.d/grid-env.sh ] && . /etc/profile.d/grid-env.sh [ -f /etc/glite.conf ] && . /etc/glite.conf [ -f $GLITE_LB_LOCATION_ETC/glite-wms.conf ] && . $GLITE_LB_LOCATION_ETC/glite-wms.conf @@ -294,7 +303,7 @@ status() case x$1 in xstart) start;; xstop) stop;; - xrestart) stop; start;; + xrestart|xforce-reload) stop; start;; xstatus) status;; x*) echo usage: $0 start,stop,restart,status >&2 exit 1;; diff --git a/org.glite.lb.server/configure b/org.glite.lb.server/configure index 2e34da2..16595a2 100755 --- a/org.glite.lb.server/configure +++ b/org.glite.lb.server/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -179,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -208,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -472,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -493,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -527,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -551,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -602,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -685,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -697,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -707,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -725,6 +758,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 = ( @@ -734,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -743,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -769,6 +805,7 @@ for my $ext (keys %deps_aux) { 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', @@ -791,7 +828,7 @@ for my $ext (keys %deps_aux) { }, }, 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 => { @@ -825,8 +862,9 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => 'emi-', }, tag_prefix => { %cvs_tag_prefix }, flavours => '--thrflavour= --nothrflavour=', @@ -835,12 +873,13 @@ for my $ext (keys %deps_aux) { 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', + glite_version=>'emi.emi-version', glue_schema=>'emi.bdii.glue-schema', trustmanager=>'emi.java-security.trustmanager', trustmanager_axis=>'emi.java-security.trustmanager-axis', @@ -853,6 +892,30 @@ for my $ext (keys %deps_aux) { sl5_x86_64_gcc412EPEL => { 'myproxy-devel' => 'myproxy-devel.x86_64', }, + sl6_x86_64_gcc445EPEL => { + 'myproxy-devel' => 'myproxy-devel.x86_64', + }, + deb6_x86_64_gcc445 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { default => { @@ -871,6 +934,23 @@ for my $ext (keys %deps_aux) { gridsite=>'emi.gridsite.devel', jdk=>'java-devel', }, + deb6_x86_64_gcc445 => { + # mappings in ETICS project configuration + #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/], @@ -880,14 +960,16 @@ for my $ext (keys %deps_aux) { }, 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/ ], + 'lb.emi-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.emi-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/ ], }, 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/ ], @@ -896,18 +978,25 @@ for my $ext (keys %deps_aux) { }, ); +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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -924,6 +1013,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' }, }, @@ -941,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -983,10 +1081,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"); @@ -1040,7 +1151,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); @@ -1049,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1123,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1134,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1146,53 +1260,102 @@ 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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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"; } 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}{$_} ? $etics_externs{$platform}{$_} : $_; + my $eext = $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') { + + # 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; } - if (not $used) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; - $used = 1; - } - my $proj = 'externals'; for my $p (keys %etics_projects) { for $m (@{$etics_projects{$p}}) { @@ -1306,26 +1474,31 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; if ($edev) { if ($type eq 'B') { - $eext = $edev; # no runtime - change to devel pkg + # no runtime - change to devel pkg + $eext = $edev; } elsif ($type eq 'BR' or $type eq 'RB') { - print C "$proj|$edev = B\n"; # additional devel pkg + # additional devel pkg + if ($edev ne '-') { $output .= "$proj|$edev = B\n"; } } } - print C "$proj|$eext = $type\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) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; $used = 1; } - print C "$project{etics_name}|$project{etics_name}.$_ = $type\n"; + $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n"; } } + + if ($output) { + print C qq{ +[Platform-$platform:DynamicDependency] +$output}; + } } close C; @@ -1412,16 +1585,41 @@ sub reshuffle_platforms($$) { } for $_ (keys %blacklist) { - if (defined $data->{default}{$_}) { - $value = $data->{default}{$_}; - $data->{default}{$_} = '-'; -#print " deleted $_ from default\n"; + $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) { - next if $platform eq 'default'; - if (not defined $data->{$platform}{$_}) { - $data->{$platform}{$_} = $value; -#print " added $value to $platform\n" - } + delete $data->{$platform}{$_}; } } } @@ -1461,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.server/project/.pre b/org.glite.lb.server/project/.pre new file mode 100644 index 0000000..bb8f272 --- /dev/null +++ b/org.glite.lb.server/project/.pre @@ -0,0 +1,7 @@ +getent group glite >/dev/null || groupadd -r glite +getent passwd glite >/dev/null || useradd -r -g glite -d /var/glite -c "gLite user" glite + +mkdir -p /var/glite /var/log/glite 2>/dev/null || true +chown glite:glite /var/glite /var/log/glite + +exit 0 diff --git a/org.glite.lb.server/project/ChangeLog b/org.glite.lb.server/project/ChangeLog index aad65ab..044aa3e 100644 --- a/org.glite.lb.server/project/ChangeLog +++ b/org.glite.lb.server/project/ChangeLog @@ -310,3 +310,15 @@ 2.2.9-1 - Proper permission category for statistics +2.2.10-1 +- LSB-compliant init scripts +- Fixed typos in error output +- interlogger now reports edg_wll_gss_watch_creds failures (SB 84694) +- GACLparseEntry() defined in gridsite-gacl.h now (SB #69635) +- Show notification registrations only to their owners (SB #86774) +- Quit parent process silently on background purge (improvement for SB #77974) +- Use fewer memory on server during query, when states are not requested (SB #46437) +- Correct reaction to erroneous output from notif ID parsing (SB #86772) +- Fix crash in web services on empty classads +- Fix classads (in job status structure) when using in web services + diff --git a/org.glite.lb.server/project/version.properties b/org.glite.lb.server/project/version.properties index f3d4510..478dec5 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.9 +module.version=2.2.10 module.age=1 diff --git a/org.glite.lb.server/src/bkserverd.c b/org.glite.lb.server/src/bkserverd.c index 69de46c..c6b9055 100644 --- a/org.glite.lb.server/src/bkserverd.c +++ b/org.glite.lb.server/src/bkserverd.c @@ -139,7 +139,6 @@ extern void _start (void), etext (void); int enable_lcas = 0; int debug = 0; int rgma_export = 0; -static const int one = 1; static int noAuth = 0; static int noIndex = 0; static int strict_locking = 0; @@ -387,10 +386,7 @@ struct clnt_data_t { int main(int argc, char *argv[]) { int i; - struct addrinfo *ai; - struct addrinfo hints; char *portstr = NULL; - int gaie; int opt, pidfile_forced = 0; char pidfile[PATH_MAX] = EDG_BKSERVERD_PIDFILE, *name; @@ -609,11 +605,11 @@ int main(int argc, char *argv[]) if (mode & SERVICE_SERVER) { if (check_mkdir(dumpStorage)){ - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "Directory for dump files not redy!"); + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "Directory for dump files not ready!"); exit(1); } if (check_mkdir(purgeStorage)){ - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "Directory for purge files not redy!"); + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "Directory for purge files not ready!"); exit(1); } if ( jpreg ) { @@ -644,97 +640,21 @@ int main(int argc, char *argv[]) glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_INFO, "Server address: %s:%d", fake_host, fake_port); } - memset (&hints, '\0', sizeof (hints)); - hints.ai_flags = AI_NUMERICSERV | AI_PASSIVE | AI_ADDRCONFIG; - hints.ai_socktype = SOCK_STREAM; - if ((mode & SERVICE_SERVER)) { - gaie = getaddrinfo (NULL, port, &hints, &ai); - if (gaie != 0) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: %s", gai_strerror (gaie)); - return 1; - } - if (ai == NULL) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: no return"); + if (glite_srvbones_daemon_listen(NULL, port, &service_table[SRV_SERVE].conn) != 0) { return 1; } - service_table[SRV_SERVE].conn = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if ( service_table[SRV_SERVE].conn < 0 ) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "socket()"); - freeaddrinfo(ai); - return 1; - } - setsockopt(service_table[SRV_SERVE].conn, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); - if ( bind(service_table[SRV_SERVE].conn, ai->ai_addr, ai->ai_addrlen) ) - { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "bind(%s)", port); - freeaddrinfo(ai); - return 1; - } - freeaddrinfo(ai); - if ( listen(service_table[SRV_SERVE].conn, CON_QUEUE) ) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "listen()"); - return 1; - } asprintf(&portstr, "%d", atoi(port)+1); - gaie = getaddrinfo (NULL, portstr, &hints, &ai); - if (gaie != 0) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: %s", gai_strerror (gaie)); - return 1; - } - if (ai == NULL) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: no return"); + if (glite_srvbones_daemon_listen(NULL, portstr, &service_table[SRV_STORE].conn) != 0) { + free(portstr); return 1; } - service_table[SRV_STORE].conn = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if ( service_table[SRV_STORE].conn < 0 ) { - freeaddrinfo(ai); - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "socket()"); - return 1; - } - setsockopt(service_table[SRV_STORE].conn, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); - if ( bind(service_table[SRV_STORE].conn, ai->ai_addr, ai->ai_addrlen) ) - { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "bind(%s)", portstr); - freeaddrinfo(ai); - return 1; - } - freeaddrinfo(ai); - if ( listen(service_table[SRV_STORE].conn, CON_QUEUE) ) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "listen()"); - return 1; - } free(portstr); portstr = NULL; #ifdef GLITE_LB_SERVER_WITH_WS - gaie = getaddrinfo (NULL, ws_port, &hints, &ai); - if (gaie != 0) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: %s", gai_strerror (gaie)); - return 1; - } - if (ai == NULL) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: no return"); - return 1; - } - service_table[SRV_WS].conn = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); - if ( service_table[SRV_WS].conn < 0 ) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "socket()"); - freeaddrinfo(ai); - return 1; - } - setsockopt(service_table[SRV_WS].conn, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); - if ( bind(service_table[SRV_WS].conn, ai->ai_addr, ai->ai_addrlen) ) - { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "bind(%s)",ws_port); - freeaddrinfo(ai); + if (glite_srvbones_daemon_listen(NULL, ws_port, &service_table[SRV_WS].conn) != 0) return 1; - } - freeaddrinfo(ai); - if ( listen(service_table[SRV_WS].conn, CON_QUEUE) ) { - glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "listen()"); - return 1; - } #endif /* GLITE_LB_SERVER_WITH_WS */ if (!server_cert || !server_key) @@ -2033,4 +1953,3 @@ static int decrement_timeout(struct timeval *timeout, struct timeval before, str if ( ((*timeout).tv_sec < 0) || (((*timeout).tv_sec == 0) && ((*timeout).tv_usec == 0)) ) return(1); else return(0); } - diff --git a/org.glite.lb.server/src/lb_proto.c b/org.glite.lb.server/src/lb_proto.c index e8c8065..3460791 100644 --- a/org.glite.lb.server/src/lb_proto.c +++ b/org.glite.lb.server/src/lb_proto.c @@ -263,10 +263,14 @@ static int getNotifInfo(edg_wll_Context ctx, char *notifId, notifInfo *ni){ glite_lbu_Statement notif = NULL; char *notifc[4] = {NULL, NULL, NULL, NULL}; + char *can_peername = edg_wll_gss_normalize_subj(ctx->peerName, 0); + char *userid = strmd5(can_peername, NULL); + trio_asprintf(&q, "select destination, valid, conditions, flags " "from notif_registrations " - "where notifid='%s'", - notifId); + "where notifid='%s' " + "and userid='%s'", + notifId, userid); glite_common_log_msg(LOG_CATEGORY_LB_SERVER_DB, LOG_PRIORITY_DEBUG, q); if (edg_wll_ExecSQL(ctx, q, ¬if) < 0) goto err; free(q); q = NULL; @@ -285,6 +289,7 @@ static int getNotifInfo(edg_wll_Context ctx, char *notifId, notifInfo *ni){ return 0; err: + free(can_peername); return -1; } @@ -782,6 +787,7 @@ edg_wll_ErrorCode edg_wll_Proto(edg_wll_Context ctx, *pom = 0; if (getNotifInfo(ctx, strrchr(pomCopy, ':')+1, &ni)){ ret = HTTP_NOTFOUND; + edg_wll_SetError(ctx, ENOENT, "Notification ID not know."); goto err; } free(pomCopy); diff --git a/org.glite.lb.state-machine/Makefile b/org.glite.lb.state-machine/Makefile index fef41c3..18eb1c2 100644 --- a/org.glite.lb.state-machine/Makefile +++ b/org.glite.lb.state-machine/Makefile @@ -116,7 +116,9 @@ install: clean: rm -rvf .libs *.o *.lo ${PLUGIN_LIB} ${MACHINE_LIB} rm -rfv job_attrs.h job_attrs2.h lb-job-attrs2.xsd glite-jpis-config.xml - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ check: @echo No tests yet diff --git a/org.glite.lb.state-machine/configure b/org.glite.lb.state-machine/configure index a67786b..16595a2 100755 --- a/org.glite.lb.state-machine/configure +++ b/org.glite.lb.state-machine/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -248,10 +244,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}{$_}; } @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -423,7 +438,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 +463,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; @@ -468,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -489,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -500,18 +526,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,10 +549,11 @@ 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.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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -547,17 +574,19 @@ 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// ], - 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ], + '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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -598,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -681,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -693,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -703,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -716,10 +753,12 @@ 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/ ], + 'lb.nagios' => [ qq/glite-lb-nagios-plugins/ ], ); %cvs_prefix = ( @@ -729,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -738,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -749,6 +790,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 +802,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/ ], @@ -790,10 +841,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 => { @@ -803,80 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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_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', + 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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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_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.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -893,6 +1013,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' }, }, @@ -910,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -952,10 +1081,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"); @@ -1009,7 +1151,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); @@ -1018,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1033,28 +1176,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; @@ -1090,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1101,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1113,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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}/src/tgz - make $prefix $flags rpm && \ - cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz"; + $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; @@ -1333,6 +1569,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; @@ -1367,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.state-machine/project/.postun b/org.glite.lb.state-machine/project/.postun new file mode 100644 index 0000000..8b0c822 --- /dev/null +++ b/org.glite.lb.state-machine/project/.postun @@ -0,0 +1 @@ +/sbin/ldconfig diff --git a/org.glite.lb.state-machine/project/ChangeLog b/org.glite.lb.state-machine/project/ChangeLog index 740508b..45f4642 100644 --- a/org.glite.lb.state-machine/project/ChangeLog +++ b/org.glite.lb.state-machine/project/ChangeLog @@ -98,3 +98,6 @@ 1.2.2-5 - Module rebuilt +1.2.3-1 +- Compile state machine as shared library + diff --git a/org.glite.lb.state-machine/project/version.properties b/org.glite.lb.state-machine/project/version.properties index 93ee2ab..2b0fb51 100644 --- a/org.glite.lb.state-machine/project/version.properties +++ b/org.glite.lb.state-machine/project/version.properties @@ -1,3 +1,3 @@ # $Header$ -module.version=1.2.2 -module.age=5 +module.version=1.2.3 +module.age=1 diff --git a/org.glite.lb.state-machine/src/process_event.c b/org.glite.lb.state-machine/src/process_event.c index 694f9fa..c6b3060 100644 --- a/org.glite.lb.state-machine/src/process_event.c +++ b/org.glite.lb.state-machine/src/process_event.c @@ -46,6 +46,7 @@ static int processEvent_glite(intJobStat *js, edg_wll_Event *e, int ev_seq, int int processEvent_PBS(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char **errstring); int processEvent_Condor(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char **errstring); int processEvent_Cream(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char **errstring); +int processData_Cream(intJobStat *js, edg_wll_Event *e); int processEvent_FileTransfer(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char **errstring); int processEvent_FileTransferCollection(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char **errstring); @@ -331,6 +332,9 @@ static int processEvent_glite(intJobStat *js, edg_wll_Event *e, int ev_seq, int res = RET_LATE; } + if (e->any.source == EDG_WLL_SOURCE_CREAM_EXECUTOR || e->any.source == EDG_WLL_SOURCE_CREAM_INTERFACE){ + processData_Cream(js, e); + } switch (e->any.type) { case EDG_WLL_EVENT_TRANSFER: @@ -1004,6 +1008,120 @@ static int processEvent_glite(intJobStat *js, edg_wll_Event *e, int ev_seq, int ignore_seq_code = 1; break; +/************************************ CREAM events ****************************/ + case EDG_WLL_EVENT_CREAMSTART: + break; + + case EDG_WLL_EVENT_CREAMPURGE: + break; + + case EDG_WLL_EVENT_CREAMACCEPTED: + break; + + case EDG_WLL_EVENT_CREAMSTORE: + if (USABLE(res, strict)) { + switch (e->CREAMStore.command) { + case EDG_WLL_CREAMSTORE_CMDSTART: + if (e->CREAMStore.result == EDG_WLL_CREAMSTORE_OK) { + js->pub.state = EDG_WLL_JOB_WAITING; + js->pub.cream_state = EDG_WLL_STAT_PENDING; + } + break; + case EDG_WLL_CREAMSTORE_CMDSUSPEND: + if (e->CREAMStore.result == EDG_WLL_CREAMSTORE_OK) { + js->pub.suspended = 1; + } + break; + case EDG_WLL_CREAMSTORE_CMDRESUME: + if (e->CREAMStore.result == EDG_WLL_CREAMSTORE_OK) { + js->pub.suspended = 0; + } + break; + default: + break; + } + rep_cond(js->pub.cream_reason, e->CREAMStore.reason); + rep_cond(js->pub.reason, e->CREAMStore.reason); + } + break; + case EDG_WLL_EVENT_CREAMCALL: + if (e->any.source == EDG_WLL_SOURCE_CREAM_EXECUTOR && + e->CREAMCall.callee == EDG_WLL_SOURCE_LRMS && + e->CREAMCall.command == EDG_WLL_CREAMCALL_CMDSTART && + e->CREAMCall.result == EDG_WLL_CREAMCALL_OK) + { + if (USABLE(res, strict)) { + // BLAH -> LRMS + js->pub.state = EDG_WLL_JOB_SCHEDULED; + js->pub.cream_state = EDG_WLL_STAT_IDLE; + rep_cond(js->pub.cream_reason, e->CREAMCall.reason); + rep_cond(js->pub.reason, e->CREAMCall.reason); + } + } + if (e->CREAMCall.command == EDG_WLL_CREAMCALL_CMDCANCEL && + e->CREAMCall.result == EDG_WLL_CREAMCALL_OK) + { + if (USABLE(res, strict)){ + js->pub.cream_cancelling = 1; + js->pub.cancelling = 1; + rep_cond(js->pub.cream_reason, e->CREAMCall.reason); + rep_cond(js->pub.reason, e->CREAMCall.reason); + } + } + break; + case EDG_WLL_EVENT_CREAMCANCEL: + if (USABLE(res, strict)) { + if (e->CREAMCancel.status_code == EDG_WLL_CANCEL_DONE) { + js->pub.state = EDG_WLL_JOB_CANCELLED; + js->pub.cream_state = EDG_WLL_STAT_ABORTED; + } + rep(js->pub.cream_reason, e->CREAMCancel.reason); + rep(js->pub.reason, e->CREAMCancel.reason); + } + break; + case EDG_WLL_EVENT_CREAMABORT: + if (USABLE(res, strict)) { + js->pub.state = EDG_WLL_JOB_ABORTED; + js->pub.cream_state = EDG_WLL_STAT_ABORTED; + rep(js->pub.cream_reason, e->CREAMAbort.reason); + rep(js->pub.reason, e->CREAMAbort.reason); + } + break; + case EDG_WLL_EVENT_CREAMSTATUS: + if (USABLE(res, strict) && e->CREAMStatus.result == EDG_WLL_CREAMSTATUS_DONE) + { + switch (js->pub.cream_state = edg_wll_StringToCreamStat(e->CREAMStatus.new_state)) + { + case EDG_WLL_STAT_REGISTERED: + case EDG_WLL_NUMBER_OF_CREAM_STATES: + break; + + case EDG_WLL_STAT_PENDING: js->pub.state = EDG_WLL_JOB_WAITING; break; + case EDG_WLL_STAT_IDLE: js->pub.state = EDG_WLL_JOB_SCHEDULED; break; + case EDG_WLL_STAT_RUNNING: + js->pub.state = EDG_WLL_JOB_RUNNING; + js->pub.jw_status = EDG_WLL_STAT_WRAPPER_RUNNING; + break; + case EDG_WLL_STAT_REALLY_RUNNING: + js->pub.state = EDG_WLL_JOB_RUNNING; + js->pub.jw_status = EDG_WLL_STAT_PAYLOAD_RUNNING; + break; + case EDG_WLL_STAT_HELD: /* TODO */ break; + case EDG_WLL_STAT_DONE_OK: + js->pub.state = EDG_WLL_JOB_DONE; + js->pub.done_code = EDG_WLL_STAT_OK; + js->pub.cream_done_code = EDG_WLL_STAT_OK; + break; + case EDG_WLL_STAT_DONE_FAILED: + js->pub.state = EDG_WLL_JOB_DONE; + js->pub.done_code = EDG_WLL_STAT_FAILED; + js->pub.cream_done_code = EDG_WLL_STAT_FAILED; + break; + case EDG_WLL_STAT_ABORTED: js->pub.state = EDG_WLL_JOB_ABORTED; break; + } + } + break; + default: goto bad_event; break; diff --git a/org.glite.lb.state-machine/src/process_event_cream.c b/org.glite.lb.state-machine/src/process_event_cream.c index 253c055..1502fea 100644 --- a/org.glite.lb.state-machine/src/process_event_cream.c +++ b/org.glite.lb.state-machine/src/process_event_cream.c @@ -48,6 +48,89 @@ static char *cream_states[EDG_WLL_NUMBER_OF_CREAM_STATES]; #define rep(a,b) { free(a); a = (b == NULL) ? NULL : strdup(b); } #define rep_cond(a,b) { if (b) { free(a); a = strdup(b); } } +int processData_Cream(intJobStat *js, edg_wll_Event *e) +{ + int res = RET_OK; + + switch (e->any.type) { + case EDG_WLL_EVENT_REGJOB: + if (USABLE_DATA(res)) { + rep_cond(js->pub.cream_owner, js->pub.owner); + rep_cond(js->pub.jdl, e->regJob.jdl); + rep_cond(js->pub.cream_jdl, e->regJob.jdl); + rep_cond(js->pub.cream_endpoint, e->regJob.ns); + rep_cond(js->pub.destination, e->regJob.ns); + rep_cond(js->pub.network_server, e->regJob.ns); + } + break; + case EDG_WLL_EVENT_CREAMSTART: + // nothing to be done + break; + case EDG_WLL_EVENT_CREAMPURGE: + // no state transition + break; + case EDG_WLL_EVENT_CREAMACCEPTED: + if (USABLE(res)){ + rep(js->pub.cream_id, e->CREAMAccepted.local_jobid); + rep(js->pub.globusId, e->CREAMAccepted.local_jobid); + } + break; + case EDG_WLL_EVENT_CREAMSTATUS: + if (USABLE(res) && e->CREAMStatus.result == EDG_WLL_CREAMSTATUS_DONE) + { + if (e->CREAMStatus.exit_code && strcmp(e->CREAMStatus.exit_code, "N/A")) + { + js->pub.cream_exit_code = atoi(e->CREAMStatus.exit_code); + js->pub.exit_code = atoi(e->CREAMStatus.exit_code); + } + if (e->CREAMStatus.worker_node){ /*XXX should never be false */ + if (js->pub.cream_node) + free(js->pub.cream_node); + js->pub.cream_node = strdup(e->CREAMStatus.worker_node); + if (js->pub.ce_node) + free(js->pub.ce_node); + js->pub.ce_node = strdup(e->CREAMStatus.worker_node); + } + if (e->CREAMStatus.LRMS_jobid){ /*XXX should never be false */ + if (js->pub.cream_lrms_id) + free(js->pub.cream_lrms_id); + js->pub.cream_lrms_id = strdup(e->CREAMStatus.LRMS_jobid); + if (js->pub.localId) + free(js->pub.localId); + js->pub.localId = strdup(e->CREAMStatus.LRMS_jobid); + } + if (e->CREAMStatus.failure_reason){ + if (js->pub.cream_failure_reason) + free(js->pub.cream_failure_reason); + js->pub.cream_failure_reason = strdup(e->CREAMStatus.failure_reason); + if (js->pub.failure_reasons){ + char *glued_reasons; + asprintf(&glued_reasons,"%s\n", e->CREAMStatus.failure_reason); + rep(js->pub.failure_reasons, glued_reasons); + } + else + asprintf(&(js->pub.failure_reasons),"%s", e->CREAMStatus.failure_reason); + } + } + break; + + case EDG_WLL_EVENT_USERTAG: + if (USABLE_DATA(res)) { + if (e->userTag.name != NULL && e->userTag.value != NULL) { + add_taglist(e->userTag.name, e->userTag.value, e->any.seqcode, js); + } + } + break; + + default: + break; + } + + if (! js->pub.location) js->pub.location = strdup("this is CREAM"); + + return RET_OK; +} + int processEvent_Cream(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, char **errstring) { edg_wll_JobStatCode old_state = js->pub.state; @@ -71,14 +154,6 @@ int processEvent_Cream(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, js->pub.state = EDG_WLL_JOB_SUBMITTED; js->pub.cream_state = EDG_WLL_STAT_REGISTERED; } - if (USABLE_DATA(res)) { - rep_cond(js->pub.cream_owner, js->pub.owner); - rep_cond(js->pub.jdl, e->regJob.jdl); - rep_cond(js->pub.cream_jdl, e->regJob.jdl); - rep_cond(js->pub.cream_endpoint, e->regJob.ns); - rep_cond(js->pub.destination, e->regJob.ns); - rep_cond(js->pub.network_server, e->regJob.ns); - } break; case EDG_WLL_EVENT_CREAMSTART: // nothing to be done @@ -87,10 +162,6 @@ int processEvent_Cream(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, // no state transition break; case EDG_WLL_EVENT_CREAMACCEPTED: - if (USABLE(res)){ - rep(js->pub.cream_id, e->CREAMAccepted.local_jobid); - rep(js->pub.globusId, e->CREAMAccepted.local_jobid); - } break; case EDG_WLL_EVENT_CREAMSTORE: if (USABLE(res)) { @@ -206,48 +277,10 @@ int processEvent_Cream(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, break; case EDG_WLL_STAT_ABORTED: js->pub.state = EDG_WLL_JOB_ABORTED; break; } - if (e->CREAMStatus.exit_code && strcmp(e->CREAMStatus.exit_code, "N/A")) - { - js->pub.cream_exit_code = atoi(e->CREAMStatus.exit_code); - js->pub.exit_code = atoi(e->CREAMStatus.exit_code); - } - if (e->CREAMStatus.worker_node){ /*XXX should never be false */ - if (js->pub.cream_node) - free(js->pub.cream_node); - js->pub.cream_node = strdup(e->CREAMStatus.worker_node); - if (js->pub.ce_node) - free(js->pub.ce_node); - js->pub.ce_node = strdup(e->CREAMStatus.worker_node); - } - if (e->CREAMStatus.LRMS_jobid){ /*XXX should never be false */ - if (js->pub.cream_lrms_id) - free(js->pub.cream_lrms_id); - js->pub.cream_lrms_id = strdup(e->CREAMStatus.LRMS_jobid); - if (js->pub.localId) - free(js->pub.localId); - js->pub.localId = strdup(e->CREAMStatus.LRMS_jobid); - } - if (e->CREAMStatus.failure_reason){ - if (js->pub.cream_failure_reason) - free(js->pub.cream_failure_reason); - js->pub.cream_failure_reason = strdup(e->CREAMStatus.failure_reason); - if (js->pub.failure_reasons){ - char *glued_reasons; - asprintf(&glued_reasons,"%s\n", e->CREAMStatus.failure_reason); - rep(js->pub.failure_reasons, glued_reasons); - } - else - asprintf(&(js->pub.failure_reasons),"%s", e->CREAMStatus.failure_reason); - } } break; case EDG_WLL_EVENT_USERTAG: - if (USABLE_DATA(res)) { - if (e->userTag.name != NULL && e->userTag.value != NULL) { - add_taglist(e->userTag.name, e->userTag.value, e->any.seqcode, js); - } - } break; default: @@ -266,6 +299,7 @@ int processEvent_Cream(intJobStat *js, edg_wll_Event *e, int ev_seq, int strict, } if (! js->pub.location) js->pub.location = strdup("this is CREAM"); + processData_Cream(js, e); return RET_OK; } diff --git a/org.glite.lb.state-machine/src/process_event_file_transfer.c b/org.glite.lb.state-machine/src/process_event_file_transfer.c index e4e03d5..a8aa872 100644 --- a/org.glite.lb.state-machine/src/process_event_file_transfer.c +++ b/org.glite.lb.state-machine/src/process_event_file_transfer.c @@ -136,6 +136,13 @@ int processEvent_FileTransfer(intJobStat *js, edg_wll_Event *e, int ev_seq, int #endif } break; + case EDG_WLL_EVENT_RESUBMISSION: + if (USABLE(res)) { + if (e->resubmission.result == EDG_WLL_RESUBMISSION_WONTRESUB) { + rep(js->pub.reason, e->resubmission.reason); + } + } + break; default: break; } diff --git a/org.glite.lb.types/Makefile b/org.glite.lb.types/Makefile index 34b64dc..7f42572 100644 --- a/org.glite.lb.types/Makefile +++ b/org.glite.lb.types/Makefile @@ -27,8 +27,10 @@ install: compile install -m 755 ${top_srcdir}/check_version.pl ${DESTDIR}${PREFIX}${prefix}/sbin/glite-lb-check_version.pl clean: - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ check: -.PHONY: default compile stage install check clean +.PHONY: default compile stage install check clean distclean diff --git a/org.glite.lb.types/configure b/org.glite.lb.types/configure index a67786b..16595a2 100755 --- a/org.glite.lb.types/configure +++ b/org.glite.lb.types/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -248,10 +244,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}{$_}; } @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -423,7 +438,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 +463,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; @@ -468,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -489,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -500,18 +526,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,10 +549,11 @@ 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.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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -547,17 +574,19 @@ 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// ], - 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ], + '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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -598,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -681,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -693,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -703,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -716,10 +753,12 @@ 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/ ], + 'lb.nagios' => [ qq/glite-lb-nagios-plugins/ ], ); %cvs_prefix = ( @@ -729,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -738,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -749,6 +790,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 +802,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/ ], @@ -790,10 +841,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 => { @@ -803,80 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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_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', + 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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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_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.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -893,6 +1013,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' }, }, @@ -910,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -952,10 +1081,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"); @@ -1009,7 +1151,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); @@ -1018,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1033,28 +1176,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; @@ -1090,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1101,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1113,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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}/src/tgz - make $prefix $flags rpm && \ - cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz"; + $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; @@ -1333,6 +1569,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; @@ -1367,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.types/project/ChangeLog b/org.glite.lb.types/project/ChangeLog index ae9d8f6..2878ddd 100644 --- a/org.glite.lb.types/project/ChangeLog +++ b/org.glite.lb.types/project/ChangeLog @@ -79,3 +79,6 @@ 1.2.3-5 - Module rebuilt +1.2.3-6 +- Module rebuilt + diff --git a/org.glite.lb.types/project/version.properties b/org.glite.lb.types/project/version.properties index b065640..9a736db 100644 --- a/org.glite.lb.types/project/version.properties +++ b/org.glite.lb.types/project/version.properties @@ -1,3 +1,3 @@ # $Header$ module.version=1.2.3 -module.age=5 +module.age=6 diff --git a/org.glite.lb.utils/Makefile b/org.glite.lb.utils/Makefile index 0ef00c1..b447860 100644 --- a/org.glite.lb.utils/Makefile +++ b/org.glite.lb.utils/Makefile @@ -120,7 +120,9 @@ install: clean: rm -rfv ${ALLUTILS} ${MAN_GZ} ${MAN8_GZ} *.lo *.o .libs/ - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ %.o: %.c ${COMPILE} -c $< diff --git a/org.glite.lb.utils/configure b/org.glite.lb.utils/configure index e2b3330..16595a2 100755 --- a/org.glite.lb.utils/configure +++ b/org.glite.lb.utils/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -253,9 +249,13 @@ $externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mys $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}{$_}; } @@ -271,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -354,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -476,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -497,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -508,18 +526,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 = ( @@ -531,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -555,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -606,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -689,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -701,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -711,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -729,6 +758,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 = ( @@ -738,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -747,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -758,6 +790,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 @@ -769,29 +802,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/ ], @@ -799,10 +841,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 => { @@ -812,79 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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/ ], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -901,6 +1013,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' }, }, @@ -918,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -960,10 +1081,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"); @@ -1017,7 +1151,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); @@ -1026,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1041,28 +1176,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; @@ -1098,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1109,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1121,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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; @@ -1344,6 +1569,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; @@ -1378,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.utils/project/ChangeLog b/org.glite.lb.utils/project/ChangeLog index 2cbcfb3..ad37194 100644 --- a/org.glite.lb.utils/project/ChangeLog +++ b/org.glite.lb.utils/project/ChangeLog @@ -90,7 +90,10 @@ - '--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) +- 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.4-2 +- Module rebuilt diff --git a/org.glite.lb.utils/project/version.properties b/org.glite.lb.utils/project/version.properties index 6e8c734..95a6134 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.4 -module.age=1 +module.age=2 diff --git a/org.glite.lb.ws-interface/Makefile b/org.glite.lb.ws-interface/Makefile index c148fc3..c605766 100644 --- a/org.glite.lb.ws-interface/Makefile +++ b/org.glite.lb.ws-interface/Makefile @@ -61,7 +61,9 @@ install: clean: rm -vf *.h *.html *.xml *.wsdl glue2-copy.xsd - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ %.xml: %.xml.T rm -f $@ diff --git a/org.glite.lb.ws-interface/configure b/org.glite.lb.ws-interface/configure index a67786b..16595a2 100755 --- a/org.glite.lb.ws-interface/configure +++ b/org.glite.lb.ws-interface/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -248,10 +244,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}{$_}; } @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -423,7 +438,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 +463,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; @@ -468,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -489,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -500,18 +526,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,10 +549,11 @@ 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.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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -547,17 +574,19 @@ 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// ], - 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ], + '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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -598,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -681,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -693,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -703,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -716,10 +753,12 @@ 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/ ], + 'lb.nagios' => [ qq/glite-lb-nagios-plugins/ ], ); %cvs_prefix = ( @@ -729,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -738,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -749,6 +790,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 +802,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/ ], @@ -790,10 +841,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 => { @@ -803,80 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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_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', + 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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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_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.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -893,6 +1013,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' }, }, @@ -910,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -952,10 +1081,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"); @@ -1009,7 +1151,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); @@ -1018,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1033,28 +1176,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; @@ -1090,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1101,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1113,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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}/src/tgz - make $prefix $flags rpm && \ - cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz"; + $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; @@ -1333,6 +1569,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; @@ -1367,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.ws-interface/project/ChangeLog b/org.glite.lb.ws-interface/project/ChangeLog index ffcef50..f7b381a 100644 --- a/org.glite.lb.ws-interface/project/ChangeLog +++ b/org.glite.lb.ws-interface/project/ChangeLog @@ -77,3 +77,6 @@ - at3 location detection reverted - '--stage=/' behaviour fixed in configure +3.2.4-2 +- Module rebuilt + diff --git a/org.glite.lb.ws-interface/project/version.properties b/org.glite.lb.ws-interface/project/version.properties index 7ef586d..aab370f 100755 --- a/org.glite.lb.ws-interface/project/version.properties +++ b/org.glite.lb.ws-interface/project/version.properties @@ -1,3 +1,3 @@ # $Header$ module.version=3.2.4 -module.age=1 +module.age=2 diff --git a/org.glite.lb.ws-test/Makefile b/org.glite.lb.ws-test/Makefile index 05596e4..a21624e 100644 --- a/org.glite.lb.ws-test/Makefile +++ b/org.glite.lb.ws-test/Makefile @@ -85,7 +85,9 @@ install: clean: rm -rvf .libs LB.xh *.xml ${GSOAP_FILES_PREFIX}* *.o *.lo *.nsmap soap_version.h ${CEXAMPLES} ${TESTS} - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ LB.xh: ws_typemap.dat ${stagedir}${prefix}/share/wsdl/glite-lb/LB.wsdl ${gsoap_bin_prefix}/wsdl2h -c -t ${top_srcdir}/examples/ws_typemap.dat -I${stagedir}${prefix}/share/wsdl/glite-lb -o $@ ${stagedir}${prefix}/share/wsdl/glite-lb/LB.wsdl @@ -95,4 +97,4 @@ soap_version.h: perl -ne '$$. == 2 && /.*([0-9]+)\.([0-9]+)\.([0-9]+)([a-z]?).*/ && printf "#define GSOAP_VERSION %d%02d%02d\n#define GSOAP_VERSION_LETTER '\''".($$4?$$4:"\\0")."'\''\n",$$1,$$2,$$3' soapH.h >$@ -rm soapC.cpp soapH.h soapStub.h soapClient.cpp soapServer.cpp soapClientLib.cpp soapServerLib.cpp -.PHONY: default all check stage install clean +.PHONY: default all check stage install clean distclean diff --git a/org.glite.lb.ws-test/configure b/org.glite.lb.ws-test/configure index a67786b..16595a2 100755 --- a/org.glite.lb.ws-test/configure +++ b/org.glite.lb.ws-test/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -248,10 +244,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}{$_}; } @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -423,7 +438,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 +463,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; @@ -468,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -489,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -500,18 +526,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,10 +549,11 @@ 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.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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -547,17 +574,19 @@ 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// ], - 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ], + '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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -598,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -681,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -693,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -703,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -716,10 +753,12 @@ 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/ ], + 'lb.nagios' => [ qq/glite-lb-nagios-plugins/ ], ); %cvs_prefix = ( @@ -729,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -738,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -749,6 +790,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 +802,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/ ], @@ -790,10 +841,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 => { @@ -803,80 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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_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', + 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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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_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.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -893,6 +1013,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' }, }, @@ -910,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -952,10 +1081,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"); @@ -1009,7 +1151,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); @@ -1018,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1033,28 +1176,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; @@ -1090,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1101,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1113,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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}/src/tgz - make $prefix $flags rpm && \ - cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz"; + $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; @@ -1333,6 +1569,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; @@ -1367,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.ws-test/project/ChangeLog b/org.glite.lb.ws-test/project/ChangeLog index d0008fd..8557b23 100644 --- a/org.glite.lb.ws-test/project/ChangeLog +++ b/org.glite.lb.ws-test/project/ChangeLog @@ -94,3 +94,6 @@ 1.2.3-1 - wsdl files moved +1.2.3-2 +- Module rebuilt + diff --git a/org.glite.lb.ws-test/project/version.properties b/org.glite.lb.ws-test/project/version.properties index c420624..b73b5b1 100644 --- a/org.glite.lb.ws-test/project/version.properties +++ b/org.glite.lb.ws-test/project/version.properties @@ -1,3 +1,3 @@ # : /cvs/jra1mw/org.glite.lb.ws-test/project/version.properties,v 1.1 2009/01/15 15:49:26 zsustr Exp $ module.version=1.2.3 -module.age=1 +module.age=2 diff --git a/org.glite.lb.yaim/Makefile b/org.glite.lb.yaim/Makefile index a708753..ef25e74 100644 --- a/org.glite.lb.yaim/Makefile +++ b/org.glite.lb.yaim/Makefile @@ -20,9 +20,8 @@ all ${FILES}: if echo "${localstatedir}" | grep 'glite'>/dev/null; then \ glite_var="${localstatedir}"; \ fi; \ - sed -e 's:@glite_prefix@:${sysroot}${prefix}:' -e 's:@glite_etc@:${sysconfdir}:' -e "s:@glite_var@:$$glite_var:" $(top_srcdir)/config/defaults/glite-lb.pre > glite-lb.pre - - sed -e 's:@glite_etc@:${sysconfdir}:' $(top_srcdir)/config/functions/config_glite_lb.in > config_glite_lb + sed -e 's:@glite_prefix@:${sysroot}${prefix}:' -e 's:@glite_etc@:${sysconfdir}:' -e "s:@glite_var@:$$glite_var:" $(top_srcdir)/config/defaults/glite-lb.pre > glite-lb.pre; \ + sed -e 's:@glite_prefix@:${sysroot}${prefix}:' -e 's:@glite_etc@:${sysconfdir}:' -e "s:@glite_var@:$$glite_var:" $(top_srcdir)/config/functions/config_glite_lb.in > config_glite_lb # metapackage info echo -e "${gLiteCopyrightText}\n\n${gLiteLicenseText}" > LICENSE @@ -52,6 +51,8 @@ stage: check: clean: - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ ${FILES} -.PHONY: default all check install stage clean +distclean: + rm -rvf Makefile.inc *.spec debian/ + +.PHONY: default all check install stage clean distclean diff --git a/org.glite.lb.yaim/config/defaults/glite-lb.pre b/org.glite.lb.yaim/config/defaults/glite-lb.pre index 0902e5d..a3ba409 100644 --- a/org.glite.lb.yaim/config/defaults/glite-lb.pre +++ b/org.glite.lb.yaim/config/defaults/glite-lb.pre @@ -4,65 +4,65 @@ # system settings # -GLITE_LB_LOCATION='@glite_prefix@' -GLITE_LB_LOCATION_ETC='@glite_etc@' -GLITE_LB_LOCATION_VAR='@glite_var@' +#GLITE_LB_LOCATION='@glite_prefix@' +#GLITE_LB_LOCATION_ETC='@glite_etc@' +#GLITE_LB_LOCATION_VAR='@glite_var@' # query timeout -GLITE_WMS_QUERY_TIMEOUT=300 +#GLITE_WMS_QUERY_TIMEOUT=300 # CA certificates directory -X509_CERT_DIR='/etc/grid-security/certificates' +#X509_CERT_DIR='/etc/grid-security/certificates' # VOMS directory -X509_VOMS_DIR='/etc/grid-security/vomsdir' +#X509_VOMS_DIR='/etc/grid-security/vomsdir' # # purge and exports # # purge timeouts -GLITE_LB_EXPORT_PURGE_ARGS='--cleared 2d --aborted 15d --cancelled 15d --other 60d' +#GLITE_LB_EXPORT_PURGE_ARGS='--cleared 2d --aborted 15d --cancelled 15d --other 60d' # enable export of the purged jobs to the Job Provenance -GLITE_LB_EXPORT_ENABLED='false' +#GLITE_LB_EXPORT_ENABLED='false' # Job Provenance server -GLITE_LB_EXPORT_JPPS= +#GLITE_LB_EXPORT_JPPS= # prefix to the Job Provenance installation (if different from $GLITE_LB_LOCATION) -GLITE_JP_LOCATION= +#GLITE_JP_LOCATION= # # L&B configuration # # L&B service type (server/proxy/both), overrided by YAIM when needed -GLITE_LB_TYPE= +#GLITE_LB_TYPE= # configure glite-LB to be used with Real Time Monitor (harvester) -GLITE_LB_RTM_ENABLED='false' +#GLITE_LB_RTM_ENABLED='false' # MSG publish -GLITE_LB_MSG_BROKER='true' -GLITE_LB_MSG_NETWORK='PROD' -LCG_GFAL_INFOSYS='lcg-bdii.cern.ch:2170' +#GLITE_LB_MSG_BROKER='true' +#GLITE_LB_MSG_NETWORK='PROD' +#LCG_GFAL_INFOSYS='lcg-bdii.cern.ch:2170' # L&B authorization (items in list separated by comma) -GLITE_LB_SUPER_USERS= -GLITE_LB_WMS_DN= -GLITE_LB_RTM_DN='/C=UK/O=eScience/OU=Imperial/L=Physics/CN=heppc24.hep.ph.ic.ac.uk/Email=janusz.martyniak@imperial.ac.uk' -GLITE_LB_AUTHZ_ADMIN_ACCESS= -GLITE_LB_AUTHZ_READ_ALL= -GLITE_LB_AUTHZ_READ_PURGE= -GLITE_LB_AUTHZ_STATUS_FOR_MONITORING= -GLITE_LB_AUTHZ_GET_STATISTICS= -GLITE_LB_AUTHZ_GRANT_OWNERSHIP= -GLITE_LB_AUTHZ_REGISTER_JOBS=".*" -GLITE_LB_AUTHZ_LOG_WMS_EVENTS=".*" -GLITE_LB_AUTHZ_LOG_CE_EVENTS=".*" -GLITE_LB_AUTHZ_LOG_GENERAL_EVENTS=".*" +#GLITE_LB_SUPER_USERS= +#GLITE_LB_WMS_DN= +#GLITE_LB_RTM_DN='/C=UK/O=eScience/OU=Imperial/L=Physics/CN=heppc24.hep.ph.ic.ac.uk/Email=janusz.martyniak@imperial.ac.uk' +#GLITE_LB_AUTHZ_ADMIN_ACCESS= +#GLITE_LB_AUTHZ_READ_ALL= +#GLITE_LB_AUTHZ_READ_PURGE= +#GLITE_LB_AUTHZ_STATUS_FOR_MONITORING= +#GLITE_LB_AUTHZ_GET_STATISTICS= +#GLITE_LB_AUTHZ_GRANT_OWNERSHIP= +#GLITE_LB_AUTHZ_REGISTER_JOBS=".*" +#GLITE_LB_AUTHZ_LOG_WMS_EVENTS=".*" +#GLITE_LB_AUTHZ_LOG_CE_EVENTS=".*" +#GLITE_LB_AUTHZ_LOG_GENERAL_EVENTS=".*" # # additional options # # bkserver additional options -GLITE_LB_SERVER_OTHER_OPTIONS= +#GLITE_LB_SERVER_OTHER_OPTIONS= # notification interlogger additional options -GLITE_LB_NOTIF_IL_OTHER_OPTIONS= +#GLITE_LB_NOTIF_IL_OTHER_OPTIONS= # proxy interlogger additional options -GLITE_LB_PROXY_IL_OTHER_OPTIONS= +#GLITE_LB_PROXY_IL_OTHER_OPTIONS= 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 8a02c45..bbb7e39 100644 --- a/org.glite.lb.yaim/config/functions/config_glite_lb.in +++ b/org.glite.lb.yaim/config/functions/config_glite_lb.in @@ -1,5 +1,5 @@ function config_glite_lb_check(){ - requires $1 MYSQL_PASSWORD INSTALL_ROOT GLITE_LOCATION GLITE_LB_LOCATION GLITE_LB_LOCATION_ETC GLITE_LB_LOCATION_VAR GLITE_USER + requires $1 MYSQL_PASSWORD INSTALL_ROOT GLITE_LOCATION } # check directory existence first @@ -21,27 +21,28 @@ function config_glite_lb_libs_append() { function config_glite_lb_setenv(){ - yaimgridenv_set GLITE_USER ${GLITE_USER:-glite} + # Redefine GLITE_USER to value used in packages + yaimgridenv_set GLITE_USER glite # Redefine GLITE_HOME_DIR to make sure we retrieve the correct HOME directory of user glite GLITE_HOME_DIR=`getent passwd ${GLITE_USER} | cut -d: -f6` if [ "x${GLITE_HOME_DIR}" = "x" ]; then yaimlog ERROR "The home directory of ${GLITE_USER} doesn't exist. Check whether the user ${GLITE_USER} was properly created" exit ${YEX_NOSUCHFILE} fi - yaimgridenv_set GLITE_WMS_QUERY_TIMEOUT "${GLITE_WMS_QUERY_TIMEOUT}" + yaimgridenv_set GLITE_WMS_QUERY_TIMEOUT "${GLITE_WMS_QUERY_TIMEOUT:-300}" yaimgridenv_set GLITE_HOST_CERT ${GLITE_HOME_DIR:-/home/glite}/.certs/hostcert.pem yaimgridenv_set GLITE_HOST_KEY ${GLITE_HOME_DIR:-/home/glite}/.certs/hostkey.pem - yaimgridenv_set X509_CERT_DIR "${X509_CERT_DIR}" - yaimgridenv_set X509_VOMS_DIR "${X509_VOMS_DIR}" + yaimgridenv_set X509_CERT_DIR "${X509_CERT_DIR:-/etc/grid-security/certificates}" + yaimgridenv_set X509_VOMS_DIR "${X509_VOMS_DIR:-/etc/grid-security/vomsdir}" yaimgridenv_set GLITE_LB_EXPORT_ENABLED ${GLITE_LB_EXPORT_ENABLED:-false} - yaimgridenv_set GLITE_LB_EXPORT_PURGE_ARGS "${GLITE_LB_EXPORT_PURGE_ARGS}" + yaimgridenv_set GLITE_LB_EXPORT_PURGE_ARGS "${GLITE_LB_EXPORT_PURGE_ARGS:---cleared 2d --aborted 15d --cancelled 15d --other 60d}" yaimgridenv_set GLITE_LB_EXPORT_JPPS ${GLITE_LB_EXPORT_JPPS:-} - yaimgridenv_set GLITE_LB_LOCATION "${GLITE_LB_LOCATION}" - yaimgridenv_set GLITE_LB_LOCATION_ETC "${GLITE_LB_LOCATION_ETC}" - yaimgridenv_set GLITE_LB_LOCATION_VAR "${GLITE_LB_LOCATION_VAR}" - yaimgridenv_set GLITE_JP_LOCATION "${GLITE_JP_LOCATION}" + yaimgridenv_set GLITE_LB_LOCATION "${GLITE_LB_LOCATION:-@glite_prefix@}" + yaimgridenv_set GLITE_LB_LOCATION_ETC "${GLITE_LB_LOCATION_ETC:-@glite_etc@}" + yaimgridenv_set GLITE_LB_LOCATION_VAR "${GLITE_LB_LOCATION_VAR:-@glite_var@}" + yaimgridenv_set GLITE_JP_LOCATION "${GLITE_JP_LOCATION:-}" yaimgridenv_set GLITE_LB_SERVER_OTHER_OPTIONS "${GLITE_LB_SERVER_OTHER_OPTIONS}" yaimgridenv_set GLITE_LB_NOTIF_IL_OTHER_OPTIONS "${GLITE_LB_NOTIF_IL_OTHER_OPTIONS}" @@ -97,6 +98,25 @@ function config_glite_lb_setenv(){ config_glite_lb_libs_append ${INSTALL_ROOT:-'/opt'}/apr-dev config_glite_lb_libs_append ${INSTALL_ROOT:-'/opt'}/aprutil-dev config_glite_lb_libs_append ${INSTALL_ROOT:-'/opt'}/activemq-cpp-library + + GLITE_LB_RTM_ENABLED="${GLITE_LB_RTM_ENABLED:-false}" + GLITE_LB_MSG_BROKER="${GLITE_LB_MSG_BROKER:-true}" + GLITE_LB_MSG_NETWORK="${GLITE_LB_MSG_NETWORK:-PROD}" + LCG_GFAL_INFOSYS="${LCG_GFAL_INFOSYS:-lcg-bdii.cern.ch:2170}" + + #GLITE_LB_SUPER_USERS="${GLITE_LB_SUPER_USERS:-}" + #GLITE_LB_WMS_DN="${GLITE_LB_WMS_DN:-}" + GLITE_LB_RTM_DN="${GLITE_LB_RTM_DN:-/C=UK/O=eScience/OU=Imperial/L=Physics/CN=heppc24.hep.ph.ic.ac.uk/Email=janusz.martyniak@imperial.ac.uk}" + #GLITE_LB_AUTHZ_ADMIN_ACCESS="${GLITE_LB_AUTHZ_ADMIN_ACCESS:-}" + #GLITE_LB_AUTHZ_READ_ALL="${GLITE_LB_AUTHZ_READ_ALL:-}" + #GLITE_LB_AUTHZ_READ_PURGE="${GLITE_LB_AUTHZ_READ_PURGE:-}" + #GLITE_LB_AUTHZ_STATUS_FOR_MONITORING="${GLITE_LB_AUTHZ_STATUS_FOR_MONITORING:-}" + #GLITE_LB_AUTHZ_GET_STATISTICS="${GLITE_LB_AUTHZ_GET_STATISTICS:-}" + #GLITE_LB_AUTHZ_GRANT_OWNERSHIP="${GLITE_LB_AUTHZ_GRANT_OWNERSHIP:-}" + GLITE_LB_AUTHZ_REGISTER_JOBS="${GLITE_LB_AUTHZ_REGISTER_JOBS:-.*}" + GLITE_LB_AUTHZ_LOG_WMS_EVENTS="${GLITE_LB_AUTHZ_LOG_WMS_EVENTS:-.*}" + GLITE_LB_AUTHZ_LOG_CE_EVENTS="${GLITE_LB_AUTHZ_LOG_CE_EVENTS:-.*}" + GLITE_LB_AUTHZ_LOG_GENERAL_EVENTS="${GLITE_LB_AUTHZ_LOG_GENERAL_EVENTS:-.*}" } function config_glite_lb_authz() { @@ -175,15 +195,6 @@ function config_glite_lb() { return 1 fi - LB_PURGE="$GLITE_LB_LOCATION/bin/glite-lb-purge" - if [ ! -x "$LB_PURGE" ]; then - LB_PURGE="$GLITE_LB_LOCATION/sbin/glite-lb-purge" - fi - if [ ! -x "$LB_PURGE" ]; then - yaimlog ABORT "Purge utility not found! Install glite-lb-utils (or glite-lb-client in older version)" - return 1 - fi - chmod og+rx /var/lib/mysql/ chown mysql:mysql /var/run/mysqld/ @@ -285,11 +296,6 @@ EOF fi rm -f /var/tmp/glite-lb-bkindexes.txt - mkdir -p $GLITE_LB_LOCATION_VAR # Needed to store PID of LB server - - chown $GLITE_USER:$GLITE_USER $GLITE_LB_LOCATION_VAR - chmod 0755 $GLITE_LB_LOCATION_VAR - mkdir -p $GLITE_HOME_DIR/.certs chown $GLITE_USER:$GLITE_USER $GLITE_HOME_DIR/.certs chmod 0755 $GLITE_HOME_DIR/.certs @@ -303,32 +309,6 @@ EOF chmod 0644 $GLITE_HOME_DIR/.certs/hostcert.pem chmod 0400 $GLITE_HOME_DIR/.certs/hostkey.pem - # 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; ' - fi - cat << EOF > /etc/cron.d/glite-lb-purge.cron -HOME=/ -MAILTO=$SITE_EMAIL - -1 1 * * * $GLITE_USER . @glite_etc@/profile.d/grid-env.sh ; export GLITE_LB_EXPORT_BKSERVER=$HOSTNAME; $purge_target_runtime_cmd$GLITE_LB_LOCATION/sbin/glite-lb-export.sh >> $logfile 2>&1 -EOF - - touch $logfile - chown $GLITE_USER:$GLITE_USER $logfile - - cat > /etc/logrotate.d/lb-purger < ${GLITE_LB_LOCATION_ETC}/glite-lb/lcas.db - # log file - logfile=/var/log/glite/glite-lb-lcas.log - touch $logfile - chown $GLITE_USER:$GLITE_USER $logfile - cat > /etc/logrotate.d/lb-lcas < ${GLITE_LB_LOCATION_ETC}/glite-lb/glite-lb-harvester.conf fi + # upgrade from L&B <= 3.1.1 + rm -fv /etc/cron.d/glite-lb-purge.cron /etc/logrotate.d/lb-purger /etc/logrotate.d/lb-lcas + . @glite_etc@/profile.d/grid-env.sh ${GLITE_LB_LOCATION_ETC}/init.d/glite-lb-bkserverd restart diff --git a/org.glite.lb.yaim/config/node-info.d/emi/glite-lb b/org.glite.lb.yaim/config/node-info.d/emi/glite-lb index ca33352..5d83bf0 100644 --- a/org.glite.lb.yaim/config/node-info.d/emi/glite-lb +++ b/org.glite.lb.yaim/config/node-info.d/emi/glite-lb @@ -2,7 +2,6 @@ LB_FUNCTIONS=" config_add_pool_env config_crl config_host_certs -config_edgusers config_info_service_lb config_glite_lb config_glite_locallogger diff --git a/org.glite.lb.yaim/configure b/org.glite.lb.yaim/configure index 2e34da2..16595a2 100644 --- a/org.glite.lb.yaim/configure +++ b/org.glite.lb.yaim/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -179,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -208,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -472,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -493,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -527,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -551,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -602,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -685,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -697,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -707,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -725,6 +758,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 = ( @@ -734,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -743,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -769,6 +805,7 @@ for my $ext (keys %deps_aux) { 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', @@ -791,7 +828,7 @@ for my $ext (keys %deps_aux) { }, }, 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 => { @@ -825,8 +862,9 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => 'emi-', }, tag_prefix => { %cvs_tag_prefix }, flavours => '--thrflavour= --nothrflavour=', @@ -835,12 +873,13 @@ for my $ext (keys %deps_aux) { 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', + glite_version=>'emi.emi-version', glue_schema=>'emi.bdii.glue-schema', trustmanager=>'emi.java-security.trustmanager', trustmanager_axis=>'emi.java-security.trustmanager-axis', @@ -853,6 +892,30 @@ for my $ext (keys %deps_aux) { sl5_x86_64_gcc412EPEL => { 'myproxy-devel' => 'myproxy-devel.x86_64', }, + sl6_x86_64_gcc445EPEL => { + 'myproxy-devel' => 'myproxy-devel.x86_64', + }, + deb6_x86_64_gcc445 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { default => { @@ -871,6 +934,23 @@ for my $ext (keys %deps_aux) { gridsite=>'emi.gridsite.devel', jdk=>'java-devel', }, + deb6_x86_64_gcc445 => { + # mappings in ETICS project configuration + #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/], @@ -880,14 +960,16 @@ for my $ext (keys %deps_aux) { }, 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/ ], + 'lb.emi-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.emi-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/ ], }, 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/ ], @@ -896,18 +978,25 @@ for my $ext (keys %deps_aux) { }, ); +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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -924,6 +1013,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' }, }, @@ -941,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -983,10 +1081,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"); @@ -1040,7 +1151,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); @@ -1049,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1123,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1134,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1146,53 +1260,102 @@ 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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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"; } 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}{$_} ? $etics_externs{$platform}{$_} : $_; + my $eext = $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') { + + # 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; } - if (not $used) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; - $used = 1; - } - my $proj = 'externals'; for my $p (keys %etics_projects) { for $m (@{$etics_projects{$p}}) { @@ -1306,26 +1474,31 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; if ($edev) { if ($type eq 'B') { - $eext = $edev; # no runtime - change to devel pkg + # no runtime - change to devel pkg + $eext = $edev; } elsif ($type eq 'BR' or $type eq 'RB') { - print C "$proj|$edev = B\n"; # additional devel pkg + # additional devel pkg + if ($edev ne '-') { $output .= "$proj|$edev = B\n"; } } } - print C "$proj|$eext = $type\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) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; $used = 1; } - print C "$project{etics_name}|$project{etics_name}.$_ = $type\n"; + $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n"; } } + + if ($output) { + print C qq{ +[Platform-$platform:DynamicDependency] +$output}; + } } close C; @@ -1412,16 +1585,41 @@ sub reshuffle_platforms($$) { } for $_ (keys %blacklist) { - if (defined $data->{default}{$_}) { - $value = $data->{default}{$_}; - $data->{default}{$_} = '-'; -#print " deleted $_ from default\n"; + $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) { - next if $platform eq 'default'; - if (not defined $data->{$platform}{$_}) { - $data->{$platform}{$_} = $value; -#print " added $value to $platform\n" - } + delete $data->{$platform}{$_}; } } } @@ -1461,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb.yaim/project/ChangeLog b/org.glite.lb.yaim/project/ChangeLog index d55b926..dc7d1cd 100644 --- a/org.glite.lb.yaim/project/ChangeLog +++ b/org.glite.lb.yaim/project/ChangeLog @@ -78,3 +78,7 @@ - Added missing support for GET_STATISTICS auth section - Access to statistics granted to WMS_DN by yaim. +4.3.10-1 +- Prepend purger logging output with Common Logging Format niceties (SB #88502) +- Workaround SB #85209 for glite-info-provider-service <= 1.7.0. + diff --git a/org.glite.lb.yaim/project/version.properties b/org.glite.lb.yaim/project/version.properties index 2127a2b..56ab499 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.9 +module.version=4.3.10 module.age=1 diff --git a/org.glite.lb/configure b/org.glite.lb/configure index b6f37e5..16595a2 100755 --- a/org.glite.lb/configure +++ b/org.glite.lb/configure @@ -137,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -186,6 +187,7 @@ my %lbmodules = ( 'jp' => [ qw/client doc index primary server-common ws-interface/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -209,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -268,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -351,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -473,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -494,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -532,7 +553,7 @@ BEGIN{ '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/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -565,6 +586,7 @@ BEGIN{ '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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -611,7 +633,7 @@ for my $jar (keys %need_jars) { lb.utils:R / ], 'lb.server' => [ qw/ - lb.ws-interface lb.types:B lb.common lb.state-machine + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -693,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -705,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -715,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -743,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -752,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -837,6 +864,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'emi-', 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => 'emi-', }, tag_prefix => { %cvs_tag_prefix }, flavours => '--thrflavour= --nothrflavour=', @@ -851,7 +879,7 @@ for my $ext (keys %deps_aux) { yaim_bdii=>'emi.bdii.yaim-bdii', gip_service=>'emi.bdii.glite-info-provider-service', bdii=>'emi.bdii.core', - glite_version=>'emi.misc.glite-version', + glite_version=>'emi.emi-version', glue_schema=>'emi.bdii.glue-schema', trustmanager=>'emi.java-security.trustmanager', trustmanager_axis=>'emi.java-security.trustmanager-axis', @@ -868,23 +896,25 @@ for my $ext (keys %deps_aux) { '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', + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { @@ -905,20 +935,21 @@ for my $ext (keys %deps_aux) { 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', + # mappings in ETICS project configuration + #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 => { @@ -929,16 +960,16 @@ for my $ext (keys %deps_aux) { }, 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/ ], + 'lb.emi-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.emi-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/ ], }, supported_platforms => { sl5_x86_64_gcc412EPEL => 1, sl5_ia32_gcc412EPEL => 1, sl6_x86_64_gcc445EPEL => 1, -# deb6_x86_64_gcc445 => 1, + deb6_x86_64_gcc445 => 1, }, modules => { 'lb' => [ qw/emi-lb/ ], @@ -964,7 +995,7 @@ my %gridsite_deb = ( deb5_ia32_gcc432 => \%gridsite_deb, slc4_x86_64_gcc346 => \%gridsite_rpm, slc4_ia32_gcc346 => \%gridsite_rpm, - sl6_x86_64_gcc445 => \%gridsite_rpm, + sl6_x86_64_gcc445EPEL => \%gridsite_rpm, deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { @@ -1002,7 +1033,11 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } sub mkinc @@ -1011,12 +1046,13 @@ sub mkinc 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 +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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -1124,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1198,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1209,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1221,10 +1260,10 @@ sub mode_etics { print STDERR "package.summary not found for $subsys.$module!\n"; } my %cmd; - $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{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})"; $cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}"; $cmd{default}{init} = 'None'; @@ -1620,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lb/project/version.properties b/org.glite.lb/project/version.properties index fe762ac..b102e49 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.1.0 +module.version=3.1.1 module.age=1 diff --git a/org.glite.lbjp-common.db/Makefile b/org.glite.lbjp-common.db/Makefile index 4002576..82392ba 100644 --- a/org.glite.lbjp-common.db/Makefile +++ b/org.glite.lbjp-common.db/Makefile @@ -5,7 +5,7 @@ stagedir=. distdir=. globalprefix=glite lbutilsprefix=lbu -package=glite-lb-utils-db +package=glite-lbjp-common-db PREFIX=/opt/glite prefix= @@ -176,9 +176,11 @@ install: all clean: rm -rvf *.o *.lo *.loT .libs lib* *.c *.h *.dox C/ CPP/ - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ rm -rvf db_expire db_test db_test_mysql db_test_psql timezone +distclean: + rm -rvf Makefile.inc *.spec debian/ + db-mysql.o db-mysql.lo: db-mysql.c ${COMPILE} ${MYSQL_CPPFLAGS} -c $< @@ -203,4 +205,4 @@ db_test_mysql.lo: libglite_lbu_dbtest.la db.h db-int.h db_test.c db-mysql.lo: db-mysql.c db-int.h db.h db-pg.lo: db-pg.c db-int.h db.h -.PHONY: default all compile check examples doc stage dist distsrc distbin install clean test_coverage check_soname +.PHONY: default all compile check examples doc stage dist distsrc distbin install clean test_coverage check_soname distclean diff --git a/org.glite.lbjp-common.db/configure b/org.glite.lbjp-common.db/configure index 27f197c..16595a2 100755 --- a/org.glite.lbjp-common.db/configure +++ b/org.glite.lbjp-common.db/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -248,10 +244,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}{$_}; } @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -423,7 +438,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 +463,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; @@ -468,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -489,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -500,18 +526,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,10 +549,11 @@ 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.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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -539,7 +566,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' => [], @@ -547,17 +574,19 @@ 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// ], - 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ], + '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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -598,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -681,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -693,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -703,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -716,10 +753,12 @@ 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/ ], + 'lb.nagios' => [ qq/glite-lb-nagios-plugins/ ], ); %cvs_prefix = ( @@ -729,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -738,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -749,6 +790,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 +802,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/ ], @@ -790,10 +841,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 => { @@ -803,80 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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_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', + 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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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_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.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -893,6 +1013,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' }, }, @@ -910,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -952,10 +1081,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"); @@ -1009,7 +1151,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); @@ -1018,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1033,28 +1176,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; @@ -1090,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1101,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1113,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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}/src/tgz - make $prefix $flags rpm && \ - cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz"; + $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; @@ -1333,6 +1569,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; @@ -1367,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lbjp-common.db/project/ChangeLog b/org.glite.lbjp-common.db/project/ChangeLog index 3b17ac4..dc7f6ae 100644 --- a/org.glite.lbjp-common.db/project/ChangeLog +++ b/org.glite.lbjp-common.db/project/ChangeLog @@ -105,3 +105,6 @@ 3.0.3-2 - Module rebuilt +3.0.3-3 +- Module rebuilt + diff --git a/org.glite.lbjp-common.db/project/version.properties b/org.glite.lbjp-common.db/project/version.properties index c65030a..537e32a 100644 --- a/org.glite.lbjp-common.db/project/version.properties +++ b/org.glite.lbjp-common.db/project/version.properties @@ -1,3 +1,3 @@ : /cvs/jra1mw/org.glite.lbjp-common.db/project/version.properties,v 1.2 2009/01/21 10:44:34 zsustr Exp $ module.version=3.0.3 -module.age=2 +module.age=3 diff --git a/org.glite.lbjp-common.db/test/timezone.cpp b/org.glite.lbjp-common.db/test/timezone.cpp index 746bec5..71cf0ca 100644 --- a/org.glite.lbjp-common.db/test/timezone.cpp +++ b/org.glite.lbjp-common.db/test/timezone.cpp @@ -60,7 +60,7 @@ class ZoneTest: public CppUnit::TestFixture public: void setUp() { - tz0 = getenv("TZ"); + tz = tz0 = getenv("TZ"); } void tearDown() { diff --git a/org.glite.lbjp-common.gsoap-plugin/Makefile b/org.glite.lbjp-common.gsoap-plugin/Makefile index 50b0b27..84db12a 100644 --- a/org.glite.lbjp-common.gsoap-plugin/Makefile +++ b/org.glite.lbjp-common.gsoap-plugin/Makefile @@ -339,11 +339,13 @@ clean: rm -rvf *.c *.h *.xml *.nsmap *.o *.lo .libs ${EXAMPLES} ${TESTS} rm -rvf CalcService.wsdl wscalc.xsd rm -rvf glite_gscompat.h sizeof_soap - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ for v in ${gsoap_versions_noflavours} ${gsoap_versions_flavours}; do \ rm -rvf `echo $$v | tr -d .`; \ done +distclean: + rm -rvf Makefile.inc *.spec debian/ + %.c.o: %.c ${COMPILE} ${GSOAP_DEFAULT_CFLAGS} -o $@ -c $< diff --git a/org.glite.lbjp-common.gsoap-plugin/configure b/org.glite.lbjp-common.gsoap-plugin/configure index e2b3330..16595a2 100755 --- a/org.glite.lbjp-common.gsoap-plugin/configure +++ b/org.glite.lbjp-common.gsoap-plugin/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -253,9 +249,13 @@ $externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mys $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}{$_}; } @@ -271,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -354,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -476,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -497,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -508,18 +526,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 = ( @@ -531,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -555,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -606,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -689,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -701,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -711,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -729,6 +758,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 = ( @@ -738,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -747,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -758,6 +790,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 @@ -769,29 +802,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/ ], @@ -799,10 +841,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 => { @@ -812,79 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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/ ], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -901,6 +1013,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' }, }, @@ -918,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -960,10 +1081,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"); @@ -1017,7 +1151,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); @@ -1026,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1041,28 +1176,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; @@ -1098,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1109,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1121,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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; @@ -1344,6 +1569,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; @@ -1378,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lbjp-common.gsoap-plugin/project/ChangeLog b/org.glite.lbjp-common.gsoap-plugin/project/ChangeLog index def390d..0dfefd2 100644 --- a/org.glite.lbjp-common.gsoap-plugin/project/ChangeLog +++ b/org.glite.lbjp-common.gsoap-plugin/project/ChangeLog @@ -95,3 +95,6 @@ 3.0.2-7 - Module rebuilt +3.0.2-8 +- 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 2c2d07e..e58f9d9 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=7 +module.age=8 diff --git a/org.glite.lbjp-common.gss/Makefile b/org.glite.lbjp-common.gss/Makefile index 8d26b4c..58949c5 100644 --- a/org.glite.lbjp-common.gss/Makefile +++ b/org.glite.lbjp-common.gss/Makefile @@ -164,7 +164,9 @@ install: clean: rm -rf *.o *.lo *.a *.la .libs test_gss gss_server gss_client - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ %.o: %.c ${COMPILE} ${GLOBUS_GSSAPI_GSI_CFLAGS} ${LIBCARES_CFLAGS} -o $@ -c $< diff --git a/org.glite.lbjp-common.gss/configure b/org.glite.lbjp-common.gss/configure index 2e34da2..16595a2 100755 --- a/org.glite.lbjp-common.gss/configure +++ b/org.glite.lbjp-common.gss/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -179,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -208,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -472,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -493,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -527,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -551,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -602,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -685,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -697,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -707,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -725,6 +758,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 = ( @@ -734,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -743,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -769,6 +805,7 @@ for my $ext (keys %deps_aux) { 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', @@ -791,7 +828,7 @@ for my $ext (keys %deps_aux) { }, }, 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 => { @@ -825,8 +862,9 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => 'emi-', }, tag_prefix => { %cvs_tag_prefix }, flavours => '--thrflavour= --nothrflavour=', @@ -835,12 +873,13 @@ for my $ext (keys %deps_aux) { 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', + glite_version=>'emi.emi-version', glue_schema=>'emi.bdii.glue-schema', trustmanager=>'emi.java-security.trustmanager', trustmanager_axis=>'emi.java-security.trustmanager-axis', @@ -853,6 +892,30 @@ for my $ext (keys %deps_aux) { sl5_x86_64_gcc412EPEL => { 'myproxy-devel' => 'myproxy-devel.x86_64', }, + sl6_x86_64_gcc445EPEL => { + 'myproxy-devel' => 'myproxy-devel.x86_64', + }, + deb6_x86_64_gcc445 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { default => { @@ -871,6 +934,23 @@ for my $ext (keys %deps_aux) { gridsite=>'emi.gridsite.devel', jdk=>'java-devel', }, + deb6_x86_64_gcc445 => { + # mappings in ETICS project configuration + #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/], @@ -880,14 +960,16 @@ for my $ext (keys %deps_aux) { }, 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/ ], + 'lb.emi-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.emi-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/ ], }, 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/ ], @@ -896,18 +978,25 @@ for my $ext (keys %deps_aux) { }, ); +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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -924,6 +1013,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' }, }, @@ -941,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -983,10 +1081,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"); @@ -1040,7 +1151,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); @@ -1049,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1123,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1134,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1146,53 +1260,102 @@ 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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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"; } 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}{$_} ? $etics_externs{$platform}{$_} : $_; + my $eext = $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') { + + # 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; } - if (not $used) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; - $used = 1; - } - my $proj = 'externals'; for my $p (keys %etics_projects) { for $m (@{$etics_projects{$p}}) { @@ -1306,26 +1474,31 @@ package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n"; if ($edev) { if ($type eq 'B') { - $eext = $edev; # no runtime - change to devel pkg + # no runtime - change to devel pkg + $eext = $edev; } elsif ($type eq 'BR' or $type eq 'RB') { - print C "$proj|$edev = B\n"; # additional devel pkg + # additional devel pkg + if ($edev ne '-') { $output .= "$proj|$edev = B\n"; } } } - print C "$proj|$eext = $type\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) { - print C qq{ -[Platform-$platform:DynamicDependency] -}; $used = 1; } - print C "$project{etics_name}|$project{etics_name}.$_ = $type\n"; + $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n"; } } + + if ($output) { + print C qq{ +[Platform-$platform:DynamicDependency] +$output}; + } } close C; @@ -1412,16 +1585,41 @@ sub reshuffle_platforms($$) { } for $_ (keys %blacklist) { - if (defined $data->{default}{$_}) { - $value = $data->{default}{$_}; - $data->{default}{$_} = '-'; -#print " deleted $_ from default\n"; + $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) { - next if $platform eq 'default'; - if (not defined $data->{$platform}{$_}) { - $data->{$platform}{$_} = $value; -#print " added $value to $platform\n" - } + delete $data->{$platform}{$_}; } } } @@ -1461,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lbjp-common.gss/project/ChangeLog b/org.glite.lbjp-common.gss/project/ChangeLog index 2eeb42a..4252468 100644 --- a/org.glite.lbjp-common.gss/project/ChangeLog +++ b/org.glite.lbjp-common.gss/project/ChangeLog @@ -85,3 +85,8 @@ - warning fixes (type cast, 32/64 portability) - gss functions documented in code +3.0.5-1 +- compiler warnings, cosmetic changes +- LB/GSS rutines try connecting to alternate addresses +- savannah bug #85224 fixed. DN matches are not case-sensitive anymore. + diff --git a/org.glite.lbjp-common.gss/project/version.properties b/org.glite.lbjp-common.gss/project/version.properties index b349b40..8d96d4c 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.4 +module.version=3.0.5 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 534d2da..3190535 100644 --- a/org.glite.lbjp-common.gss/src/glite_gss.c +++ b/org.glite.lbjp-common.gss/src/glite_gss.c @@ -790,9 +790,9 @@ 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. - * */ + * 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" @@ -1309,6 +1309,7 @@ edg_wll_gss_watch_creds(const char *proxy_file, time_t *last_time) return 0; } +/** Close the connection. */ int edg_wll_gss_watch_creds_gsi(const char *proxy_file, time_t *last_time) { diff --git a/org.glite.lbjp-common.jp-interface/Makefile b/org.glite.lbjp-common.jp-interface/Makefile index 552b366..88de0d8 100644 --- a/org.glite.lbjp-common.jp-interface/Makefile +++ b/org.glite.lbjp-common.jp-interface/Makefile @@ -102,10 +102,12 @@ install: clean: rm -rvf *.o *.lo .libs lib* - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ rm -vf type_test type_test.xml rm -f glite jp +distclean: + rm -rvf Makefile.inc *.spec debian/ + %.thr.lo: %.c ${COMPILE} -o $@ -c $< diff --git a/org.glite.lbjp-common.jp-interface/configure b/org.glite.lbjp-common.jp-interface/configure index e2b3330..16595a2 100755 --- a/org.glite.lbjp-common.jp-interface/configure +++ b/org.glite.lbjp-common.jp-interface/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -253,9 +249,13 @@ $externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mys $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}{$_}; } @@ -271,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -354,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -476,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -497,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -508,18 +526,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 = ( @@ -531,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -555,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -606,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -689,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -701,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -711,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -729,6 +758,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 = ( @@ -738,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -747,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -758,6 +790,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 @@ -769,29 +802,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/ ], @@ -799,10 +841,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 => { @@ -812,79 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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/ ], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -901,6 +1013,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' }, }, @@ -918,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -960,10 +1081,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"); @@ -1017,7 +1151,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); @@ -1026,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1041,28 +1176,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; @@ -1098,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1109,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1121,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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; @@ -1344,6 +1569,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; @@ -1378,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lbjp-common.jp-interface/project/ChangeLog b/org.glite.lbjp-common.jp-interface/project/ChangeLog index f4e1b71..034a478 100644 --- a/org.glite.lbjp-common.jp-interface/project/ChangeLog +++ b/org.glite.lbjp-common.jp-interface/project/ChangeLog @@ -77,3 +77,6 @@ 2.1.2-7 - Module rebuilt +2.1.2-8 +- 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 43d3922..983a6c6 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=7 +module.age=8 diff --git a/org.glite.lbjp-common.log/Makefile b/org.glite.lbjp-common.log/Makefile index f41d7af..d88d882 100644 --- a/org.glite.lbjp-common.log/Makefile +++ b/org.glite.lbjp-common.log/Makefile @@ -5,7 +5,7 @@ stagedir=. distdir=. globalprefix=glite lbutilsprefix=lbu -package=glite-lbu-log +package=glite-lbjp-common-log version=0.0.0 PREFIX=/opt/glite prefix= @@ -78,9 +78,11 @@ install: compile clean: rm -rvf *.o *.lo .libs lib* - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ rm -rvf test +distclean: + rm -rvf Makefile.inc *.spec debian/ + check: test LOG4C_RCPATH=${top_srcdir}/tests ./test diff --git a/org.glite.lbjp-common.log/configure b/org.glite.lbjp-common.log/configure index 27f197c..16595a2 100755 --- a/org.glite.lbjp-common.log/configure +++ b/org.glite.lbjp-common.log/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -248,10 +244,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}{$_}; } @@ -267,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -350,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -423,7 +438,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 +463,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; @@ -468,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -489,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -500,18 +526,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,10 +549,11 @@ 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.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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -539,7 +566,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' => [], @@ -547,17 +574,19 @@ 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// ], - 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B myproxy-libs:R voms libtool:R/ ], + '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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -598,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -681,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -693,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -703,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -716,10 +753,12 @@ 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/ ], + 'lb.nagios' => [ qq/glite-lb-nagios-plugins/ ], ); %cvs_prefix = ( @@ -729,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -738,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -749,6 +790,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 +802,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/ ], @@ -790,10 +841,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 => { @@ -803,80 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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_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', + 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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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_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.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -893,6 +1013,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' }, }, @@ -910,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -952,10 +1081,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"); @@ -1009,7 +1151,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); @@ -1018,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1033,28 +1176,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; @@ -1090,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1101,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1113,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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}/src/tgz - make $prefix $flags rpm && \ - cp ${moduleDir}/RPMTMP/SOURCES/gridsite-${version}.src.tar.gz ${moduleDir}/src/tgz"; + $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; @@ -1333,6 +1569,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; @@ -1367,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lbjp-common.log/project/ChangeLog b/org.glite.lbjp-common.log/project/ChangeLog index 41e30a0..4b6f6fb 100644 --- a/org.glite.lbjp-common.log/project/ChangeLog +++ b/org.glite.lbjp-common.log/project/ChangeLog @@ -62,3 +62,6 @@ 1.1.2-6 - Module rebuilt +1.1.2-7 +- Module rebuilt + diff --git a/org.glite.lbjp-common.log/project/version.properties b/org.glite.lbjp-common.log/project/version.properties index 137672b..0da6e46 100644 --- a/org.glite.lbjp-common.log/project/version.properties +++ b/org.glite.lbjp-common.log/project/version.properties @@ -1,3 +1,3 @@ # $Header$ module.version=1.1.2 -module.age=6 +module.age=7 diff --git a/org.glite.lbjp-common.maildir/Makefile b/org.glite.lbjp-common.maildir/Makefile index 27de2a6..56660f5 100644 --- a/org.glite.lbjp-common.maildir/Makefile +++ b/org.glite.lbjp-common.maildir/Makefile @@ -5,7 +5,7 @@ stagedir=. distdir=. globalprefix=glite lbutilsprefix=lbu -package=glite-lb-utils-maildir +package=glite-lbjp-common-maildir version=1.0.0 PREFIX=/opt/glite prefix= @@ -94,11 +94,13 @@ install: all clean: rm -rvf *.o *.lo .libs lib* *.c *.h *.dox C/ CPP/ - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ + +distclean: + rm -rvf Makefile.inc *.spec debian/ %.o %.lo: %.c ${COMPILE} -c $< maildir.lo: maildir.c maildir.h -.PHONY: default all compile check examples doc stage dist distsrc distbin install clean test_coverage +.PHONY: default all compile check examples doc stage dist distsrc distbin install clean distclean test_coverage diff --git a/org.glite.lbjp-common.maildir/configure b/org.glite.lbjp-common.maildir/configure index e2b3330..16595a2 100755 --- a/org.glite.lbjp-common.maildir/configure +++ b/org.glite.lbjp-common.maildir/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -253,9 +249,13 @@ $externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mys $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}{$_}; } @@ -271,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -354,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -476,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -497,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -508,18 +526,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 = ( @@ -531,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -555,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -606,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -689,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -701,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -711,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -729,6 +758,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 = ( @@ -738,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -747,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -758,6 +790,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 @@ -769,29 +802,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/ ], @@ -799,10 +841,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 => { @@ -812,79 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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/ ], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -901,6 +1013,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' }, }, @@ -918,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -960,10 +1081,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"); @@ -1017,7 +1151,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); @@ -1026,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1041,28 +1176,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; @@ -1098,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1109,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1121,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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; @@ -1344,6 +1569,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; @@ -1378,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lbjp-common.maildir/project/ChangeLog b/org.glite.lbjp-common.maildir/project/ChangeLog index 9f40510..084ef80 100644 --- a/org.glite.lbjp-common.maildir/project/ChangeLog +++ b/org.glite.lbjp-common.maildir/project/ChangeLog @@ -68,3 +68,6 @@ 2.1.2-7 - Module rebuilt +2.1.2-8 +- Module rebuilt + diff --git a/org.glite.lbjp-common.maildir/project/version.properties b/org.glite.lbjp-common.maildir/project/version.properties index 3afee53..2bcafc7 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=7 +module.age=8 diff --git a/org.glite.lbjp-common.server-bones/Makefile b/org.glite.lbjp-common.server-bones/Makefile index 4709fa2..730f6e2 100644 --- a/org.glite.lbjp-common.server-bones/Makefile +++ b/org.glite.lbjp-common.server-bones/Makefile @@ -3,7 +3,7 @@ top_srcdir=.. stagedir=. globalprefix=glite lbutilsprefix=lbu -package=glite-lb-server-bones +package=glite-lbjp-common-server-bones version=0.0.1 PREFIX=/opt/glite prefix= @@ -70,15 +70,15 @@ ${LTLIB}: ${LOBJS} stage: compile $(MAKE) install PREFIX=${stagedir} DOSTAGE=yes -check: - -echo "No unit tests so far." +check: example + LOG4C_RCPATH=${PREFIX}${sysconfdir}/glite-lb ${top_srcdir}/examples/run_test.sh example: srv_example cnt_example -srv_example: srv_example.o +srv_example: srv_example.o ${LTLIB} ${LINK} -o $@ ${LTLIB} srv_example.o -cnt_example: cnt_example.o +cnt_example: cnt_example.o ${LTLIB} ${LINK} -o $@ cnt_example.o doc: @@ -92,7 +92,9 @@ install: clean: rm -rvf *.o *.lo .libs lib* srv_example cnt_example - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ -%.o: %.c +distclean: + rm -rvf Makefile.inc *.spec debian/ + +%.o %.lo: %.c ${COMPILE} -c $< diff --git a/org.glite.lbjp-common.server-bones/configure b/org.glite.lbjp-common.server-bones/configure index e2b3330..16595a2 100755 --- a/org.glite.lbjp-common.server-bones/configure +++ b/org.glite.lbjp-common.server-bones/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -253,9 +249,13 @@ $externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mys $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}{$_}; } @@ -271,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -354,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -476,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -497,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -508,18 +526,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 = ( @@ -531,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -555,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -606,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -689,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -701,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -711,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -729,6 +758,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 = ( @@ -738,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -747,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -758,6 +790,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 @@ -769,29 +802,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/ ], @@ -799,10 +841,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 => { @@ -812,79 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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/ ], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -901,6 +1013,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' }, }, @@ -918,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -960,10 +1081,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"); @@ -1017,7 +1151,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); @@ -1026,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1041,28 +1176,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; @@ -1098,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1109,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1121,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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; @@ -1344,6 +1569,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; @@ -1378,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lbjp-common.server-bones/examples/cnt_example.c b/org.glite.lbjp-common.server-bones/examples/cnt_example.c index 22f2bf2..c6a4830 100644 --- a/org.glite.lbjp-common.server-bones/examples/cnt_example.c +++ b/org.glite.lbjp-common.server-bones/examples/cnt_example.c @@ -23,8 +23,7 @@ limitations under the License. #include #include #include -#include -#include +#include #ifndef dprintf #define dprintf(x) { if (debug) printf x; fflush(stdout); } @@ -59,14 +58,42 @@ static void usage(char *me) } +static int try_connect(char *addr, char *port) { + struct addrinfo hints; + struct addrinfo *ai_all = NULL, *ai; + int gaie, sock = -1; + + memset(&hints, 0, sizeof(hints)); + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_ADDRCONFIG | AI_NUMERICHOST | AI_NUMERICSERV; + gaie = getaddrinfo(addr, port, &hints, &ai_all); + if (gaie != 0 || !ai_all) return -1; + + for (ai = ai_all; ai; ai = ai->ai_next) { + sock = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if (sock == -1) continue; + if (connect(sock, ai->ai_addr, ai->ai_addrlen) == 0) { + break; + } else { + close(sock); + sock = -1; + } + } + freeaddrinfo(ai_all); + + return sock; +} + + int main(int argc, char **argv) { - struct sockaddr_in addr; - char buff[512], - *me; - int opt, - sock, - n; + char portstr[10]; + char buff[512], + *me; + int opt, + sock = -1, + fd, + n; int repeat = 1; me = strrchr(argv[0], '/'); @@ -88,21 +115,16 @@ int main(int argc, char **argv) } } - bzero((char *) &addr, sizeof(addr)); - addr.sin_family = AF_INET; - addr.sin_addr.s_addr = inet_addr("127.0.0.1"); - addr.sin_port = htons(port); - if ( (sock = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) - { - perror("socket"); - exit(1); - } - if ( connect(sock, (struct sockaddr *) &addr, sizeof(addr)) < 0 ) - { - perror("connect"); + snprintf(portstr, sizeof(portstr), "%d", port); + + if ((sock = try_connect("127.0.0.1", portstr)) == -1 && + (sock = try_connect("::1", portstr)) == -1) { + fprintf(stderr, "can't connect\n"); exit(1); } + n = strlen(msg? msg: DEF_MSG); + fd = fileno(stdout); for (;repeat; repeat--) { if ( writen(sock, msg? msg: DEF_MSG, n) != n ) { @@ -114,12 +136,14 @@ int main(int argc, char **argv) if ( n < 0 ) { perror("read() reply error"); + free(msg); return 1; } - writen(0, buff, n); + writen(fd, buff, n); } close(sock); + free(msg); return 0; } diff --git a/org.glite.lbjp-common.server-bones/examples/run_test.sh b/org.glite.lbjp-common.server-bones/examples/run_test.sh new file mode 100644 index 0000000..d21b8a2 --- /dev/null +++ b/org.glite.lbjp-common.server-bones/examples/run_test.sh @@ -0,0 +1,37 @@ +#! /bin/bash + +./srv_example > /tmp/log.$$ & +SRV_PID=$! +disown $SRV_PID + +sleep 1 + +a=`./cnt_example -p 9999 -m "Applejack +"` +ret1=$? + +b=`./cnt_example -p 9998 -m "Applejack +"` +ret2=$? + +kill -SIGTERM $SRV_PID + +n=`grep 'disconnect handler' /tmp/log.$$ | wc -l` +rm -f /tmp/log.$$ + +if [ $ret1 -ne 0 -o $ret2 -ne 0 ]; then + echo "$0: error launching cnt_example" + exit 1 +fi + +if [ "$a" != "reply: Applejack" -o "$b" != "reply: APPLEJACK" ]; then + echo "$0: error in reply" + exit 2 +fi + +if [ "$n" != "2" ]; then + echo "$0: error running server" + exit 3 +fi + +exit 0 diff --git a/org.glite.lbjp-common.server-bones/examples/srv_example.c b/org.glite.lbjp-common.server-bones/examples/srv_example.c index 8cae54c..cd46278 100644 --- a/org.glite.lbjp-common.server-bones/examples/srv_example.c +++ b/org.glite.lbjp-common.server-bones/examples/srv_example.c @@ -26,6 +26,7 @@ limitations under the License. #include #include +#include "glite/lbu/log.h" #include "srvbones.h" #ifndef dprintf @@ -46,8 +47,8 @@ static int disconnect(int, struct timeval *, void *); static int echo(int, struct timeval *, void *); static int upper_echo(int, struct timeval *, void *); -#define ECHO_PORT 9999 -#define UPPER_ECHO_PORT 9998 +#define ECHO_PORT "9999" +#define UPPER_ECHO_PORT "9998" #define SRV_ECHO 0 #define SRV_UPPER_ECHO 1 @@ -59,47 +60,24 @@ static struct glite_srvbones_service service_table[] = { int main(void) { - struct sockaddr_in myaddr; - - - if ( ((service_table[SRV_ECHO].conn = socket(AF_INET, SOCK_STREAM, 0)) == -1) - || ((service_table[SRV_UPPER_ECHO].conn = socket(AF_INET, SOCK_STREAM, 0)) == -1) ) - { - perror("socket"); + if (glite_common_log_init()) { + fprintf(stderr,"glite_common_log_init() failed, exiting."); exit(1); } - bzero((char *) &myaddr, sizeof(myaddr)); - myaddr.sin_family = AF_INET; - myaddr.sin_addr.s_addr = htonl(INADDR_ANY); - myaddr.sin_port = htons(ECHO_PORT); - if ( bind(service_table[SRV_ECHO].conn, (struct sockaddr *)&myaddr, sizeof(myaddr)) == -1 ) - { - perror("bind"); + if (glite_srvbones_daemon_listen(NULL, ECHO_PORT, &service_table[SRV_ECHO].conn) != 0) exit(1); - } - bzero((char *) &myaddr, sizeof(myaddr)); - myaddr.sin_family = AF_INET; - myaddr.sin_addr.s_addr = htonl(INADDR_ANY); - myaddr.sin_port = htons(UPPER_ECHO_PORT); - if ( bind(service_table[SRV_UPPER_ECHO].conn, (struct sockaddr *)&myaddr, sizeof(myaddr)) == -1 ) - { - perror("bind"); - exit(1); - } - if ( listen(service_table[SRV_ECHO].conn, 10) - || listen(service_table[SRV_UPPER_ECHO].conn, 10) ) - { - perror("listen()"); + if (glite_srvbones_daemon_listen(NULL, UPPER_ECHO_PORT, &service_table[SRV_UPPER_ECHO].conn) != 0) { + close(service_table[SRV_ECHO].conn); exit(1); } + setpgid(0, getpid()); glite_srvbones_set_param(GLITE_SBPARAM_SLAVES_COUNT, 1); glite_srvbones_run(NULL, service_table, sizofa(service_table), 1); - return 0; } @@ -200,7 +178,6 @@ int readln(int fd, char *out, int nbytes) static char *buffer_end = buffer; int n; - dprintf(("reading line\n")); while ( 1 ) { if ( buffer_end - buffer ) { diff --git a/org.glite.lbjp-common.server-bones/interface/srvbones.h b/org.glite.lbjp-common.server-bones/interface/srvbones.h index 5244066..f3b428c 100644 --- a/org.glite.lbjp-common.server-bones/interface/srvbones.h +++ b/org.glite.lbjp-common.server-bones/interface/srvbones.h @@ -110,6 +110,13 @@ extern int glite_srvbones_run( */ int glite_srvbones_daemonize(const char *servername, const char *custom_pidfile, const char *custom_logfile); +/** + * Create listening socket. + * + * \return 0 OK, non-zero error + */ +int glite_srvbones_daemon_listen(const char *name, char *port, int *conn_out); + #ifdef __cplusplus } #endif diff --git a/org.glite.lbjp-common.server-bones/project/ChangeLog b/org.glite.lbjp-common.server-bones/project/ChangeLog index 57c1338..dee1dc0 100644 --- a/org.glite.lbjp-common.server-bones/project/ChangeLog +++ b/org.glite.lbjp-common.server-bones/project/ChangeLog @@ -73,3 +73,6 @@ 2.1.3-1 - Change log priority for slave suicide messages +2.1.4-1 +- Quit parent process silently on background purge (improvement for SB #77974). + diff --git a/org.glite.lbjp-common.server-bones/project/version.properties b/org.glite.lbjp-common.server-bones/project/version.properties index 15b5d0d..6fce595 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.3 +module.version=2.1.4 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 dd41c39..0510cd7 100644 --- a/org.glite.lbjp-common.server-bones/src/srvbones.c +++ b/org.glite.lbjp-common.server-bones/src/srvbones.c @@ -46,6 +46,7 @@ limitations under the License. #define REQUEST_TIMEOUT 10 /* timeout for a single request */ #define NEW_CLIENT_DURATION 10 /* how long a client is considered new, i.e. busy connection is not closed to serve other clients */ +#define CON_QUEUE 10 /* listen() connection queue */ #ifdef LB_PROF extern void _start (void), etext (void); @@ -324,6 +325,66 @@ int glite_srvbones_daemonize(const char *servername, const char *custom_pidfile, return 1; } +int glite_srvbones_daemon_listen(const char *name, char *port, int *conn_out) { + struct addrinfo *ai; + struct addrinfo hints; + int conn; + int gaie; + static const int zero = 0; + static const int one = 1; + + memset (&hints, '\0', sizeof (hints)); + hints.ai_flags = AI_NUMERICSERV | AI_PASSIVE | AI_ADDRCONFIG; + hints.ai_socktype = SOCK_STREAM; + hints.ai_family = AF_INET6; + + gaie = getaddrinfo (name, port, &hints, &ai); + if (gaie != 0 || ai == NULL) { + hints.ai_family = 0; + gaie = getaddrinfo (NULL, port, &hints, &ai); + } + + gaie = getaddrinfo (name, port, &hints, &ai); + if (gaie != 0) { + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: %s", gai_strerror (gaie)); + return 1; + } + if (ai == NULL) { + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "getaddrinfo: no result"); + return 1; + } + + conn = socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol); + if ( conn < 0 ) { + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "socket(): %s", strerror(errno)); + freeaddrinfo(ai); + return 1; + } + setsockopt(conn, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); + if (ai->ai_family == AF_INET6) + setsockopt(conn, IPPROTO_IPV6, IPV6_V6ONLY, &zero, sizeof(zero)); + + if ( bind(conn, ai->ai_addr, ai->ai_addrlen) ) + { + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "bind(%s): %s", port, strerror(errno)); + close(conn); + freeaddrinfo(ai); + return 1; + } + + if ( listen(conn, CON_QUEUE) ) { + glite_common_log(LOG_CATEGORY_CONTROL, LOG_PRIORITY_FATAL, "listen(): %s", strerror(errno)); + close(conn); + freeaddrinfo(ai); + return 1; + } + + freeaddrinfo(ai); + + *conn_out = conn; + return 0; +} + static int dispatchit(int sock_slave, int sock, int sidx) { struct sockaddr_storage a; diff --git a/org.glite.lbjp-common.trio/Makefile b/org.glite.lbjp-common.trio/Makefile index 9af068f..9c10316 100644 --- a/org.glite.lbjp-common.trio/Makefile +++ b/org.glite.lbjp-common.trio/Makefile @@ -5,7 +5,7 @@ top_builddir=${top_srcdir}/${builddir} stagedir=. distdir=. globalprefix=glite -package=glite-lb-utils-trio +package=glite-lbjp-common-trio version=0.0.0 PREFIX=/opt/glite lbuprefix=lbu @@ -109,7 +109,9 @@ install: all clean: rm -rvf *.o *.lo .libs lib* *.c *.h *.dox C/ CPP/ rm -vf trio_test - rm -rvf log.xml rpmbuild/ RPMS/ tgz/ debian/ +distclean: + rm -rvf Makefile.inc *.spec debian/ + %.o: %.c ${COMPILE} ${CFLAGS} -c $< diff --git a/org.glite.lbjp-common.trio/configure b/org.glite.lbjp-common.trio/configure index e2b3330..16595a2 100755 --- a/org.glite.lbjp-common.trio/configure +++ b/org.glite.lbjp-common.trio/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; @@ -136,7 +137,8 @@ my %externs = ( prefix=> '/usr' }, jdk => { - prefix=> '/usr/java/latest' + prefix=> '/usr/java/latest', + locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ], }, libtar => { prefix=> '/usr' @@ -154,14 +156,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,12 +181,13 @@ 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/ ], 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ], 'px' => [ qw/proxyrenewal myproxy-yaim/ ], + 'canl' => [ qw/c/ ], ); @@ -216,6 +211,7 @@ my @opts = ( 'lbjp-common-tag=s' => \$lbjp_tag, 'jp-tag=s' => \$jp_tag, 'jobid-tag=s' => \$jobid_tag, + 'canl-tag=s' => \$canl_tag, 'help' => \$help, 'libdir=s' => \$libdir, 'project=s' => \$project, @@ -253,9 +249,13 @@ $externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mys $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}{$_}; } @@ -271,6 +271,10 @@ for my $ext (keys %need_externs_aux) { $need_externs_type{$ext}->{$pkg} = $type; } } +if ($project eq 'emi') { + $extranodmod{lb} = 'lb.emi-lb'; + $extranodmod{px} = 'px.emi-px'; +} for $_ (keys %{$project{modules}}) { push @{$lbmodules{$_}},@{$project{modules}{$_}}; } @@ -354,7 +358,14 @@ if ($mode eq 'build') { for my $ext (keys %externs) { $jdk_prefix = $ENV{'JAVA_HOME'}; print "JAVA_HOME=$jdk_prefix\n"; } else { - print "(using default $externs{$ext}{prefix}))\n" + foreach my $i (0..$#{$externs{$ext}{locations}}) { + if (-e $externs{$ext}{locations}[$i]) { + $jdk_prefix=$externs{$ext}{locations}[$i]; + print "(found directory $jdk_prefix)\n"; + last; + } + } + print "(using default $externs{$ext}{prefix})\n" unless ($jdk_prefix); } $externs{$ext}{prefix} = $jdk_prefix if ($jdk_prefix); } @@ -476,7 +487,7 @@ sub mode_checkout() { } } } - if ($lbjp_tag){ + if ($lbjp_tag) { for (@{$lbmodules{'lbjp-common'}}){ if ("lbjp-common.".$_ eq $module){ $tag = '-r '.$lbjp_tag; @@ -497,6 +508,13 @@ sub mode_checkout() { } } } + if ($canl_tag) { + for (@{$lbmodules{'canl'}}){ + if ("canl.".$_ eq $module){ + $tag = '-r '.$canl_tag; + } + } + } #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){ # print "found"; #} @@ -508,18 +526,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 = ( @@ -531,10 +549,11 @@ 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/ ], - 'lb.ws-interface' => [ qw/libxslt:B/ ], + 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ], 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ], 'lb.types' => [ qw// ], 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ], @@ -555,17 +574,19 @@ 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 + 'canl.c' => [ qw/cares:B openssl:B libtool:B/ ], ); %need_jars = ( @@ -606,8 +627,13 @@ 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 + lb.ws-interface lb.types:B lb.common lb.state-machine lb.utils:R lbjp-common.db lbjp-common.server-bones lbjp-common.trio lbjp-common.maildir lbjp-common.log jobid.api-c lbjp-common.gsoap-plugin lbjp-common.gss @@ -689,6 +715,8 @@ for my $jar (keys %need_jars) { 'px.emi-px' => [qw/px.myproxy-yaim:R/], 'px.myproxy-yaim' => [ qw// ], 'px.myproxy-config' => [], + + 'canl.c' => [], ); for my $ext (keys %deps_aux) { @@ -701,7 +729,7 @@ for my $ext (keys %deps_aux) { } -%extrafull = ( gridsite=>'org.gridsite.core'); +%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c'); #( java => 'client-java' ); %extranodmod = ( @@ -711,7 +739,8 @@ for my $ext (keys %deps_aux) { jpclient => 'jp.client', lb => 'lb.glite-LB', px => 'px.glite-PX', - proxyrenewal => 'px.proxyrenewal' + proxyrenewal => 'px.proxyrenewal', + canl => 'canl.c', ); %obsoletes = ( @@ -729,6 +758,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 = ( @@ -738,6 +768,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'org.glite', 'gridsite' => 'org', 'px' => 'org.glite', + 'canl' => 'emi', ); %cvs_tag_prefix = ( @@ -747,6 +778,7 @@ for my $ext (keys %deps_aux) { 'lbjp-common' => 'glite-', 'gridsite' => '', 'px' => 'glite-', + 'canl' => 'emi-', ); # ==== projects specification ==== @@ -758,6 +790,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 @@ -769,29 +802,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/ ], @@ -799,10 +841,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 => { @@ -812,79 +862,141 @@ for my $ext (keys %deps_aux) { 'jp' => 'emi-', 'jobid' => 'emi-', 'lbjp-common' => 'emi-', - 'gridsite' => '', + 'gridsite' => 'emi-', 'px' => 'emi-', + 'canl' => '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.emi-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 => { + axis => 'axis1.4', + # mappings in ETICS project configuration + #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' => 'libmysqlclient16', + #'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 => { + # mappings in ETICS project configuration + #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/ ], + 'lb.emi-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.emi-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/ ], }, 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_gcc445EPEL => \%gridsite_rpm, + deb6_x86_64_gcc445 => \%gridsite_deb, }, 'jobid.api-java' => { default => { 'package.buildarch' => 'noarch' }, @@ -901,6 +1013,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' }, }, @@ -918,20 +1033,26 @@ $buildroot{'gridsite.core'} = 'src'; sub full { my $short = shift; - return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short; + my $subsys = $short; + $subsys =~ s/\..*//; + + my $cvs_prefix = exists $cvs_prefix{$subsys} ? $cvs_prefix{$subsys} : 'org.glite'; + return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short"; } 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 lb.emi-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 jp.client jp.doc jp.index jp.primary jp.server-common jp.ws-interface -px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config +px.proxyrenewal px.myproxy-yaim px.glite-PX px.myproxy-config px.emi-px +canl.c /; @aux{@m} = (1) x ($#m+1); @@ -960,10 +1081,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"); @@ -1017,7 +1151,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); @@ -1026,12 +1160,13 @@ sub mode_etics { ($major,$minor,$rev,$age) = ($1,$2,$3,$4); } else { - my $path = "$cvs_prefix{$subsys}.$subsys.$module/project"; + my $full = full "$subsys.$module"; + my $path = "$full/project"; if ($subsys eq 'gridsite') { $path = "$cvs_prefix{$subsys}.$subsys.core/project"; } open V,"$path/version.properties" - or die "$cvs_prefix{$subsys}.$subsys.$module/project/version.properties: $!\n"; + or die "$path/version.properties: $!\n"; while ($_ = ) { chomp; @@ -1041,28 +1176,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; @@ -1098,8 +1235,10 @@ sub mode_etics { my $package_description = ""; my $package_summary = ""; - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.description") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.description"; + my $cvs_module = full "$subsys.$module"; + + if (-e "$cvs_module/project/package.description") { + open V, "$cvs_module/project/package.description"; $package_description = join ("", ); close V; chomp $package_description; @@ -1109,8 +1248,8 @@ sub mode_etics { else { print STDERR "package.description not found for $subsys.$module!\n"; } - if (-e "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary") { - open V, "$cvs_prefix{$subsys}.$subsys.$module/project/package.summary"; + if (-e "$cvs_module/project/package.summary") { + open V, "$cvs_module/project/package.summary"; $package_summary = join ("", ); close V; chomp $package_summary; @@ -1121,50 +1260,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_module 2>/dev/null"; + #$cmd_vcs{checkout} = "((test -d jra1mw/.git && (cd jra1mw; git pull)) || (git clone -q http://scientific.zcu.cz/git/jra1mw.git"; + #$cmd_vcs{checkout} .= " && (cd jra1mw; git checkout -b \${tag} --track origin/epel)" unless ($conftag =~ /HEAD/); + #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_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; @@ -1344,6 +1569,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; @@ -1378,6 +1659,7 @@ What to build: --jp-tag=tag checkout JP modules with specific tag --lbjp-common-tag=tag checkout lbjp-common modules with specific tag --jobid-tag=tag checkout jobid modules with specific tag + --canl-tag=tag checkout canl modules with specific tag Dependencies (summary of what will be used is always printed): --with-EXTERNAL=PATH where to look for an external [autodetect] diff --git a/org.glite.lbjp-common.trio/project/ChangeLog b/org.glite.lbjp-common.trio/project/ChangeLog index 4b7befe..7b4d6ea 100644 --- a/org.glite.lbjp-common.trio/project/ChangeLog +++ b/org.glite.lbjp-common.trio/project/ChangeLog @@ -77,3 +77,6 @@ 2.1.2-7 - Module rebuilt +2.1.2-8 +- Module rebuilt + diff --git a/org.glite.lbjp-common.trio/project/version.properties b/org.glite.lbjp-common.trio/project/version.properties index 320e968..2705339 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=7 +module.age=8 diff --git a/org.glite.lbjp-common/project/version.properties b/org.glite.lbjp-common/project/version.properties index 8065827..da8a1f0 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.6 +module.version=3.0.7 module.age=1 -- 1.8.2.3