rpm
4.5
|
#include "system.h"
#include <signal.h>
#include <rpmbuild.h>
#include <argv.h>
#include <rpmfc.h>
#include <rpmns.h>
#include <rpmds.h>
#include <rpmfi.h>
#include <rpmts.h>
#include <rpmdb.h>
#include "debug.h"
Go to the source code of this file.
Data Structures | |
struct | rpmfcApplyTbl_s |
struct | DepMsg_s |
Macros | |
#define | _RPMEVR_INTERNAL |
#define | _RPMFC_INTERNAL |
#define | _RPMNS_INTERNAL |
#define | _RPMDS_INTERNAL |
#define | _suffix(_s, _x) (slen >= sizeof(_x) && !strcmp((_s)+slen-(sizeof(_x)-1), (_x))) |
Typedefs | |
typedef struct rpmfcApplyTbl_s * | rpmfcApplyTbl |
typedef struct DepMsg_s * | DepMsg_t |
Functions | |
static int | rpmfcExpandAppend (ARGV_t *argvp, const ARGV_t av) |
static StringBuf | getOutputFrom (const char *dir, ARGV_t argv, const char *writePtr, int writeBytesLeft, int failNonZero) |
Return output from helper script. More... | |
int | rpmfcExec (ARGV_t av, StringBuf sb_stdin, StringBuf *sb_stdoutp, int failnonzero) |
Return helper output. More... | |
static int | rpmfcSaveArg (ARGV_t *argvp, const char *key) |
static char * | rpmfcFileDep (char *buf, int ix, rpmds ds) |
static regex_t * | rpmfcExpandRegexps (const char *str, int *count) |
static int | rpmfcMatchRegexps (regex_t *regexps, int count, const char *str, char deptype) |
static regex_t * | rpmfcFreeRegexps (regex_t *regexps, int count) |
static int | rpmfcHelper (rpmfc fc, unsigned char deptype, const char *nsdep) |
Run per-interpreter dependency helper. More... | |
int | rpmfcColoring (const char *fmstr) |
Return file color given file(1) string. More... | |
void | rpmfcPrint (const char *msg, rpmfc fc, FILE *fp) |
Print results of file classification. More... | |
rpmfc | rpmfcFree (rpmfc fc) |
Destroy a file classifier. More... | |
rpmfc | rpmfcNew (void) |
Create a file classifier. More... | |
static int | rpmfcSCRIPT (rpmfc fc) |
Extract script dependencies. More... | |
static int | rpmfcMergePR (void *context, rpmds ds) |
Merge provides/requires dependencies into a rpmfc container. More... | |
static int | rpmfcMONO (rpmfc fc) |
Extract .NET dependencies. More... | |
static int | rpmfcELF (rpmfc fc) |
Extract Elf dependencies. More... | |
static int | rpmfcFindRequiredPackages (rpmfc fc) |
int | rpmfcApply (rpmfc fc) |
Build file/package dependency dictionary and mappings. More... | |
int | rpmfcClassify (rpmfc fc, ARGV_t argv, int_16 *fmode) |
static void | printDeps (Header h) |
Print dependencies in a header. More... | |
static int | rpmfcGenerateDependsHelper (const Spec spec, Package pkg, rpmfi fi) |
static int | rpmfcGenerateScriptletDeps (const Spec spec, Package pkg) |
int | rpmfcGenerateDepends (void *specp, void *pkgp) |
Generate package dependencies. More... | |
Variables | |
static struct rpmfcTokens_s | rpmfcTokens [] |
static struct rpmfcApplyTbl_s | rpmfcApplyTable [] |
XXX Having two entries for rpmfcSCRIPT may be unnecessary duplication. More... | |
static struct DepMsg_s | depMsgs [] |
static DepMsg_t | DepMsgs = depMsgs |
static struct DepMsg_s | scriptMsgs [] |
static DepMsg_t | ScriptMsgs = scriptMsgs |
#define _suffix | ( | _s, | |
_x | |||
) | (slen >= sizeof(_x) && !strcmp((_s)+slen-(sizeof(_x)-1), (_x))) |
Referenced by rpmfcClassify(), and rpmInitMacros().
typedef struct rpmfcApplyTbl_s * rpmfcApplyTbl |
|
static |
Print dependencies in a header.
h | header |
Definition at line 1508 of file rpmfc.c.
References DepMsg_s::ftag, DepMsg_s::mask, DepMsg_s::msg, DepMsg_s::ntag, rpmdsDNEVR(), rpmdsFlags(), rpmdsFree(), rpmdsInit(), rpmdsNew(), rpmdsNext(), RPMMESS_NORMAL, rpmMessage, and DepMsg_s::xor.
Referenced by rpmfcGenerateDepends().
int rpmfcApply | ( | rpmfc | fc | ) |
Build file/package dependency dictionary and mappings.
fc | file classifier |
Definition at line 1097 of file rpmfc.c.
References _, argiAdd(), argiCount(), argvCount(), rpmfcApplyTbl_s::colormask, rpmfcApplyTbl_s::func, rpmdsFind(), rpmdsFree(), rpmdsSingle(), rpmExpand(), RPMFC_PYTHON, rpmfcExpandRegexps(), rpmfcFindRequiredPackages(), rpmfcFreeRegexps(), RPMMESS_DEBUG, RPMMESS_NORMAL, rpmMessage, RPMTAG_PROVIDENAME, and RPMTAG_REQUIRENAME.
Referenced by main(), and rpmfcGenerateDepends().
Definition at line 1257 of file rpmfc.c.
References _, _free(), _suffix, argiAdd(), argvAdd(), argvCount(), argvFree(), argvSearch(), errno, RPMERR_EXEC, rpmError, rpmExpand(), RPMFC_INCLUDE, RPMFC_WHITE, rpmfcColoring(), rpmfcSaveArg(), RPMMESS_DEBUG, rpmMessage, S_IFSOCK, setlocale, urlPath(), and xstrdup().
Referenced by main(), and rpmfcGenerateDepends().
int rpmfcColoring | ( | const char * | fmstr | ) |
Return file color given file(1) string.
fmstr | file(1) string |
Definition at line 622 of file rpmfc.c.
References RPMFC_BLACK, RPMFC_INCLUDE, and rpmfcTokens.
Referenced by rpmfcClassify().
|
static |
Extract Elf dependencies.
fc | file classifier |
Definition at line 961 of file rpmfc.c.
References rpmdsELF(), RPMELF_FLAG_SKIPPROVIDES, RPMELF_FLAG_SKIPREQUIRES, rpmfcHelper(), and rpmfcMergePR().
Return helper output.
av | helper argv (with possible macros) |
sb_stdin | helper input |
*sb_stdoutp | helper output |
failnonzero | IS non-zero helper exit status a failure? |
Definition at line 209 of file rpmfc.c.
References _free(), argvAppend(), argvFree(), freeStringBuf(), getOutputFrom(), getStringBuf(), rpmExpand(), and rpmfcExpandAppend().
Referenced by checkFiles(), rpmfcGenerateDependsHelper(), rpmfcGenerateScriptletDeps(), and rpmfcHelper().
Definition at line 27 of file rpmfc.c.
References argvCount(), rpmExpand(), and xrealloc().
Referenced by rpmfcExec().
|
static |
Definition at line 314 of file rpmfc.c.
References _, _free(), rpmExpand(), RPMMESS_NORMAL, and rpmMessage.
Referenced by rpmfcApply(), and rpmfcFindRequiredPackages().
|
static |
Definition at line 288 of file rpmfc.c.
References rpmdsEVR(), rpmdsFlags(), rpmdsN(), rpmdsTagN(), RPMTAG_PROVIDENAME, and RPMTAG_REQUIRENAME.
Referenced by rpmfcHelper(), rpmfcMergePR(), and rpmfcSCRIPT().
|
static |
Definition at line 994 of file rpmfc.c.
References _, argvCount(), headerGetEntry(), rpmdbFreeIterator(), rpmdbGetIteratorCount(), rpmdbNextIterator(), rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmfcExpandRegexps(), rpmfcFreeRegexps(), RPMMESS_DEBUG, RPMMESS_NORMAL, rpmMessage, RPMTAG_NAME, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, rpmtsCreate(), rpmtsFree(), and rpmtsInitIterator().
Referenced by rpmfcApply().
Destroy a file classifier.
fc | file classifier |
Definition at line 714 of file rpmfc.c.
References _free(), argiFree(), argvFree(), freeStringBuf(), and rpmdsFree().
Referenced by main(), and rpmfcGenerateDepends().
|
static |
Definition at line 371 of file rpmfc.c.
References _free().
Referenced by rpmfcApply(), and rpmfcFindRequiredPackages().
int rpmfcGenerateDepends | ( | void * | specp, |
void * | pkgp | ||
) |
Generate package dependencies.
specp | spec file control |
pkgp | package control |
Definition at line 1727 of file rpmfc.c.
References _free(), _rpmfc_debug, argiCount(), argiData(), argvCount(), argvData(), argvFree(), Package_s::autoProv, Package_s::autoReq, Package_s::cpioList, Package_s::ds, Package_s::header, headerAddEntry(), headerRemoveEntry(), DepMsg_s::msg, printDeps(), Spec_s::rootURL, RPM_INT32_TYPE, RPM_STRING_ARRAY_TYPE, rpmdsCount(), rpmdsEVR(), rpmdsFree(), rpmdsMerge(), rpmdsN(), rpmdsNew(), rpmdsSingle(), rpmExpandNumeric(), rpmfcApply(), rpmfcClassify(), rpmfcFree(), rpmfcGenerateDependsHelper(), rpmfcGenerateScriptletDeps(), rpmfcNew(), rpmfcPrint(), rpmfiFC(), rpmfiFFlags(), rpmfiFMode(), rpmfiFN(), rpmfiInit(), RPMFILE_CONFIG, rpmfiNext(), rpmGenPath(), RPMSENSE_EQUAL, RPMTAG_CLASSDICT, RPMTAG_DEPENDSDICT, RPMTAG_FILECLASS, RPMTAG_FILECOLORS, RPMTAG_FILEDEPENDSN, RPMTAG_FILEDEPENDSX, RPMTAG_PROVIDEFLAGS, RPMTAG_PROVIDENAME, RPMTAG_PROVIDEVERSION, RPMTAG_REQUIREFLAGS, RPMTAG_REQUIRENAME, RPMTAG_REQUIREVERSION, urlPath(), xcalloc(), and xstrdup().
Referenced by processBinaryFiles().
Definition at line 1554 of file rpmfc.c.
References _, _free(), Spec_s::_parseRCPOT, appendLineStringBuf, DepMsg_s::argv, Package_s::autoProv, Package_s::autoReq, freeStringBuf(), DepMsg_s::ftag, getStringBuf(), DepMsg_s::msg, newStringBuf(), DepMsg_s::ntag, RPMERR_EXEC, rpmError, rpmExpand(), rpmfcExec(), rpmfiFN(), rpmfiInit(), rpmfiNext(), RPMMESS_NORMAL, rpmMessage, RPMTAG_PROVIDEFLAGS, and RPMTAG_REQUIREFLAGS.
Referenced by rpmfcGenerateDepends().
Definition at line 1658 of file rpmfc.c.
References Spec_s::_parseRCPOT, appendLineStringBuf, DepMsg_s::argv, freeStringBuf(), DepMsg_s::ftag, getStringBuf(), Package_s::header, headerGetEntryMinMemory(), DepMsg_s::mask, DepMsg_s::msg, newStringBuf(), DepMsg_s::ntag, rpmfcExec(), stpcpy(), stripTrailingBlanksStringBuf(), truncStringBuf(), and DepMsg_s::vtag.
Referenced by rpmfcGenerateDepends().
|
static |
Run per-interpreter dependency helper.
fc | file classifier |
deptype | 'P' == Provides:, 'R' == Requires:, helper |
nsdep | class name for interpreter (e.g. "perl") |
Definition at line 387 of file rpmfc.c.
References _, appendLineStringBuf, argvCount(), argvFree(), argvSplit(), freeStringBuf(), getStringBuf(), newStringBuf(), rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmfcExec(), rpmfcFileDep(), rpmfcMatchRegexps(), rpmfcSaveArg(), RPMMESS_ERROR, rpmMessage, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, and snprintf().
Referenced by rpmfcELF(), rpmfcMONO(), and rpmfcSCRIPT().
|
static |
Definition at line 356 of file rpmfc.c.
References _, RPMMESS_DEBUG, RPMMESS_NORMAL, and rpmMessage.
Referenced by rpmfcHelper(), rpmfcMergePR(), and rpmfcSCRIPT().
|
static |
Merge provides/requires dependencies into a rpmfc container.
context | merge dependency set(s) container |
ds | dependency set to merge |
Definition at line 889 of file rpmfc.c.
References _rpmfc_debug, rpmdsMerge(), rpmdsTagN(), rpmfcFileDep(), rpmfcMatchRegexps(), rpmfcSaveArg(), RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, and tagName().
Referenced by rpmfcELF().
|
static |
Extract .NET dependencies.
fc | file classifier |
Definition at line 934 of file rpmfc.c.
References rpmfcHelper().
rpmfc rpmfcNew | ( | void | ) |
Create a file classifier.
Definition at line 739 of file rpmfc.c.
References xcalloc().
Referenced by main(), and rpmfcGenerateDepends().
void rpmfcPrint | ( | const char * | msg, |
rpmfc | fc, | ||
FILE * | fp | ||
) |
Print results of file classification.
msg | message prefix (NULL for none) |
fc | file classifier |
fp | output file handle (NULL for stderr) |
Definition at line 637 of file rpmfc.c.
References rpmdsCount(), rpmdsDNEVR(), rpmdsNext(), rpmdsSetIx(), and RPMFC_BLACK.
Referenced by main(), and rpmfcGenerateDepends().
|
static |
Definition at line 273 of file rpmfc.c.
References argvAdd(), argvSearch(), and argvSort().
Referenced by rpmfcClassify(), rpmfcHelper(), rpmfcMergePR(), and rpmfcSCRIPT().
|
static |
Extract script dependencies.
fc | file classifier |
Definition at line 750 of file rpmfc.c.
References rpmdsFree(), rpmdsMerge(), rpmdsSingle(), RPMFC_BOURNE, RPMFC_DESKTOP_FILE, RPMFC_JAVA, RPMFC_LIBTOOL, RPMFC_MODULE, RPMFC_PERL, RPMFC_PHP, RPMFC_PKGCONFIG, RPMFC_PYTHON, rpmfcFileDep(), rpmfcHelper(), rpmfcMatchRegexps(), rpmfcSaveArg(), and RPMTAG_REQUIRENAME.
|
static |
XXX Having two entries for rpmfcSCRIPT may be unnecessary duplication.
|
static |
Definition at line 518 of file rpmfc.c.
Referenced by rpmfcColoring().
|
static |
|
static |