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}
${COMPILE} -o $@ -c $<
-.PHONY: default all compile check stage install clean
+.PHONY: default all compile check stage install clean distclean
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
- '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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
2.0.3-1
- Handling error returned by gethostbyname() (Savannah Bug #67627)
+2.0.3-2
+- Module rebuilt
+
# : /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
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}
${COMPILE} -o $@ -c $<
-.PHONY: default all compile check install clean
+.PHONY: default all compile check install clean distclean
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
- '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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
1.1.3-1
- experiments with staging in summary Makefile in etics-less build
+1.1.3-2
+- Module rebuilt
+
# : /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
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
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
- '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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
1.1.3-6
- Module rebuilt
+1.1.3-7
+- Module rebuilt
+
# : /cvs/glite/org.glite.jobid.api-java/project/version.properties,v 1.5 2009/01/20 17:25:13 akrenek Exp $
module.version=1.1.3
-module.age=6
+module.age=7
# : /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
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
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
- '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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
- 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
+
# $Header$
-module.version=1.1.6
+module.version=1.1.7
module.age=1
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;
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;
}
}
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;
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;
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 += ":";
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}
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
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
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
# 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/ ],
);
'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,
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
'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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
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',
},
},
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 => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ 'canl' => 'emi-',
},
tag_prefix => { %cvs_tag_prefix },
flavours => '--thrflavour= --nothrflavour=',
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',
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 => {
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/],
},
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/ ],
},
);
+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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
if ($subsys eq 'lb' and $module eq 'client') {
- $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
- $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
}
}
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
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}}) {
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;
}
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}{$_};
}
}
}
--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]
- 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
+
# $Header$
-module.version=5.0.8
+module.version=5.0.9
module.age=1
NULL
};
+static int zero = 0;
}
-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;
}
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}
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 $<
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
- '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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
- 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
+
# $Header$
-module.version=8.0.6
+module.version=8.0.7
module.age=1
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:
LBTG-Abstract.tex \
LBAG-Troubleshooting.tex
-.PHONY: all clean doc
+.PHONY: default all generate doc stage check install clean distclean doc
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
# 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/ ],
);
'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,
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
'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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
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',
},
},
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 => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ 'canl' => 'emi-',
},
tag_prefix => { %cvs_tag_prefix },
flavours => '--thrflavour= --nothrflavour=',
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',
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 => {
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/],
},
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/ ],
},
);
+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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
if ($subsys eq 'lb' and $module eq 'client') {
- $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
- $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
}
}
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
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}}) {
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;
}
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}{$_};
}
}
}
--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]
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
+
# $Header$
-module.version=1.2.9
+module.version=1.2.10
module.age=1
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}
\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
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}
}
\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.
+
+
\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,
top_srcdir=..
stagedir=.
-package=glite-lb-yaim
+package=glite-lb-emi-lb
version=0.0.0
PREFIX=/opt/glite
prefix=
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
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
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 = (
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/ ],
);
'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,
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"; }
$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}{$_};
}
$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; }
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}; }
$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);
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B/ ],
- '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/ ],
'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' => [],
'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 = (
'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
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/ ],
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// ],
'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) {
}
-%extrafull = ( gridsite=>'org.gridsite.core');
+%extrafull = ( gridsite=>'org.gridsite.core', 'canl.c' => 'emi.canl.canl-c');
#( java => 'client-java' );
%extranodmod = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
'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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${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',
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 => {
'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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/$cvs_prefix{$subsys}.$subsys.$module/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/$cvs_prefix{$subsys}.$subsys.$module/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
print C "package.obsoletes = $_\n";
print C "package.replaces = $_\n";
}
+ for (@{$conflicts{"$subsys.$module"}}) {
+ print C "package.conflicts = $_\n";
+ }
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/$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;
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;
--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]
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}
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
#!/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.
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
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
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2/ ],
+ 'lb.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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
);
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
+
+};
-[Platform-default:BuildCommand]
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
--- /dev/null
+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
1.1.6-3
- Module rebuilt
+1.1.7-1
+- LSB-compliant init scripts
+
-module.version=1.1.6
-module.age=3
+module.version=1.1.7
+module.age=1
#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))
}
+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;
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");
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)
"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",
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++) {
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}
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/
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2/ ],
+ 'lb.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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
);
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
+
+};
-[Platform-default:BuildCommand]
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
1.0.6-1
- cmsclient example extended
+1.0.7-1
+- Support build with gcc 4.4.4 (SL6)
+
-Plugin for delivering L&B notification messages into the messaging infrustructure.
+Plugin for delivering L&B notification messages into the messaging infrastructure.
# $Header$
-module.version=1.0.6
+module.version=1.0.7
module.age=1
stagedir=.
globalprefix=glite
lbprefix=lb
-package=glite-lb-client
+package=glite-lb-logger
version=0.0.0
PREFIX=/opt/glite
prefix=
${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} \
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/
#!/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.
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
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;;
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
# 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/ ],
);
'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,
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
'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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
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',
},
},
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 => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ 'canl' => 'emi-',
},
tag_prefix => { %cvs_tag_prefix },
flavours => '--thrflavour= --nothrflavour=',
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',
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 => {
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/],
},
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/ ],
},
);
+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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
if ($subsys eq 'lb' and $module eq 'client') {
- $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
- $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
}
}
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
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}}) {
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;
}
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}{$_};
}
}
}
--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]
--- /dev/null
+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
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)
+
# $Header$
-module.version=2.2.6
+module.version=2.2.7
module.age=1
#include "logd_proto.h"
+#define CON_QUEUE 5
+
+static const int zero = 0;
static const int one = 1;
extern char* socket_path;
}
}
+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;
+}
+
/*
*----------------------------------------------------------------------
*
{
int ret;
int sock;
- struct addrinfo *ai;
- struct addrinfo hints;
char *portstr = NULL;
asprintf(&portstr, "%d", 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;
}
top_srcdir=..
stagedir=.
-package=emi-nagios-lb
+package=emi-lb-nagios-plugins
version=0.0.0
prefix=
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}
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
'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/ ],
);
'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,
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
'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/ ],
'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 = (
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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
'lbjp-common' => 'emi-',
'gridsite' => 'emi-',
'px' => 'emi-',
+ 'canl' => 'emi-',
},
tag_prefix => { %cvs_tag_prefix },
flavours => '--thrflavour= --nothrflavour=',
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',
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 => {
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 => {
},
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/ ],
},
);
+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' },
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 ($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);
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);
($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 ($_ = <V>) {
chomp;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
if ($subsys eq 'lb' and $module eq 'client') {
- $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
- $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
}
}
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
--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]
1.0.0-1
- Initial version of the nagios module
+1.0.0-2
+- Module rebuilt
+
# $Header
module.version=1.0.0
-module.age=1
+module.age=2
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
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
-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
${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})
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 $@
--- /dev/null
+/var/log/glite/glite-lb-lcas.log {
+ daily
+ rotate 4
+ missingok
+}
--- /dev/null
+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
--- /dev/null
+/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
--- /dev/null
+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
#!/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.
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
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;;
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
# 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/ ],
);
'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,
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
'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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
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',
},
},
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 => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ 'canl' => 'emi-',
},
tag_prefix => { %cvs_tag_prefix },
flavours => '--thrflavour= --nothrflavour=',
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',
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 => {
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/],
},
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/ ],
},
);
+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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
if ($subsys eq 'lb' and $module eq 'client') {
- $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
- $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
}
}
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
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}}) {
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;
}
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}{$_};
}
}
}
--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]
--- /dev/null
+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
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
+
# : /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
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;
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;
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 ) {
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)
if ( ((*timeout).tv_sec < 0) || (((*timeout).tv_sec == 0) && ((*timeout).tv_usec == 0)) ) return(1);
else return(0);
}
-
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;
return 0;
err:
+ free(can_peername);
return -1;
}
*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);
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
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2/ ],
+ 'lb.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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
);
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
+
+};
-[Platform-default:BuildCommand]
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
--- /dev/null
+/sbin/ldconfig
1.2.2-5
- Module rebuilt
+1.2.3-1
+- Compile state machine as shared library
+
# $Header$
-module.version=1.2.2
-module.age=5
+module.version=1.2.3
+module.age=1
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);
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:
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;
#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;
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
// 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)) {
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:
}
if (! js->pub.location) js->pub.location = strdup("this is CREAM");
+ processData_Cream(js, e);
return RET_OK;
}
#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;
}
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
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2/ ],
+ 'lb.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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
);
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
+
+};
-[Platform-default:BuildCommand]
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
1.2.3-5
- Module rebuilt
+1.2.3-6
+- Module rebuilt
+
# $Header$
module.version=1.2.3
-module.age=5
+module.age=6
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 $<
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
- '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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
- '--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
# $Header$
module.version=2.1.4
-module.age=1
+module.age=2
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 $@
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2/ ],
+ 'lb.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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
);
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
+
+};
-[Platform-default:BuildCommand]
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
- at3 location detection reverted
- '--stage=/' behaviour fixed in configure
+3.2.4-2
+- Module rebuilt
+
# $Header$
module.version=3.2.4
-module.age=1
+module.age=2
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
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
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2/ ],
+ 'lb.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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
);
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
+
+};
-[Platform-default:BuildCommand]
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
1.2.3-1
- wsdl files moved
+1.2.3-2
+- Module rebuilt
+
# : /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
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
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
# 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=
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
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}"
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() {
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/
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
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 <<EOF
-$logfile {
- weekly
- compress
- rotate 4
- missingok
-}
-EOF
-
# LCAS plugin
# config file
lcas_libarch=lib
fi
lcas_plugin="$GLITE_LB_LOCATION/$lcas_libarch/modules/lcas_lb.mod"
echo "pluginname=\"$lcas_plugin\"" > ${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 <<EOF
-$logfile {
- daily
- compress
- rotate 4
- missingok
-}
-EOF
# MSG publish
if [ "$GLITE_LB_MSG_BROKER" = 'false' ]; then
echo $HOSTNAME > ${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
config_add_pool_env
config_crl
config_host_certs
-config_edgusers
config_info_service_lb
config_glite_lb
config_glite_locallogger
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
# 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/ ],
);
'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,
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
'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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
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',
},
},
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 => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ 'canl' => 'emi-',
},
tag_prefix => { %cvs_tag_prefix },
flavours => '--thrflavour= --nothrflavour=',
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',
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 => {
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/],
},
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/ ],
},
);
+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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
if ($subsys eq 'lb' and $module eq 'client') {
- $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
- $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
}
}
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
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}}) {
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;
}
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}{$_};
}
}
}
--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]
- 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.
+
# $Header$
-module.version=4.3.9
+module.version=4.3.10
module.age=1
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
'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/ ],
);
'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,
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
'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/ ],
'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 = (
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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
'lbjp-common' => 'emi-',
'gridsite' => 'emi-',
'px' => 'emi-',
+ 'canl' => 'emi-',
},
tag_prefix => { %cvs_tag_prefix },
flavours => '--thrflavour= --nothrflavour=',
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',
'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 => {
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 => {
},
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/ ],
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' => {
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 ($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);
($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 ($_ = <V>) {
chomp;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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';
--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]
# : /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
distdir=.
globalprefix=glite
lbutilsprefix=lbu
-package=glite-lb-utils-db
+package=glite-lbjp-common-db
PREFIX=/opt/glite
prefix=
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 $<
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
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2/ ],
+ 'lb.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/ ],
'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' => [],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
);
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
+
+};
-[Platform-default:BuildCommand]
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
3.0.3-2
- Module rebuilt
+3.0.3-3
+- Module rebuilt
+
: /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
public:
void setUp() {
- tz0 = getenv("TZ");
+ tz = tz0 = getenv("TZ");
}
void tearDown() {
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 $<
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
- '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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
3.0.2-7
- Module rebuilt
+3.0.2-8
+- Module rebuilt
+
# $Header$
module.version=3.0.2
-module.age=7
+module.age=8
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 $<
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
# 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/ ],
);
'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,
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
'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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
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',
},
},
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 => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ 'canl' => 'emi-',
},
tag_prefix => { %cvs_tag_prefix },
flavours => '--thrflavour= --nothrflavour=',
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',
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 => {
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/],
},
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/ ],
},
);
+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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
if ($subsys eq 'lb' and $module eq 'client') {
- $cmd{compile} = "make rpath=$project{local_prefix}/\${libdir}";
- $cmd{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
}
}
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
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}}) {
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;
}
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}{$_};
}
}
}
--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]
- 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.
+
# $Header$
-module.version=3.0.4
+module.version=3.0.5
module.age=1
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"
return 0;
}
+/** Close the connection. */
int
edg_wll_gss_watch_creds_gsi(const char *proxy_file, time_t *last_time)
{
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 $<
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
- '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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
2.1.2-7
- Module rebuilt
+2.1.2-8
+- Module rebuilt
+
#: /cvs/jra1mw/org.glite.lbjp-common.jp-interface/project/version.properties,v 1.1.1.1 2009/01/21 14:43:52 zsustr Exp $
module.version=2.1.2
-module.age=7
+module.age=8
distdir=.
globalprefix=glite
lbutilsprefix=lbu
-package=glite-lbu-log
+package=glite-lbjp-common-log
version=0.0.0
PREFIX=/opt/glite
prefix=
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
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
open MAK,">Makefile" or die "Makefile: $!\n";
- print MAK "all: @modules\n\nclean check:\n";
+ print MAK "all: @modules\n\n";
+ print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
+ print MAK "clean check install:\n";
for (@modules) {
my $full = full($_);
@ldeps{@{$deps{$_}}} = 1;
for my $x (split /,/,$staged) { delete $ldeps{$x}; }
my @dnames = $module ? () : keys %ldeps;
+ my $snames = $#dnames == -1 ? '' : join('-stage ', @dnames).'-stage';
my $full = full($_);
my $build = $buildroot{$_};
print MAK "$_: @dnames\n\tcd $full/$build && \${MAKE} && \${MAKE} install\n\n";
+ print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
}
close MAK;
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
- 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2/ ],
+ 'lb.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/ ],
'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' => [],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
);
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
+ cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
+
+};
-[Platform-default:BuildCommand]
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$conflicts{"$subsys.$module"}}) {
print C "package.conflicts = $_\n";
}
+ for (@{$provides{"$subsys.$module"}}) {
+ print C "package.provides = $_\n";
+ }
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
1.1.2-6
- Module rebuilt
+1.1.2-7
+- Module rebuilt
+
# $Header$
module.version=1.1.2
-module.age=6
+module.age=7
distdir=.
globalprefix=glite
lbutilsprefix=lbu
-package=glite-lb-utils-maildir
+package=glite-lbjp-common-maildir
version=1.0.0
PREFIX=/opt/glite
prefix=
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
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
- '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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
2.1.2-7
- Module rebuilt
+2.1.2-8
+- Module rebuilt
+
# : /cvs/jra1mw/org.glite.lbjp-common.maildir/project/version.properties,v 1.1 2007/11/01 20:17:45 valtri Exp $
module.version=2.1.2
-module.age=7
+module.age=8
stagedir=.
globalprefix=glite
lbutilsprefix=lbu
-package=glite-lb-server-bones
+package=glite-lbjp-common-server-bones
version=0.0.1
PREFIX=/opt/glite
prefix=
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:
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 $<
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
- '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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
+#include <netdb.h>
#ifndef dprintf
#define dprintf(x) { if (debug) printf x; fflush(stdout); }
}
+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], '/');
}
}
- 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 )
{
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;
}
--- /dev/null
+#! /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
#include <netinet/in.h>
#include <arpa/inet.h>
+#include "glite/lbu/log.h"
#include "srvbones.h"
#ifndef dprintf
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
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;
}
static char *buffer_end = buffer;
int n;
-
dprintf(("reading line\n"));
while ( 1 ) {
if ( buffer_end - buffer ) {
*/
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
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).
+
# : /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
#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);
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;
stagedir=.
distdir=.
globalprefix=glite
-package=glite-lb-utils-trio
+package=glite-lbjp-common-trio
version=0.0.0
PREFIX=/opt/glite
lbuprefix=lbu
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 $<
#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
-my @nodes = qw/client server logger logger-msg utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
my @default_nodes = qw/lb px proxyrenewal/;
my %enable_nodes;
my %disable_nodes;
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
},
libtar => {
prefix=> '/usr'
prefix=>'/opt/activemq-cpp-library',
pkg => 'activemq-cpp'
},
- apr => {
- prefix=>'/opt/apr',
- pkg => 'apr-1'
- },
- aprutil => {
- prefix=>'/opt/apr-util',
- pkg => 'apr-util-1'
- },
);
my %jar = (
# additional modules from $project{modules} are automatically added
#
my %lbmodules = (
- 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios/],
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
'jobid' => [qw/api-c api-cpp api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ 'canl' => [ qw/c/ ],
);
'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,
$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}{$_};
}
$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}{$_}};
}
$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);
}
}
}
}
- if ($lbjp_tag){
+ if ($lbjp_tag) {
for (@{$lbmodules{'lbjp-common'}}){
if ("lbjp-common.".$_ eq $module){
$tag = '-r '.$lbjp_tag;
}
}
}
+ if ($canl_tag) {
+ for (@{$lbmodules{'canl'}}){
+ if ("canl.".$_ eq $module){
+ $tag = '-r '.$canl_tag;
+ }
+ }
+ }
#if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
# print "found";
#}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
'lb.doc' => [ qw/tetex-latex:B/ ],
'lb.logger' => [ qw/cppunit:B libtool:B/ ],
'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql:R mysql-server:R mysql-devel:B cppunit:B gsoap:B classads voms lcas gridsite bison:B libtool:B libxml2 flex:B/ ],
'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B/ ],
'lb.utils' => [ qw/cppunit:B libtool:B/ ],
- '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/ ],
'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 = (
'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
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
);
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 = (
jpclient => 'jp.client',
lb => 'lb.glite-LB',
px => 'px.glite-PX',
- proxyrenewal => 'px.proxyrenewal'
+ proxyrenewal => 'px.proxyrenewal',
+ canl => 'canl.c',
);
%obsoletes = (
%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 = (
'lbjp-common' => 'org.glite',
'gridsite' => 'org',
'px' => 'org.glite',
+ 'canl' => 'emi',
);
%cvs_tag_prefix = (
'lbjp-common' => 'glite-',
'gridsite' => '',
'px' => 'glite-',
+ 'canl' => 'emi-',
);
# ==== projects specification ====
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ globus_proxy_utils=>'vdt_globus_essentials',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
- vdt=>[qw/globus globus_essentials gpt/],
+ vdt=>[qw/globus globus_essentials globus_proxy_utils gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
'jp' => 'emi-',
'jobid' => 'emi-',
'lbjp-common' => 'emi-',
- 'gridsite' => '',
+ 'gridsite' => 'emi-',
'px' => 'emi-',
+ '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' },
'lb.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'lb.nagios' => {
+ default => { 'package.buildarch' => 'noarch' },
+ },
'px.yaim' => {
default => { 'package.buildarch' => 'noarch' },
},
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);
}
}
}
+
+ mkdir $build."project" unless (-d $build."project");
+ open PKGCHL,">".$build."project/changelog"
+ or die $build."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $date = strftime("%a %b %d %Y", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+- automatically generated package
+};
+ close PKGCHL;
+
unless ($top_srcdir eq '.') {
unlink $build."Makefile";
symlink "$top_srcdir/Makefile",$build."Makefile" or die "symlink $top_srcdir/Makefile ".$build."Makefile: $!\n";
- for my $file ('.pre', '.post', '.preun', '.postun changelog') {
+ for my $file ('.pre', '.post', '.preun', '.postun') {
my $pfile = "project/$file";
if (-f "$full/$pfile") {
mkdir "$build/project" unless (-d "$build/project");
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
($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 ($_ = <V>) {
chomp;
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;
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 ("", <V>);
close V;
chomp $package_description;
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 ("", <V>);
close V;
chomp $package_summary;
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 <<EOF
+ project = $project
+ top_srcdir = ..
+ $flags
+ EOF";
+ $cmd{default}{compile} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir}";
+ $cmd{default}{clean} = "rm -rvf \${moduleDir}/src/tgz; $cmd{default}{clean}";
+ $cmd{default}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ $cmd{default}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ make prefix=\${prefix}$project{local_prefix} rpm && \\
cp \${moduleDir}/RPMTMP/SOURCES/gridsite-\${version}.src.tar.gz \${moduleDir}/src/tgz";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ $cmd{$p} = ();
+ for my $c (keys %{$cmd{default}}) { $cmd{$p}{$c} = $cmd{default}{$c}; }
+ $cmd{$p}{packaging} = "mkdir -p \${moduleDir}/RPMTMP/SOURCES \${moduleDir}/src/tgz 2>/dev/null || true
+ chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb && \\
+ cp \${moduleDir}/RPMTMP/gridsite_\${version}-\${age}.\${platformFamily}.tar.gz \${moduleDir}/src/tgz";
+ }
+ }
+ elsif ($module eq '1.5-compat') {
+ $cmd_vcs{checkout} = "cvs -d \${vcsroot} co -d \${moduleName} ".($conftag eq 'HEAD' ? '-A' : '-r ${tag}')." $cvs_prefix{$subsys}.$subsys.core 2>/dev/null";
+ $cmd{default}{init} = 'echo "/sbin/ldconfig" > project/.post
+ echo "/sbin/ldconfig" > project/.postun';
+ $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
+ project = emi
+ libdir = \${libdir}
+ MAJOR_VERSION=1
+ MINOR_VERSION=1.5
+ PATCH_VERSION=1.5.0
+ VERSION=\\\$(PATCH_VERSION)
+ RELEASE_VERSION=\${age}.\${platformFamily}
+ GSOAPDIR=\\`pkg-config gsoap --variable=prefix\\`
+ OPENSSL_GLOBUS_FLAGS=\\`pkg-config globus-openssl --cflags\\`
+ OPENSSL_GLOBUS_LIBS=\\`pkg-config globus-openssl --libs\\`
+ EOF";
+ $cmd{default}{compile} = "make -C src prefix=\${prefix}$project{local_prefix}
+ rm -fv project/debian.changelog";
+ $cmd{default}{install} = "make -C src prefix=\${prefix}$project{local_prefix} install-lib
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so.1
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.so
+ rm -fv \${prefix}$project{local_prefix}/\${libdir}/libgridsite*.a";
}
else {
- $cmd{clean} = 'None';
- $cmd{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
- $cmd{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
}
}
elsif ($subsys eq 'px' and $module eq 'myproxy-config') {
- $cmd{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure --root=\${prefix} --prefix= --stage=\${stageDir} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
- $cmd{compile} = 'make';
- $cmd{test} = 'make check';
- $cmd{install} = 'make install';
+ $cmd{default}{configure} = "/usr/bin/perl $confdir/configure $project{flavours} --root=\${prefix} --prefix=$project{local_prefix} --stage=\${stageDir} --sysroot=\${package.prefix} --libdir=\${libdir} --project=\${projectName} --module $subsys.$module @copts";
+ $cmd{default}{compile} = 'make';
+ $cmd{default}{test} = 'make check';
+ $cmd{default}{install} = 'make install';
+ if ($subsys eq 'lb' and $module eq 'client') {
+ $cmd{default}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
+ $cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
+ }
}
my $defprops = '';
[Platform-default:VcsCommand]
displayName = None
description = None
-tag = $cmd{tag}
+tag = $cmd_vcs{tag}
branch = None
commit = None
-checkout = $cmd{checkout}
+checkout = $cmd_vcs{checkout}
-[Platform-default:BuildCommand]
+};
+
+ for my $p (keys %cmd) {
+ next if $p ne 'default' and exists $project{supported_platforms} and not exists $project{supported_platforms}{$p};
+
+ print C qq{[Platform-$p:BuildCommand]
postpublish = None
-packaging = $cmd{packaging}
+packaging = $cmd{$p}{packaging}
displayName = None
description = None
doc = None
prepublish = None
publish = None
-compile = $cmd{compile}
-init = None
-install = $cmd{install}
-clean = $cmd{clean}
-test = $cmd{test}
-configure = $cmd{configure}
+compile = $cmd{$p}{compile}
+init = $cmd{$p}{init}
+install = $cmd{$p}{install}
+clean = $cmd{$p}{clean}
+test = $cmd{$p}{test}
+configure = $cmd{$p}{configure}
checkstyle = None
-[Platform-default:Property]
+};
+ }
+
+ print C qq{[Platform-default:Property]
$buildroot
-aprSuffix = 0
-package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS
package.preserve.libtool = false
$package_description$package_summary$defprops};
for (@{$provides{"$subsys.$module"}}) {
print C "package.provides = $_\n";
}
+ print C "\n";
for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
next if $pp eq 'default';
for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
}
- print C "package.RPMSLocation = \${moduleDir}/RPMTMP/RPMS
-package.SRPMSLocation = \${moduleDir}/RPMTMP/SRPMS\n";
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
-};
- for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
- my $edev = $project{etics_externs_devel}{$_};
- next if ($eext eq '-');
+ for my $platform ('default', keys %{$project{supported_platforms}}) {
+ my $used = 0;
+ my $output = '';
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_};
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+
+ # for the default platform using package of the same
+ # name for runtime dependency
+ if (not $eext) {
+ if ($platform eq 'default') {
+#print "default runtime $_ on default\n";
+ $eext = $_; }
+ else {
+#print "no runtime $_ on $platform\n";
+ $eext = '-'; }
+ }
+ if ($eext eq '-' and $edev eq '-') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
- my $proj = 'externals';
- for my $p (keys %etics_projects) {
- for $m (@{$etics_projects{$p}}) {
- $proj = $p if $m eq $_;
+ my $proj = 'externals';
+ for my $p (keys %etics_projects) {
+ for $m (@{$etics_projects{$p}}) {
+ $proj = $p if $m eq $_;
+ }
}
- }
- my $type = $need_externs_type{"$subsys.$module"}->{$_};
+ my $type = $need_externs_type{"$subsys.$module"}->{$_};
- if ($edev) {
- if ($type eq 'B') {
- $eext = $edev; # no runtime - change to devel pkg
- } elsif ($type eq 'BR' or $type eq 'RB') {
- print C "$proj|$edev = B\n"; # additional devel pkg
+ if ($edev) {
+ if ($type eq 'B') {
+ # no runtime - change to devel pkg
+ $eext = $edev;
+ } elsif ($type eq 'BR' or $type eq 'RB') {
+ # additional devel pkg
+ if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+ }
+ }
+ if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
+ }
+
+ if ($platform eq 'default') {
+ for (@{$deps{"$subsys.$module"}}) {
+ my $type = $deps_type{"$subsys.$module"}->{$_};
+ if (not $used) {
+ $used = 1;
+ }
+ $output .= "$project{etics_name}|$project{etics_name}.$_ = $type\n";
}
}
- print C "$proj|$eext = $type\n";
- }
- for (@{$deps{"$subsys.$module"}}) {
- my $type = $deps_type{"$subsys.$module"}->{$_};
- print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ if ($output) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+$output};
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ $value = $data->{default}{$_} ? $data->{default}{$_} : $_;
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print "added $value to $platform\n"
+ }
+ }
+ $data->{default}{$_} = '-';
+#print "deleted $_ from default\n";
+ }
+
+ # merge dependencies across the supported platforms
+ %blacklist = [];
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+ $blacklist{$_} = 1;
+ }
+ }
+ for $_ (keys %blacklist) {
+ $value = undef;
+ $same = 1;
+ for $platform (keys %$platforms) {
+ if (not $value) { $value = $data->{$platform}{$_}; }
+ if (not $data->{$platform}{$_} or $value ne $data->{$platform}{$_}) {
+ $same = 0;
+ last;
+ }
+ }
+ if ($same and $value) {
+#print "merged dependency $_\n";
+ $data->{default}{$_} = $value;
+ for $platform (keys %$platforms) {
+ delete $data->{$platform}{$_};
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;
--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]
2.1.2-7
- Module rebuilt
+2.1.2-8
+- Module rebuilt
+
# : /cvs/jra1mw/org.glite.lbjp-common.trio/project/version.properties,v 1.2 2009/01/21 10:44:34 zsustr Exp $
module.version=2.1.2
-module.age=7
+module.age=8
# : /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