Packages that are not available on the current platform (and the

packages depending on them) are listed in a separate category in the
bulk build report.
This commit is contained in:
rillig 2007-01-08 22:42:00 +00:00
parent bfdd5d6dd2
commit 5c9820e74b
2 changed files with 36 additions and 13 deletions

View file

@ -1,4 +1,4 @@
# $NetBSD: bsd.bulk-pkg.mk,v 1.130 2006/12/14 14:37:32 dmcmahill Exp $
# $NetBSD: bsd.bulk-pkg.mk,v 1.131 2007/01/08 22:42:00 rillig Exp $
#
# Copyright (c) 1999, 2000 Hubert Feyrer <hubertf@NetBSD.org>
@ -100,6 +100,10 @@ BUILD_SUCCEEDED_FILE?= .build_succeeded${BULK_ID}
# This file exists to mark a package as broken
BROKENFILE?= .broken${BULK_ID}.html
# When this file exists for a package, it has been marked as not to be
# available on this platform.
NOT_AVAILABLE_FILE?= .bulk-not_available
# This file is the work log for a broken package
BROKENWRKLOG?= .broken${BULK_ID}.work.txt
@ -246,7 +250,7 @@ bulk-cache:
cd ${PKGSRCDIR} && ${SETENV} BMAKE=${MAKE:Q} ${SH} mk/bulk/printdepends ${BROKENFILE:Q} ${BULKFILESDIR:Q} > ${DEPENDSTREEFILE:Q}
@${BULK_MSG} "Generating package name <=> package directory cross reference file"
@${BULK_MSG_CONT} "(this may take a while)."
cd ${PKGSRCDIR} && ${SETENV} BMAKE=${MAKE:Q} ${SH} mk/bulk/printindex ${BROKENFILE:Q} ${BULKFILESDIR:Q} > ${INDEXFILE:Q}
cd ${PKGSRCDIR} && ${SETENV} BMAKE=${MAKE:Q} ${SH} mk/bulk/printindex ${NOT_AVAILABLE_FILE} ${BULKFILESDIR:Q} > ${INDEXFILE:Q}
.else
@${BULK_MSG} "Extracting database for SPECIFIC_PKGS subset of pkgsrc"
@${BULK_MSG_CONT} "along with their dependencies"
@ -432,6 +436,10 @@ bulk-package:
for pkgdir in `${SED} -n -e "/^${_ESCPKGPATH} / s;^[^:]*:;;p" ${DEPENDSFILE}` ${BULK_PREREQ} ; do \
pkgname=`${AWK} '$$1 == "'"$$pkgdir"'" { print $$2; }' ${INDEXFILE}`; \
if [ -z "$$pkgname" ]; then ${BULK_MSG} "WARNING: could not find package name for directory $$pkgdir"; continue ; fi ;\
if [ -f "${BULKFILESDIR}/$$pkgdir/${NOT_AVAILABLE_FILE}" ]; then \
${ECHO} "The dependency $$pkgname ($$pkgdir) is not available." >> ${BULKFILESDIR}/${PKGPATH}/${NOT_AVAILABLE_FILE}; \
exit 1; \
fi; \
pkgfile=${PACKAGES}/All/$${pkgname}${PKG_SUFX} ;\
if ${PKG_INFO} -qe $$pkgname ; then \
${BULK_MSG} "Required package $$pkgname ($$pkgdir) is already installed" ; \
@ -589,3 +597,7 @@ bulk-install:
${ECHO_MSG} ${MAKE} bulk-package PRECLEAN=no; \
${DO} ${RECURSIVE_MAKE} bulk-package PRECLEAN=no; \
fi
bulk-info: .PHONY
@${ECHO} pkgname ${PKGPATH} ${PKGNAME}
@:; ${DEPENDS:@d@${ECHO} ${PKGPATH} ${d:Q}@; }

View file

@ -1,5 +1,5 @@
#!/usr/pkg/bin/perl
# $NetBSD: post-build,v 1.66 2006/12/15 13:15:06 martti Exp $
# $NetBSD: post-build,v 1.67 2007/01/08 22:42:00 rillig Exp $
#
# Collect stuff after a pkg bulk build
#
@ -172,6 +172,7 @@ get_mk_conf_vars(qw(
INDEXFILE
LOCALBASE
MACHINE_ARCH
NOT_AVAILABLE_FILE
ORDERFILE
PAX
PKG_DBDIR
@ -391,6 +392,7 @@ sub writeReport {
my $nbroken = scalar(@{$broken->{"broken"}});
my $nbrokendep = scalar(@{$broken->{"broken depends"}});
my $nunpackaged = scalar(@{$broken->{"not packaged"}});
my $nnot_available = scalar(@{$broken->{"not available"}});
my $nbrokentot = $nbroken + $nbrokendep;
my $ntotal = $nunpackaged + $nbroken + $nbrokendep;
@ -418,6 +420,7 @@ EOF
print_summary_line("Pkgs broken due to them:", $nbrokendep);
print_summary_line("Total broken:", $nbrokentot);
print_summary_line("Not packaged:", $nunpackaged);
print_summary_line("Not available:", $nnot_available);
print_summary_line("Total:", $ntotal);
print <<EOF;
@ -557,6 +560,9 @@ tt.filename {
<tr class="pkg-notpackaged">
<td>Not packaged:</td> <td align="right">$nunpackaged</td>
</tr>
<tr class="pkg-notavailable">
<td>Not available:</td> <td align="right">$nnot_available</td>
</tr>
<tr>
<td>Total:</td> <td align="right">$ntotal</td>
</tr>
@ -581,6 +587,7 @@ tt.filename {
<li><a href="#broken">Broken packages</a></li>
<li><a href="#broken depends">Broken dependencies</a></li>
<li><a href="#not packaged">Not packaged</a></li>
<li><a href="#not available">Not available</a></li>
</ul>
</p>
@ -590,10 +597,11 @@ EOHTML
"topten" => "Top Ten Offenders",
"broken" => "Broken packages",
"broken depends" => "Broken dependencies",
"not packaged" => "Not packaged"
"not packaged" => "Not packaged",
"not available" => "Not available",
);
foreach my $state ("topten", "broken", "broken depends", "not packaged") {
foreach my $state ("topten", "broken", "broken depends", "not packaged", "not available") {
next unless scalar(@{$broken->{$state}});
if ($verbose && ($state eq "topten" || $state eq "broken")) {
@ -668,7 +676,8 @@ sub getBroken {
'broken' => [],
'broken depends' => [],
'not packaged' => [],
'topten' => []
'topten' => [],
"not available" => [],
};
open (BF, $vars{BROKENFILE}) || return $res;
@ -680,24 +689,26 @@ sub getBroken {
my ($nerrors, $bf, $nbrokenby) = split;
my $pkg = $bf;
$pkg =~ s,/$vars{BROKENFILE},,;
my %tmp = (
my $tmp = {
bf => $bf,
pkg => $pkg,
nbrokenby => $nbrokenby,
nerrors => $nerrors,
);
};
if ($nerrors > 0) {
push(@{$res->{"broken"}}, \%tmp);
if (-f "$vars{BULKFILESDIR}/$pkg/$vars{NOT_AVAILABLE_FILE}") {
push(@{$res->{"not available"}}, $tmp);
} elsif ($nerrors > 0) {
push(@{$res->{"broken"}}, $tmp);
} elsif ($nerrors == -1) {
push(@{$res->{"broken depends"}}, \%tmp);
push(@{$res->{"broken depends"}}, $tmp);
} else {
push(@{$res->{"not packaged"}}, \%tmp);
push(@{$res->{"not packaged"}}, $tmp);
}
}
# sort pkgs in each state
foreach my $state ("broken", "broken depends", "not packaged") {
foreach my $state ("broken", "broken depends", "not packaged", "not available") {
$res->{$state} = [ sort { $a->{pkg} cmp $b->{pkg} } @{$res->{$state}} ];
}