pkgsrc/mk/bulk/printdepends
grant aa090d4366 allow the user to set the packages to build in build.conf (PKGLIST).
cache the list in printdepends so that printindex doesn't need to
run the same command(s) again at the start of a bulk build.
2004-01-30 10:54:36 +00:00

112 lines
3.3 KiB
Bash

#!/bin/sh
# $NetBSD: printdepends,v 1.14 2004/01/30 10:54:36 grant Exp $
#
# Copyright (c) 1999, 2000 Hubert Feyrer <hubertf@netbsd.org>
# All rights reserved.
#
# 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 Hubert Feyrer for
# the NetBSD Project.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
#
#
# Print list of pkg dependencies suitable for tsort(1).
# Start in $USR_PKGSRC.
#
# If an argument is given, use it as a file name
# to contain any failure messages in each package directory.
#
# Pull in PKGLIST
if [ -f "$BULK_BUILD_CONF" ]; then
. $BULK_BUILD_CONF
else
. `dirname $0`/build.conf
fi
if [ ! -z "$1" ]; then
brokenfile=$1
else
brokenfile=/dev/null
fi
opsys=`uname -s`
case "$opsys" in
NetBSD) BMAKE=make ;;
*) BMAKE=bmake ;;
esac
export BMAKE
# $USR_PKGSRC
cwd=$PWD
# get some initial variables
cd $cwd/pkgtools/pkglint
GREP=`${BMAKE} show-var VARNAME=GREP`
SED=`${BMAKE} show-var VARNAME=SED`
cd $cwd
if [ -n "${PKGLIST}" ]; then
list="${PKGLIST}"
else
# List of all pkgs, from pkgsrc/*/Makefile
list=`${GREP} '^[[:space:]]*'SUBDIR */Makefile | ${SED} 's,/Makefile.*=[[:space:]]*,/,'`
fi
# cache the package list for printindex
echo list='"'${list}'"' > .pkglist
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
l=`${BMAKE} show-depends-dirs`
if [ $? != 0 ]; then
echo "WARNING (printdepends): the package in $pkgdir had problem with" > /dev/stderr
echo " ${BMAKE} show-depends-dirs" > /dev/stderr
echo " dependency information in the cache will" > /dev/stderr
echo " be dropped for $pkgdir" > /dev/stderr
echo "${BMAKE} show-depends-dirs failed:" > $brokenfile
${BMAKE} show-depends-dirs >> $brokenfile 2>&1
echo "$pkgdir $pkgdir"
else
if [ "$l" = "" ]; then
# No dependencies
echo "$pkgdir $pkgdir"
else
for depdir in $l
do
echo "$depdir $pkgdir"
done
fi
fi
fi
cd $cwd
done