pkgsrc-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[pkgsrc/trunk]: pkgsrc/mk/bulk * Clean up syntax ambiguities, e.g. (my $foo =...
details: https://anonhg.NetBSD.org/pkgsrc/rev/948e0372b789
branches: trunk
changeset: 487397:948e0372b789
user: tv <tv%pkgsrc.org@localhost>
date: Thu Jan 13 19:29:28 2005 +0000
description:
* Clean up syntax ambiguities, e.g. (my $foo = $bar) =~ ....
* Add optional verbosity to show most commands as they are being executed.
* "use strict" and "use warnings".
* Slurp in the varables from build.conf and bmake in one shot (amazing
startup speed boost with nfs pkgsrc); put them in a hash to make
"use strict" much happier with the namespace.
* Fix a bunch of undef-dereference errors evidenced by "use warnings".
* Exclude PKG_DBDIR from leftovers list if it is inside LOCALBASE.
* Convert some <a name="..."/> constructs to <a name="..."></a> to make
non-XHTML-compliant browsers happier.
diffstat:
mk/bulk/post-build | 252 ++++++++++++++++++++++++++++++----------------------
1 files changed, 144 insertions(+), 108 deletions(-)
diffs (truncated from 457 to 300 lines):
diff -r 97f5bdb29102 -r 948e0372b789 mk/bulk/post-build
--- a/mk/bulk/post-build Thu Jan 13 19:20:59 2005 +0000
+++ b/mk/bulk/post-build Thu Jan 13 19:29:28 2005 +0000
@@ -1,5 +1,5 @@
#!/usr/pkg/bin/perl
-# $NetBSD: post-build,v 1.48 2004/11/23 19:31:46 jlam Exp $
+# $NetBSD: post-build,v 1.49 2005/01/13 19:29:28 tv Exp $
#
# Collect stuff after a pkg bulk build
#
@@ -7,140 +7,174 @@
#
use File::Basename;
-use POSIX ();
+use POSIX qw(strftime);
+use strict;
+use warnings;
+
+my %vars;
+my $verbose = 1; # set to 2 to see more command execution detail
+
+sub my_system (@) {
+ print STDERR '> '.join(' ', @_)."\n" if ($verbose >= 2);
+ system(@_);
+}
# Where config vars are stored (/bin/sh syntax)
-if (-f $ENV{"BULK_BUILD_CONF"}) {
- $BULK_BUILD_CONF=$ENV{"BULK_BUILD_CONF"};
-} else {
- $BULK_BUILD_CONF=dirname("$0")."/build.conf";
-}
+my $BULK_BUILD_CONF = $ENV{BULK_BUILD_CONF} || (dirname($0).'/build.conf');
+$BULK_BUILD_CONF = "./$BULK_BUILD_CONF" if ($BULK_BUILD_CONF !~ m:^/:);
# Dig given variable out of config file, and set it
-sub getconf {
- local($var)=@_;
- local($val);
+sub getconf (@) {
+ open(I, ". $BULK_BUILD_CONF; for var in ".join(' ', @_)."; do eval echo \\\${\$var}; done |") || die 'cannot open pipe';
+
+ foreach my $var (@_) {
+ $vars{$var} = <I>;
+ chomp $vars{$var};
+ die "\$$var not defined by $BULK_BUILD_CONF" if ($vars{$var} eq '');
- if ($BULK_BUILD_CONF =~ /^\//) {
- chomp($val=`. $BULK_BUILD_CONF ; echo \$$var`);
- } else {
- chomp($val=`. ./$BULK_BUILD_CONF ; echo \$$var`);
+ print STDERR "> $var=$vars{$var}\n" if ($verbose >= 2);
}
- eval "\$$var=\"$val\";";
}
-getconf("ADMINSIG"); # "-Your Name"
-getconf("FTPURL"); # "pub/NetBSD/pkgstat/`date +%Y%m%d.%H%M`"
-getconf("FTP"); # "/disk1/ftp/${FTPURL}"
-getconf("FTPHOST"); # ftp://ftp.machi.ne/
-getconf("REPORT"); # "broken.html"
-getconf("USR_PKGSRC"); # "/usr/pkgsrc"
-getconf("osrev"); # `uname -r`
-getconf("arch"); # `uname -m`
-$reportf=basename($REPORT);
+getconf(
+ 'ADMINSIG', # "-Your Name"
+ 'FTPURL', # "pub/NetBSD/pkgstat/`date +%Y%m%d.%H%M`"
+ 'FTP', # "/disk1/ftp/${FTPURL}"
+ 'FTPHOST', # ftp://ftp.machi.ne/
+ 'REPORT', # "broken.html"
+ 'USR_PKGSRC', # "/usr/pkgsrc"
+ 'arch', # `uname -m`
+ 'osrev', # `uname -r`
+);
+
+my $reportf = basename($vars{REPORT});
-chomp($os=`uname -s`);
+my $os = `uname -s`;
+chomp $os;
+
+my $BMAKE = $ENV{BMAKE} || die '$BMAKE not defined in environment';
+
+sub getmakevars (@) {
+ open(I, "cd $vars{USR_PKGSRC}/pkgtools/pkglint && $BMAKE show-vars BATCH=1 VARNAMES='".join(' ', @_)."' |") || die 'cannot open pipe';
+
+ foreach my $var (@_) {
+ $vars{$var} = <I>;
+ chomp $vars{$var};
+ die "\${$var} not defined by $BMAKE" if ($vars{$var} eq '');
+
+ print STDERR "> $var=$vars{$var}\n" if ($verbose >= 2);
+ }
+}
# Extract the names of the files used for the build log and broken build logs.
# These have defaults set by bsd.bulk-pkg.mk and may be overridden in
# /etc/mk.conf
-chomp($BROKENFILE=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=BROKENFILE )`);
-chomp($BROKENWRKLOG=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=BROKENWRKLOG )`);
+getmakevars(qw(
+ BROKENFILE
+ BROKENWRKLOG
+ BULK_DBFILE
+ DEPENDSFILE
+ DEPENDSTREEFILE
+ FIND
+ GTAR
+ INDEXFILE
+ LOCALBASE
+ ORDERFILE
+ PKG_DBDIR
+ STARTFILE
+ SUPPORTSFILE
+ X11BASE
+));
-# Also extract the names of the cache files used during the bulk build. We'll
-# save a copy of those to help debug if the build messed up.
-chomp($BULK_DBFILE=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=BULK_DBFILE )`);
-chomp($DEPENDSTREEFILE=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=DEPENDSTREEFILE )`);
-chomp($DEPENDSFILE=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=DEPENDSFILE )`);
-chomp($SUPPORTSFILE=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=SUPPORTSFILE )`);
-chomp($INDEXFILE=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=INDEXFILE )`);
-chomp($ORDERFILE=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=ORDERFILE )`);
-chomp($STARTFILE=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=STARTFILE )`);
-chomp($LOCALBASE=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=LOCALBASE )`);
-chomp($X11BASE=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=X11BASE )`);
-chomp($FIND=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=FIND )`);
-chomp($GTAR=`( cd $USR_PKGSRC/pkgtools/pkglint ; $ENV{"BMAKE"} show-var VARNAME=GTAR )`);
-$bulkdbfile=basename($BULK_DBFILE);
-$dtfile=basename($DEPENDSTREEFILE);
-$depfile=basename($DEPENDSFILE);
-$supfile=basename($SUPPORTSFILE);
-$indfile=basename($INDEXFILE);
-$ordfile=basename($ORDERFILE);
-$startfile=basename($STARTFILE);
+my $bulkdbfile = basename($vars{BULK_DBFILE});
+my $dtfile = basename($vars{DEPENDSTREEFILE});
+my $depfile = basename($vars{DEPENDSFILE});
+my $supfile = basename($vars{SUPPORTSFILE});
+my $indfile = basename($vars{INDEXFILE});
+my $ordfile = basename($vars{ORDERFILE});
-$startdate = (stat($STARTFILE))[9];
+my $startdate = (stat($vars{STARTFILE}))[9];
+my $enddate = '';
if ($startdate == 0) {
$startdate = "unknown";
} else {
local $ENV{TZ} = "UTC";
- $startdate = POSIX::strftime("%c %Z", gmtime($startdate));
- $enddate = POSIX::strftime("%c %Z", gmtime(time()));
+ $startdate = strftime("%c %Z", gmtime($startdate));
+ $enddate = strftime("%c %Z", gmtime(time()));
}
-$verbose=1;
-
-$report_head = <<EOF;
+my $report_head = <<EOF;
Package Breaks Maintainer
--------------------------------------------------------------
EOF
-$report_form = <<EOF;
+my $report_form = <<EOF;
@<<<<<<<<<<<<<<<<<<<<<<<<< @<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<
-$pkg $nbrokenby $maintainer
EOF
+# $pkg, $nbrokenby, $maintainer
-system("mkdir -p ${FTP}");
+
+my_system("mkdir -p $vars{FTP}");
# Copy over the output from the build process
-chdir($USR_PKGSRC);
-system("find . -name $BROKENFILE -print -o -name $BROKENWRKLOG -print | $GTAR -T - -plcf - | (cd $FTP; $GTAR -plxf -)");
+chdir($vars{USR_PKGSRC});
+my_system("/bin/ls -1 $vars{BROKENFILE} $vars{BROKENWRKLOG} */*/$vars{BROKENFILE} */*/$vars{BROKENWRKLOG} 2>/dev/null | $vars{GTAR} -T - -plcf - | (cd $vars{FTP}; $vars{GTAR} -plxf -)");
# Copy over the cache files used during the build
-foreach my $f ($BULK_DBFILE, $DEPENDSTREEFILE, $DEPENDSFILE, $SUPPORTSFILE, $INDEXFILE, $ORDERFILE) {
- system("cp ${f} ${FTP}") if -f ${f};
+foreach my $f qw(BULK_DBFILE DEPENDSTREEFILE DEPENDSFILE SUPPORTSFILE INDEXFILE ORDERFILE) {
+ my_system("cp $vars{$f} $vars{FTP}") if -f $vars{$f};
}
-chdir($FTP);
+chdir($vars{FTP});
writeReport();
#
# Adjust "last" symlink
#
{
- local($base, $dir) = $FTP=~m|^(.*)/([^/]*)$|;
+ my ($base, $dir) = ($vars{FTP} =~ m|^(.*)/([^/]*)$|);
unlink("$base/last");
symlink($dir, "$base/last");
}
#
-# Generate leftovers-${arch}.html: files not deleted
-# Leftover files are copied to leftovers-${arch} dir, and linked from
-# leftovers-${arch}.html
+# Generate leftovers-$vars{arch}.html: files not deleted
+# Leftover files are copied to leftovers-$vars{arch} dir, and linked from
+# leftovers-$vars{arch}.html
#
{
- chdir($FTP);
- system("mkdir -p leftovers-${arch}");
+ chdir($vars{FTP});
+ my_system("mkdir -p leftovers-$vars{arch}");
# Find files since last build:
- $leftovers_txt = "leftovers-${arch}.txt";
- $leftovers_html = "leftovers-${arch}.html";
- system("${FIND} ${LOCALBASE} -newer ${USR_PKGSRC}/${startfile} -type f -print >>$leftovers_txt");
- system("${FIND} ${X11BASE} -newer ${USR_PKGSRC}/${startfile} -type f -print >>$leftovers_txt");
+ my $leftovers_txt = "leftovers-$vars{arch}.txt";
+ my $leftovers_html = "leftovers-$vars{arch}.html";
+
+ my_system("$vars{FIND} $vars{LOCALBASE}/ -newer $vars{STARTFILE} -type f -print >>$leftovers_txt");
+ my_system("$vars{FIND} $vars{X11BASE}/ -newer $vars{STARTFILE} -type f -print >>$leftovers_txt");
# Strip perl-files:
+ my $perlfiles;
{
local $/;
undef $/;
$perlfiles = `pkg_info -qL perl*`;
}
- ($perlfiles_pattern = $perlfiles) =~ s/\n/|/g;
+
+ my $perlfiles_pattern = $perlfiles;
+ $perlfiles_pattern =~ s/\n/|/g;
$perlfiles_pattern =~ s/|$//;
open (LEFT, $leftovers_txt) or die "can't read $leftovers_txt: $!";
- @left = <LEFT>;
+ my @left = <LEFT>;
close (LEFT);
- @leftovers = grep(!/^(${perlfiles_pattern})$/, @left);
+ my @leftovers = grep(!/^(?:${perlfiles_pattern})$/, @left);
+
+ if (index($vars{PKG_DBDIR}, $vars{LOCALBASE}) == 0) {
+ # If PKG_DBDIR is inside LOCALBASE, exclude it from the leftovers.
+ @leftovers = grep { index($_, $vars{PKG_DBDIR}) != 0 } @leftovers;
+ }
open (LEFT, ">$leftovers_txt") or die "can't write $leftovers_txt: $!";
print LEFT @leftovers;
@@ -148,7 +182,7 @@
if (scalar(@leftovers)) {
# Store leftovers, for easier identification:
- system("$GTAR -T $leftovers_txt -plcf - | (cd leftovers-${arch}; $GTAR -plxf -)");
+ my_system("$vars{GTAR} -T $leftovers_txt -plcf - | (cd leftovers-$vars{arch}; $vars{GTAR} -plxf -)");
}
# Add links to leftover list:
@@ -161,7 +195,7 @@
EOOUT
foreach (@leftovers) {
chomp;
- print OUT "<a href=\"${FTPHOST}/${FTPURL}/leftovers-${arch}$_\">$_</a>\n";
+ print OUT "<a href=\"$vars{FTPHOST}/$vars{FTPURL}/leftovers-$vars{arch}$_\">$_</a>\n";
}
print OUT <<EOOUT2;
</pre>
@@ -172,17 +206,17 @@
}
# print the result of a single broken package
-sub pkgResult {
+sub pkgResult ($$) {
my ($pinfo, $state) = @_;
my $pkg = $pinfo->{pkg};
my $nbrokenby = $pinfo->{nbrokenby};
my $nerrors = $pinfo->{nerrors};
- @idents = `${FIND} ${USR_PKGSRC}/${pkg} -type f -print | xargs grep \\\$NetBSD`;
- $datetime = "";
- $file = "";
- $ver = "";
- foreach $ident (@idents) {
+ my @idents = `$vars{FIND} $vars{USR_PKGSRC}/$pkg -type f -print | xargs grep \\\$NetBSD`;
+ my $datetime = "";
+ my $file = "";
+ my $ver = "";
+ foreach my $ident (@idents) {
$ident =~ /\$[N]etBSD: ([^ ]*),v ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) Exp \$/;
if ("$3 $4" gt $datetime) {
$datetime = "$3 $4";
Home |
Main Index |
Thread Index |
Old Index