12 #define _RPMFC_INTERNAL
22 #define RPMDEP_RPMFC 1
23 #define RPMDEP_RPMDSCPUINFO 2
24 #define RPMDEP_RPMDSRPMLIB 3
25 #define RPMDEP_RPMDSSYSINFO 4
26 #define RPMDEP_RPMDSGETCONF 5
27 #define RPMDEP_RPMDSELF 6
28 #define RPMDEP_RPMDSLDCONFIG 7
29 #define RPMDEP_RPMDSUNAME 8
30 #define RPMDEP_RPMDSPIPE 9
32 #define RPMDEP_RPMDSPERL 10
33 #define RPMDEP_RPMDSPYTHON 11
34 #define RPMDEP_RPMDSLIBTOOL 12
35 #define RPMDEP_RPMDSPKGCONFIG 13
37 #define RPMDEP_RPMDSPUBKEY 14
38 #define RPMDEP_RPMDSARCH 15
39 #define RPMDEP_RPMDSFILE 16
40 #define RPMDEP_RPMDSSONAME 17
41 #define RPMDEP_RPMDSPACKAGE 18
43 #define RPMDEP_RPMDSJAVA 20
44 #define RPMDEP_RPMDSRUBY 21
45 #define RPMDEP_RPMDSPHP 22
47 #define RPMDEP_RPMDSDPKGRPM 32
48 #define RPMDEP_RPMDSRPMDPKG 33
62 #define _PERL_PROVIDES "/usr/bin/find /usr/lib/perl5 | /usr/lib/rpm/perl.prov"
66 #define _PERL_REQUIRES "rpm -qa --fileclass | grep 'perl script' | sed -e 's/\t.*$//' | /usr/lib/rpm/perl.req"
70 #define _JAVA_PROVIDES "rpm -qal | egrep '\\.(jar|class)$' | /usr/lib/rpm/javadeps.sh -P"
74 #define _JAVA_REQUIRES "rpm -qal | egrep '\\.(jar|class)$' | /usr/lib/rpm/javadeps.sh -R"
78 #define _LIBTOOL_PROVIDES "/usr/bin/find /usr/lib -name '*.la' | /usr/lib/rpm/libtooldeps.sh -P /"
82 #define _LIBTOOL_REQUIRES "rpm -qal | grep '\\.la$' | /usr/lib/rpm/libtooldeps.sh -R /"
86 #define _PKGCONFIG_PROVIDES "/usr/bin/find /usr/lib -name '*.pc' | /usr/lib/rpm/pkgconfigdeps.sh -P"
89 #define _PKGCONFIG_REQUIRES "rpm -qal | grep '\\.pc$' | /usr/lib/rpm/pkgconfigdeps.sh -R"
92 #define _DPKG_PROVIDES "egrep '^(Package|Status|Version|Provides):' /var/lib/dpkg/status | sed -e '\n\
97 s|^Package: \\([^\\n]*\\)\\n[^\\n]*\\nVersion: \\(.*\\)$|\\1 = \\2|\n\
102 }' | sed -f /usr/lib/rpm/dpkg2fc.sed | sort -u | tee /tmp/dpkg"
105 #define _DPKG_REQUIRES "egrep '^(Package|Status|Pre-Depends|Depends):' /var/lib/dpkg/status | sed -e '\n\
109 s|^Package: [^\\n]*\\n.*$||\n\
113 s|(\\([^)]*\\))|\\1|g\n\
118 /^Pre-Depends: / {\n\
119 s|^Pre-Depends: ||\n\
120 s|(\\([^)]*\\))|\\1|g\n\
124 }' | sed -f /usr/lib/rpm/dpkg2fc.sed | sed -e 's/ |.*$//' | sort -u | tee /tmp/dpkg"
127 #define _RPMDB_PACKAGE_PROVIDES "rpm -qa --qf '%{name} = %|epoch?{%{epoch}:}|%{version}-%{release}\n' | sort -u"
130 #define _RPMDB_PACKAGE_REQUIRES "rpm -qa --requires | sort -u | sed -e '/^\\//d' -e '/.*\\.so.*/d' -e '/^%/d' -e '/^.*(.*)/d'"
133 #define _RPMDB_SONAME_REQUIRES "rpm -qa --requires | grep -v '^/' | grep '.*\\.so.*' | sort -u"
136 #define _RPMDB_FILE_REQUIRES "rpm -qa --requires | grep '^/' | sort -u"
141 if (fp == NULL) fp = stderr;
144 fprintf(fp,
"===================================== %s\n", msg);
149 fprintf(fp,
"%6d\t",
rpmdsIx(ds));
160 N_(
"Common options:"),
164 N_(
"print cpuinfo(...) dependency set"), NULL },
166 N_(
"print rpmlib(...) dependency set"), NULL },
168 N_(
"print /etc/rpm/sysinfo dependency set"), NULL },
170 N_(
"print getconf(...) dependency set"), NULL },
172 N_(
"print soname(...) dependencies for elf files"), NULL },
174 N_(
"print soname(...) dependencies from /etc/ld.so.cache"), NULL },
176 N_(
"print uname(...) dependency set"), NULL },
178 N_(
"print dependency set from a command pipe"), NULL },
181 N_(
"print perl(...) dependency set"), NULL },
183 N_(
"print python(...) dependency set"), NULL },
185 N_(
"print libtool(...) dependency set"), NULL },
187 N_(
"print pkgconfig(...) dependency set"), NULL },
190 N_(
"print pubkey(...) dependency set"), NULL },
192 N_(
"print arch(...) dependency set"), NULL },
194 N_(
"print file(...) dependency set"), NULL },
196 N_(
"print soname(...) dependency set"), NULL },
198 N_(
"print package(...) dependency set"), NULL },
201 N_(
"print java(...) dependency set"), NULL },
203 N_(
"print php(...) dependency set"), NULL },
205 N_(
"print ruby(...) dependency set"), NULL },
207 N_(
"print /var/lib/dpkg Provides: dependency set"), NULL },
209 N_(
"print /var/lib/dpkg Requires: dependency set"), NULL },
212 N_(
"print Provides: dependency set"), NULL },
214 N_(
"print Requires: dependency set"), NULL },
215 {
"closure", 0, POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &
print_closure, -1,
216 N_(
"check Requires: against Provides: for dependency closure"), NULL },
227 static const char rpmdeps_string[] =
"rpmdeps";
234 const char * closure_name =
"for";
244 if ((
progname = strrchr(argv[0],
'/')) != NULL)
254 av = poptGetArgs(optCon);
279 sprintf(buf,
"final: files %d cdict[%d] %d%% ddictx[%d]", (
int)fc->nfiles,
argvCount(fc->cdict), (
int)((100 * fc->fknown)/fc->nfiles),
argiCount(fc->ddictx));
284 P = fc->provides; fc->provides = NULL;
285 R = fc->requires; fc->requires = NULL;
289 closure_name =
"cpuinfo(...)";
293 closure_name =
"rpmlib(...)";
302 closure_name =
"getconf(...)";
306 closure_name =
"soname(...)";
307 for (i = 0; i < ac; i++)
313 closure_name =
"soname(...)";
319 closure_name =
"uname(...)";
326 closure_name =
"perl(...)";
328 fprintf(stderr,
"\n*** Gathering %s Provides: using\n\t%s\n", closure_name,
_perl_provides);
331 fprintf(stderr,
"\n*** Gathering %s Requires: using\n\t%s\n", closure_name,
_perl_requires);
339 closure_name =
"libtool(...)";
341 fprintf(stderr,
"\n*** Gathering %s Provides: using\n\t%s\n", closure_name,
_libtool_provides);
344 fprintf(stderr,
"\n*** Gathering %s Requires: using\n\t%s\n", closure_name,
_libtool_requires);
350 closure_name =
"pkgconfig(...)";
352 fprintf(stderr,
"\n*** Gathering %s Provides: using\n\t%s\n", closure_name,
_pkgconfig_provides);
355 fprintf(stderr,
"\n*** Gathering %s Requires: using\n\t%s\n", closure_name,
_pkgconfig_requires);
371 closure_name =
"soname(...)";
381 closure_name =
"package(...)";
393 closure_name =
"java(...)";
395 fprintf(stderr,
"\n*** Gathering %s Provides: using\n\t%s\n", closure_name,
_java_provides);
398 fprintf(stderr,
"\n*** Gathering %s Requires: using\n\t%s\n", closure_name,
_java_requires);
408 closure_name =
"dpkgrpm(...)";
410 fprintf(stderr,
"\n*** Gathering dpkg Provides: using\n\t%s\n",
_dpkg_provides);
419 closure_name =
"rpmdpkg(...)";
426 fprintf(stderr,
"\n*** Gathering dpkg Requires: using\n\t%s\n",
_dpkg_requires);
437 fprintf(stderr,
"\n*** Checking %s Requires(%d): against Provides(%d): closure:\n", closure_name,
rpmdsCount(R),
rpmdsCount(P));