pkgsrc/mk/bulk/printindex
agc 9a4f22c0ba Make these scripts useful on platforms other than NetBSD by using a BMAKE
environment variable, which contains the name of the make(1) program to
invoke - suggestion by Julien Letessier some time ago, the confusion mine,
since I thought he was referring to something else completely.

Don't rely on there being a POSIX tr(1) in the path by default - test
explicitly for both "yes" and "YES".

Set the default for PRUNEDISTFILES to "no", since we can't assume that
the user wants us to delete something which he may have been keeping
around, and there are other ways of accomplishing this aim (lintpkgsrc
-o, for example).

Clean up some superfluous white space at the end of lines.
2002-08-07 10:56:11 +00:00

112 lines
3.8 KiB
Bash

#!/bin/sh
# $NetBSD: printindex,v 1.9 2002/08/07 10:56:12 agc Exp $
#
#
# Copyright (c) 2001 The NetBSD Foundation, Inc.
# All rights reserved.
#
# This code is derived from software contributed to The NetBSD Foundation
# by
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
# must display the following acknowledgement:
# This product includes software developed by the NetBSD
# Foundation, Inc. and its contributors.
# 4. Neither the name of The NetBSD Foundation nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# Generate package index. If an argument is given, use it as a file name
# to contain any failure messages in each package directory.
#
# generates a pkgsrc directory <-> package name database. eg.
# foo/bar bar-2.0
# foo/baz baz-1.0.1
#
# Start in /usr/pkgsrc.
#
if [ ! -z "$1" ]; then
brokenfile=$1
else
brokenfile=/dev/null
fi
# /usr/pkgsrc
cwd=$PWD
# List of all pkgs, from pkgsrc/*/Makefile
list=`grep '^[[:space:]]*'SUBDIR */Makefile | sed 's,/Makefile.*=[[:space:]]*,/,'`
for pkgdir in $list
do
if [ ! -d $pkgdir ]; then
echo "WARNING: the package directory $pkgdir is listed in" > /dev/stderr
echo $pkgdir | sed 's;/.*;/Makefile;g' > /dev/stderr
echo "but the directory does not exist. Please fix this!" > /dev/stderr
else
cd $pkgdir
pkgname=`${BMAKE} show-var VARNAME=PKGNAME`
if [ $? != 0 ]; then
echo "ERROR: printindex could not extract PKGNAME for $pkgdir" > /dev/stderr
echo "${BMAKE} show-var VARNAME=PKGNAME failed" > $brokenfile
${BMAKE} show-var VARNAME=PKGNAME >> $brokenfile 2>&1
#exit 1
fi
echo "$pkgdir $pkgname "
fi
cd $cwd
done
# get the list of packages which should always be installed during the build
# Make sure these ended up in the index file. For example, xpkgwedge, might
# not be enabled for builds in pkgtools/xpkgwedge, but we may want to have
# it listed in the index file.
cd $cwd/pkgtools/pkglint && BULK_PREREQ=`${BMAKE} show-var VARNAME=BULK_PREREQ`
cd $cwd
for pkgdir in $BULK_PREREQ
do
case $list in
*$pkgdir*)
# its already listed, do nothing
;;
*)
cd $cwd/$pkgdir
pkgname=`${BMAKE} show-var VARNAME=PKGNAME`
if [ $? != 0 ]; then
echo "ERROR: printindex could not extract PKNAME for $pkgdir" > /dev/stderr
echo "${BMAKE} show-var VARNAME=PKGNAME failed" > $brokenfile
${BMAKE} show-var VARNAME=PKGNAME >> $brokenfile 2>&1
#exit 1
fi
echo "$pkgdir $pkgname "
cd $cwd
;;
esac
done