]> git.pld-linux.org Git - packages/rpm.git/blame - rpm-find-requires-wrapper
- include --x-libraries=/usr/X11R6/%{_lib} in %configure macros
[packages/rpm.git] / rpm-find-requires-wrapper
CommitLineData
0b3acdf9 1#!/bin/sh
0b3acdf9
JB
2
3# _noauto* wrapper for builtin rpm Requires generator
4# requires: /bin/sh, /usr/bin/rpmdeps, rpm, coreutils, findutils. mktemp
5# input (stdin): filenames (one per line)
6# output (stdout): Requires list (one per line)
7
8# note that no large list is stored in shell variable - this was VERY slow
9
10ulimit -c 0
11
1cee2a54 12PERLOPT="--define=__perl_requires /bin/sh -c 'cat >/dev/null'"
e3197275 13PERLOPT2="--define=__perl_provides /bin/sh -c 'cat >/dev/null'"
1cee2a54 14PHPOPT="--define=__php_requires /bin/sh -c 'cat >/dev/null'"
e3197275 15PHPOPT2="--define=__php_provides /bin/sh -c 'cat >/dev/null'"
0ad25a07
JB
16PROVARG=""
17NOPROVFILES=""
18NOPROV=""
0b3acdf9 19noreqfiles=''
0ad25a07
JB
20noreq=''
21noreqdep=''
22while [ $# -gt 0 ]; do
23 case "$1" in
24 --with-perl)
25 PERLOPT=""
e3197275 26 PERLOPT2=""
0ad25a07
JB
27 PROVARG="$PROVARG --with-perl"
28 ;;
29 --with-php)
30 PHPOPT=""
e3197275 31 PHPOPT2=""
0ad25a07
JB
32 PROVARG="$PROVARG --with-php"
33 ;;
34 --buildroot=*)
35 buildroot="${1#--buildroot=}"
36 PROVARG="$PROVARG $1"
37 ;;
38 --noautoprovfiles=*)
39 NOPROVFILES="$1"
40 ;;
41 --noautoprov=*)
42 NOPROV="$1"
43 ;;
44 --noautoreqfiles=*)
45 for i in ${1#--noautoreqfiles=} ; do
46 noreqfiles="${noreqfiles}\|${buildroot}${i}"
47 done
48 ;;
49 --noautoreq=*)
50 for i in ${1#--noautoreq=} ; do
51 noreq="${noreq}\|${i}"
52 done
53 ;;
54 --noautoreqdep=*)
55 for i in ${1#--noautoreqdep=} ; do
56 noreqdep="${noreqdep}\|${i}"
57 done
58 esac
59 shift
60done
61
0b3acdf9
JB
62if [ -r /etc/rpm/noautoreqfiles ]; then
63 for i in `cat /etc/rpm/noautoreqfiles | grep -v '^#'`; do
0ad25a07 64 noreqfiles="${noreqfiles}\|${buildroot}${i}"
0b3acdf9
JB
65 done
66fi
67
0b3acdf9
JB
68if [ -r /etc/rpm/noautoreq ]; then
69 for i in `cat /etc/rpm/noautoreq | grep -v '^#'`; do
70 noreq="${noreq}\|${i}"
71 done
72fi
73
0b3acdf9
JB
74if [ -r /etc/rpm/noautoreqdep ]; then
75 for i in `cat /etc/rpm/noautoreqdep | grep -v '^#'`; do
76 noreqdep="${noreqdep}\|${i}"
77 done
78fi
79
80FILES=`mktemp ${TMPDIR:-/tmp}/.rpmfilesXXXXXX`
81PROVS=`mktemp ${TMPDIR:-/tmp}/.rpmprovsXXXXXX`
82REQS=`mktemp ${TMPDIR:-/tmp}/.rpmreqsXXXXXX`
83
84# we must duplicate file list here (to remove Provides list from Requires)
0ad25a07
JB
85tee ${FILES} | \
86 /usr/lib/rpm/find-provides-wrapper ${PROVARG} "${NOPROVFILES}" "${NOPROV}" \
87 > ${PROVS}
0b3acdf9
JB
88
89# rpmdeps output seems sorted, but resort it in case of long list split
90grep -v -e "^\(${noreqfiles}\)\$" ${FILES} | tr '\n' '\0' | \
e3197275
JB
91 xargs -r -0 /usr/bin/rpmdeps "${PERLOPT}" "${PERLOPT2}" \
92 "${PHPOPT}" "${PHPOPT2}" --requires | \
0ad25a07 93 LC_ALL=C sort -u | grep -v -e "^\(${noreq}\)\$" | \
0b3acdf9
JB
94 LC_ALL=C comm -2 -3 - ${PROVS} | tee ${REQS}
95
96# package names only for SONAMES, perl(module) and pear(module)
97grep -e '.\+\.so\|perl(.\+)\|pear(.\+)' ${REQS} | \
98 grep -v -e "^\(${noreqdep}\)\$" | tr '\n' '\0' | \
99 LC_ALL=C xargs -r -0 -- rpm -q --whatprovides --qf '%{NAME}\n' 2>/dev/null | \
100 grep -v "no package provides" | LC_ALL=C sort -u
101
102rm -f ${FILES} ${PROVS} ${REQS}
103
104exit 0
This page took 0.055184 seconds and 4 git commands to generate.