my $mode = 'build';
my $help = 0;
my $listmodules;
-my $version;
+my ($version, $force_version);
my $branch;
my $output;
my $lb_tag = '';
my $jp_tag = '';
my $jobid_tag = '';
my $libdir = getlibdir();
-my $project = 'glite';
+my $project = 'emi';
+my $project_version;
my (%projects, %project);
my $debug = 0;
my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
-my @default_nodes = qw/lb px proxyrenewal/;
+my @default_nodes = qw/lb px proxyrenewal nagios/;
my %enable_nodes;
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin db-devel log-devel maildir-devel server-bones-devel trio-devel jp-interface-devel gss-devel gsoap-plugin-devel/],
'jobid' => [qw/api-c api-c-devel api-cpp api-cpp-devel api-java/],
'jp' => [ qw/client doc index primary server-common ws-interface/ ],
- 'gridsite' => [ qw/apache shared commands core devel slashgrid services service-clients gsexec/ ],
+ 'gridsite' => [ qw/apache libs commands core devel slashgrid services service-clients gsexec/ ],
'px' => [ qw/proxyrenewal myproxy-yaim proxyrenewal-devel proxyrenewal-progs/ ],
'canl' => [ qw/c c-devel/ ],
);
'nothrflavour:s' => \$nothrflavour,
'mode=s' => \$mode,
'listmodules=s' => \$listmodules,
- 'version=s' => \$version,
+ 'version=s' => \$force_version,
'branch=s' => \$branch,
'output=s' => \$output,
'stage=s' => \$stagedir,
$externs{'mysql-devel'}{wihtprefix}=$externs{mysql}{withprefix} if $externs{'mysql-devel'}{withprefix} eq '';
$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
+if ($project =~ /^([^0-9]*)(.*)$/) {
+ $project = $1;
+ $project_version = $2;
+}
%project = %{$projects{$project}};
+$project_version = $project{current_version} unless $project_version;
for my $platform (keys %{$project{etics_externs}}) {
for $_ (keys %{$project{etics_externs}{$platform}}) {
$etics_externs{$platform}{$_} = $project{etics_externs}{$platform}{$_};
if (exists $lbmodules{$listmodules}) {
@m = map exists $subpackages{$listmodules . '.' . $_} ? "" : "$name_prefix.$listmodules.$_",@{$lbmodules{$listmodules}};
} else {
- for my $sub (keys %subpackages) {
- push @m, $sub if ($subpackages{$sub} eq $listmodules);
+ if ($project eq 'emi' and $project_version == 1) {
+ # no sub-packages in EMI-1
+ } else {
+ for my $sub (keys %subpackages) {
+ push @m, $sub if ($subpackages{$sub} eq $listmodules);
+ }
}
}
print map $_ eq "" ? "" : "$_ ", @m;
my $jdk_prefix;
print "Looking for some caffein ... ";
- if (defined $ENV{'JDK_HOME'}) {
+ if (defined($ENV{'JDK_HOME'}) and -f "$ENV{'JDK_HOME'}/include/jni.h") {
$jdk_prefix = $ENV{'JDK_HOME'};
print "JDK_HOME=$jdk_prefix\n";
- } elsif (defined $ENV{'JAVA_HOME'}) {
+ } elsif (defined($ENV{'JAVA_HOME'}) and -f "$ENV{'JAVA_HOME'}/include/jni.h") {
$jdk_prefix = $ENV{'JAVA_HOME'};
print "JAVA_HOME=$jdk_prefix\n";
} else {
foreach my $i (0..$#{$externs{$ext}{locations}}) {
- if (-e $externs{$ext}{locations}[$i]) {
+ if (-e $externs{$ext}{locations}[$i] and -f "$externs{$ext}{locations}[$i]/include/jni.h") {
$jdk_prefix=$externs{$ext}{locations}[$i];
print "(found directory $jdk_prefix)\n";
last;
);
%need_externs_aux = (
- 'lb.client' => [ qw/cppunit:B classads libtool:B/ ],
- 'lb.common' => [ qw/expat cares:B cppunit:B classads libtool:B/ ],
+ 'lb.client' => [ qw/cppunit:B classads:B libtool:B globus:B pkgconfig:B/ ],
+ 'lb.common' => [ qw/expat cares:B cppunit:B classads:B libtool:B globus:B pkgconfig:B/ ],
'lb.doc' => [ qw/tetex-latex:B/ ],
- 'lb.logger' => [ qw/cppunit:B libtool:B/ ],
- 'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B/ ],
+ 'lb.logger' => [ qw/cppunit:B libtool:B globus:B pkgconfig:B/ ],
+ 'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B globus:B pkgconfig: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:B 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.server' => [ qw/globus_essentials:R globus:B expat cares mysql-server:R cppunit:B gsoap:B classads:B voms:B lcas gridsite:B bison:B libtool:B libxml2 flex:B pkgconfig:B/ ],
+ 'lb.state-machine' => [ qw/classads:B libtool:B libxslt:B expat:B globus:B pkgconfig:B/ ],
+ 'lb.utils' => [ qw/cppunit:B libtool:B globus:B pkgconfig:B/ ],
'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ],
- 'lb.ws-test' => [ qw/gsoap:B libtool:B/ ],
+ 'lb.ws-test' => [ qw/gsoap:B libtool:B globus:B pkgconfig:B/ ],
'lb.types' => [ qw// ],
- 'lb.harvester' => [ qw/docbook-utils:B libtool:B/ ],
- 'lbjp-common.db' => [ qw/mysql:B mysql-devel:B postgresql:B cppunit:B log4c:B libtool:B/ ],
+ 'lb.harvester' => [ qw/docbook-utils:B libtool:B globus:B pkgconfig:B/ ],
+ 'lbjp-common.db' => [ qw/mysql-devel:B postgresql:B cppunit:B log4c:B libtool:B pkgconfig:B/ ],
'lbjp-common.log' => [ qw/log4c libtool:B/ ],
'lbjp-common.maildir' => [ qw/libtool:B/ ],
'lbjp-common.server-bones' => [ qw/libtool:B/ ],
- 'lbjp-common.trio' => [ qw/cppunit: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 openssl:B/ ],
- 'jobid.api-cpp' => [ qw/cppunit:B libtool:B/ ],
+ 'lbjp-common.trio' => [ qw/cppunit:B libtool:B pkgconfig:B/ ],
+ 'lbjp-common.jp-interface' => [ qw/cppunit:B log4c:B libtool:B pkgconfig:B/ ],
+ 'lbjp-common.gss' => [ qw/globus_essentials:R globus:B cares cppunit:B libtool:B pkgconfig:B/ ],
+ 'lbjp-common.gsoap-plugin' => [ qw/cppunit:B globus_essentials:R globus:B cares:B gsoap gsoapxx libtool:B pkgconfig:B/ ],
+ 'jobid.api-c' => [ qw/cppunit:B libtool:B openssl:B pkgconfig:B/ ],
+ 'jobid.api-cpp' => [ qw/cppunit:B libtool:B pkgconfig:B/ ],
'jobid.api-java' => [ qw/ant:B jdk:B/ ],
- 'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B pkgconfig:B/ ],
'jp.doc' => [],
- 'jp.index' => [ qw/gsoap globus_essentials:R globus:B/ ],
- 'jp.primary' => [ qw/classads gsoap libtar globus_essentials:R globus:B/ ],
+ 'jp.index' => [ qw/gsoap globus_essentials:R globus:B mysql-server:R pkgconfig:B/ ],
+ 'jp.primary' => [ qw/classads:B gsoap libtar globus_essentials:R globus:B mysql-server:R pkgconfig: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:B openssl:B doxygen:B/ ],
+ 'gridsite.core' => [ qw/httpd-devel:B gsoap:B globus:B curl:B doxygen:B fuse-devel:B libxml2:B openssl:B doxygen:B pkgconfig: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.libs' => [ qw/libxml2:R openssl: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// ],
'gridsite.1.5-compat' => [ qw/httpd-devel:B gsoap:B globus:B curl:B doxygen:B fuse-devel:B libxml2:B openssl:B doxygen:B/ ],
- 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B voms:B libtool:B/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B voms:B libtool:B pkgconfig:B/ ],
'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
- 'canl.c' => [ qw/cares:B openssl:B libtool:B bison:B flex:B/ ],
+ 'canl.c' => [ qw/cares:B openssl:B libtool:B bison:B flex:B krb5-devel:B pkgconfig:B tetex-latex:B/ ],
);
%need_jars = (
lbjp-common.gss
/ ],
'lb.logger-msg' => [ qw/
- lb.logger-devel:B
+ lb.logger:B
/ ],
'lb.nagios' => [ qw/
lb.client:R
'lb.glite-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 lb.client-progs: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 lb.client-progs:R
+ lb.logger-msg:R
/ ],
'lbjp-common.db' => [ qw/lbjp-common.trio lbjp-common.log/ ],
'lbjp-common.maildir' => [ qw// ],
'jp.ws-interface' => [ qw// ],
'gridsite.core' => [ 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.commands' => [ qw/gridsite.core:B/ ],
+ 'gridsite.apache' => [ qw/gridsite.core:B/ ],
+ 'gridsite.libs' => [ qw/gridsite.core:B / ],
+ 'gridsite.devel' => [ qw/gridsite.core:B/ ],
+ 'gridsite.slashgrid' => [ qw/gridsite.core:B/],
+ 'gridsite.services' => [ qw/gridsite.core:B/ ],
+ 'gridsite.service-clients' => [ qw/gridsite.core:B/ ],
'gridsite.gsexec' => [ qw/gridsite.core:B/ ],
'px.proxyrenewal' => [ qw// ],
# modules .............. additional modules in subsystems
%projects = (
glite => {
+ current_version => 3,
etics_name => 'org.glite',
conf_prefix => { %cvs_tag_prefix },
tag_prefix => { %cvs_tag_prefix },
globus_essentials=>'vdt_globus_essentials',
globus=>'globus',
globus_proxy_utils=>'vdt_globus_essentials',
- gridsite=>'org.gridsite.shared',
+ gridsite=>'org.gridsite.libs',
yaim_core=>'org.glite.yaim.core',
gip_release=>'glite-info-provider-release',
gip_service=>'glite-info-provider-service',
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 perl-LDAP:R/ ],
+ 'lb.yaim' => [ qw/yaim_core: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/ ],
},
},
emi => {
+ current_version => 2,
etics_name => 'emi',
conf_prefix => {
'lb' => 'emi-',
globus_essentials=>'globus-gssapi-gsi',
globus=>'globus-gssapi-gsi-devel',
globus_proxy_utils=>'globus-proxy-utils',
- gridsite=>'emi.gridsite.shared',
+ gridsite=>'emi.gridsite.libs',
yaim_core=>'emi.yaim.yaim-core',
yaim_bdii=>'emi.bdii.yaim-bdii',
gip_service=>'emi.bdii.glite-info-provider-service',
#'httpd-devel' => 'apache2-prefork-dev',
#'fuse-devel' => 'libfuse-dev',
#gsoap => 'gsoap',
+ #'krb5-devel' => 'libkrb5-dev',
},
},
etics_projects => {
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
'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/ ],
+ 'lb.yaim' => [ qw/yaim_core:R yaim_bdii: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/ ],
},
my ($major,$minor,$rev,$age);
my $old_;
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ if ($force_version) {
+ $force_version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
($major,$minor,$rev,$age) = ($1,$2,$3,$4);
}
else {
}
close V;
$_ = $old_;
-
- $version = "$major.$minor.$rev-$age";
}
+ $version = "$major.$minor.$rev-$age";
return ($major, $minor, $rev, $age);
}
for my $dir (readdir $dh) {
if ($dir=~/^(.*)\.spec$/) {
if ($1 ne $packageName) {
- printf STDERR "Changed RPM name: $packageName --> $1\n";
+ printf STDERR "Changed RPM name: $packageName --> $1\n" if ($debug);;
$packageName=$1;
}
last;
for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog", "debian.copyright") {
if (-f "$abs_srcdir/project/$file") {
my $old_ = $_;
- printf STDERR "Creating $build$file\n";
+ printf STDERR "Creating $build$file\n" if ($debug);;
open DST, ">$build$file";
open SRC, "<$abs_srcdir/project/$file";
while (<SRC>) {
if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ if (/^\s*.+\/configure\s/ and $force_version) {
+ print "Version forced to $version\n" if ($debug);;
+ s/--version\s+\S+\s?//;
+ s/$/ --version $version/;
+ }
printf DST "%s", "$_";
}
close SRC;
}
}
- print "Creating ${build}debian/\n";
+ print "Creating ${build}debian/\n" if ($debug);;
`rm -rfv ${build}debian`;
mkdir $build."debian" or die $!;
my ($fmod, $cmd, $rpmprepare, $debprepare) = @_;
my ($workspaceDir, $srcPackageName, $srcAge, $topDir);
+ # old-school packaging by ETICS for EMI-1
+ if ($project eq 'emi' and $project_version == 1) { return; }
+
if ($fmod eq 'gridsite.core') {
$workspaceDir = '..';
$srcPackageName = 'gridsite';
$conftag = $branch;
# forced low age number
$age = $branch eq 'HEAD' ? '0head' : '0dev';
+ # add project major version number
+ $age .= '.'.$project_version;
push @copts, '--version ${version}-${age}';
}
else {
- $conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
-
+ $conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
# XXX: gridsite hack
$conftag = $subsys eq 'gridsite' ? "$project{tag_prefix}{$subsys}$subsys-${module}_R_${major}_${minor}_${rev}" :
- "$project{tag_prefix}{$subsys}$subsys-${module}_R_${major}_${minor}_${rev}_${age}"; }
+ "$project{tag_prefix}{$subsys}$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
+
+ # lowering age for older packaging
+ if ($project eq 'emi' and $project_version == 1) {
+ $age = $age - 1;
+ }
+
+ # '.emi1' suffix for older packaging
+ if ($project eq 'emi' and $project_version == 1) {
+ $age = $age.'.'.$project.$project_version;
+ }
+ }
+ if ($project eq 'emi' and $project_version == 1) {
+ $conf = $conf.$project.$project_version;
+ }
my $file = $output ? $output : "$conf.ini";
open C,">$file" or die "$file: $!\n";
`diff -b "$file" "$file.new"`;
if ($? == 0) {
- print STDERR "($file not changed)\n";
+ print STDERR "($file not changed)\n" if ($debug);
unlink "$file.new";
} else {
print STDERR "Writing $file\n";
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
--listmodules=module list subpackages of a module
- --version=maj.min.rev-age specify version here instead of reading version.properties
+ --version=maj.min.rev-age version used instead of reading version.properties
--branch=branch CVS branch/etics name suffix (HEAD, branch_2_1, ...)
--libdir=libdir typically [lib,lib64] postfix
- --project=PROJECT build or generate etics for a project (glite/emi) [emi]
+ --project=PROJECT build or generate etics for a project (glite/emi1/emi) [emi]
--debug print more details
Mode of operation: