#!/bin/sh # # syspkgdeps [-a arch] [-m machine] [-s setsdir] [-p prefix] sets # # Compute naive package dependencies based on file & directory # nesting. E.g., if pkg P contains /foo/bar and Q contains /foo, # then Q is considered a dependency of P. # #set -u # # set defaults and import setlist subroutines # rundir="$(dirname "$0")" # ${0%/*} isn't good enough when there's no "/" . "${rundir}/sets.subr" usage() { cat 1>&2 <&2 ; exit 1 ; } PATH_MEMBERSHIP="${SCRATCH}/path-membership" PATH_TO_PKGNAME="${SCRATCH}/pathpkg.db" PARENT_PKGNAMES="${SCRATCH}/parent-pkgnames" PARENT_PATHNAMES="${SCRATCH}/parent-pathnames" echo "indexing packages by pathnames" 1>&2 list_set_files ${sets} | ${SED} 's/^\.\///' | \ ${ENV_CMD} PREFIX="${prefix}" ${AWK} '{ if ($1 == ".") { print ENVIRON["PREFIX"] " " $2; } else { print ENVIRON["PREFIX"] $1 " " $2; } }' | ${SORT} -k 1 -u > "${PATH_MEMBERSHIP}" ${DB} -q -w -f - btree "${PATH_TO_PKGNAME}" < "${PATH_MEMBERSHIP}" || \ echo "shit" 1>&2 echo "computing parent pathnames" 1>&2 while read pathname pkgname; do # print parent pathname echo "${pathname%/*}" done < "${PATH_MEMBERSHIP}" > "${PARENT_PATHNAMES}" echo "selecting parent packages using parent pathnames" 1>&2 ${DB} -q -f - btree "${PATH_TO_PKGNAME}" < "${PARENT_PATHNAMES}" | \ ${PASTE} "${PATH_MEMBERSHIP}" - | \ ${AWK} '{ if ($2 != $4) print $2 " " $4; }' | \ ${SORT} -u | \ "${rundir}/culldeps" if [ $? -ne 0 ]; then echo "error in parent-directory lookup, aborting" 1>&2 exit 1 fi