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));
#define RPMDEP_RPMDSLDCONFIG
rpmds rpmdsInit(rpmds ds)
Initialize dependency set iterator.
rpmPRCO rpmdsFreePRCO(rpmPRCO PRCO)
Free dependency set(s) container.
static int rpmdepPrint(const char *msg, rpmds ds, FILE *fp)
#define _LIBTOOL_PROVIDES
const char * rpmdsType(const rpmds ds)
Return current dependency type name.
#define _RPMDB_PACKAGE_PROVIDES
#define _PKGCONFIG_PROVIDES
static int print_requires
static const char * _pkgconfig_provides
static const char * _perl_requires
int rpmdsGetconf(rpmds *dsp, const char *path)
Load getconf provides into a dependency set.
struct poptOption rpmcliAllPoptTable[]
Popt option table for options shared by all modes and executables.
rpmRC rpmfcApply(rpmfc fc)
Build file/package dependency dictionary and mappings.
const char * rpmdsDNEVR(const rpmds ds)
Return current formatted dependency string.
#define RPMDEP_RPMDSRPMDPKG
poptContext rpmcliInit(int argc, char *const argv[], struct poptOption *optionsTable)
Initialize most everything needed by an rpm CLI executable context.
struct rpmds_s * rpmds
Dependency tag sets from a header, so that a header can be discarded early.
struct rpmPRCO_s * rpmPRCO
Container for commonly extracted dependency set(s).
int argiCount(ARGI_t argi)
Return no.
rpmds rpmdsFree(rpmds ds)
Destroy a dependency set.
int rpmdsPipe(rpmds *dsp, rpmTag tagN, const char *cmd)
Load provides from a pipe into a dependency set.
#define _RPMDB_PACKAGE_REQUIRES
rpmPRCO rpmdsNewPRCO(Header h)
Create dependency set(s) container.
static const char * _perl_provides
#define _RPMDB_SONAME_REQUIRES
int rpmdsSysinfo(rpmPRCO PRCO, const char *fn)
Load sysinfo dependencies into a dependency set.
rpmfc rpmfcFree(rpmfc fc)
Destroy a file classifier.
int rpmdsRpmlib(rpmds *dsp, void *tblp)
Load rpmlib provides into a dependency set.
int argvCount(const ARGV_t argv)
Return no.
#define RPMDEP_RPMDSLIBTOOL
static const char * _rpmdb_file_requires
#define RPMDEP_RPMDSSONAME
int rpmdsNext(rpmds ds)
Return next dependency set iterator index.
Structure(s) used for dependency tag sets.
static const char * _rpmdb_package_provides
static const char * _dpkg_provides
static int rpmdsPrintClosure(rpmds P, rpmds R, FILE *fp)
Check Provides: against Requires: and print closure results.
static int print_provides
int rpmdsCount(const rpmds ds)
Return dependency set count.
static struct poptOption optionsTable[]
void rpmfcPrint(const char *msg, rpmfc fc, FILE *fp)
Print results of file classification.
static const char * _java_provides
static const char * _libtool_requires
#define RPMDEP_RPMDSCPUINFO
#define RPMDEP_RPMDSPUBKEY
#define RPMDEP_RPMDSDPKGRPM
#define _PKGCONFIG_REQUIRES
#define _RPMDB_FILE_REQUIRES
rpmds rpmdsLink(rpmds ds, const char *msg)
Reference a dependency set instance.
int main(int argc, char *argv[])
static const char * _pkgconfig_requires
static const char * _java_requires
rpmRC rpmfcClassify(rpmfc fc, ARGV_t argv, rpmuint16_t *fmode)
static const char * _rpmdb_soname_requires
#define RPMDEP_RPMDSUNAME
int argvFgets(ARGV_t *argvp, void *_fd)
Read lines into an argv array.
int rpmdsCpuinfo(rpmds *dsp, const char *fn)
Load /proc/cpuinfo provides into a dependency set.
int rpmdsLdconfig(rpmPRCO PRCO, const char *fn)
Load /etc/ld.so.cache provides into a dependency set.
int rpmdsUname(rpmds *dsp, const struct utsname *un)
#define RPMDEP_RPMDSPACKAGE
int rpmdsIx(const rpmds ds)
Return dependency set index.
static const char * _libtool_provides
int rpmdsMergePRCO(void *context, rpmds ds)
Merge provides/requires/conflicts/obsoletes dependencies.
#define RPMDEP_RPMDSGETCONF
int argvSort(ARGV_t argv, int(*compar)(ARGstr_t *, ARGstr_t *))
Sort an argv array.
#define RPMDEP_RPMDSPKGCONFIG
int rpmdsELF(const char *fn, int flags, int(*add)(void *context, rpmds ds), void *context)
Return a soname dependency constructed from an elf string.
#define RPMDEP_RPMDSSYSINFO
#define _LIBTOOL_REQUIRES
#define RPMDEP_RPMDSPYTHON
#define RPMDEP_RPMDSRPMLIB
static const char * _dpkg_requires
static const char * _rpmdb_package_requires
poptContext rpmcliFini(poptContext optCon)
Destroy most everything needed by an rpm CLI executable context.
rpmfc rpmfcNew(void)
Create a file classifier.
rpmds rpmdsFromPRCO(rpmPRCO PRCO, rpmTag tagN)
Retrieve a dependency set from container.