]> git.pld-linux.org Git - packages/rpm.git/blob - rpm-find-requires-wrapper
- _without_docs
[packages/rpm.git] / rpm-find-requires-wrapper
1 #!/bin/sh
2 cd `rpm --eval %{_builddir}`
3
4 # _noauto* wrapper for builtin rpm Requires generator
5 # requires:             /bin/sh, /usr/bin/rpmdeps, rpm, coreutils, findutils. mktemp
6 # input (stdin):        filenames (one per line)
7 # output (stdout):      Requires list (one per line)
8
9 # note that no large list is stored in shell variable - this was VERY slow
10
11 ulimit -c 0
12
13 noreqfiles=''
14 if [ -r __rpm_noautoreqfiles ]; then
15         for i in `cat __rpm_noautoreqfiles`; do
16                 noreqfiles="${noreqfiles}\|${i}"
17         done
18 fi
19 if [ -r /etc/rpm/noautoreqfiles ]; then
20         for i in `cat /etc/rpm/noautoreqfiles | grep -v '^#'`; do
21                 noreqfiles="${noreqfiles}\|${i}"
22         done
23 fi
24
25 noreq=''
26 if [ -r __rpm_noautoreq ]; then
27         for i in `cat __rpm_noautoreq`; do
28                 noreq="${noreq}\|${i}"
29         done
30 fi
31 if [ -r /etc/rpm/noautoreq ]; then
32         for i in `cat /etc/rpm/noautoreq | grep -v '^#'`; do
33                 noreq="${noreq}\|${i}"
34         done
35 fi
36
37 noreqdep=''
38 if [ -r __rpm_noautoreqdep ]; then
39         for i in `cat __rpm_noautoreqdep`; do
40                 noreqdep="${noreqdep}\|${i}"
41         done
42 fi
43 if [ -r /etc/rpm/noautoreqdep ]; then
44         for i in `cat /etc/rpm/noautoreqdep | grep -v '^#'`; do
45                 noreqdep="${noreqdep}\|${i}"
46         done
47 fi
48
49 FILES=`mktemp ${TMPDIR:-/tmp}/.rpmfilesXXXXXX`
50 PROVS=`mktemp ${TMPDIR:-/tmp}/.rpmprovsXXXXXX`
51 REQS=`mktemp ${TMPDIR:-/tmp}/.rpmreqsXXXXXX`
52
53 # we must duplicate file list here (to remove Provides list from Requires)
54 tee ${FILES} | /usr/lib/rpm/find-provides-wrapper > ${PROVS}
55
56 # rpmdeps output seems sorted, but resort it in case of long list split
57 grep -v -e "^\(${noreqfiles}\)\$" ${FILES} | tr '\n' '\0' | \
58         xargs -r -0 /usr/bin/rpmdeps --requires | LC_ALL=C sort -u | \
59         grep -v -e "^\(${noreq}\)\$" | \
60         LC_ALL=C comm -2 -3 - ${PROVS} | tee ${REQS}
61
62 # package names only for SONAMES, perl(module) and pear(module)
63 grep -e '.\+\.so\|perl(.\+)\|pear(.\+)' ${REQS} | \
64         grep -v -e "^\(${noreqdep}\)\$" | tr '\n' '\0' | \
65         LC_ALL=C xargs -r -0 -- rpm -q --whatprovides --qf '%{NAME}\n' 2>/dev/null | \
66         grep -v "no package provides" | LC_ALL=C sort -u
67
68 rm -f ${FILES} ${PROVS} ${REQS}
69
70 exit 0
This page took 0.033913 seconds and 3 git commands to generate.