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 = (
$externs{'gsoapxx'}{withprefix}=$externs{gsoap}{withprefix} if $externs{'gsoapxx'}{withprefix} eq '';
%project = %{$projects{$project}};
-for $_ (keys %{$project{etics_externs}}) {
- $etics_externs{$_} = $project{etics_externs}{$_};
+for my $platform (keys %{$project{etics_externs}}) {
+ for $_ (keys %{$project{etics_externs}{$platform}}) {
+ $etics_externs{$platform}{$_} = $project{etics_externs}{$platform}{$_};
+ }
}
+reshuffle_platforms(\%etics_externs, $project{supported_platforms});
+reshuffle_platforms(\%{$project{etics_externs_devel}}, $project{supported_platforms});
for $_ (keys %{$project{etics_projects}}) {
$etics_projects{$_} = $project{etics_projects}{$_};
}
BEGIN{
%etics_externs = (
- 'myproxy-devel'=>'myproxy-devel',
- 'myproxy-libs'=>'myproxy-libs',
- 'myproxy-server'=>'myproxy-server',
- 'myproxy-admin'=>'myproxy-admin',
- cares=>'c-ares',
- voms=>'org.glite.security.voms-api-cpp',
- utiljava=>'org.glite.security.util-java',
- gpt=>'gpt',
- fetchcrl=>'fetch-crl',
- activemq=>'activemq-cpp-library',
- apr=>'apr-dev',
- aprutil=>'aprutil-dev',
+ default => {
+ 'myproxy-devel'=>'myproxy-devel',
+ 'myproxy-libs'=>'myproxy-libs',
+ 'myproxy-server'=>'myproxy-server',
+ 'myproxy-admin'=>'myproxy-admin',
+ cares=>'c-ares',
+ voms=>'org.glite.security.voms-api-cpp',
+ utiljava=>'org.glite.security.util-java',
+ gpt=>'gpt',
+ fetchcrl=>'fetch-crl',
+ activemq=>'activemq-cpp-library',
+ },
);
%etics_projects = (
# (${NAME.location}, ETICS conf. dependencies)
# etics_projects ....... ETICS project names of externals
# etics_externs_devel .. ETICS modules names of devel versions of externals
+# etics_locations ...... ETICS locations in ${NAME.location} properties
# need_externs_aux ..... project-specific external dependencies
# supported_platforms .. platforms supported by the project
# modules .............. additional modules in subsystems
flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
local_prefix => '',
etics_externs => {
- globus_essentials=>'vdt_globus_essentials',
- globus=>'globus',
- gridsite=>'org.gridsite.shared',
- yaim_core=>'org.glite.yaim.core',
- gip_release=>'glite-info-provider-release',
- gip_service=>'glite-info-provider-service',
- bdii=>'bdii',
- glite_version=>'glite-version',
- glite_info_templates=>'glite-info-templates',
- glue_schema=>'glue-schema',
- trustmanager=>'org.glite.security.trustmanager',
- axis=>'axis',
- lcas=>'org.glite.security.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'org.glite.build.common-cpp',
+ default => {
+ globus_essentials=>'vdt_globus_essentials',
+ globus=>'globus',
+ gridsite=>'org.gridsite.shared',
+ yaim_core=>'org.glite.yaim.core',
+ gip_release=>'glite-info-provider-release',
+ gip_service=>'glite-info-provider-service',
+ bdii=>'bdii',
+ glite_version=>'glite-version',
+ glite_info_templates=>'glite-info-templates',
+ glue_schema=>'glue-schema',
+ trustmanager=>'org.glite.security.trustmanager',
+ axis=>'axis',
+ lcas=>'org.glite.security.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'org.glite.build.common-cpp',
+ jdk=>'jdk',
+ },
},
etics_externs_devel => {
- gridsite=>'org.gridsite.devel',
+ default => {
+ gridsite=>'org.gridsite.devel',
+ },
},
etics_projects => {
vdt=>[qw/globus globus_essentials gpt/],
'org.glite'=>[qw/voms gridsite lcas gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
},
+ etics_locations => {
+ '*' => '',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager utiljava libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gpt:R gip_release:R gip_service:R bdii:R glite_version:R glite_info_templates:R glue_schema:R/ ],
'px.glite-PX' => [qw/myproxy-server:R myproxy-admin:R fetchcrl:R gip_service:R bdii:R glite_version:R gpt:R glue_schema:R/],
'px.myproxy-yaim' => [ qw/yaim_core:R/ ],
},
+ supported_platforms => {
+ sl5_x86_64_gcc412 => 1,
+ sl5_ia32_gcc412 => 1,
+ deb5_x86_64_gcc432 => 1,
+ deb5_ia32_gcc432 => 1,
+ slc4_x86_64_gcc346 => 1,
+ slc4_ia32_gcc346 => 1,
+ },
modules => {
'lb' => [ qw/glite-LB/ ],
'px' => [ qw/glite-PX/ ],
- }
+ },
},
emi => {
flavours => '--thrflavour= --nothrflavour=',
local_prefix => '/usr',
etics_externs => {
- globus_essentials=>'globus-gssapi-gsi',
- globus=>'globus-gssapi-gsi-devel',
- gridsite=>'emi.gridsite.shared',
- yaim_core=>'emi.yaim.yaim-core',
- yaim_bdii=>'emi.bdii.yaim-bdii',
- gip_service=>'emi.bdii.glite-info-provider-service',
- bdii=>'emi.bdii.core',
- glite_version=>'emi.misc.glite-version',
- glue_schema=>'emi.bdii.glue-schema',
- trustmanager=>'emi.java-security.trustmanager',
- trustmanager_axis=>'emi.java-security.trustmanager-axis',
- axis=>'axis1.4',
- lcas=>'emi.sac.lcas',
- gsoapxx=>'-',
- build_common_cpp=>'emi.misc.glite.build-common-cpp',
- jdk=>'java',
+ default => {
+ globus_essentials=>'globus-gssapi-gsi',
+ globus=>'globus-gssapi-gsi-devel',
+ gridsite=>'emi.gridsite.shared',
+ yaim_core=>'emi.yaim.yaim-core',
+ yaim_bdii=>'emi.bdii.yaim-bdii',
+ gip_service=>'emi.bdii.glite-info-provider-service',
+ bdii=>'emi.bdii.core',
+ glite_version=>'emi.misc.glite-version',
+ glue_schema=>'emi.bdii.glue-schema',
+ trustmanager=>'emi.java-security.trustmanager',
+ trustmanager_axis=>'emi.java-security.trustmanager-axis',
+ axis=>'axis1.4',
+ lcas=>'emi.sac.lcas',
+ gsoapxx=>'-',
+ build_common_cpp=>'emi.misc.glite.build-common-cpp',
+ jdk=>'java',
+ },
+ sl5_x86_64_gcc412EPEL => {
+ 'myproxy-devel' => 'myproxy-devel.x86_64',
+ },
},
etics_externs_devel => {
- cares => 'c-ares-devel',
- classads => 'classads-devel',
- cppunit => 'cppunit-devel',
- expat => 'expat-devel',
- gsoap => 'gsoap-devel',
- voms => 'org.glite.security.voms-api',
- libtar => 'libtar-devel',
- log4c => 'log4c-devel',
- postgresql => 'postgresql-devel',
- curl => 'curl-devel',
- libxml2 => 'libxml2-devel',
- openssl => 'openssl-devel',
- gridsite=>'emi.gridsite.devel',
- jdk=>'java-devel',
+ default => {
+ cares => 'c-ares-devel',
+ classads => 'classads-devel',
+ cppunit => 'cppunit-devel',
+ expat => 'expat-devel',
+ gsoap => 'gsoap-devel',
+ voms => 'org.glite.security.voms-api',
+ libtar => 'libtar-devel',
+ log4c => 'log4c-devel',
+ postgresql => 'postgresql-devel',
+ curl => 'curl-devel',
+ libxml2 => 'libxml2-devel',
+ openssl => 'openssl-devel',
+ gridsite=>'emi.gridsite.devel',
+ jdk=>'java-devel',
+ },
},
etics_projects => {
'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
},
+ etics_locations => {
+ axis => 'axis',
+ },
need_externs_aux => {
'lb.client-java' => [ qw/ant:B jdk:B axis:B trustmanager trustmanager_axis libtool:B/ ],
'lb.glite-LB' => [ qw/fetchcrl:R gip_service:R bdii:R glite_version:R glue_schema:R/ ],
modules => {
'lb' => [ qw/emi-lb/ ],
'px' => [ qw/emi-px/ ],
- }
+ },
},
);
close V;
}
+ # XXX: --with ignored for platform-dependend packages
my @copts = ();
my %ge;
@ge{@{$etics_projects{$project{etics_name}}}} = (1) x ($#{$etics_projects{$project{etics_name}}}+1);
for (@{$need_externs{"$subsys.$module"}}) {
if ($need_externs_type{"$subsys.$module"}->{$_}=~/B/ and (defined $externs{$_} or defined $jar{$_})) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
next if ($eext eq '-');
- if ($project ne 'glite') {
+ if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_}) {
+ $eext = $project{etics_locations}{$_} if ($project{etics_locations}{$_});
+ push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
+ } else {
if ($ge{$_} and not defined $externs{$_}{pkg}) {
push @copts, "--with-$_=\${stageDir}";
}
- } else {
- push @copts,$ge{$_} ? "--with-$_=\${stageDir}" : "--with-$_=\${$eext.location}";
}
}
}
for (@{$need_jars{"$subsys.$module"}}) {
- my $eext = $etics_externs{$_} ? $etics_externs{$_} : $_;
+ my $eext = $etics_externs{default}{$_} ? $etics_externs{default}{$_} : $_;
- push @copts,"--with-$_ \${$eext.location}$jar{$_}" if ($project eq 'glite');
+ push @copts,"--with-$_ \${$eext.location}$jar{$_}" if (defined $project{etics_locations}{'*'} or defined $project{etics_locations}{$_});
}
my $conf;
print C "$package_description$package_summary\n";
}
- print C qq{
-[Platform-default:DynamicDependency]
+ for my $platform ('default', keys $project{supported_platforms}) {
+ my $used = 0;
+
+ for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
+ my $eext = $etics_externs{$platform}{$_} ? $etics_externs{$platform}{$_} : $_;
+ my $edev = $project{etics_externs_devel}{$platform}{$_};
+ next if ($eext eq '-');
+ # dependencies not listed in etics_externs only for
+ # default platform
+ if (not defined $etics_externs{$platform}{$_} and
+ $platform ne 'default') {
+#print "skipping $_ on $platform\n";
+ next;
+ }
+
+ if (not $used) {
+ print C qq{
+[Platform-$platform: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 '-');
+ $used = 1;
+ }
- 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') {
+ $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
+ }
}
+ print C "$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) {
+ print C qq{
+[Platform-$platform:DynamicDependency]
+};
+ $used = 1;
+ }
+ print C "$project{etics_name}|$project{etics_name}.$_ = $type\n";
+ }
+ }
}
close C;
return $libdir;
}
+sub reshuffle_platforms($$) {
+ my ($data, $platforms) = @_;
+ my ($platform, %blacklist, $value);
+
+ return if not $platforms;
+
+ for $platform (keys %$data) {
+#print "plat: $platform: $data->{$platform}\n";
+ next if $platform eq 'default';
+ for $_ (keys %{$data->{$platform}}) {
+#print " blacklist: $_ = $data->{$platform}{$_}\n";
+ $blacklist{$_} = 1;
+ }
+ }
+
+ for $_ (keys %blacklist) {
+ if (defined $data->{default}{$_}) {
+ $value = delete $data->{default}{$_};
+#print " deleted $_ from default\n";
+ for $platform (keys %$platforms) {
+ next if $platform eq 'default';
+ if (not defined $data->{$platform}{$_}) {
+ $data->{$platform}{$_} = $value;
+#print " added $value to $platform\n"
+ }
+ }
+ }
+ }
+}
+
sub usage {
my @ext = keys %externs;
my @myjars = keys %jar;