rpm 5.3.7
|
00001 #include "system.h" 00002 const char *__progname; 00003 00004 #include <rpmio.h> 00005 #include <rpmiotypes.h> 00006 #include <rpmcb.h> 00007 #include <argv.h> 00008 #include <rpmtypes.h> 00009 #include <rpmtag.h> 00010 00011 #include <rpmds.h> 00012 #define _RPMFC_INTERNAL /* XXX for debugging */ 00013 #include <rpmfc.h> 00014 00015 #include <rpmcli.h> 00016 00017 #include "debug.h" 00018 00019 /*@unchecked@*/ 00020 char *progname; 00021 00022 #define RPMDEP_RPMFC 1 00023 #define RPMDEP_RPMDSCPUINFO 2 00024 #define RPMDEP_RPMDSRPMLIB 3 00025 #define RPMDEP_RPMDSSYSINFO 4 00026 #define RPMDEP_RPMDSGETCONF 5 00027 #define RPMDEP_RPMDSELF 6 00028 #define RPMDEP_RPMDSLDCONFIG 7 00029 #define RPMDEP_RPMDSUNAME 8 00030 #define RPMDEP_RPMDSPIPE 9 00031 00032 #define RPMDEP_RPMDSPERL 10 00033 #define RPMDEP_RPMDSPYTHON 11 00034 #define RPMDEP_RPMDSLIBTOOL 12 00035 #define RPMDEP_RPMDSPKGCONFIG 13 00036 00037 #define RPMDEP_RPMDSPUBKEY 14 00038 #define RPMDEP_RPMDSARCH 15 00039 #define RPMDEP_RPMDSFILE 16 00040 #define RPMDEP_RPMDSSONAME 17 00041 #define RPMDEP_RPMDSPACKAGE 18 00042 00043 #define RPMDEP_RPMDSJAVA 20 00044 #define RPMDEP_RPMDSRUBY 21 00045 #define RPMDEP_RPMDSPHP 22 00046 00047 #define RPMDEP_RPMDSDPKGRPM 32 00048 #define RPMDEP_RPMDSRPMDPKG 33 00049 00050 /*@unchecked@*/ 00051 static int rpmdeps_mode = RPMDEP_RPMFC; 00052 00053 /*@unchecked@*/ 00054 static int print_provides = 1; 00055 00056 /*@unchecked@*/ 00057 static int print_requires = 1; 00058 00059 /*@unchecked@*/ 00060 static int print_closure = 0; 00061 00062 #define _PERL_PROVIDES "/usr/bin/find /usr/lib/perl5 | /usr/lib/rpm/perl.prov" 00063 /*@unchecked@*/ /*@observer@*/ 00064 static const char * _perl_provides = _PERL_PROVIDES; 00065 00066 #define _PERL_REQUIRES "rpm -qa --fileclass | grep 'perl script' | sed -e 's/\t.*$//' | /usr/lib/rpm/perl.req" 00067 /*@unchecked@*/ /*@observer@*/ 00068 static const char * _perl_requires = _PERL_REQUIRES; 00069 00070 #define _JAVA_PROVIDES "rpm -qal | egrep '\\.(jar|class)$' | /usr/lib/rpm/javadeps.sh -P" 00071 /*@unchecked@*/ /*@observer@*/ 00072 static const char * _java_provides = _JAVA_PROVIDES; 00073 00074 #define _JAVA_REQUIRES "rpm -qal | egrep '\\.(jar|class)$' | /usr/lib/rpm/javadeps.sh -R" 00075 /*@unchecked@*/ /*@observer@*/ 00076 static const char * _java_requires = _JAVA_REQUIRES; 00077 00078 #define _LIBTOOL_PROVIDES "/usr/bin/find /usr/lib -name '*.la' | /usr/lib/rpm/libtooldeps.sh -P /" 00079 /*@unchecked@*/ /*@observer@*/ 00080 static const char * _libtool_provides = _LIBTOOL_PROVIDES; 00081 00082 #define _LIBTOOL_REQUIRES "rpm -qal | grep '\\.la$' | /usr/lib/rpm/libtooldeps.sh -R /" 00083 /*@unchecked@*/ /*@observer@*/ 00084 static const char * _libtool_requires = _LIBTOOL_REQUIRES; 00085 00086 #define _PKGCONFIG_PROVIDES "/usr/bin/find /usr/lib -name '*.pc' | /usr/lib/rpm/pkgconfigdeps.sh -P" 00087 static const char * _pkgconfig_provides = _PKGCONFIG_PROVIDES; 00088 00089 #define _PKGCONFIG_REQUIRES "rpm -qal | grep '\\.pc$' | /usr/lib/rpm/pkgconfigdeps.sh -R" 00090 static const char * _pkgconfig_requires = _PKGCONFIG_REQUIRES; 00091 00092 #define _DPKG_PROVIDES "egrep '^(Package|Status|Version|Provides):' /var/lib/dpkg/status | sed -e '\n\ 00093 /^Package: / {\n\ 00094 N\n\ 00095 /not-installed/d\n\ 00096 N\n\ 00097 s|^Package: \\([^\\n]*\\)\\n[^\\n]*\\nVersion: \\(.*\\)$|\\1 = \\2|\n\ 00098 }\n\ 00099 /^Provides: / {\n\ 00100 s|^Provides: ||\n\ 00101 s|, |\\n|g\n\ 00102 }' | sed -f /usr/lib/rpm/dpkg2fc.sed | sort -u | tee /tmp/dpkg" 00103 static const char * _dpkg_provides = _DPKG_PROVIDES; 00104 00105 #define _DPKG_REQUIRES "egrep '^(Package|Status|Pre-Depends|Depends):' /var/lib/dpkg/status | sed -e '\n\ 00106 /^Package: / {\n\ 00107 N\n\ 00108 /not-installed/d\n\ 00109 s|^Package: [^\\n]*\\n.*$||\n\ 00110 }\n\ 00111 /^Depends: / {\n\ 00112 s|^Depends: ||\n\ 00113 s|(\\([^)]*\\))|\\1|g\n\ 00114 s|>>|>|\n\ 00115 s|<<|<|\n\ 00116 s|, |\\n|g\n\ 00117 }\n\ 00118 /^Pre-Depends: / {\n\ 00119 s|^Pre-Depends: ||\n\ 00120 s|(\\([^)]*\\))|\\1|g\n\ 00121 s|>>|>|\n\ 00122 s|<<|<|\n\ 00123 s|, |\\n|g\n\ 00124 }' | sed -f /usr/lib/rpm/dpkg2fc.sed | sed -e 's/ |.*$//' | sort -u | tee /tmp/dpkg" 00125 static const char * _dpkg_requires = _DPKG_REQUIRES; 00126 00127 #define _RPMDB_PACKAGE_PROVIDES "rpm -qa --qf '%{name} = %|epoch?{%{epoch}:}|%{version}-%{release}\n' | sort -u" 00128 static const char * _rpmdb_package_provides = _RPMDB_PACKAGE_PROVIDES; 00129 00130 #define _RPMDB_PACKAGE_REQUIRES "rpm -qa --requires | sort -u | sed -e '/^\\//d' -e '/.*\\.so.*/d' -e '/^%/d' -e '/^.*(.*)/d'" 00131 static const char * _rpmdb_package_requires = _RPMDB_PACKAGE_REQUIRES; 00132 00133 #define _RPMDB_SONAME_REQUIRES "rpm -qa --requires | grep -v '^/' | grep '.*\\.so.*' | sort -u" 00134 static const char * _rpmdb_soname_requires = _RPMDB_SONAME_REQUIRES; 00135 00136 #define _RPMDB_FILE_REQUIRES "rpm -qa --requires | grep '^/' | sort -u" 00137 static const char * _rpmdb_file_requires = _RPMDB_FILE_REQUIRES; 00138 00139 static int rpmdepPrint(const char * msg, rpmds ds, FILE * fp) 00140 { 00141 if (fp == NULL) fp = stderr; 00142 00143 if (msg) 00144 fprintf(fp, "===================================== %s\n", msg); 00145 00146 ds = rpmdsInit(ds); 00147 while (rpmdsNext(ds) >= 0) { 00148 if (_rpmfc_debug || rpmIsDebug()) 00149 fprintf(fp, "%6d\t", rpmdsIx(ds)); 00150 if (_rpmfc_debug || rpmIsVerbose()) 00151 fprintf(fp, "%s: ", rpmdsType(ds)); 00152 fprintf(fp, "%s\n", rpmdsDNEVR(ds)+2); 00153 } 00154 return 0; 00155 } 00156 00157 static struct poptOption optionsTable[] = { 00158 00159 { NULL, '\0', POPT_ARG_INCLUDE_TABLE, rpmcliAllPoptTable, 0, 00160 N_("Common options:"), 00161 NULL }, 00162 00163 { "cpuinfo", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSCPUINFO, 00164 N_("print cpuinfo(...) dependency set"), NULL }, 00165 { "rpmlib", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSRPMLIB, 00166 N_("print rpmlib(...) dependency set"), NULL }, 00167 { "sysinfo", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSSYSINFO, 00168 N_("print /etc/rpm/sysinfo dependency set"), NULL }, 00169 { "getconf", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSGETCONF, 00170 N_("print getconf(...) dependency set"), NULL }, 00171 { "elf", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSELF, 00172 N_("print soname(...) dependencies for elf files"), NULL }, 00173 { "ldconfig", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSLDCONFIG, 00174 N_("print soname(...) dependencies from /etc/ld.so.cache"), NULL }, 00175 { "uname", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSUNAME, 00176 N_("print uname(...) dependency set"), NULL }, 00177 { "pipe", 0, POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &rpmdeps_mode, RPMDEP_RPMDSPIPE, 00178 N_("print dependency set from a command pipe"), NULL }, 00179 00180 { "perl", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSPERL, 00181 N_("print perl(...) dependency set"), NULL }, 00182 { "python", 0, POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &rpmdeps_mode, RPMDEP_RPMDSPYTHON, 00183 N_("print python(...) dependency set"), NULL }, 00184 { "libtool", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSLIBTOOL, 00185 N_("print libtool(...) dependency set"), NULL }, 00186 { "pkgconfig", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSPKGCONFIG, 00187 N_("print pkgconfig(...) dependency set"), NULL }, 00188 00189 { "pubkey", 0, POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &rpmdeps_mode, RPMDEP_RPMDSPUBKEY, 00190 N_("print pubkey(...) dependency set"), NULL }, 00191 { "arch", 0, POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &rpmdeps_mode, RPMDEP_RPMDSARCH, 00192 N_("print arch(...) dependency set"), NULL }, 00193 { "file", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSFILE, 00194 N_("print file(...) dependency set"), NULL }, 00195 { "soname", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSSONAME, 00196 N_("print soname(...) dependency set"), NULL }, 00197 { "package", 0, POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &rpmdeps_mode, RPMDEP_RPMDSPACKAGE, 00198 N_("print package(...) dependency set"), NULL }, 00199 00200 { "java", 0, POPT_ARG_VAL, &rpmdeps_mode, RPMDEP_RPMDSJAVA, 00201 N_("print java(...) dependency set"), NULL }, 00202 { "php", 0, POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &rpmdeps_mode, RPMDEP_RPMDSPHP, 00203 N_("print php(...) dependency set"), NULL }, 00204 { "ruby", 0, POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &rpmdeps_mode, RPMDEP_RPMDSRUBY, 00205 N_("print ruby(...) dependency set"), NULL }, 00206 { "dpkgrpm", 0, POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &rpmdeps_mode, RPMDEP_RPMDSDPKGRPM, 00207 N_("print /var/lib/dpkg Provides: dependency set"), NULL }, 00208 { "rpmdpkg", 0, POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &rpmdeps_mode, RPMDEP_RPMDSRPMDPKG, 00209 N_("print /var/lib/dpkg Requires: dependency set"), NULL }, 00210 00211 { "provides", 'P', POPT_ARG_VAL, &print_provides, -1, 00212 N_("print Provides: dependency set"), NULL }, 00213 { "requires", 'R', POPT_ARG_VAL, &print_requires, -1, 00214 N_("print Requires: dependency set"), NULL }, 00215 { "closure", 0, POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &print_closure, -1, 00216 N_("check Requires: against Provides: for dependency closure"), NULL }, 00217 00218 POPT_AUTOALIAS 00219 POPT_AUTOHELP 00220 POPT_TABLEEND 00221 }; 00222 00223 00224 int 00225 main(int argc, char *argv[]) 00226 { 00227 static const char rpmdeps_string[] = "rpmdeps"; 00228 poptContext optCon; 00229 ARGV_t av = NULL; 00230 rpmfc fc = NULL; 00231 rpmds P = NULL; 00232 rpmds R = NULL; 00233 rpmPRCO PRCO = rpmdsNewPRCO(NULL); 00234 const char * closure_name = "for"; 00235 FILE * fp = NULL; 00236 int flags = 0; 00237 int ac = 0; 00238 int ec = 1; 00239 int xx; 00240 int i; 00241 char buf[BUFSIZ]; 00242 00243 /*@-modobserver@*/ 00244 if ((progname = strrchr(argv[0], '/')) != NULL) 00245 progname++; 00246 else 00247 progname = argv[0]; 00248 /*@=modobserver@*/ 00249 00250 optCon = rpmcliInit(argc, argv, optionsTable); 00251 if (optCon == NULL) 00252 goto exit; 00253 00254 av = poptGetArgs(optCon); 00255 ac = argvCount(av); 00256 00257 if (rpmdeps_mode == RPMDEP_RPMFC && ac == 0) { 00258 av = NULL; 00259 xx = argvFgets(&av, NULL); 00260 ac = argvCount(av); 00261 } 00262 00263 /* Make sure file names are sorted. */ 00264 xx = argvSort(av, NULL); 00265 00266 switch (rpmdeps_mode) { 00267 case RPMDEP_RPMFC: 00268 if (ac <= 0) /* XXX avoid rpmfcApply() segfault */ 00269 break; 00270 00271 /* Build file class dictionary. */ 00272 fc = rpmfcNew(); 00273 xx = rpmfcClassify(fc, av, NULL); 00274 00275 /* Build file/package dependency dictionary. */ 00276 xx = rpmfcApply(fc); 00277 00278 if (_rpmfc_debug) { 00279 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)); 00280 rpmfcPrint(buf, fc, NULL); 00281 } 00282 if (print_provides > 0) print_provides = 0; 00283 if (print_requires > 0) print_requires = 0; 00284 P = fc->provides; fc->provides = NULL; 00285 R = fc->requires; fc->requires = NULL; 00286 fp = stdout; 00287 break; 00288 case RPMDEP_RPMDSCPUINFO: 00289 closure_name = "cpuinfo(...)"; 00290 xx = rpmdsCpuinfo(&P, NULL); 00291 break; 00292 case RPMDEP_RPMDSRPMLIB: 00293 closure_name = "rpmlib(...)"; 00294 xx = rpmdsRpmlib(&P, NULL); 00295 break; 00296 case RPMDEP_RPMDSSYSINFO: 00297 xx = rpmdsSysinfo(PRCO, NULL); 00298 P = rpmdsLink(rpmdsFromPRCO(PRCO, RPMTAG_PROVIDENAME), rpmdeps_string); 00299 R = rpmdsLink(rpmdsFromPRCO(PRCO, RPMTAG_REQUIRENAME), rpmdeps_string); 00300 break; 00301 case RPMDEP_RPMDSGETCONF: 00302 closure_name = "getconf(...)"; 00303 xx = rpmdsGetconf(&P, NULL); 00304 break; 00305 case RPMDEP_RPMDSELF: 00306 closure_name = "soname(...)"; 00307 for (i = 0; i < ac; i++) 00308 xx = rpmdsELF(av[i], flags, rpmdsMergePRCO, PRCO); 00309 P = rpmdsLink(rpmdsFromPRCO(PRCO, RPMTAG_PROVIDENAME), rpmdeps_string); 00310 R = rpmdsLink(rpmdsFromPRCO(PRCO, RPMTAG_REQUIRENAME), rpmdeps_string); 00311 break; 00312 case RPMDEP_RPMDSLDCONFIG: 00313 closure_name = "soname(...)"; 00314 xx = rpmdsLdconfig(PRCO, NULL); 00315 P = rpmdsLink(rpmdsFromPRCO(PRCO, RPMTAG_PROVIDENAME), rpmdeps_string); 00316 R = rpmdsLink(rpmdsFromPRCO(PRCO, RPMTAG_REQUIRENAME), rpmdeps_string); 00317 break; 00318 case RPMDEP_RPMDSUNAME: 00319 closure_name = "uname(...)"; 00320 xx = rpmdsUname(&P, NULL); 00321 break; 00322 00323 case RPMDEP_RPMDSPIPE: 00324 break; 00325 case RPMDEP_RPMDSPERL: 00326 closure_name = "perl(...)"; 00327 if (rpmIsVerbose()) 00328 fprintf(stderr, "\n*** Gathering %s Provides: using\n\t%s\n", closure_name, _perl_provides); 00329 xx = rpmdsPipe(&P, RPMTAG_PROVIDENAME, _perl_provides); 00330 if (print_closure || rpmIsVerbose()) { 00331 fprintf(stderr, "\n*** Gathering %s Requires: using\n\t%s\n", closure_name, _perl_requires); 00332 xx = rpmdsPipe(&R, RPMTAG_REQUIRENAME, _perl_requires); 00333 print_closure = 1; 00334 } 00335 break; 00336 case RPMDEP_RPMDSPYTHON: 00337 break; 00338 case RPMDEP_RPMDSLIBTOOL: 00339 closure_name = "libtool(...)"; 00340 if (rpmIsVerbose()) 00341 fprintf(stderr, "\n*** Gathering %s Provides: using\n\t%s\n", closure_name, _libtool_provides); 00342 xx = rpmdsPipe(&P, RPMTAG_PROVIDENAME, _libtool_provides); 00343 if (print_closure || rpmIsVerbose()) { 00344 fprintf(stderr, "\n*** Gathering %s Requires: using\n\t%s\n", closure_name, _libtool_requires); 00345 xx = rpmdsPipe(&R, RPMTAG_REQUIRENAME, _libtool_requires); 00346 print_closure = 1; 00347 } 00348 break; 00349 case RPMDEP_RPMDSPKGCONFIG: 00350 closure_name = "pkgconfig(...)"; 00351 if (rpmIsVerbose()) 00352 fprintf(stderr, "\n*** Gathering %s Provides: using\n\t%s\n", closure_name, _pkgconfig_provides); 00353 xx = rpmdsPipe(&P, RPMTAG_PROVIDENAME, _pkgconfig_provides); 00354 if (print_closure || rpmIsVerbose()) { 00355 fprintf(stderr, "\n*** Gathering %s Requires: using\n\t%s\n", closure_name, _pkgconfig_requires); 00356 xx = rpmdsPipe(&R, RPMTAG_REQUIRENAME, _pkgconfig_requires); 00357 print_closure = 1; 00358 } 00359 break; 00360 00361 case RPMDEP_RPMDSPUBKEY: 00362 break; 00363 case RPMDEP_RPMDSARCH: 00364 break; 00365 case RPMDEP_RPMDSFILE: 00366 if (rpmIsVerbose()) 00367 fprintf(stderr, "\n*** Gathering rpmdb file Requires: using\n\t%s\n", _rpmdb_file_requires); 00368 xx = rpmdsPipe(&R, RPMTAG_REQUIRENAME, _rpmdb_file_requires); 00369 break; 00370 case RPMDEP_RPMDSSONAME: 00371 closure_name = "soname(...)"; 00372 xx = rpmdsLdconfig(PRCO, NULL); 00373 P = rpmdsLink(rpmdsFromPRCO(PRCO, RPMTAG_PROVIDENAME), rpmdeps_string); 00374 if (print_closure || rpmIsVerbose()) { 00375 fprintf(stderr, "\n*** Gathering rpmdb soname Requires: using\n\t%s\n", _rpmdb_soname_requires); 00376 xx = rpmdsPipe(&R, RPMTAG_REQUIRENAME, _rpmdb_soname_requires); 00377 print_closure = 1; 00378 } 00379 break; 00380 case RPMDEP_RPMDSPACKAGE: 00381 closure_name = "package(...)"; 00382 if (rpmIsVerbose()) 00383 fprintf(stderr, "\n*** Gathering rpmdb package Provides: using\n\t%s\n", _rpmdb_package_provides); 00384 xx = rpmdsPipe(&P, RPMTAG_PROVIDENAME, _rpmdb_package_provides); 00385 if (print_closure || rpmIsVerbose()) { 00386 fprintf(stderr, "\n*** Gathering rpmdb package Requires: using\n\t%s\n", _rpmdb_package_requires); 00387 xx = rpmdsPipe(&R, RPMTAG_REQUIRENAME, _rpmdb_package_requires); 00388 print_closure = 1; 00389 } 00390 break; 00391 00392 case RPMDEP_RPMDSJAVA: 00393 closure_name = "java(...)"; 00394 if (rpmIsVerbose()) 00395 fprintf(stderr, "\n*** Gathering %s Provides: using\n\t%s\n", closure_name, _java_provides); 00396 xx = rpmdsPipe(&P, RPMTAG_PROVIDENAME, _java_provides); 00397 if (print_closure || rpmIsVerbose()) { 00398 fprintf(stderr, "\n*** Gathering %s Requires: using\n\t%s\n", closure_name, _java_requires); 00399 xx = rpmdsPipe(&R, RPMTAG_REQUIRENAME, _java_requires); 00400 print_closure = 1; 00401 } 00402 break; 00403 case RPMDEP_RPMDSRUBY: 00404 break; 00405 case RPMDEP_RPMDSPHP: 00406 break; 00407 case RPMDEP_RPMDSDPKGRPM: 00408 closure_name = "dpkgrpm(...)"; 00409 if (rpmIsVerbose()) 00410 fprintf(stderr, "\n*** Gathering dpkg Provides: using\n\t%s\n", _dpkg_provides); 00411 xx = rpmdsPipe(&P, RPMTAG_PROVIDENAME, _dpkg_provides); 00412 if (print_closure || rpmIsVerbose()) { 00413 fprintf(stderr, "\n*** Gathering rpmdb package Requires: using\n\t%s\n", _rpmdb_package_requires); 00414 xx = rpmdsPipe(&R, RPMTAG_REQUIRENAME, _rpmdb_package_requires); 00415 print_closure = 1; 00416 } 00417 break; 00418 case RPMDEP_RPMDSRPMDPKG: 00419 closure_name = "rpmdpkg(...)"; 00420 if (print_closure || rpmIsVerbose()) { 00421 fprintf(stderr, "\n*** Gathering rpmdb package Provides: using\n\t%s\n", _rpmdb_package_provides); 00422 xx = rpmdsPipe(&P, RPMTAG_PROVIDENAME, _rpmdb_package_provides); 00423 print_closure = 1; 00424 } 00425 if (rpmIsVerbose()) 00426 fprintf(stderr, "\n*** Gathering dpkg Requires: using\n\t%s\n", _dpkg_requires); 00427 xx = rpmdsPipe(&R, RPMTAG_REQUIRENAME, _dpkg_requires); 00428 break; 00429 } 00430 00431 if (print_provides && P != NULL) 00432 xx = rpmdepPrint(NULL, P, fp); 00433 if (print_requires && R != NULL) 00434 xx = rpmdepPrint(NULL, R, fp); 00435 if (print_closure) { 00436 if (rpmIsVerbose()) 00437 fprintf(stderr, "\n*** Checking %s Requires(%d): against Provides(%d): closure:\n", closure_name, rpmdsCount(R), rpmdsCount(P)); 00438 xx = rpmdsPrintClosure(P, R, fp); 00439 } 00440 00441 fc = rpmfcFree(fc); 00442 (void)rpmdsFree(P); 00443 P = NULL; 00444 (void)rpmdsFree(R); 00445 R = NULL; 00446 PRCO = rpmdsFreePRCO(PRCO); 00447 00448 ec = 0; 00449 00450 exit: 00451 optCon = rpmcliFini(optCon); 00452 return ec; 00453 }