rpm
5.4.14
|
#include "system.h"
#include <signal.h>
#include <rpmio.h>
#include <rpmiotypes.h>
#include <rpmlog.h>
#include <rpmurl.h>
#include <rpmmg.h>
#include <argv.h>
#include <mire.h>
#include <rpmtag.h>
#include <rpmbuild.h>
#include <rpmns.h>
#include <rpmfc.h>
#include <rpmds.h>
#include <rpmfi.h>
#include "debug.h"
Go to the source code of this file.
Data Structures | |
struct | rpmfcApplyTbl_s |
struct | DepMsg_s |
Macros | |
#define | _MIRE_INTERNAL |
#define | _RPMEVR_INTERNAL |
#define | _RPMNS_INTERNAL |
#define | _RPMFC_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 rpmiob | getOutputFrom (const char *dir, ARGV_t argv, const char *writePtr, size_t writeBytesLeft, int failNonZero) |
Return output from helper script. More... | |
int | rpmfcExec (ARGV_t av, rpmiob iob_stdin, rpmiob *iob_stdoutp, int failnonzero) |
static int | rpmfcSaveArg (ARGV_t *argvp, const char *key) |
static char * | rpmfcFileDep (char *buf, size_t ix, rpmds ds) |
static void * | rpmfcExpandRegexps (const char *str, int *nmirep) |
static int | rpmfcMatchRegexps (void *_mire, int nmire, const char *str, char deptype) |
static void * | rpmfcFreeRegexps (void *_mire, int nmire) |
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... | |
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 | rpmfcELF (rpmfc fc) |
Extract Elf dependencies. More... | |
rpmRC | rpmfcApply (rpmfc fc) |
Build file/package dependency dictionary and mappings. More... | |
rpmRC | rpmfcClassify (rpmfc fc, ARGV_t argv, rpmuint16_t *fmode) |
static void | printDeps (Header h) |
Print dependencies in a header. More... | |
static rpmRC | rpmfcGenerateDependsHelper (const Spec spec, Package pkg, rpmfi fi) |
static int | rpmfcGenerateScriptletDeps (const Spec spec, Package pkg) |
static unsigned | removeSillyDeps (Header h, rpmfc fc) |
rpmRC | rpmfcGenerateDepends (void *_spec, void *_pkg) |
Generate package dependencies. More... | |
static void | rpmfcFini (void *_fc) |
static rpmfc | rpmfcGetPool (rpmioPool pool) |
rpmfc | rpmfcNew (void) |
Create a file classifier. More... | |
Variables | |
static int | _filter_values = 1 |
static int | _filter_execs = 1 |
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 |
rpmioPool | _rpmfcPool = NULL |
#define _suffix | ( | _s, | |
_x | |||
) | (slen >= sizeof(_x) && !strcmp((_s)+slen-(sizeof(_x)-1), (_x))) |
Referenced by rpmfcClassify().
typedef struct rpmfcApplyTbl_s * rpmfcApplyTbl |
|
static |
Return output from helper script.
dir | directory to run in (or NULL) |
argv | program and arguments to run |
writePtr | bytes to feed to script on stdin (or NULL) |
writeBytesLeft | no. of bytes to feed to script on stdin |
failNonZero | is script failure an error? |
Definition at line 79 of file rpmfc.c.
References _, _free(), argv, argvJoin(), buf, Chdir(), D_, errno, exit, EXIT_FAILURE, NULL, rc, rpmiobAppend(), rpmiobFree(), rpmiobNew(), rpmlog(), RPMLOG_DEBUG, RPMLOG_ERR, status, unsetenv(), and void.
Referenced by rpmfcExec().
Print dependencies in a header.
h | header |
Definition at line 1536 of file rpmfc.c.
References ds, Flags, DepMsg_s::ftag, DepMsg_s::mask, DepMsg_s::msg, DepMsg_s::ntag, NULL, rpmdsDNEVR(), rpmdsFlags(), rpmdsFree(), rpmdsInit(), rpmdsNew(), rpmdsNext(), rpmlog(), RPMLOG_NOTICE, DepMsg_s::toggle, and void.
Referenced by rpmfcGenerateDepends().
Definition at line 1760 of file rpmfc.c.
References alloca(), rpmDataType_u::argv, _HE_s::c, headerGet(), headerMod(), i, if(), ix, j, memset(), NULL, _HE_s::p, RPM_STRING_ARRAY_TYPE, RPM_UINT32_TYPE, rpmdsDNEVR(), rpmdsFree(), rpmdsMatch(), rpmdsNew(), rpmdsSingle(), rpmlog(), RPMLOG_ERR, RPMLOG_NOTICE, RPMTAG_BASENAMES, RPMTAG_PROVIDENAME, RPMTAG_REQUIREFLAGS, RPMTAG_REQUIRENAME, RPMTAG_REQUIREVERSION, _HE_s::t, _HE_s::tag, rpmDataType_u::ui32p, and xx.
Referenced by rpmfcGenerateDepends().
Build file/package dependency dictionary and mappings.
fc | file classifier |
Definition at line 1092 of file rpmfc.c.
References _, argiAdd(), argiCount(), argvCount(), assert(), rpmfcApplyTbl_s::colormask, D_, ds, EVR, Flags, fn, rpmfcApplyTbl_s::func, i, if(), ix, j, mireFree(), mireNew(), mireRegcomp(), mireRegexec(), N, NULL, rpmdsFind(), rpmdsFree(), rpmdsSingle(), RPMFC_HASKELL, RPMFC_LIBRARY, RPMFC_MODULE, RPMFC_PYTHON, RPMFC_RUBY, RPMFC_SCRIPT, rpmfcExpandRegexps(), rpmfcFreeRegexps(), rpmlog(), RPMLOG_DEBUG, RPMLOG_NOTICE, RPMMIRE_REGEX, RPMRC_OK, RPMTAG_FILEPATHS, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, s, se, st, val, void, and xx.
Referenced by main(), and rpmfcGenerateDepends().
rpmRC rpmfcClassify | ( | rpmfc | fc, |
ARGV_t | argv, | ||
rpmuint16_t * | fmode | ||
) |
Definition at line 1311 of file rpmfc.c.
References _free(), _rpmfc_debug, _suffix, argiAdd(), argvAdd(), argvCount(), argvFree(), argvSearch(), assert(), D_, mode, NULL, rpmExpand(), RPMFC_INCLUDE, RPMFC_WHITE, rpmfcColoring(), rpmfcSaveArg(), rpmlog(), RPMLOG_DEBUG, rpmmgFile(), rpmmgFree(), rpmmgNew(), RPMRC_OK, s, S_IFSOCK, se, urlPath(), and xx.
Referenced by main(), and rpmfcGenerateDepends().
int rpmfcColoring | ( | const char * | fmstr | ) |
Return file color given file(1) string.
fmstr | file(1) string |
Definition at line 679 of file rpmfc.c.
References NULL, RPMFC_BLACK, and RPMFC_INCLUDE.
Referenced by rpmfcClassify().
Extract Elf dependencies.
fc | file classifier |
Definition at line 1026 of file rpmfc.c.
References flags, fn, rpmdsELF(), RPMELF_FLAG_SKIPPROVIDES, RPMELF_FLAG_SKIPREQUIRES, and rpmfcMergePR().
Definition at line 229 of file rpmfc.c.
References _free(), argvAppend(), argvFree(), ec, exit, getOutputFrom(), NULL, rpmExpand(), rpmfcExpandAppend(), rpmiobFree(), rpmiobLen(), rpmiobStr(), s, and xx.
Referenced by checkUnpackagedFiles(), rpmfcGenerateDependsHelper(), rpmfcGenerateScriptletDeps(), and rpmfcHelper().
Definition at line 45 of file rpmfc.c.
References ac, argv, argvCount(), i, NULL, rpmExpand(), and xrealloc.
Referenced by rpmfcExec().
Definition at line 334 of file rpmfc.c.
References _, _free(), ac, av, exit, i, mireAppend(), mireFree(), NULL, rpmExpand(), rpmlog(), RPMLOG_NOTICE, RPMMIRE_REGEX, s, and xx.
Referenced by rpmfcApply().
|
static |
Definition at line 304 of file rpmfc.c.
References assert(), buf, NULL, rpmdsEVR(), rpmdsFlags(), rpmdsN(), rpmdsTagN(), RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, and sprintf().
Referenced by rpmfcHelper(), rpmfcMergePR(), and rpmfcSCRIPT().
Definition at line 2152 of file rpmfc.c.
References argiFree(), argvFree(), NULL, rpmdsFree(), rpmiobFree(), and void.
Referenced by rpmfcGetPool().
Generate package dependencies.
_spec | spec file control |
_pkg | package control |
Definition at line 1882 of file rpmfc.c.
References _free(), _rpmfc_debug, ac, alloca(), argiCount(), argiData(), rpmDataType_u::argv, argvCount(), argvData(), argvFree(), assert(), Package_s::autoProv, Package_s::autoReq, av, buf, buildRootURL, _HE_s::c, Package_s::ds, ds, EVR, fi, Package_s::fi, Package_s::header, headerDel(), headerPut(), i, int, memset(), msg, N, NULL, _HE_s::p, printDeps(), rpmDataType_u::ptr, rc, removeSillyDeps(), Spec_s::rootURL, RPM_STRING_ARRAY_TYPE, RPM_UINT32_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(), RPMRC_OK, 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, spec, sprintf(), strcmp(), _HE_s::t, _HE_s::tag, rpmDataType_u::ui32p, urlPath(), void, xcalloc(), xstrdup(), and xx.
Referenced by processBinaryFiles().
Definition at line 1584 of file rpmfc.c.
References _, _free(), Spec_s::_parseRCPOT, DepMsg_s::argv, Package_s::autoProv, Package_s::autoReq, DepMsg_s::ftag, DepMsg_s::msg, DepMsg_s::ntag, NULL, rc, rpmExpand(), rpmfcExec(), rpmfiFN(), rpmfiInit(), rpmfiNext(), rpmiobAppend(), rpmiobFree(), rpmiobNew(), rpmiobStr(), rpmlog(), RPMLOG_ERR, RPMLOG_NOTICE, RPMRC_FAIL, RPMRC_OK, RPMTAG_PROVIDEFLAGS, RPMTAG_REQUIREFLAGS, s, tag, and xx.
Referenced by rpmfcGenerateDepends().
Definition at line 1689 of file rpmfc.c.
References _free(), Spec_s::_parseRCPOT, alloca(), DepMsg_s::argv, DepMsg_s::ftag, Package_s::header, headerGet(), DepMsg_s::mask, memset(), DepMsg_s::msg, DepMsg_s::ntag, NULL, _HE_s::p, rpmDataType_u::ptr, rc, rpmfcExec(), rpmiobAppend(), rpmiobEmpty(), rpmiobFree(), rpmiobNew(), rpmiobRTrim(), rpmiobStr(), s, se, stpcpy(), rpmDataType_u::str, strcmp(), _HE_s::tag, tag, DepMsg_s::vtag, and xx.
Referenced by rpmfcGenerateDepends().
Definition at line 2181 of file rpmfc.c.
References _rpmfc_debug, _rpmfcPool, memset(), NULL, rpmfcFini(), rpmioGetPool(), and rpmioNewPool().
Referenced by rpmfcNew().
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 414 of file rpmfc.c.
References _, argvCount(), argvFree(), argvSplit(), assert(), av, buf, ds, EVR, Flags, fn, i, if(), ix, N, NULL, rpmdsEVR(), rpmdsFlags(), rpmdsFree(), rpmdsMerge(), rpmdsSearch(), rpmdsSetIx(), rpmdsSingle(), rpmEVRcompare(), rpmEVRfree(), rpmEVRnew(), rpmEVRparse(), rpmfcExec(), rpmfcFileDep(), rpmfcMatchRegexps(), rpmfcSaveArg(), rpmiobAppend(), rpmiobFree(), rpmiobNew(), rpmiobStr(), rpmlog(), RPMLOG_ERR, RPMSENSE_EQUAL, RPMSENSE_GREATER, RPMSENSE_LESS, RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, s, snprintf(), void, and xx.
Referenced by rpmfcSCRIPT().
Definition at line 377 of file rpmfc.c.
References _, D_, i, mireRegexec(), rpmlog(), RPMLOG_DEBUG, RPMLOG_NOTICE, and xx.
Referenced by rpmfcHelper(), rpmfcMergePR(), and rpmfcSCRIPT().
Merge provides/requires dependencies into a rpmfc container.
context | merge dependency set(s) container |
ds | dependency set to merge |
Definition at line 977 of file rpmfc.c.
References _rpmfc_debug, buf, fprintf(), rc, rpmdsMerge(), rpmdsTagN(), rpmfcFileDep(), rpmfcMatchRegexps(), rpmfcSaveArg(), RPMTAG_PROVIDENAME, RPMTAG_REQUIRENAME, and tagName().
Referenced by rpmfcELF().
Create a file classifier.
Definition at line 2197 of file rpmfc.c.
References rpmfcGetPool(), rpmfcLink(), and xcalloc().
Referenced by main(), and rpmfcGenerateDepends().
Print results of file classification.
msg | message prefix (NULL for none) |
fc | file classifier |
fp | output file handle (NULL for stderr) |
Definition at line 694 of file rpmfc.c.
References assert(), fprintf(), ix, NULL, rpmdsCount(), rpmdsDNEVR(), rpmdsNext(), rpmdsSetIx(), RPMFC_BLACK, and void.
Referenced by main(), and rpmfcGenerateDepends().
Definition at line 289 of file rpmfc.c.
References argvAdd(), argvSearch(), argvSort(), NULL, and rc.
Referenced by rpmfcClassify(), rpmfcHelper(), rpmfcMergePR(), and rpmfcSCRIPT().
Extract script dependencies.
fc | file classifier |
Definition at line 776 of file rpmfc.c.
References _free(), buf, ds, fn, i, int, mireFree(), mireNew(), mireRegcomp(), mireRegexec(), NULL, rpmdsFree(), rpmdsMerge(), rpmdsSingle(), rpmExpand(), rpmExpandNumeric(), RPMFC_BOURNE, RPMFC_DESKTOP_FILE, RPMFC_FONT, RPMFC_HASKELL, RPMFC_JAVA, RPMFC_LIBRARY, RPMFC_LIBTOOL, RPMFC_MODULE, RPMFC_MONO, RPMFC_PERL, RPMFC_PHP, RPMFC_PKGCONFIG, RPMFC_PYTHON, RPMFC_RUBY, RPMFC_SCRIPT, RPMFC_TYPELIB, rpmfcFileDep(), rpmfcHelper(), rpmfcMatchRegexps(), rpmfcSaveArg(), RPMMIRE_REGEX, RPMTAG_FILEPATHS, RPMTAG_REQUIRENAME, s, se, st, strcmp(), void, and xx.
Definition at line 2179 of file rpmfc.c.
Referenced by rpmfcGetPool().
|
static |
XXX Having two entries for rpmfcSCRIPT may be unnecessary duplication.
|
static |
|
static |