#!/usr/pkg/bin/perl # $NetBSD: post-build,v 1.3 2000/09/17 21:51:09 hubertf Exp $ # # Collect stuff after a pkg bulk build # # (c) 2000 Hubert Feyrer, All Rights Reserved. # use File::Basename; # 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"; } # Dig given variable out of config file, and set it sub getconf { local($var)=@_; local($val); chomp($val=`. ./$BULK_BUILD_CONF ; echo \$$var`); eval "\$$var=\"$val\";"; } 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` chomp($date=`date`); $verbose=1; if ($verbose) { print "\n"; print "*** NetBSD $osrev/$arch\n"; print "*** Result of bulk pkgsrc build as of $date:\n"; print "\n"; } system("mkdir -p ${FTP}"); # Copy over the output from the build process chdir("$USR_PKGSRC"); system("tar plcf - .broken* */*/.broken* | ( cd ${FTP} ; tar plxf - )"); open(HTML,">$REPORT") or die; print HTML < NetBSD-$osrev/$arch bulk package build

NetBSD $osrev/$arch

Output of the pkgsrc bulk build
as of $date

Packages not listed here resulted in a binary package. To see the output of the (failed) build, select the package below.

Files not listed in PLISTs can be found in this list.

Package State Last touched by File touched last Maintainer EOHTML ; # some nifty postprocessing of $FTP/.broken* -> HTML here $nunpackaged = $nbroken = 0; chdir("$FTP"); $bf=".broken.$arch"; open(BF,"sort +1 $bf |") or die "can't open .broken-file '$bf'"; while () { ($nerrors, $bf) = split; ( $pkg = $bf ) =~ s,/.broken.*$,,; # next # if $pkg!~/^a/; # DEBUG! HF if ($nerrors > 0) { $color = "red"; $state = "build broken"; $nbroken++; } else { $color = "yellow"; $state = "not packaged"; $nunpackaged++; } # The idea of this is stolen from bsd.pkg.mk's # show-pkgtools-version target - thanks Al! :-) $whofile = `find ${USR_PKGSRC}/${pkg} -type f -print | xargs ident 2>/dev/null | awk '\$1 ~ /\\\$NetBSD/ { gsub("/", "", \$4); print \$4 " " \$6 " " \$2 }' | sort -n | tail -n 1 | awk '{ print \$2 " " \$3 }' `; $whofile=~s/,v$//; chomp($whofile); ($who,$file) = split(/\s+/, $whofile); # $maintainer=`( cd $USR_PKGSRC/$pkg ; ( echo '.include "Makefile"' ; echo 'bla: ; \@echo ${MAINTAINER}' ) | make -f - bla )`; $maintainer=`grep ^MAINTAINER $USR_PKGSRC/$pkg/Makefile | awk '{ print \$2\$3\$4\$5\$6}' | sed -e 's/\/>/g'`; chomp($maintainer); print HTML "
$pkg"; print HTML " $state"; print HTML " $who $file"; print HTML " $maintainer\n"; ($category, $dbfeed_pkg) = split('/', $pkg); if ($nerrors > 0) { printf("%-23s $state\t($who, $maintainer)\n", "$pkg:") if $verbose; } } close(BF); $ntotal=$nunpackaged+$nbroken; print HTML <
Packages not packaged: $nunpackaged
Packages broken: $nbroken
Total: $ntotal


Hubert Feyrer, 1999-2000. EOHTML ; close(HTML); # # Adjust "last" symlink # { local($base, $dir) = $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 # { chdir("${FTP}"); system("mkdir -p leftovers-${arch}"); # Find files since last build: system("find /usr/pkg -newer ${USR_PKGSRC}/.start.${arch} -type f >>leftovers-${arch}.txt"); system("find /usr/X11R6 -newer ${USR_PKGSRC}/.start.${arch} -type f >>leftovers-${arch}.txt"); # Strip perl-files: system("pkg_info -qL perl-base > .p.${arch}"); system("fgrep -v -x -f .p.${arch} leftovers-${arch}.txt >leftovers-${arch}.txt.new"); rename("leftovers-${arch}.txt.new", "leftovers-${arch}.txt"); unlink(".p.${arch}"); # Store leftovers, for easier identification: system("tar plcf - `cat leftovers-${arch}.txt` | ( cd leftovers-${arch} ; tar plxf - )"); # Add links to leftover list: open (IN, "< leftovers-${arch}.txt") or die "can't read leftovers-${arch}.txt"; open (OUT, "> leftovers-${arch}.html") or die "can't write leftovers-${arch}.html"; print OUT <
EOOUT
;
	while () {
	    	print OUT "$_\n";
	}
	print OUT <


EOOUT2
;
    	close(IN);
    	close(OUT);
}

if ($verbose) {
	print "\n";
	print "Packages not packaged:  $nunpackaged\n";
	print "Packages broken:        $nbroken\n";
	print "Total:                  $ntotal\n";
	print "\n";
	print "See $FTPHOST/$FTPURL/broken.html\n";
	print "for logs of builds broken or not resulting in a binary pkg.\n";
	print "\n";
	print "\n";
	print " - Hubert\n";
	print "\n";
	print "[* This message was created automatically! *]\n";
	print "\n";
}