]>
Commit | Line | Data |
---|---|---|
0b3acdf9 JB |
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 |