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}:" : '';
'myproxy-server' => {
prefix=> '',
},
- 'myproxy-libs' => {
- prefix=> '',
- },
'myproxy-admin' => {
prefix=> '',
},
},
jdk => {
prefix=> '/usr/java/latest',
- locations => [ '/usr/lib/jvm/java', '/usr/java/latest' ],
+ locations => [ '/usr/lib/jvm/java', '/usr/lib/jvm/default-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 nagios/],
- '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/ ],
- 'canl' => [ qw/c/ ],
+ '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,
$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 ($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;
}
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) {
%etics_externs = (
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',
);
%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.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: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.server' => [ qw/globus_essentials:R globus:B expat cares mysql-server:R 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 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/ ],
+ '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:B 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.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/ ],
+ '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/ ],
+ 'canl.c' => [ qw/cares:B openssl:B libtool:B bison:B flex:B/ ],
);
%need_jars = (
lbjp-common.gss
/ ],
'lb.logger-msg' => [ qw/
- lb.logger
+ lb.logger:B
/ ],
'lb.nagios' => [ qw/
lb.client:R
'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', 'canl.c' => 'emi.canl.canl-c');
+%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 = (
# modules .............. additional modules in subsystems
%projects = (
glite => {
+ current_version => 3,
etics_name => 'org.glite',
conf_prefix => { %cvs_tag_prefix },
tag_prefix => { %cvs_tag_prefix },
axis=>'axis',
lcas=>'org.glite.security.lcas',
gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
jdk=>'jdk',
+ voms=>'org.glite.security.voms-api-cpp',
},
},
etics_externs_devel => {
default => {
gridsite=>'org.gridsite.devel',
+ voms=>'org.glite.security.voms-api',
},
},
etics_projects => {
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-',
axis=>'axis1.4',
lcas=>'emi.sac.lcas',
gsoapxx=>'-',
- build_common_cpp=>'emi.misc.glite.build-common-cpp',
jdk=>'java',
+ voms => 'emi.voms.voms-api',
},
sl5_x86_64_gcc412EPEL => {
'myproxy-devel' => 'myproxy-devel.x86_64',
},
- sl6_x86_64_gcc445EPEL => {
+ sl6_x86_64_gcc446EPEL => {
'myproxy-devel' => 'myproxy-devel.x86_64',
},
deb6_x86_64_gcc445 => {
cppunit => 'cppunit-devel',
expat => 'expat-devel',
gsoap => 'gsoap-devel',
- voms => 'org.glite.security.voms-api',
+ voms => 'emi.voms.voms-api-devel',
libtar => 'libtar-devel',
log4c => 'log4c-devel',
postgresql => 'postgresql-devel',
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/ ],
},
supported_platforms => {
sl5_x86_64_gcc412EPEL => 1,
sl5_ia32_gcc412EPEL => 1,
- sl6_x86_64_gcc445EPEL => 1,
+ sl6_x86_64_gcc446EPEL => 1,
deb6_x86_64_gcc445 => 1,
},
modules => {
},
);
-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 => \%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' },
},
'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;
+ my ($short) = @_;
my $subsys = $short;
$subsys =~ s/\..*//;
sub get_version
{
- my ($top_srcdir) = @_;
+ my ($fmod, $top_srcdir) = @_;
- my ($subsys,$module) = split /\./,$fmod,2;
+ my ($subsys,$mod) = split /\./,$fmod,2;
my ($major,$minor,$rev,$age);
+ my $old_;
if ($version) {
$version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
open V,"$path/version.properties"
or die "$path/version.properties: $!\n";
- while ($_ = <V>) {
+ $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";
}
sub get_description
{
- my $top_srcdir = shift;
+ my ($top_srcdir) = @_;
my $cvs_module = $top_srcdir;
my $package_description = "";
/;
@aux{@m} = (1) x ($#m+1);
- my $short = shift;
+ my ($short) = @_;
my $full = full $short;
- my ($subsys,$module) = split /\./,$short,2;
- my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
+ 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 $top_srcdir;
- my ($package_summary, $package_description) = get_description $top_srcdir;
- if ($package_description) { $package_description =~ s/(.{1,79}\S|\S+)\s+/$1\n/mg; }
+ 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);
- mkdir $build."project" unless (-d $build."project");
- open PKGCHL,">".$build."project/changelog"
- or die $build."project/changelog: $!\n";
+ # 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());
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') {
- 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"
my $dh;
my $debian = 0;
- opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
- for $_ (readdir $dh) {
- if (/^(.*)\.spec$/) {
+ 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";
$packageName=$1;
}
closedir $dh;
- for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
- if (-f "$top_srcdir/project/$file") {
+ 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";
open DST, ">$build$file";
- open SRC, "<$top_srcdir/project/$file";
+ open SRC, "<$abs_srcdir/project/$file";
while (<SRC>) {
if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
}
close SRC;
close DST;
+ $_ = $old_;
}
}
`rm -rfv ${build}debian`;
mkdir $build."debian" or die $!;
- `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `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: $!";
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;
my ($subsys,$module) = split /\./,$fmod,2;
my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age) = get_version $full;
+ my ($major,$minor,$rev,$age) = get_version $fmod, $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
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 %cmd;
$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} .= " && (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}{packaging} = 'None';
$cmd{default}{clean} = 'make clean';
- if ($subsys eq 'gridsite') {
+ 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') {
if ($project ne 'glite') {
# don't evaluate pkg-config calls to get them into source package
- $flags = 'RELEASE_VERSION=${age}.${platformFamily}
+ $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}
+ $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}
$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";
- }
+ 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";
MINOR_VERSION=1.5
PATCH_VERSION=1.5.0
VERSION=\\\$(PATCH_VERSION)
- RELEASE_VERSION=\${age}.\${platformFamily}
+ 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\\`
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{default}{clean} = 'None';
$cmd{default}{packaging} = "make rpm package=".$confprefix."$subsys-myproxy-config";
}
else {
- $cmd{clean} = 'make clean
- rm -rfv ${package.tgzLocation} ${package.SRPMSLocation}';
$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}{compile} = "make rpath=$project{local_prefix}/\${libdir}";
$cmd{default}{install} = "make install post-install rpath=$project{local_prefix}/\${libdir}";
}
- $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}/${packageName}-${version}-${age}.src.tar.gz ${package.tgzLocation}/
- cp -vf ${workspaceDir}/${packageName}-${version}-${age}.src.tar.gz $dir/SOURCES/
- rpmbuild -bs --nodeps --define "_topdir $dir" ${packageName}.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} = 'dir=${workspaceDir}/dpkg_build_src_$$
- mkdir -p ${package.tgzLocation} ${package.SDEBSLocation} $dir 2>/dev/null || true
- cp -vf ${workspaceDir}/${packageName}-${version}-${age}.src.tar.gz ${package.tgzLocation}/
- cp -vf ${workspaceDir}/${packageName}-${version}-${age}.src.tar.gz $dir/${packageName}_${version}.orig.tar.gz
- tar xzf $dir/${packageName}_${version}.orig.tar.gz -C $dir
- cp -rf debian/ $dir/${packageName}-${version}/
- cd $dir/${packageName}-${version}
- dpkg-buildpackage -S -d -nc
- cd -
- cp -v $dir/*.tar.gz $dir/*.dsc ${package.SDEBSLocation}/
- rm -rf $dir';
- }
+ mode_etics_packaging($fmod, \%cmd);
}
my $defprops = '';
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') {
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 $subsys.$module@copts\n";
+ 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", "$_";
}
--thrflavour=flavour
--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
--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: