#
use Getopt::Long;
+use POSIX qw(locale_h strftime);
my $pwd = `pwd`; chomp $pwd;
my $prefix = '/usr';
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 utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
-my @default_nodes = qw/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 nagios/;
my %enable_nodes;
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
'myproxy-server' => {
prefix=> '',
},
- 'myproxy-libs' => {
- prefix=> '',
- },
'myproxy-admin' => {
prefix=> '',
},
prefix=> '/usr'
},
jdk => {
- prefix=> '/usr/java/latest'
+ prefix=> '/usr/java/latest',
+ locations => [ '/usr/lib/jvm/java', '/usr/lib/jvm/default-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/],
- 'lbjp-common' => [qw/db log maildir server-bones trio jp-interface gss gsoap-plugin/],
- 'jobid' => [qw/api-c api-cpp api-java/],
+ 'lb' => [ qw/client client-java common doc logger server state-machine types utils ws-interface ws-test harvester yaim logger-msg nagios client-devel client-progs common-devel logger-devel state-machine-devel/],
+ '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/ ],
- 'px' => [ qw/proxyrenewal myproxy-yaim/ ],
+ '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/ ],
);
+#
+# sub-packages
+#
+# modify %lbmodules, %deps_aux, %extrafull, and %properties accodingly
+#
+my %subpackages = (
+ 'jobid.api-c-devel' => 'jobid.api-c',
+ 'jobid.api-cpp-devel' => 'jobid.api-cpp',
+ 'lbjp-common.db-devel' => 'lbjp-common.db',
+ 'lbjp-common.gsoap-plugin-devel' => 'lbjp-common.gsoap-plugin',
+ 'lbjp-common.gss-devel' => 'lbjp-common.gss',
+ 'lbjp-common.jp-interface-devel' => 'lbjp-common.jp-interface',
+ 'lbjp-common.log-devel' => 'lbjp-common.log',
+ 'lbjp-common.maildir-devel' => 'lbjp-common.maildir',
+ 'lbjp-common.server-bones-devel' => 'lbjp-common.server-bones',
+ 'lbjp-common.trio-devel' => 'lbjp-common.trio',
+ 'lb.client-progs' => 'lb.client',
+ 'lb.client-devel' => 'lb.client',
+ 'lb.common-devel' => 'lb.common',
+ 'lb.logger-devel' => 'lb.logger',
+ 'lb.state-machine-devel' => 'lb.state-machine',
+ 'px.proxyrenewal-devel' => 'px.proxyrenewal',
+ 'px.proxyrenewal-progs' => 'px.proxyrenewal',
+ 'canl.c-devel' => 'canl.c',
+);
my @opts = (
'prefix:s' => \$prefix,
'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,
'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 '';
+
+if ($project =~ /^([^0-9]*)(.*)$/) {
+ $project = $1;
+ $project_version = $2;
+}
%project = %{$projects{$project}};
-for $_ (keys %{$project{etics_externs}}) {
- $etics_externs{$_} = $project{etics_externs}{$_};
+$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}{$_};
+ }
}
+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 ($listmodules) {
my $name_prefix = ($listmodules eq 'gridsite' and $project eq 'glite') ? 'org' : $project{etics_name};
- my @m = map "$name_prefix.$listmodules.$_",@{$lbmodules{$listmodules}};
- print "@m\n";
+ my @m;
+
+ if (exists $lbmodules{$listmodules}) {
+ @m = map exists $subpackages{$listmodules . '.' . $_} ? "" : "$name_prefix.$listmodules.$_",@{$lbmodules{$listmodules}};
+ } else {
+ 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;
+ print "\n";
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
$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);
}
print "\t$_: $jar{$_}\n" for @myjars;
for (@ext) { if (defined($externs{$_}{flags})) { print "$externs{$_}{flags}"; } };
print "\nThis is a poor-man configure, it's up to you to have sources and externals there\n\n";
-
+
mkinc($_) for @modules;
if ($module) {
}
}
}
- 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-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
);
%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 libtool:B globus:B/ ],
+ 'lb.common' => [ qw/expat cares:B cppunit:B classads libtool:B globus:B/ ],
'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 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-test' => [ qw/gsoap:B libtool:B/ ],
+ 'lb.logger' => [ qw/cppunit:B libtool:B globus:B/ ],
+ 'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B globus:B/ ],
+ 'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
+ 'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql-server:R cppunit:B gsoap:B classads voms:B lcas gridsite:B bison:B libtool:B libxml2 flex:B/ ],
+ 'lb.state-machine' => [ qw/classads libtool:B libxslt:B expat:B globus:B/ ],
+ 'lb.utils' => [ qw/cppunit:B libtool:B globus:B/ ],
+ 'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ],
+ 'lb.ws-test' => [ qw/gsoap:B libtool:B globus: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/ ],
+ 'lbjp-common.db' => [ qw/mysql-devel:B postgresql:B cppunit:B log4c:B libtool:B/ ],
'lbjp-common.log' => [ qw/log4c libtool:B/ ],
'lbjp-common.maildir' => [ qw/libtool:B/ ],
'lbjp-common.server-bones' => [ qw/libtool:B/ ],
'jobid.api-java' => [ qw/ant:B jdk:B/ ],
'jp.client' => [ qw/gsoap libtar globus_essentials:R globus: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/ ],
+ 'jp.primary' => [ qw/classads gsoap libtar globus_essentials:R globus:B mysql-server:R/ ],
'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 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.libs' => [ 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 doxygen:B/ ],
+ 'px.proxyrenewal' => [ qw/globus:B globus_essentials:R myproxy-devel:B voms:B libtool: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 krb5-devel:B/ ],
);
%need_jars = (
lbjp-common.gss
/ ],
'lb.logger-msg' => [ qw/
- lb.logger
+ lb.logger:B
+ / ],
+ '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
'jobid.api-cpp' => [ qw/jobid.api-c/ ],
'jobid.api-java' => [ qw// ],
- 'lbjp-common.jp-interface' => [ qw/lbjp-common.db jobid.api-c/ ],
+ 'lbjp-common.jp-interface' => [ qw/lbjp-common.trio lbjp-common.db jobid.api-c/ ],
'jp.client' => [ qw/
jp.ws-interface
'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// ],
'px.emi-px' => [qw/px.myproxy-yaim:R/],
'px.myproxy-yaim' => [ qw// ],
'px.myproxy-config' => [],
+
+ 'canl.c' => [],
+
+ # sub-packages (virtual ETICS components depending on the main)
+ 'jobid.api-c-devel' => [ qw/jobid.api-c:B/ ],
+ 'jobid.api-cpp-devel' => [ qw/jobid.api-cpp:B/ ],
+ 'lbjp-common.db-devel' => [ qw/lbjp-common.db:B/ ],
+ 'lbjp-common.gsoap-plugin-devel' => [ qw/lbjp-common.gsoap-plugin:B/ ],
+ 'lbjp-common.gss-devel' => [ qw/lbjp-common.gss:B/ ],
+ 'lbjp-common.jp-interface-devel' => [ qw/lbjp-common.jp-interface:B/ ],
+ 'lbjp-common.log-devel' => [ qw/lbjp-common.log:B/ ],
+ 'lbjp-common.maildir-devel' => [ qw/lbjp-common.maildir:B/ ],
+ 'lbjp-common.server-bones-devel' => [ qw/lbjp-common.server-bones:B/ ],
+ 'lbjp-common.trio-devel' => [ qw/lbjp-common.trio:B/ ],
+ 'lb.client-progs' => [ qw/lb.client:B/ ],
+ 'lb.client-devel' => [ qw/lb.client:B/ ],
+ 'lb.common-devel' => [ qw/lb.common:B/ ],
+ 'lb.logger-devel' => [ qw/lb.logger:B/ ],
+ 'lb.state-machine-devel' => [ qw/lb.state-machine:B/ ],
+ 'px.proxyrenewal-devel' => [ qw/px.proxyrenewal:B/ ],
+ 'px.proxyrenewal-progs' => [ qw/px.proxyrenewal:B/ ],
+ 'canl.c-devel' => [ qw/canl.c:B/ ],
);
for my $ext (keys %deps_aux) {
}
-%extrafull = ( gridsite=>'org.gridsite.core');
+%extrafull = (
+ gridsite=>'org.gridsite.core',
+ 'canl.c' => 'emi.canl.canl-c',
+ 'canl.c-devel' => 'emi.canl.canl-c',
+ 'jobid.api-c-devel' => 'org.glite.jobid.api-c',
+ 'jobid.api-cpp-devel' => 'org.glite.jobid.api-cpp',
+ 'lbjp-common.db-devel' => 'org.glite.lbjp-common.db',
+ 'lbjp-common.gsoap-plugin-devel' => 'org.glite.lbjp-common.gsoap-plugin',
+ 'lbjp-common.gss-devel' => 'org.glite.lbjp-common.gss',
+ 'lbjp-common.jp-interface-devel' => 'org.glite.lbjp-common.jp-interface',
+ 'lbjp-common.log-devel' => 'org.glite.lbjp-common.log',
+ 'lbjp-common.maildir-devel' => 'org.glite.lbjp-common.maildir',
+ 'lbjp-common.server-bones-devel' => 'org.glite.lbjp-common.server-bones',
+ 'lbjp-common.trio-devel' => 'org.glite.lbjp-common.trio',
+ 'lb.client-devel' => 'org.glite.lb.client',
+ 'lb.client-progs' => 'org.glite.lb.client',
+ 'lb.common-devel' => 'org.glite.lb.common',
+ 'lb.logger-devel' => 'org.glite.lb.logger',
+ 'lb.state-machine-devel' => 'org.glite.lb.state-machine',
+ 'px.proxyrenewal-devel' => 'org.glite.px.proxyrenewal',
+ 'px.proxyrenewal-progs' => 'org.glite.px.proxyrenewal',
+);
#( 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
%projects = (
glite => {
+ current_version => 3,
etics_name => 'org.glite',
conf_prefix => { %cvs_tag_prefix },
tag_prefix => { %cvs_tag_prefix },
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.libs',
+ 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=>'-',
+ jdk=>'jdk',
+ voms=>'org.glite.security.voms-api-cpp',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ voms=>'org.glite.security.voms-api',
+ },
},
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 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/ ],
},
+ 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 => {
+ current_version => 2,
etics_name => 'emi',
conf_prefix => {
'lb' => '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.libs',
+ 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=>'-',
+ jdk=>'java',
+ voms => 'emi.voms.voms-api',
+ },
+ sl5_x86_64_gcc412EPEL => {
+ 'myproxy-devel' => 'myproxy-devel.x86_64',
+ },
+ sl6_x86_64_gcc446EPEL => {
+ '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 => 'emi.voms.voms-api-devel',
+ 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',
+ #'krb5-devel' => 'libkrb5-dev',
+ },
},
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 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/],
+ '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/ ],
+ '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_gcc446EPEL => 1,
+ deb6_x86_64_gcc445 => 1,
},
modules => {
'lb' => [ qw/emi-lb/ ],
'px' => [ qw/emi-px/ ],
- }
+ },
},
);
%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 => {
- }
- },
'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' },
},
'px.myproxy-config' => {
default => { 'package.buildarch' => 'noarch' },
},
+ 'gridsite.devel' => {
+ default => { 'packageName' => 'gridsite-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libgridsite-dev' },
+ },
+ 'canl.c-devel' => {
+ default => { 'packageName' => 'canl-c-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libcanl-dev' },
+ },
+ 'jobid.api-c-devel' => {
+ default => { 'packageName' => 'glite-jobid-api-c-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-jobid-dev' },
+ },
+ 'jobid.api-cpp-devel' => {
+ default => { 'packageName' => 'glite-jobid-api-cpp-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-jobid-cpp-dev' },
+ },
+ 'lbjp-common.db-devel' => {
+ default => { 'packageName' => 'glite-lbjp-common-db-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lbjp-common-db-dev' },
+ },
+ 'lbjp-common.gsoap-plugin-devel' => {
+ default => { 'packageName' => 'glite-lbjp-common-gsoap-plugin-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lbjp-common-gsoap-plugin-dev' },
+ },
+ 'lbjp-common.gss-devel' => {
+ default => { 'packageName' => 'glite-lbjp-common-gss-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lbjp-common-gss-dev' },
+ },
+ 'lbjp-common.jp-interface-devel' => {
+ default => { 'packageName' => 'glite-lbjp-common-jp-interface-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lbjp-common-jp-interface-dev' },
+ },
+ 'lbjp-common.log-devel' => {
+ default => { 'packageName' => 'glite-lbjp-common-log-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lbjp-common-log-dev' },
+ },
+ 'lbjp-common.maildir-devel' => {
+ default => { 'packageName' => 'glite-lbjp-common-maildir-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lbjp-common-maildir-dev' },
+ },
+ 'lbjp-common.server-bones-devel' => {
+ default => { 'packageName' => 'glite-lbjp-common-server-bones-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lbjp-common-server-bones-dev' },
+ },
+ 'lbjp-common.trio-devel' => {
+ default => { 'packageName' => 'glite-lbjp-common-trio-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lbjp-common-trio-dev' },
+ },
+ 'lb.client-devel' => {
+ default => { 'packageName' => 'glite-lb-client-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lb-client-dev' },
+ },
+ 'lb.common-devel' => {
+ default => { 'packageName' => 'glite-lb-common-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lb-common-dev' },
+ },
+ 'lb.state-machine-devel' => {
+ default => { 'packageName' => 'glite-lb-state-machine-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lb-state-machine-dev' },
+ },
+ 'lb.logger-devel' => {
+ default => { 'packageName' => 'glite-lb-logger-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-lb-logger-dev' },
+ },
+ 'px.proxyrenewal-devel' => {
+ default => { 'packageName' => 'glite-px-proxyrenewal-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libglite-security-proxyrenewal-dev' },
+ },
+ 'canl.c-devel' => {
+ default => { 'packageName' => 'canl-c-devel' },
+ deb6_x86_64_gcc445 => { 'packageName' => 'libcanl-c-dev' },
+ },
);
my @k = keys %deps_aux;
sub full
{
- my $short = shift;
- return $extrafull{$short} ? $extrafull{$short} : 'org.glite.'.$short;
+ my ($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 get_version
+{
+ my ($fmod, $top_srcdir) = @_;
+
+ my ($subsys,$mod) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+ my $old_;
+
+ if ($force_version) {
+ $force_version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ $old_ = $_;
+ while (<V>) {
+ chomp;
+ ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
+ $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
+ }
+ close V;
+ $_ = $old_;
+ }
+ $version = "$major.$minor.$rev-$age";
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my ($top_srcdir) = @_;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ 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_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
}
sub mkinc
my %aux;
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);
- my $short = shift;
+ my ($short) = @_;
my $full = full $short;
+ my ($subsys,$mod) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${mod}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
my $top_srcdir = '.';
+ my $abs_srcdir = '';
my $build = '';
if ($module) {
$top_srcdir = $0;
$top_srcdir =~ s,/?[^/]*$,,;
+ $abs_srcdir = $top_srcdir;
$top_srcdir =~ s,^$,\.,;
} else {
$build = "$full/";
+ $abs_srcdir = "$full/";
unless ($buildroot{$_} eq '') {
$top_srcdir = '..';
$build .= "$buildroot{$_}/";
}
}
}
+
+ my ($major, $minor, $rev, $age) = get_version $short, $abs_srcdir;
+ my ($package_summary, $package_description) = get_description $abs_srcdir;
+ if ($package_description) { $package_description =~ s/(.{1,78}\S|\S+)\s+/$1\n/mg; }
+ my $package_description_debian = $package_description;
+ $package_description_debian =~ s/^/ /mg;
+
+ my ($old_locale, $specdate, $debdate);
+
+ # files for ETICS always in root source directory
+ mkdir $abs_srcdir."project" unless (-d $abs_srcdir."project");
+ open PKGCHL,">".$abs_srcdir."project/changelog"
+ or die $abs_srcdir."project/changelog: $!\n";
+ $old_locale = setlocale(LC_TIME);
+ setlocale(LC_TIME, "C");
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
+ setlocale(LC_TIME, $old_locale);
+ print PKGCHL qq{* $specdate 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') {
- my $pfile = "project/$file";
- if (-f "$full/$pfile") {
- mkdir "$build/project" unless (-d "$build/project");
- unlink $build.$pfile;
- symlink "../$top_srcdir/$pfile", $build.$pfile or die "symlink ../$top_srcdir/$pfile ".$build."$pfile: $!\n";
- }
- }
}
open MKINC,">".$build."Makefile.inc"
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$abs_srcdir/project" || die "Can't open $abs_srcdir/project: $!";
+ for my $dir (readdir $dh) {
+ if ($dir=~/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n" if ($debug);;
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ 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" if ($debug);;
+ open DST, ">$build$file";
+ open SRC, "<$abs_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ 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;
+ close DST;
+ $_ = $old_;
+ }
+ }
+
+ print "Creating ${build}debian/\n" if ($debug);;
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $abs_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
};
+sub mode_etics_packaging {
+ 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';
+ $srcAge = '';
+ $topDir = '../';
+ } else {
+ $workspaceDir = '${workspaceDir}';
+ $srcPackageName = '${packageName}';
+ $srcAge = '-${age}';
+ $topDir = '';
+ }
+
+ $cmd->{clean} = 'make clean
+ rm -rfv ${package.tgzLocation} ${package.SRPMSLocation}';
+ $cmd->{default}{packaging} = $rpmprepare;
+ $cmd->{default}{packaging} .= "dir=\${workspaceDir}/rpm_build_src_\$\$
+ mkdir -p \${package.tgzLocation} \${package.SRPMSLocation} \$dir/{BUILD,RPMS,SOURCES,SRPMS} 2>/dev/null || true
+ cp -vf $workspaceDir/$srcPackageName-\${version}${srcAge}.src.tar.gz \${package.tgzLocation}/
+ cp -vf $workspaceDir/$srcPackageName-\${version}${srcAge}.src.tar.gz \$dir/SOURCES/
+ rpmbuild -bs --nodeps --define \"_topdir \$dir\" $srcPackageName.spec
+ cp -v \$dir/SRPMS/*.src.rpm \${package.SRPMSLocation}/
+ rm -rf \$dir";
+
+ for my $p ('deb5_x86_64_gcc432', 'deb5_ia32_gcc432', 'deb6_x86_64_gcc445', 'deb6_ia32_gcc445') {
+ for my $c (keys %{$cmd->{default}}) { $cmd->{$p}{$c} = $cmd->{default}{$c}; }
+ $cmd->{$p}{clean} = 'make clean
+ rm -rfv ${package.tgzLocation} ${package.SDEBSLocation}';
+ $cmd->{$p}{packaging} = $debprepare;
+ $cmd->{$p}{packaging} .= "dir=\${workspaceDir}/dpkg_build_src_\$\$
+ mkdir -p \${package.tgzLocation} \${package.SDEBSLocation} \$dir 2>/dev/null || true
+ cp -vf $workspaceDir/$srcPackageName-\${version}${srcAge}.src.tar.gz \${package.tgzLocation}/
+ cp -vf $workspaceDir/$srcPackageName-\${version}${srcAge}.src.tar.gz \$dir/${srcPackageName}_\${version}.orig.tar.gz
+ tar xzf \$dir/${srcPackageName}_\${version}.orig.tar.gz -C \$dir
+ cp -rf ${topDir}debian/ \$dir/$srcPackageName-\${version}/
+ cd \$dir/$srcPackageName-\${version}
+ dpkg-buildpackage -S -d -nc
+ cd -
+ cp -v \$dir/*.tar.gz \$dir/*.dsc \${package.SDEBSLocation}/
+ rm -rf \$dir";
+ }
+}
+
sub mode_etics {
$fmod = shift;
die "$0: --module required with --etics\n" unless $fmod;
- my ($subsys,$module) = split /\./,$fmod;
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $path = "$cvs_prefix{$subsys}.$subsys.$module/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";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $fmod, $full;
+ # 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 $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ 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;
+ $conf = $conf.$project.$project_version;
+ }
my $file = $output ? $output : "$conf.ini";
open C,">$file" or die "$file: $!\n";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- 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";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my $cvs_module = full "$subsys.$module";
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- 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";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- 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}";
-
- if ($subsys eq 'gridsite') {
- $cmd{tag} = 'None';
+ $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/\${tag})" unless ($conftag eq /HEAD/);
+ #$cmd_vcs{checkout} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
+ $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 (exists $subpackages{$fmod}) {
+ $cmd{default}{clean} = 'None';
+ $cmd{default}{packaging} = "echo building nothing, $subpackages{$fmod} will build this package";
+ $cmd_vcs{checkout} = "mkdir -v \${moduleName} 2>/dev/null || true";
+ } elsif ($subsys eq 'gridsite') {
+ $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}
+ 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}
+ 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}{install} = "make prefix=\${prefix}$project{local_prefix} libdir=\${libdir} install";
+ mode_etics_packaging($fmod, \%cmd,
+ "make prefix=\${prefix}$project{local_prefix} rpm-prepare
+ cp gridsite.spec ../\n\t",
+ "chmod +x \${moduleDir}/src/make-debian-files || true
+ make prefix=\${prefix}$project{local_prefix} deb-prepare\n\t"
+ );
+ }
+ 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}
+ 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";
+ $cmd{default}{packaging} = "None";
}
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}";
+ }
+ mode_etics_packaging($fmod, \%cmd);
}
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"; }
}
- 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;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ my $main_module;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ my $main_module = "$subsys.$module";
+ if (exists $subpackages{$main_module}) { $main_module = $subpackages{$main_module}; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $main_module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
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;
--thrflavour=flavour
--nothrflavour=flavour threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
--listmodules=subsys list modules of a subsystem
- --version=maj.min.rev-age specify version here instead of reading version.properties
+ --listmodules=module list subpackages of a module
+ --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:
--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]