#!/bin/sh # _noauto* wrapper for builtin rpm Provides generator # requires: /bin/sh, /usr/bin/rpmdeps, coreutils, findutils # input (stdin): filenames (one per line) # output (stdout): Provides list (one per line) # note that no large list is stored in shell variable - this was VERY slow ulimit -c 0 PERLOPT="--define=__perl_provides /bin/sh -c 'cat >/dev/null'" PERLOPT2="--define=__perl_requires /bin/sh -c 'cat >/dev/null'" PHPOPT="--define=__php_provides /bin/sh -c 'cat >/dev/null'" PHPOPT2="--define=__php_requires /bin/sh -c 'cat >/dev/null'" noprovfiles='' noprov='' buildroot='' while [ $# -gt 0 ]; do case "$1" in --with-perl) PERLOPT="" PERLOPT2="" ;; --with-php) PHPOPT="" PHPOPT2="" ;; --buildroot=*) buildroot="${1#--buildroot=}" ;; --noautoprovfiles=*) for i in ${1#--noautoprovfiles=} ; do noprovfiles="${noprovfiles}\|${buildroot}${i}" done ;; --noautoprov=*) for i in ${1#--noautoprov=} ; do noprov="${noprov}\|${i}" done esac shift done if [ -r /etc/rpm/noautoprovfiles ]; then for i in `cat /etc/rpm/noautoprovfiles | grep -v '^#'`; do noprovfiles="${noprovfiles}\|${buildroot}${i}" done fi if [ -r /etc/rpm/noautoprov ]; then for i in `cat /etc/rpm/noautoprov | grep -v '^#'`; do noprov="${noprov}\|${i}" done fi # rpmdeps output seems sorted, but resort it in case of long list split grep -v -e "^\(${noprovfiles}\)\$" | tr '\n' '\0' | \ xargs -r -0 /usr/bin/rpmdeps "${PERLOPT}" "${PERLOPT2}" \ "${PHPOPT}" "${PHPOPT2}" --provides | \ LC_ALL=C sort -u | grep -v -e "^\(${noprov}\)\$" exit 0