Updating version, ChangeLog and copying the most recent configure from ./org.glite...
authorZdeněk Šustr <sustr4@cesnet.cz>
Tue, 6 Nov 2012 16:49:55 +0000 (16:49 +0000)
committerZdeněk Šustr <sustr4@cesnet.cz>
Tue, 6 Nov 2012 16:49:55 +0000 (16:49 +0000)
org.glite.px.emi-px/configure
org.glite.px.emi-px/project/ChangeLog
org.glite.px.emi-px/project/version.properties

index 6857be9..b1a1d31 100755 (executable)
@@ -26,6 +26,9 @@
 use Getopt::Long;
 use POSIX qw(locale_h strftime);
 
+#my $default_url = 'http://eticssoft.web.cern.ch/eticssoft/repository/emi/${moduleName}/${version}/src';
+my $default_url = 'http://scientific.zcu.cz/emi/${moduleName}';
+
 my $pwd = `pwd`; chomp $pwd;
 my $prefix = '/usr';
 my $stagedir = undef;
@@ -33,10 +36,11 @@ my $root = $pwd.'/stage';
 my $sysroot = '';
 my $sysconfdir;
 my $localstatedir;
+my $os_type;
 my $staged;
 my $module;
-my $thrflavour = 'gcc64dbgpthr';
-my $nothrflavour = 'gcc64dbg';
+my $thrflavour = '';
+my $nothrflavour = '';
 my $mode = 'build';
 my $help = 0;
 my $listmodules;
@@ -52,10 +56,14 @@ my $project = 'emi';
 my $project_version;
 my (%projects, %project);
 my $debug = 0;
+my $url = $default_url;
+my $url_rpm;
+my $url_deb;
+my $url_source;
 my $pkg_config_env = (defined $ENV{PKG_CONFIG_PATH}) ? "$ENV{PKG_CONFIG_PATH}:" : '';
 
-my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal/;
-my @default_nodes = qw/lb px proxyrenewal nagios/;
+my @nodes = qw/client server logger logger-msg nagios utils client-java doc ws-test db jpprimary jpindex jpclient harvester lb px proxyrenewal canl/;
+my @default_nodes = qw/lb px proxyrenewal nagios canl client-java/;
 my %enable_nodes;
 my %disable_nodes;
 my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
@@ -124,11 +132,8 @@ my %externs = (
                pkg => 'voms-2.0'
        },
        gridsite => {
-               prefix => '/opt/glite'
-       },
-       lcas => {
                prefix => '/opt/glite',
-               pkg => 'lcas'
+               pkg => 'gridsite-openssl'
        },
        trustmanager => {
                prefix => '/opt/glite'
@@ -187,11 +192,11 @@ my (%etics_externs, %etics_projects);
 # 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 client-devel client-progs common-devel logger-devel state-machine-devel/], 
+       'lb' => [ qw/client 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/],
+       'jobid' => [qw/api-c api-c-devel api-cpp api-cpp-devel/],
        'jp' => [ qw/client doc index primary server-common ws-interface/ ],
-       'gridsite' => [ qw/apache libs commands core devel slashgrid services service-clients gsexec/ ],
+       'gridsite' => [ qw/apache libs commands core devel services service-clients/ ],
        'px' => [ qw/proxyrenewal myproxy-yaim proxyrenewal-devel proxyrenewal-progs/ ],
        'canl' => [ qw/c c-devel/ ],
        );
@@ -220,6 +225,13 @@ my %subpackages = (
        'px.proxyrenewal-devel' => 'px.proxyrenewal',
        'px.proxyrenewal-progs' => 'px.proxyrenewal',
        'canl.c-devel' => 'canl.c',
+       'gridsite.apache' => 'gridsite.core',
+       'gridsite.shared' => 'gridsite.core',
+       'gridsite.commands' => 'gridsite.core',
+       'gridsite.devel' => 'gridsite.core',
+       'gridsite.libs' => 'gridsite.core',
+       'gridsite.services' => 'gridsite.core',
+       'gridsite.service-clients' => 'gridsite.core',
 );
 
 my @opts = (
@@ -238,15 +250,21 @@ my @opts = (
        'sysroot:s' => \$sysroot,
        'sysconfdir=s' => \$sysconfdir,
        'localstatedir=s' => \$localstatedir,
+       'os-type=s' => \$os_type,
        'lb-tag=s' => \$lb_tag,
        'lbjp-common-tag=s' => \$lbjp_tag,
        'jp-tag=s' => \$jp_tag,
        'jobid-tag=s' => \$jobid_tag,
        'canl-tag=s' => \$canl_tag,
+       'px-tag=s' => \$px_tag,
        'help' => \$help,
        'libdir=s' => \$libdir,
        'project=s' => \$project,
        'debug' => \$debug,
+       'url=s' => \$url,
+       'url-rpm=s' => \$url_rpm,
+       'url-deb=s' => \$url_deb,
+       'url-source=s' => \$url_source,
 );
 
 for (@nodes) {
@@ -270,6 +288,14 @@ if (not $sysconfdir) { $sysconfdir = $prefix eq '/usr' ? '/etc' : "$prefix/etc";
 if (not $localstatedir) { $localstatedir = $prefix eq '/usr' ? '/var' : "$prefix/var"; }
 $sysconfdir=~s/\/$//;
 $localstatedir=~s/\/$//;
+if (not $os_type) { $os_type = os_type(); }
+if (not $url_rpm) { $url_rpm = $url; }
+if (not $url_deb) { $url_deb = $url; }
+if (not $url_source) { $url_source = $url; }
+$url=~s/\/$//;
+$url_rpm=~s/\/$//;
+$url_deb=~s/\/$//;
+$url_source=~s/\/$//;
 
 $externs{'mysql-server'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-server'}{prefix} eq '';
 $externs{'mysql-devel'}{prefix}=$externs{mysql}{prefix} if $externs{'mysql-devel'}{prefix} eq '';
@@ -285,6 +311,9 @@ if ($project =~ /^([^0-9]*)(.*)$/) {
 }
 %project = %{$projects{$project}};
 $project_version = $project{current_version} unless $project_version;
+if ($project ne 'emi' or $project_version <= 1) {
+       $lbmodules{'gridsite'} = [ qw/apache shared commands core devel services service-clients/ ];
+}
 for my $platform (keys %{$project{etics_externs}}) {
        for $_ (keys %{$project{etics_externs}{$platform}}) {
                $etics_externs{$platform}{$_} = $project{etics_externs}{$platform}{$_};
@@ -311,6 +340,9 @@ if ($project eq 'emi') {
        $extranodmod{lb} = 'lb.emi-lb';
        $extranodmod{px} = 'px.emi-px';
 }
+if ($project ne 'emi' or $project_version <= 2) {
+       $project{modules}{gridsite} = [ qw/slashgrid gsexec/ ];
+}
 for $_ (keys %{$project{modules}}) {
        push @{$lbmodules{$_}},@{$project{modules}{$_}};
 }
@@ -325,7 +357,7 @@ if ($listmodules) {
        if (exists $lbmodules{$listmodules}) {
                @m = map exists $subpackages{$listmodules . '.' . $_} ? "" : "$name_prefix.$listmodules.$_",@{$lbmodules{$listmodules}};
        } else {
-               if ($project eq 'emi' and $project_version == 1) {
+               if ($project eq 'emi' and $project_version == 1 and $listmodules ne 'gridsite.core') {
                        # no sub-packages in EMI-1
                } else {
                        for my $sub (keys %subpackages) {
@@ -489,7 +521,7 @@ sub mode_build {
 
                print MAK "all: @modules\n\n";
                print MAK "stage: ".(join '-stage ', @modules)."-stage\n\n";
-               print MAK "clean check install:\n";
+               print MAK "clean check install dist distcheck rpm deb:\n";
 
                for (@modules) {
                        my $full = full($_);
@@ -521,6 +553,13 @@ sub mode_build {
                        print MAK "$_-stage: $snames\n\tcd $full/$build && \${MAKE} && \${MAKE} stage\n\n";
                }
 
+               print MAK qq/release-rpm: clean dist distcheck rpm
+
+release-deb: clean dist distcheck deb
+
+.PHONY: all stage clean check install dist distcheck rpm deb release-rpm release-deb
+/;
+
                close MAK;
        }
 }
@@ -564,6 +603,13 @@ sub mode_checkout() {
                                 }
                        }
                }
+               if ($px_tag) {
+                       for (@{$lbmodules{'px'}}){
+                               if ("px.".$_ eq $module){
+                                        $tag = '-r '.$px_tag;
+                                }
+                       }
+               }
                #if (grep {"lb.".$_ eq $module} @{$lbmodules{lb}}){
                #       print "found";
                #}
@@ -593,11 +639,11 @@ BEGIN{
 %need_externs_aux = (
        'lb.client' => [ qw/cppunit:B classads:B libtool:B globus:B pkgconfig:B/ ],
        'lb.common' => [ qw/expat cares:B cppunit:B classads:B libtool:B globus:B pkgconfig:B/ ],
-       'lb.doc' => [ qw/tetex-latex:B/ ],
+       'lb.doc' => [ qw/tetex-latex:B texlive-latex-recommended:B texlive-fonts-recommended:B texlive-latex-extra:B/ ],
        'lb.logger' => [ qw/cppunit:B libtool:B globus:B pkgconfig:B/ ],
        'lb.logger-msg' => [ qw/cppunit:B activemq libtool:B globus:B pkgconfig:B/ ],
        'lb.nagios' => [ qw/globus_proxy_utils:R/ ],
-       'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql-server:R cppunit:B gsoap:B classads:B voms:B lcas gridsite:B bison:B libtool:B libxml2 flex:B pkgconfig:B/ ],
+       'lb.server' => [ qw/globus_essentials:R globus:B expat cares mysql-server:R cppunit:B gsoap:B classads:B voms:B gridsite:B bison:B libtool:B libxml2 flex:B pkgconfig:B/ ],
        'lb.state-machine' => [ qw/classads:B libtool:B libxslt:B expat:B globus:B pkgconfig:B/ ],
        'lb.utils' => [ qw/cppunit:B libtool:B globus:B pkgconfig:B/ ],
        'lb.ws-interface' => [ qw/libxslt:B tidy:B/ ],
@@ -613,7 +659,7 @@ BEGIN{
        'lbjp-common.gss' =>  [ qw/globus_essentials:R globus:B cares cppunit:B libtool:B pkgconfig:B/ ],
        'lbjp-common.gsoap-plugin' =>  [ qw/cppunit:B globus_essentials:R globus:B cares:B gsoap gsoapxx libtool:B pkgconfig:B/ ],
        'jobid.api-c' =>  [ qw/cppunit:B libtool:B openssl:B pkgconfig:B/ ],
-       'jobid.api-cpp' =>  [ qw/cppunit:B libtool:B pkgconfig:B/ ],
+       'jobid.api-cpp' =>  [ qw// ],
        'jobid.api-java' =>  [ qw/ant:B jdk:B/ ],
        'jp.client' => [ qw/gsoap libtar globus_essentials:R globus:B pkgconfig:B/ ],
         'jp.doc' => [],
@@ -621,10 +667,11 @@ BEGIN{
         'jp.primary' => [ qw/classads:B gsoap libtar globus_essentials:R globus:B  mysql-server:R pkgconfig:B/ ],
         'jp.server-common' => [],
         'jp.ws-interface' => [],
-       'gridsite.core' => [ qw/httpd-devel:B gsoap:B globus:B curl:B doxygen:B fuse-devel:B libxml2:B openssl:B doxygen:B pkgconfig:B/ ],
+       'gridsite.core' => [ qw/httpd-devel:B gsoap:B globus:B curl:B doxygen:B libxml2:B openssl:B doxygen:B pkgconfig:B libtool:B/ ],
        'gridsite.commands' => [ qw/curl:R openssl:R/ ],
        'gridsite.apache' => [ qw/libxml2:R openssl:R curl:R/ ],
        'gridsite.libs' => [ qw/libxml2:R openssl:R/ ],
+       'gridsite.shared' => [ qw/libxml2:R openssl:R/ ],
        'gridsite.devel' => [ qw// ],
        'gridsite.slashgrid' => [ qw/curl:R fuse:R/],
        'gridsite.services' => [ qw/curl:R gsoap:R/ ],
@@ -633,7 +680,7 @@ BEGIN{
        '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 pkgconfig:B/ ],
        'px.myproxy-config' => [ qw/myproxy-admin:R/ ], # in myproxy-config.spec
-       'canl.c' => [ qw/cares:B openssl:B libtool:B bison:B flex:B krb5-devel:B pkgconfig:B tetex-latex:B/ ],
+       'canl.c' => [ qw/cares:B openssl:B libtool:B bison:B flex:B krb5-devel:B pkgconfig:B tetex-latex:B texlive-latex-recommended:B texlive-fonts-recommended:B texlive-latex-extra:/ ],
 );
 
 %need_jars = (
@@ -702,12 +749,12 @@ for my $jar (keys %need_jars) {
        'lb.yaim' => [ qw// ],
        'lb.glite-LB' => [ qw/
                lb.logger:R lb.server:R lb.utils:R lb.doc:R
-               lb.ws-test:R lb.harvester:R lb.yaim:R lb.client-java:R
+               lb.ws-test:R lb.harvester:R lb.yaim:R
                lb.logger-msg:R
        / ],
        'lb.emi-lb' => [ qw/
                lb.logger:R lb.server:R lb.utils:R lb.doc:R
-               lb.ws-test:R lb.harvester:R lb.yaim:R lb.client-java:R
+               lb.ws-test:R lb.harvester:R lb.yaim:R
                lb.logger-msg:R
        / ],
        'lbjp-common.db' => [ qw/lbjp-common.trio lbjp-common.log/ ],
@@ -747,10 +794,11 @@ for my $jar (keys %need_jars) {
         / ],
        'jp.ws-interface' => [ qw// ],
 
-       'gridsite.core' => [ qw// ],
+       'gridsite.core' => [ qw/canl.c:B/ ],
        'gridsite.commands' => [ qw/gridsite.core:B/ ],
        'gridsite.apache' => [ qw/gridsite.core:B/ ],
        'gridsite.libs' => [ qw/gridsite.core:B / ],
+       'gridsite.shared' => [ qw/gridsite.core:B / ],
        'gridsite.devel' => [ qw/gridsite.core:B/ ],
        'gridsite.slashgrid' => [ qw/gridsite.core:B/],
        'gridsite.services' => [ qw/gridsite.core:B/ ],
@@ -869,6 +917,17 @@ for my $ext (keys %deps_aux) {
        'canl' => 'emi-',
 );
 
+%cvs_tag_suffix = (
+       'lb' => '',
+       'jp' => '',
+       'jobid' => '',
+       'lbjp-common' => '',
+       'gridsite' => '-core',
+       'px' => '',
+       'canl' => '',
+);
+
+
 # ==== projects specification ====
 # etics_name ........... ETICS project name
 # conf_prefix .......... ETICS configurations name prefix
@@ -888,6 +947,7 @@ for my $ext (keys %deps_aux) {
                etics_name => 'org.glite',
                conf_prefix => { %cvs_tag_prefix },
                tag_prefix => { %cvs_tag_prefix },
+               tag_suffix => { %cvs_tag_suffix },
                flavours => '--thrflavour=${globus.thr.flavor} --nothrflavour=${globus.nothr.flavor}',
                local_prefix => '',
                etics_externs => {
@@ -905,7 +965,6 @@ for my $ext (keys %deps_aux) {
                                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',
@@ -919,7 +978,7 @@ for my $ext (keys %deps_aux) {
                },
                etics_projects => {
                        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/],
+                       'org.glite'=>[qw/voms gridsite gip_release gip_service bdii glite_version glite_info_templates glue_schema yaim_core/],
                },
                etics_locations => {
                        '*' => '',
@@ -946,7 +1005,7 @@ for my $ext (keys %deps_aux) {
        },
 
        emi => {
-               current_version => 2,
+               current_version => 3,
                etics_name => 'emi',
                conf_prefix => {
                        'lb' => 'emi-',
@@ -958,6 +1017,7 @@ for my $ext (keys %deps_aux) {
                        'canl' => 'emi-',
                },
                tag_prefix => { %cvs_tag_prefix },
+               tag_suffix => { %cvs_tag_suffix },
                flavours => '--thrflavour= --nothrflavour=',
                local_prefix => '/usr',
                etics_externs => {
@@ -972,10 +1032,12 @@ for my $ext (keys %deps_aux) {
                                bdii=>'emi.bdii.core',
                                glite_version=>'emi.emi-version',
                                glue_schema=>'emi.bdii.glue-schema',
+                               'texlive-fonts-recommended' => '-',
+                               'texlive-latex-recommended' => '-',
+                               'texlive-latex-extra' => '-',
                                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',
@@ -988,6 +1050,10 @@ for my $ext (keys %deps_aux) {
                        },
                        deb6_x86_64_gcc445 => {
                                axis => 'axis1.4',
+                               'tetex-latex' => '-',
+                               'texlive-fonts-recommended' => 'texlive-fonts-recommended',
+                               'texlive-latex-recommended' => 'texlive-latex-recommended',
+                               'texlive-latex-extra' => 'texlive-latex-extra',
                                # mappings in ETICS project configuration
                                #globus_essentials => 'libglobus-gssapi-gsi4',
                                #globus => 'libglobus-gssapi-gsi-dev',
@@ -1002,7 +1068,6 @@ for my $ext (keys %deps_aux) {
                                #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',
@@ -1045,7 +1110,7 @@ for my $ext (keys %deps_aux) {
                        },
                },
                etics_projects => {
-                       'emi'=>[qw/voms voms-devel gridsite lcas gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
+                       'emi'=>[qw/voms voms-devel gridsite gip_service bdii glite_version glue_schema yaim_core yaim_bdii trustmanager trustmanager_axis/],
                },
                etics_locations => {
                        axis => 'axis',
@@ -1061,6 +1126,7 @@ for my $ext (keys %deps_aux) {
                        sl5_x86_64_gcc412EPEL => 1,
                        sl5_ia32_gcc412EPEL => 1,
                        sl6_x86_64_gcc446EPEL => 1,
+                       sl6_ia32_gcc446EPEL => 1,
                        deb6_x86_64_gcc445 => 1,
                },
                modules => {
@@ -1209,7 +1275,7 @@ sub get_version
                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:]]+)/;
+                       $age = $1 if /module\.age\s*=\s*(\S+)/;
                }
                close V;
                $_ = $old_;
@@ -1334,6 +1400,7 @@ stagedir = $stagedir
 sysroot = $sysroot
 sysconfdir = $sysconfdir
 localstatedir = $localstatedir
+os_type = $os_type
 thrflavour = $thrflavour
 nothrflavour = $nothrflavour
 libdir = $libdir
@@ -1355,6 +1422,55 @@ top_srcdir = $top_srcdir
 
        print MKINC "gsoap_default_version=".gsoap_version()."\n"  if $need_gsoap;
 
+       print MKINC '
+-include ${top_srcdir}/project/version.properties
+version=${module.version}
+
+${package}-${version}.tar.gz:
+       rm -rf dist
+       for dist in ${SOURCES} ${SOURCES_EXEC} configure project/ChangeLog project/debian.* project/*.spec project/package.* project/version.properties LICENSE; do \
+               dir=${package}-${version}/`dirname $$dist`; \
+               mkdir -p dist/$$dir || :; \
+               install -m 0644 ${top_srcdir}/$$dist dist/$$dir; \
+       done
+       for dist in ${SOURCES_EXEC} configure; do \
+               chmod +x dist/${package}-${version}/$$dist; \
+       done
+       (cd dist; tar -czf ${package}-${version}.tar.gz ${package}-${version})
+       mv dist/${package}-${version}.tar.gz .
+
+dist: ${package}-${version}.tar.gz
+
+distcheck: ${package}-${version}.tar.gz
+       rm -rf dist
+       mkdir -p dist
+       cp ${package}-${version}.tar.gz dist
+       (cd dist; tar -xzf ${package}-${version}.tar.gz)
+       a=`(cd dist/${package}-${version}; find . -type f | sort)`; \
+       b=`(cd ${top_srcdir}; find . -path ./dist -prune -or -type f -print | sort)`; \
+       echo "$$a" >dist/files-dist; \
+       echo "$$b" | egrep -v "(^./Makefile.inc$$|^./${package}-${version}.tar.gz$$|^./debian|^./[^/]*.spec$$|\.cvsignore|^\./project/changelog$$|/CVS)" >dist/files-original
+       diff -U0 dist/files-dist dist/files-original
+
+rpm: ${package}-${version}.tar.gz
+       dir=dist/rpm_build_src; \
+       rm -rf $$dir; \
+       mkdir -p $$dir/BUILD $$dir/RPMS $$dir/SOURCES $$dir/SRPMS; \
+       cp ${package}-${version}.tar.gz $$dir/SOURCES/${package}-${version}.tar.gz && \
+       rpmbuild -bs --nodeps --define "_topdir $$dir" ${package}.spec && \
+       cp -v $$dir/SRPMS/*.src.rpm dist/
+
+deb: ${package}-${version}.tar.gz
+       dir=dist/dpkg_build_src; \
+       rm -rf $$dir; \
+       mkdir -p $$dir; \
+       cp ${package}-${version}.tar.gz $$dir/${package}_${version}.orig.tar.gz && \
+       tar zxf $$dir/${package}_${version}.orig.tar.gz -C $$dir && \
+       cp -rf debian/ $$dir/${package}-${version} && \
+       (cd $$dir/${package}-${version} && dpkg-buildpackage -S -d -nc -us -uc) && \
+       cp -v $$dir/*.tar.gz $$dir/*.dsc dist/
+';
+
        close MKINC;
 
        my $dh;
@@ -1375,6 +1491,13 @@ top_srcdir = $top_srcdir
        for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog", "debian.copyright") {
                if (-f "$abs_srcdir/project/$file") {
                        my $old_ = $_;
+                       my $url_spec = $url_source;
+
+                       $url_spec =~ s/\$\{moduleName\}/$project{etics_name}.$subsys.$mod/g;
+                       $url_spec =~ s/\$\{packageName\}/%{name}/g;
+                       $url_spec =~ s/\$\{version\}/%{version}/g;
+                       $url_spec =~ s/\$\{age\}/%{rel}/g;
+
                        printf STDERR "Creating $build$file\n" if ($debug);;
                        open DST, ">$build$file";
                        open SRC, "<$abs_srcdir/project/$file";
@@ -1399,6 +1522,7 @@ top_srcdir = $top_srcdir
                                        s/--version\s+\S+\s?//;
                                        s/$/ --version $version/;
                                }
+                               if (/^Source:.*/ and $file =~ /\.spec$/) { s,^(Source:\s*).*?([^/]*)$,\1$url_spec/\2,; }
                                printf DST "%s", "$_";
                        }
                        close SRC;
@@ -1407,43 +1531,48 @@ top_srcdir = $top_srcdir
                }
        }
 
-       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;
+       if ($module and -d $build."debian") {
+               print "Skipping ${build}debian/ (no rewrite in single module mode)\n" if ($debug);
+               `rm -f ${build}debian.*`;
+       } else {
+               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;
+               closedir $dh;
 
-       if ($debian) {
-               my ($dir, $file);
+               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
+                       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) stable; urgency=low
 
   * Automatically generated package
 
  -- $package{maintainer}  $debdate
 };
-                       close FH;
-               }
+                               close FH;
+                       }
 
-       } else {
-               `rm -rf ${build}debian`;
+               } else {
+                       `rm -rf ${build}debian`;
+               }
        }
 }
 
@@ -1455,17 +1584,20 @@ sub mode_etics_packaging {
        my ($workspaceDir, $srcPackageName, $srcAge, $topDir);
 
        # old-school packaging by ETICS for EMI-1
-       if ($project eq 'emi' and $project_version == 1) { return; }
+       if ($project eq 'emi' and $project_version == 1 and $fmod ne 'gridsite.core') { return; }
 
        if ($fmod eq 'gridsite.core') {
                $workspaceDir = '..';
                $srcPackageName = 'gridsite';
-               $srcAge = '';
+               $srcTarBall = "../$srcPackageName-\${version}.src.tar.gz";
+               $srcAge = '.src';
                $topDir = '../';
        } else {
                $workspaceDir = '${workspaceDir}';
                $srcPackageName = '${packageName}';
-               $srcAge = '-${age}';
+               $srcTarBall = "$srcPackageName-\${version}.tar.gz";
+               $srcAge = '';
+               if ($project eq 'emi' and $project_version <= 2) { $srcAge = '-${age}.src'; }
                $topDir = '';
        }
 
@@ -1474,8 +1606,8 @@ sub mode_etics_packaging {
        $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/
+       cp -vf $srcTarBall \${package.tgzLocation}/$srcPackageName-\${version}${srcAge}.tar.gz
+       cp -vf $srcTarBall \$dir/SOURCES/$srcPackageName-\${version}${srcAge}.tar.gz
        rpmbuild -bs --nodeps --define \"_topdir \$dir\" $srcPackageName.spec
        cp -v \$dir/SRPMS/*.src.rpm \${package.SRPMSLocation}/
        rm -rf \$dir";
@@ -1487,8 +1619,8 @@ sub mode_etics_packaging {
                $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
+       cp -vf $srcTarBall \${package.tgzLocation}/$srcPackageName-\${version}${srcAge}.tar.gz
+       cp -vf $srcTarBall \$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}
@@ -1536,7 +1668,7 @@ sub mode_etics {
        }
 
        my $conf;
-       my $conftag;
+       my ($vcsroot, $conftag);
        my ($confprefix, $nameprefix, $packageName);
 
        $dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
@@ -1546,6 +1678,7 @@ sub mode_etics {
        $nameprefix =~ s/-$//;
        $nameprefix =~ s/-/\./g;
        $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
+       $vcsroot=":pserver:anonymous\@glite.cvs.cern.ch:/cvs/glite";
 
        if ($branch) {
                $conf = "$confprefix${subsys}-${module}_$branch"; 
@@ -1559,7 +1692,7 @@ sub mode_etics {
        else {
                $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}" : 
+               $conftag = $subsys eq 'gridsite' ? "$project{tag_prefix}{$subsys}${subsys}$project{tag_suffix}{$subsys}_R_${major}_${minor}_${rev}" : 
                        "$project{tag_prefix}{$subsys}$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
 
                # lowering age for older packaging
@@ -1567,12 +1700,12 @@ sub mode_etics {
                        $age = $age - 1;
                }
 
-               # '.emi1' suffix for older packaging
-               if ($project eq 'emi' and $project_version == 1) {
+               # .emi1/.emi2 suffix for older packaging
+               if ($project eq 'emi' and $project_version <= 2) {
                        $age = $age.'.'.$project.$project_version;
                }
        }
-       if ($project eq 'emi' and $project_version == 1) {
+       if ($project eq 'emi' and $project_version <= 2) {
                $conf = $conf.$project.$project_version;
        }
 
@@ -1594,12 +1727,8 @@ sub mode_etics {
        }
 
        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/\${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_vcs{checkout} = 'true';
+       $cmd_vcs{tag} = 'None';
 
        $cmd{default}{init} = 'None';
        $cmd{default}{configure} = 'None';
@@ -1607,51 +1736,76 @@ sub mode_etics {
        $cmd{default}{test} = 'None';
        $cmd{default}{install} = 'None';
        $cmd{default}{packaging} = 'None';
-       $cmd{default}{clean} = 'make clean';
+       $cmd{default}{clean} = 'None';
 
        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';
+               $cmd_vcs{checkout} = "true";
+       } elsif ($project eq 'emi' and $project_version >= 3) {
+       # for non-branched configuration for EMI-3 do the build from external source package
+               my $pkgName = $fmod eq 'gridsite.core' ? 'gridsite' : '${packageName}';
+
+               $cmd{default}{clean} = 'rm -rf ${package.SRPMSLocation}';
+               $cmd{default}{init} = "wget -P \${package.SRPMSLocation} $url_rpm/$pkgName-\${version}-\${age}.src.rpm";
+               $cmd{default}{packaging} = 'true';
+
+               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} = 'rm -rf ${package.SRPMSLocation}';
+                       $cmd{$p}{init} = "wget -P \${package.tgzLocation} $url_deb/${pkgName}_\${version}-\${age}.debian.tar.gz $url_deb/${pkgName}_\${version}-\${age}.dsc $url_deb/${pkgName}_\${version}.orig.tar.gz";
+                       $cmd{$p}{packaging} = 'true';
+               }
+
+               $vcsroot = 'None';
+               $conftag = 'None';
+       } else {
+               $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})";
 
-               if ($module eq 'core') {
-                       my $flags;
+               if ($subsys eq 'gridsite') {
+                       $cmd{default}{clean} = 'make clean';
+
+                       if ($module eq 'core') {
+                               my $flags;
 
-                       if ($project ne 'glite') {
-                               # don't evaluate pkg-config calls to get them into source package
-                               $flags = 'RELEASE_VERSION=${age}
+                               if ($project ne 'glite') {
+                                       # 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}
+                               } else {
+                                       $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{default}{configure} = "cat > Makefile.inc <<EOF
-       project = $project
+                               $cmd{default}{configure} = "cat > Makefile.inc <<EOF
+       project = $project$project_version
        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
+                               # no stage builds since EMI-3
+                               if ($project ne 'emi' or $project_version <= 2) {
+                                       $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
+                                       "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
+                               );
+                       }
+                       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
+                               $cmd{default}{configure} = "cat > src/Makefile.inc <<EOF
        project = emi
        libdir = \${libdir}
        MAJOR_VERSION=1
@@ -1663,34 +1817,40 @@ sub mode_etics {
        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}
+                               $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
+                               $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";
+                               $cmd{default}{packaging} = "None";
+                       }
+                       else {
+                               $cmd{default}{clean} = 'None';
+                               $cmd{default}{packaging} = "echo building nothing, org.gridsite.core make rpm step will create this";
+                               $cmd_vcs{checkout} = "true";
+                       }
                }
-               else {
-                       $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{default}{clean} = 'make clean';
+                       $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";
                }
-       }
-       elsif ($subsys eq 'px' and $module eq '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{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}";
+               else {
+                       $cmd{default}{clean} = 'make clean';
+                       $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";
+                       # no stage builds since EMI-3
+                       if ($project ne 'emi' or $project_version <= 2) {
+                               $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, "make dist\n\t", "make dist\n\t");
                }
-               mode_etics_packaging($fmod, \%cmd);
        }
 
        my $defprops = '';
@@ -1709,7 +1869,7 @@ description = $cvs_prefix{$subsys}.$subsys.$module
 projectName = $project{etics_name}
 age = $age
 deploymentType = None
-vcsroot = :pserver:anonymous\@glite.cvs.cern.ch:/cvs/glite
+vcsroot = $vcsroot
 tag = $conftag
 version = $major.$minor.$rev
 $dwpath
@@ -1745,77 +1905,82 @@ checkstyle = None
 };
        }
 
-       print C qq{[Platform-default:Property]
+       # no platform properties since EMI-3
+       if ($project ne 'emi' or $project_version <= 2) {
+               print C qq{[Platform-default:Property]
 $buildroot
-package.preserve.libtool = false
 $package_description$package_summary$defprops};
 
-       for (@{$obsoletes{"$subsys.$module"}}) {
-               print C "package.obsoletes = $_\n";
-               print C "package.replaces = $_\n";
-       }
-       for (@{$conflicts{"$subsys.$module"}}) {
-               print C "package.conflicts = $_\n";
-       }
-       for (@{$provides{"$subsys.$module"}}) {
-               print C "package.provides = $_\n";
-       }
-       print C "\n";
+               for (@{$obsoletes{"$subsys.$module"}}) {
+                       print C "package.obsoletes = $_\n";
+                       print C "package.replaces = $_\n";
+               }
+               for (@{$conflicts{"$subsys.$module"}}) {
+                       print C "package.conflicts = $_\n";
+               }
+               for (@{$provides{"$subsys.$module"}}) {
+                       print C "package.provides = $_\n";
+               }
+               print C "\n";
 
-       for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
-               next if $pp eq 'default';
-               next if exists $project{supported_platforms} and not exists $project{supported_platforms}{$pp};
+               for my $pp (keys %{$platform_properties{"$subsys.$module"}}) {
+                       next if $pp eq 'default';
+                       next if exists $project{supported_platforms} and not exists $project{supported_platforms}{$pp};
 
-               print C "[Platform-$pp:Property]\n$buildroot\n";
+                       print C "[Platform-$pp:Property]\n$buildroot\n";
 
-               for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
-                       print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
+                       for my $p (keys %{$platform_properties{"$subsys.$module"}->{$pp}}) {
+                               print C $p . ' = ' . $platform_properties{"$subsys.$module"}->{$pp}->{$p} . "\n";
+                       }
+                       print C "$package_description$package_summary\n";
                }
-               print C "$package_description$package_summary\n";
        }
 
        for my $platform ('default', keys %{$project{supported_platforms}}) {
                my $used = 0;
                my $output = '';
 
-               for (@{$need_externs{"$subsys.$module"}},@{$need_jars{"$subsys.$module"}}) {
-                       my $eext = $etics_externs{$platform}{$_};
-                       my $edev = $project{etics_externs_devel}{$platform}{$_};
+               # build dependencies needed only for EMI <= 2
+               if ($project ne 'emi' or $project_version <= 2) {
+                       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') {
+                               # 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 {
+                                               $eext = $_; }
+                                       else {
 #print "no runtime $_ on $platform\n";
-                                       $eext = '-'; }
-                       }
-                       if ($eext eq '-' and $edev eq '-') {
+                                               $eext = '-'; }
+                               }
+                               if ($eext eq '-' and $edev eq '-') {
 #print "skipping $_ on $platform\n";
-                               next;
-                       }
+                                       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') {
-                                       # 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 ($edev) {
+                                       if ($type eq 'B') {
+                                               # no runtime - change to devel pkg
+                                               $eext = $edev;
+                                       } elsif ($type eq 'BR' or $type eq 'RB') {
+                                               # additional devel pkg
+                                               if ($edev ne '-') { $output .= "$proj|$edev = B\n"; }
+                                       }
                                }
+                               if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
                        }
-                       if ($eext ne '-') { $output .= "$proj|$eext = $type\n"; }
                }
 
                if ($platform eq 'default') {
@@ -2004,6 +2169,24 @@ sub reshuffle_platforms($$) {
        }
 }
 
+sub os_type {
+       my $ver;
+
+       open FH, '<', '/etc/issue' or return "redhat";
+       $_=<FH>;
+       close FH;
+
+       if (/Debian|Ubuntu/i) { return "debian"; }
+       elsif (/Scientific|Redhat|Centos/i) { return "redhat"; }
+       elsif (/Fedora/i) {
+               $ver = `rpm -q --queryformat '%{version}' fedora-release 2>/dev/null`;
+               if ($ver and $ver >= 15) { return "fedora"; }
+               else { return "redhat"; }
+       } else {
+               return "redhat";
+       }
+}
+
 sub usage {
        my @ext = keys %externs;
        my @myjars = keys %jar;
@@ -2017,9 +2200,11 @@ General options (defaults in []):
   --root=DIR                   installation root (custom relocation root -> sysroot) [./stage]
   --sysroot=DIR                        system root (custom relocation root -> sysroot) []
   --sysconfdir=DIR              system configuration directory [PREFIX/etc]
+  --localstatedir=DIR           system local status directory [PREFIX/var]
+  --os-type=DIST                system type (debian/redhat/fedora)
   --staged=module,module,...   what is already in PREFIX (specify without org.glite.)
   --thrflavour=flavour
-  --nothrflavour=flavour       threaded and non-treaded flavours [gcc64dbgpthr,gcc64dbg]
+  --nothrflavour=flavour       threaded and non-treaded flavours []
   --listmodules=subsys          list modules of a subsystem
   --listmodules=module          list subpackages of a module
   --version=maj.min.rev-age    version used instead of reading version.properties
@@ -2027,6 +2212,10 @@ General options (defaults in []):
   --libdir=libdir              typically [lib,lib64] postfix
   --project=PROJECT            build or generate etics for a project (glite/emi1/emi) [emi]
   --debug                      print more details
+  --url                                URL of all published files [$default_url]
+  --url-rpm                    URL of published RPM packages []
+  --url-deb                    URL of published Debian packages []
+  --url-source                 URL of published source tarballs []
   
 Mode of operation:
   --mode=\{checkout|build|etics\}      what to do [build]
@@ -2040,6 +2229,7 @@ What to build:
   --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
+  --px-tag=tag                 checkout px modules with specific tag
 
 Dependencies (summary of what will be used is always printed):
   --with-EXTERNAL=PATH         where to look for an external [autodetect]
index a0842e1..f12c3fb 100644 (file)
@@ -4,3 +4,6 @@
 1.0.1-1
 - ProxyRenewal modules split/restructured
 
+1.0.2-1
+- License and packaging fixes
+