my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {
my %disable_nodes;
my %default_nodes; @default_nodes{@default_nodes} = (1) x ($#default_nodes + 1);
+my %package = (
+ 'maintainer' => 'CESNET Product Teams <emi-lb@metacentrum.cz>',
+ 'uploaders' => 'František Dvořák <valtri@civ.zcu.cz>',
+ 'url' => 'http://glite.cern.ch',
+ 'debian_vcs' => 'Vcs-Cvs: :pserver:anonymous@jra1mw.cvs.cern.ch:/cvs/jra1mw
+Vcs-Browser: http://jra1mw.cvs.cern.ch/cgi-bin/jra1mw.cgi',
+);
+
# key: internal package name (arguments, ...)
# 'pkg': pkg-config name
# 'prefix': used when pkg-config fails
exit 0;
}
-warn "$0: --version, --branch and --output make sense only in --mode=etics\n"
- if ($version || $output || $branch) && $mode ne 'etics';
+warn "$0: --branch and --output make sense only in --mode=etics\n"
+ if ($output || $branch) && $mode ne 'etics';
my $en;
for (keys %enable_nodes) { $en = 1 if $enable_nodes{$_}; }
return $extrafull{$short} ? $extrafull{$short} : "$cvs_prefix.$short";
}
+sub get_version
+{
+ my ($top_srcdir) = @_;
+
+ my ($subsys,$module) = split /\./,$fmod,2;
+ my ($major,$minor,$rev,$age);
+
+ if ($version) {
+ $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
+ ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
+ }
+ else {
+ my $path = "$top_srcdir/project";
+ if ($subsys eq 'gridsite') {
+ $path = "$cvs_prefix{$subsys}.$subsys.core/project";
+ }
+ open V,"$path/version.properties"
+ or die "$path/version.properties: $!\n";
+
+ 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;
+
+ $version = "$major.$minor.$rev-$age";
+ }
+
+ return ($major, $minor, $rev, $age);
+}
+
+sub get_description
+{
+ my $top_srcdir = shift;
+
+ my $cvs_module = $top_srcdir;
+ my $package_description = "";
+ my $package_summary = "";
+
+ if (-e "$cvs_module/project/package.description") {
+ open V, "$cvs_module/project/package.description";
+ $package_description = join ("", <V>);
+ close V;
+ chomp $package_description;
+ }
+ else {
+ print STDERR "package.description not found for $subsys.$module!\n"; }
+
+ if (-e "$cvs_module/project/package.summary") {
+ open V, "$cvs_module/project/package.summary";
+ $package_summary = join ("", <V>);
+ close V;
+ chomp $package_summary;
+ $package_summary =~ s/\n/\\n/g;
+ }
+ else {
+ print STDERR "package.summary not found for $subsys.$module!\n"; }
+
+ return ($package_summary, $package_description);
+}
+
sub mkinc
{
my %aux;
- my ($old_locale, $date);
undef %aux;
my @m=qw/
lb.client lb.doc lb.state-machine lb.ws-interface lb.logger lb.logger-msg lb.nagios lb.types lb.common lb.server lb.utils lb.ws-test lb.client-java lb.harvester lb.yaim lb.glite-LB lb.emi-lb
my $short = shift;
my $full = full $short;
+ my ($subsys,$module) = split /\./,$short,2;
+ my $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
unless ($aux{$short}) {
print "Makefile.inc not needed in $full\n";
}
}
+ 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 $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";
$old_locale = setlocale(LC_TIME);
setlocale(LC_TIME, "C");
- $date = strftime("%a %b %d %Y", gmtime());
+ $specdate = strftime("%a %b %d %Y", gmtime());
+ $debdate = strftime("%a, %d %b %Y %H:%M:%S %z", gmtime());
setlocale(LC_TIME, $old_locale);
- print PKGCHL qq{* $date CESNET team <emi-lb\@metacentrum.cz>
+ print PKGCHL qq{* $specdate CESNET team <emi-lb\@metacentrum.cz>
- automatically generated package
};
close PKGCHL;
print MKINC "gsoap_default_version=".gsoap_version()."\n" if $need_gsoap;
close MKINC;
+
+ my $dh;
+ my $debian = 0;
+
+ opendir $dh, "$top_srcdir/project" || die "Can't open $top_srcdir/project: $!";
+ for $_ (readdir $dh) {
+ if (/^(.*)\.spec$/) {
+ if ($1 ne $packageName) {
+ printf STDERR "Changed RPM name: $packageName --> $1\n";
+ $packageName=$1;
+ }
+ last;
+ }
+ }
+ closedir $dh;
+
+ for my $file ("$packageName.spec", "debian.rules", "debian.control", "debian.changelog") {
+ if (-f "$top_srcdir/project/$file") {
+ printf STDERR "Creating $build$file\n";
+ open DST, ">$build$file";
+ open SRC, "<$top_srcdir/project/$file";
+ while (<SRC>) {
+ if (/\@MODULE\@/) { s/\@MODULE\@/$full/g; }
+ if (/\@URL\@/) { s/\@URL\@/$package{url}/g; }
+ if (/\@SUMMARY\@/) { s/\@SUMMARY\@/$package_summary/g; }
+ if (/\@DESCRIPTION\@/) { s/\@DESCRIPTION\@/$package_description/g; }
+ if (/\@DEBIAN_DESCRIPTION\@/) { s/\@DEBIAN_DESCRIPTION\@/$package_description_debian/g; }
+ if (/\@VERSION\@/) { s/\@VERSION\@/$version/g; }
+ if (/\@MAJOR\@/) { s/\@MAJOR\@/$major/g; }
+ if (/\@MINOR\@/) { s/\@MINOR\@/$minor/g; }
+ if (/\@REVISION\@/) { s/\@REVISION\@/$rev/g; }
+ if (/\@AGE\@/) { s/\@AGE\@/$age/g; }
+ if (/\@MAINTAINER\@/) { s/\@MAINTAINER\@/$package{maintainer}/g; }
+ if (/\@UPLOADERS\@/) { s/\@UPLOADERS\@/$package{uploaders}/g; }
+ if (/\@DEBIAN_VCS\@/) { s/\@DEBIAN_VCS\@/$package{debian_vcs}/g; }
+ if (/\@DEBIAN_DATE\@/) { s/\@DEBIAN_DATE\@/$debdate/g; }
+ if (/\@SPEC_DATE\@/) { s/\@SPEC_DATE\@/$specdate/g; }
+ printf DST "%s", "$_";
+ }
+ close SRC;
+ close DST;
+ }
+ }
+
+ print "Creating ${build}debian/\n";
+
+ `rm -rfv ${build}debian`;
+ mkdir $build."debian" or die $!;
+ `cp $top_srcdir/project/debian.* ${build}debian/ 2>/dev/null`;
+ `mv ${build}debian.* ${build}debian/ 2>/dev/null`;
+ `rm -f ${build}debian/*.orig`;
+ opendir $dh, "${build}debian" || die "Can't open ${build}debian: $!";
+ for $_ (readdir $dh) {
+ if (/^debian\.(.*)/) {
+ `mv ${build}debian/$_ ${build}debian/$1`;
+ $debian = 1;
+ }
+ }
+ closedir $dh;
+
+ if ($debian) {
+ my ($dir, $file);
+
+ chmod 0755, "${build}debian/rules";
+ $file="${build}debian/docs"; if (not -f $file) { `touch $file`; }
+ $dir="${build}debian/source"; if (not -d $dir) { mkdir $dir; }
+ $file="${build}debian/source/format"; if (not -f $file) { `echo "3.0 (quilt)" > $file` }
+ $file="${build}debian/compat"; if (not -f $file) { `echo "7" > $file` }
+ $file="${build}debian/changelog"; if (not -f $file) {
+ open FH, ">$file" or die $!;
+ print FH qq{$packageName ($major.$minor.$rev-$age) unstable; urgency=low
+
+ * Automatically generated package
+
+ -- $package{maintainer} $debdate
+};
+ close FH;
+ }
+
+ } else {
+ `rm -rf ${build}debian`;
+ }
}
BEGIN{
die "$0: --module required with --etics\n" unless $fmod;
my ($subsys,$module) = split /\./,$fmod,2;
+ my $full = full "$subsys.$module";
- my ($major,$minor,$rev,$age);
-
- if ($version) {
- $version =~ /([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)-(.+)/;
- ($major,$minor,$rev,$age) = ($1,$2,$3,$4);
- }
- else {
- my $full = full "$subsys.$module";
- my $path = "$full/project";
- if ($subsys eq 'gridsite') {
- $path = "$cvs_prefix{$subsys}.$subsys.core/project";
- }
- open V,"$path/version.properties"
- or die "$path/version.properties: $!\n";
-
- while ($_ = <V>) {
- chomp;
- ($major,$minor,$rev) = ($1,$2,$3) if /module\.version\s*=\s*([[:digit:]]+)\.([[:digit:]]+)\.([[:digit:]]+)/;
- $age = $1 if /module\.age\s*=\s*([[:digit:]]+)/;
- }
- close V;
- }
+ my ($major,$minor,$rev,$age) = get_version $full;
# XXX: --with ignored for platform-dependend packages
my @copts = ();
my $conf;
my $conftag;
- my ($confprefix, $nameprefix);
+ my ($confprefix, $nameprefix, $packageName);
$dwpath = "path = \${projectName}/\${moduleName}/\${version}/\${platformName}/\${packageName}-\${version}-\${age}.tar.gz\n";
$nameprefix = $confprefix;
$nameprefix =~ s/-$//;
$nameprefix =~ s/-/\./g;
+ $packageName = "$project{tag_prefix}{$subsys}$subsys-${module}";
if ($branch) {
$conf = "$confprefix${subsys}-${module}_$branch";
$conftag = $branch;
# forced low age number
- $age = $branch eq 'HEAD' ? '0head' : '0dev'; }
+ $age = $branch eq 'HEAD' ? '0head' : '0dev';
+ push @copts, '--version ${version}-${age}';
+ }
else {
$conf = "$confprefix$subsys-${module}_R_${major}_${minor}_${rev}_${age}";
my $confdir = $buildroot{"$subsys.$module"} eq '' ? '.' : '..';
- my $package_description = "";
- my $package_summary = "";
-
my $cvs_module = full "$subsys.$module";
-
- if (-e "$cvs_module/project/package.description") {
- open V, "$cvs_module/project/package.description";
- $package_description = join ("", <V>);
- close V;
- chomp $package_description;
- $package_description =~ s/\n/\\n/g;
+ my ($package_summary, $package_description) = get_description $cvs_module;
+ if ($package_description) {
+ $package_description =~ s/\n/\\n/g;
$package_description = "package.description = $package_description\n";
- }
- else {
- print STDERR "package.description not found for $subsys.$module!\n"; }
-
- if (-e "$cvs_module/project/package.summary") {
- open V, "$cvs_module/project/package.summary";
- $package_summary = join ("", <V>);
- close V;
- chomp $package_summary;
- $package_summary =~ s/\n/\\n/g;
+ }
+ if ($package_summary) {
$package_summary = "package.summary = $package_summary\n";
- }
- else {
- print STDERR "package.summary not found for $subsys.$module!\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} .= ")) && (test -d \${moduleName} || ln -s jra1mw/$cvs_module \${moduleName})";
+ $cmd_vcs{checkout} .= "\n\ttest -f \${packageName}-\${version}-\${age}.src.tar.gz || (ln -s \${moduleName} \${packageName}-\${version}; tar -chf - \${packageName}-\${version} --exclude CVS --exclude .git --exclude .etics | gzip --best > \${packageName}-\${version}-\${age}.src.tar.gz; rm \${packageName}-\${version})";
$cmd_vcs{tag} = "cvs -d \${vcsroot} tag -R \${tag} ${moduleName}";
$cmd{default}{init} = 'None';
$cmd{default}{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';
+ }
}
my $defprops = '';
}
close C;
+
+ for $file ("$cvs_module/project/debian.rules", "$cvs_module/project/$packageName.spec") {
+ my $lib;
+ @copts = ();
+
+ if ($file =~ /debian\.rules$/) { $lib = 'lib'; }
+ else { $lib = '%{_lib}'; }
+
+ # locations hacks
+ if ($file =~ /$packageName\.spec$/) {
+ if ($fmod eq 'lb.client-java') {
+ push @copts, '';
+ push @copts, '--with-axis=/usr/local/axis1.4';
+ }
+ }
+
+ if (-f $file) {
+ open DST,">$file.new" or die "$file.new: $!\n";
+ open SRC,"<$file" or die "$file: $!\n";
+ while (<SRC>) {
+ if (/^(\s*).+\/configure\s/) {
+ printf DST "%s", "$1";
+ printf DST "/usr/bin/perl $confdir/configure $project{flavours} --root=/ --prefix=$project{local_prefix} --libdir=$lib --project=$project --module $subsys.$module@copts\n";
+ } else {
+ printf DST "%s", "$_";
+ }
+ }
+ close SRC;
+ close DST;
+
+ `diff -b "$file" "$file.new"`;
+ if ($? == 0) {
+ print STDERR "($file not changed)\n";
+ unlink "$file.new";
+ } else {
+ print STDERR "Writing $file\n";
+ rename "$file", "$file.orig" unless -f "$file.orig";
+ rename "$file.new", "$file";
+ }
+ }
+ }
}
sub gsoap_version {