rpm  5.4.14
Macros | Functions | Variables

Package state machine to handle a package from a transaction set. More...

#include "system.h"
#include <rpmio_internal.h>
#include <rpmcb.h>
#include <rpmsx.h>
#include <rpmmacro.h>
#include <rpmurl.h>
#include <rpmaug.h>
#include <rpmficl.h>
#include <rpmjs.h>
#include <rpmlua.h>
#include <rpmperl.h>
#include <rpmpython.h>
#include <rpmruby.h>
#include <rpmsm.h>
#include <rpmsql.h>
#include <rpmsquirrel.h>
#include <rpmtcl.h>
#include <rpmtag.h>
#include <rpmtypes.h>
#include <pkgio.h>
#include <rpmdb.h>
#include <rpmtxn.h>
#include "signature.h"
#include <rpmlib.h>
#include "rpmfi.h"
#include "fsm.h"
#include "psm.h"
#include "rpmds.h"
#include "rpmte.h"
#include "rpmts.h"
#include "misc.h"
#include <rpmcli.h>
#include "debug.h"
Include dependency graph for psm.c:

Go to the source code of this file.

Macros

#define _MIRE_INTERNAL   /* XXX mireApply doesn't tell which pattern matched. */
 
#define _RPMDB_INTERNAL
 
#define _RPMFI_INTERNAL
 
#define _RPMSQ_INTERNAL
 
#define _RPMPSM_INTERNAL
 
#define F_ISSET(_psm, _FLAG)   ((_psm)->flags & (RPMPSM_FLAGS_##_FLAG))
 
#define F_SET(_psm, _FLAG)   (*((unsigned *)&(_psm)->flags) |= (RPMPSM_FLAGS_##_FLAG))
 
#define F_CLR(_psm, _FLAG)   (*((unsigned *)&(_psm)->flags) &= ~(RPMPSM_FLAGS_##_FLAG))
 
#define _RPMEVR_INTERNAL
 
#define _RPMTE_INTERNAL
 
#define _RPMTS_INTERNAL   /* XXX ts->notify */
 
#define _PSM_DEBUG   0
 

Functions

static rpmRC createDir (rpmts ts, rpmfi fi, const char **fn, const char *name)
 
rpmRC rpmInstallSourcePackage (rpmts ts, void *_fd, const char **specFilePtr, const char **cookie)
 Install source package. More...
 
static const char * tag2sln (rpmTag tag)
 Return scriptlet name from tag. More...
 
static rpmScriptID tag2slx (rpmTag tag)
 Return scriptlet id from tag. More...
 
static pid_t psmWait (rpmpsm psm)
 Wait for child process to be reaped. More...
 
static rpmRC runScript (rpmpsm psm, Header h, const char *sln, HE_t Phe, const char *script, int arg1, int arg2)
 Run scriptlet with args. More...
 
static rpmRC runInstScript (rpmpsm psm)
 Retrieve and run scriptlet from header. More...
 
static rpmRC handleOneTrigger (const rpmpsm psm, Header sourceH, Header triggeredH, int arg2)
 Execute triggers. More...
 
static int rpmdbTriggerGlobs (rpmpsm psm)
 
static rpmRC runTriggersLoop (rpmpsm psm, rpmTag tagno, int arg2)
 Run a dependency set loop against rpmdb triggers. More...
 
static rpmRC runTriggers (rpmpsm psm)
 Run trigger scripts in the database that are fired by this header. More...
 
static rpmRC runImmedTriggers (rpmpsm psm)
 Run triggers from this header that are fired by headers in the database. More...
 
static const char * pkgStageString (pkgStage a)
 
void rpmpsmSetAsync (rpmpsm psm, int async)
 
rpmRC rpmpsmScriptStage (rpmpsm psm, rpmTag scriptTag, rpmTag progTag)
 Run rpmpsmStage(PSM_SCRIPT) for scriptTag and progTag. More...
 
static void rpmpsmFini (void *_psm)
 
static rpmpsm rpmpsmGetPool (rpmioPool pool)
 
rpmpsm rpmpsmNew (rpmts ts, rpmte te, rpmfi fi)
 Create and load a package state machine. More...
 
static rpmuint32_t hLoadTID (Header h, rpmTag tag)
 Load a transaction id from a header. More...
 
static int hCopyTag (Header sh, Header th, rpmTag tag)
 Copy a tag from a source to a target header. More...
 
static int hSaveBlinks (Header h, const struct rpmChainLink_s *blink)
 Save backward link(s) of an upgrade chain into a header. More...
 
static int hSaveFlinks (Header h, const struct rpmChainLink_s *flink)
 Save forward link(s) of an upgrade chain into a header. More...
 
static int populateInstallHeader (const rpmts ts, const rpmte te, rpmfi fi)
 Add per-transaction data to an install header. More...
 
static int postPopulateInstallHeader (const rpmts ts, const rpmpsm psm, rpmfi fi)
 Add fi->states to an install header. More...
 
static int rpmpsmNext (rpmpsm psm, pkgStage nstage)
 
rpmRC rpmpsmStage (rpmpsm psm, pkgStage stage)
 Package state machine driver. More...
 

Variables

int _psm_debug = 0
 
int _psm_threads = 0
 
static const char * SCRIPT_PATH
 
static int ldconfig_done = 0
 
static const char * ldconfig_path = "/sbin/ldconfig"
 
static rpmTag _trigger_tag
 
rpmioPool _psmPool
 

Detailed Description

Package state machine to handle a package from a transaction set.

Definition in file psm.c.

Macro Definition Documentation

#define _MIRE_INTERNAL   /* XXX mireApply doesn't tell which pattern matched. */

Definition at line 8 of file psm.c.

#define _PSM_DEBUG   0

Definition at line 70 of file psm.c.

#define _RPMDB_INTERNAL

Definition at line 37 of file psm.c.

#define _RPMEVR_INTERNAL

Definition at line 55 of file psm.c.

#define _RPMFI_INTERNAL

Definition at line 43 of file psm.c.

#define _RPMPSM_INTERNAL

Definition at line 47 of file psm.c.

#define _RPMSQ_INTERNAL

Definition at line 46 of file psm.c.

#define _RPMTE_INTERNAL

Definition at line 58 of file psm.c.

#define _RPMTS_INTERNAL   /* XXX ts->notify */

Definition at line 61 of file psm.c.

#define F_CLR (   _psm,
  _FLAG 
)    (*((unsigned *)&(_psm)->flags) &= ~(RPMPSM_FLAGS_##_FLAG))

Definition at line 52 of file psm.c.

Referenced by rpmpsmSetAsync(), and rpmpsmStage().

#define F_ISSET (   _psm,
  _FLAG 
)    ((_psm)->flags & (RPMPSM_FLAGS_##_FLAG))

Definition at line 49 of file psm.c.

Referenced by rpmpsmStage(), rpmsqlNew(), and runScript().

#define F_SET (   _psm,
  _FLAG 
)    (*((unsigned *)&(_psm)->flags) |= (RPMPSM_FLAGS_##_FLAG))

Definition at line 50 of file psm.c.

Referenced by rpmpsmSetAsync(), and rpmpsmStage().

Function Documentation

static rpmRC createDir ( rpmts  ts,
rpmfi  fi,
const char **  fn,
const char *  name 
)
static
static rpmRC handleOneTrigger ( const rpmpsm  psm,
Header  sourceH,
Header  triggeredH,
int  arg2 
)
static
static int hCopyTag ( Header  sh,
Header  th,
rpmTag  tag 
)
static

Copy a tag from a source to a target header.

Parameters
shsource header
thtarget header
tagtag to copy
Returns
0 always

Definition at line 1879 of file psm.c.

References _free(), alloca(), _HE_s::c, headerGet(), headerPut(), memset(), _HE_s::p, rpmDataType_u::ptr, _HE_s::tag, and tag.

Referenced by rpmpsmStage().

static rpmuint32_t hLoadTID ( Header  h,
rpmTag  tag 
)
static

Load a transaction id from a header.

Parameters
hheader
tagtag to load
Returns
tag value (0 on failure)

Definition at line 1857 of file psm.c.

References _free(), alloca(), headerGet(), memset(), _HE_s::p, rpmDataType_u::ptr, _HE_s::tag, tag, rpmDataType_u::ui32p, val, and xx.

Referenced by rpmpsmStage().

static int hSaveBlinks ( Header  h,
const struct rpmChainLink_s *  blink 
)
static

Save backward link(s) of an upgrade chain into a header.

Parameters
hheader
*blinkbackward links
Returns
0 always

< End of chain marker.

Definition at line 1899 of file psm.c.

References ac, alloca(), rpmDataType_u::argv, argvCount(), argvData(), _HE_s::c, headerPut(), memset(), _HE_s::p, RPM_STRING_ARRAY_TYPE, RPMTAG_BLINKHDRID, RPMTAG_BLINKNEVRA, RPMTAG_BLINKPKGID, RPMTE_CHAIN_END, _HE_s::t, and _HE_s::tag.

Referenced by populateInstallHeader().

static int hSaveFlinks ( Header  h,
const struct rpmChainLink_s *  flink 
)
static

Save forward link(s) of an upgrade chain into a header.

Parameters
hheader
*flinkforward links
Returns
0 always

Definition at line 1954 of file psm.c.

References ac, alloca(), rpmDataType_u::argv, argvCount(), argvData(), _HE_s::c, headerPut(), memset(), _HE_s::p, RPM_STRING_ARRAY_TYPE, RPMTAG_FLINKHDRID, RPMTAG_FLINKNEVRA, RPMTAG_FLINKPKGID, RPMTE_CHAIN_END, _HE_s::t, and _HE_s::tag.

Referenced by rpmpsmStage().

static const char* pkgStageString ( pkgStage  a)
static
static int populateInstallHeader ( const rpmts  ts,
const rpmte  te,
rpmfi  fi 
)
static
static int postPopulateInstallHeader ( const rpmts  ts,
const rpmpsm  psm,
rpmfi  fi 
)
static

Add fi->states to an install header.

Parameters
tstransaction set
tetransaction element
fifile info set
Returns
0 always

Definition at line 2136 of file psm.c.

References alloca(), _HE_s::c, headerPut(), memset(), NULL, _HE_s::p, RPM_UINT32_TYPE, RPM_UINT8_TYPE, rpmfiFC(), RPMSCRIPT_MAX, RPMTAG_FILESTATES, RPMTAG_SCRIPTMETRICS, RPMTAG_SCRIPTSTATES, _HE_s::t, _HE_s::tag, rpmDataType_u::ui32p, and rpmDataType_u::ui8p.

Referenced by rpmpsmStage().

static pid_t psmWait ( rpmpsm  psm)
static

Wait for child process to be reaped.

Parameters
psmpackage state machine data
Returns

Definition at line 444 of file psm.c.

References D_, NULL, rpmlog(), RPMLOG_DEBUG, RPMSCRIPT_STATE_REAPED, rpmsqWait(), rpmswAdd(), RPMTS_OP_SCRIPTLETS, rpmtsOp(), tag2slx(), and void.

Referenced by runScript().

static int rpmdbTriggerGlobs ( rpmpsm  psm)
static
rpmRC rpmInstallSourcePackage ( rpmts  ts,
void _fd,
const char **  specFilePtr,
const char **  cookie 
)

Install source package.

Deprecated:
This routine needs to DIE! DIE! DIE!.
Todo:
Eliminate in rpm-5.1, insturment rpmtsRun() state machine instead.
Parameters
tstransaction set
_fdfile handle
Return values
specFilePtraddress of spec file name (or NULL)
cookieaddress of cookie pointer (or NULL)
Returns
rpmRC return code

Definition at line 206 of file psm.c.

References _, _free(), alloca(), rpmDataType_u::argv, assert(), createDir(), exit, FA_CREATE, Fclose(), fd, fdLink(), fi, h, headerFree, headerGet(), headerIsEntry(), headerLink(), headerMacrosLoad(), i, int, IOSM_MAP_GID, IOSM_MAP_MODE, IOSM_MAP_PATH, IOSM_MAP_UID, memset(), NULL, p, _HE_s::p, PSM_FINI, PSM_PKGINSTALL, PSM_PROCESS, rc, rpmExpand(), rpmfiFFlags(), rpmfiFN(), rpmfiInit(), RPMFILE_SPECFILE, rpmfiNext(), rpmlog(), RPMLOG_ERR, rpmpsmFree(), rpmpsmNew(), rpmpsmStage(), RPMRC_FAIL, RPMRC_NOKEY, RPMRC_NOTTRUSTED, RPMRC_OK, rpmReadPackageFile(), RPMTAG_ARCH, RPMTAG_BASENAMES, RPMTAG_COOKIE, RPMTAG_FILEPATHS, RPMTAG_SOURCERPM, rpmteFI(), rpmteSetHeader(), rpmtsAddInstallElement(), rpmtsClean(), rpmtsElement(), rpmDataType_u::str, _HE_s::tag, void, and xstrdup().

Referenced by rpmInstallSource().

static void rpmpsmFini ( void _psm)
static

Definition at line 1780 of file psm.c.

References _free(), NULL, rpmdsFree(), rpmfiFree(), rpmteFree(), rpmtsFree(), and void.

Referenced by rpmpsmGetPool().

static rpmpsm rpmpsmGetPool ( rpmioPool  pool)
static

Definition at line 1809 of file psm.c.

References _psm_debug, _psmPool, memset(), NULL, rpmioGetPool(), rpmioNewPool(), and rpmpsmFini().

Referenced by rpmpsmNew().

rpmpsm rpmpsmNew ( rpmts  ts,
rpmte  te,
rpmfi  fi 
)

Create and load a package state machine.

Parameters
tstransaction set
tetransaction set element
fifile info set
Returns
new package state machine

Definition at line 1825 of file psm.c.

References memset(), msg, NULL, rpmfiLink(), rpmpsmGetPool(), rpmpsmLink(), rpmtsLink(), te, and xcalloc().

Referenced by _processFailedPackage(), rpmInstallSourcePackage(), rpmtsProcess(), rpmtsRepackage(), rpmtsRunScript(), and rpmVerifyScript().

static int rpmpsmNext ( rpmpsm  psm,
pkgStage  nstage 
)
static

Definition at line 2180 of file psm.c.

References _psm_threads, rpmpsmStage(), rpmsqJoin(), and rpmsqThread().

Referenced by rpmpsmStage().

rpmRC rpmpsmScriptStage ( rpmpsm  psm,
rpmTag  scriptTag,
rpmTag  progTag 
)

Run rpmpsmStage(PSM_SCRIPT) for scriptTag and progTag.

Parameters
psmpackage state machine data
scriptTagscriptlet tag to execute
progTagscriptlet prog tag to execute
Returns
0 on success

Definition at line 1763 of file psm.c.

References assert(), NULL, PSM_SCRIPT, rpmpsmStage(), RPMTAG_POSTTRANS, RPMTAG_PRETRANS, RPMTAG_SANITYCHECK, and RPMTAG_VERIFYSCRIPT.

Referenced by rpmtsRunScript(), and rpmVerifyScript().

void rpmpsmSetAsync ( rpmpsm  psm,
int  async 
)

Definition at line 1750 of file psm.c.

References assert(), F_CLR, F_SET, and NULL.

Referenced by rpmtsProcess().

rpmRC rpmpsmStage ( rpmpsm  psm,
pkgStage  stage 
)

Package state machine driver.

Todo:
Packages w/o files never get a callback, hence don't get displayed on install with -v.

Definition at line 2197 of file psm.c.

References _, _free(), alloca(), rpmDataType_u::argv, assert(), _HE_s::c, Chdir(), Chroot(), D_, dbi, dbiOpen(), digest, errno, F_CLR, F_ISSET, F_SET, FA_COPYOUT, Fclose(), fdDup(), Fdopen(), FDSTAT_DIGEST, fdstat_op(), FDSTAT_READ, FDSTAT_WRITE, Ferror(), Fflush(), fi, Fileno(), Fopen(), fsmSetup(), fsmTeardown(), Fstrerror(), hCopyTag(), headerCopyLoad(), headerFini(), headerFree, headerGet(), headerGetInstance(), headerInit(), headerIsEntry(), headerLink(), headerNew(), headerNext(), headerPut(), headerRegenSigHeader(), headerReload(), headerSetInstance(), headerSprintf(), hLoadTID(), hSaveFlinks(), int, IOSM_MAP_GID, IOSM_MAP_MODE, IOSM_MAP_PATH, IOSM_MAP_UID, IOSM_PKGBUILD, IOSM_PKGCOMMIT, IOSM_PKGERASE, IOSM_PKGINSTALL, IOSM_SBIT_CHECK, iosmStrerror(), memset(), msg, nb, NULL, _HE_s::p, pkgStageString(), populateInstallHeader(), postPopulateInstallHeader(), PSM_CHROOT_IN, PSM_CHROOT_OUT, PSM_COMMIT, PSM_CREATE, PSM_DESTROY, PSM_FINI, PSM_IMMED_TRIGGERS, PSM_INIT, PSM_NOTIFY, PSM_PKGCOMMIT, PSM_PKGERASE, PSM_PKGINSTALL, PSM_PKGSAVE, PSM_POST, PSM_PRE, PSM_PROCESS, PSM_RPMDB_ADD, PSM_RPMDB_LOAD, PSM_RPMDB_REMOVE, PSM_RPMIO_FLAGS, PSM_SCRIPT, PSM_TRIGGERS, PSM_UNDO, PSM_UNKNOWN, rpmDataType_u::ptr, ptr, rc, RPM_BIN_TYPE, RPM_STRING_TYPE, RPM_UINT32_TYPE, RPMCALLBACK_CPIO_ERROR, RPMCALLBACK_INST_PROGRESS, RPMCALLBACK_INST_START, RPMCALLBACK_UNINST_START, RPMCALLBACK_UNINST_STOP, RPMCALLBACK_UNPACK_ERROR, rpmdbAdd(), rpmdbCountPackages(), RPMDBI_PACKAGES, rpmdbRemove(), rpmdsNew(), rpmExpand(), rpmfiFC(), RPMFILE_STATE_NORMAL, rpmGenPath(), rpmGetPath(), rpmHeaderFormats, rpmlog(), RPMLOG_DEBUG, RPMLOG_ERR, RPMLOG_INFO, rpmmiAddPattern(), rpmmiFree(), rpmmiInstance(), rpmmiNext(), RPMMIRE_STRCMP, rpmMkdirPath(), rpmpkgSizeof(), rpmpkgWrite(), rpmpsmNext(), RPMRC_FAIL, RPMRC_OK, rpmswAdd(), rpmswEnter(), rpmswExit(), RPMTAG_ARCH, RPMTAG_ARCHIVESIZE, RPMTAG_BLINKHDRID, RPMTAG_BLINKNEVRA, RPMTAG_BLINKPKGID, RPMTAG_DEFAULTPREFIX, RPMTAG_DISTEPOCH, RPMTAG_EPOCH, RPMTAG_FILEGROUPNAME, RPMTAG_FILEPATHS, RPMTAG_FILEUSERNAME, RPMTAG_HEADERIMAGE, RPMTAG_HEADERIMMUTABLE, RPMTAG_HEADERSIGNATURES, RPMTAG_INSTALLTID, RPMTAG_NAME, RPMTAG_ORIGBASENAMES, RPMTAG_ORIGPATHS, RPMTAG_OS, RPMTAG_PACKAGEDIGEST, RPMTAG_PACKAGEORIGIN, RPMTAG_PACKAGESTAT, RPMTAG_PAYLOADCOMPRESSOR, RPMTAG_PAYLOADFORMAT, RPMTAG_POSTIN, RPMTAG_POSTINPROG, RPMTAG_POSTUN, RPMTAG_POSTUNPROG, RPMTAG_PREIN, RPMTAG_PREINPROG, RPMTAG_PREUN, RPMTAG_PREUNPROG, RPMTAG_RELEASE, RPMTAG_REMOVETID, RPMTAG_SHA1HEADER, RPMTAG_TRIGGERNAME, RPMTAG_VERSION, rpmTagTable, rpmteA(), rpmteD(), rpmteE(), rpmteFd(), rpmteHdrid(), rpmteN(), rpmteNEVR(), rpmteO(), rpmteR(), rpmteSetDBInstance(), rpmteSetHeader(), rpmteV(), RPMTRANS_FLAG_APPLYONLY, RPMTRANS_FLAG_JUSTDB, RPMTRANS_FLAG_NOPOST, RPMTRANS_FLAG_NOPOSTUN, RPMTRANS_FLAG_NOPRE, RPMTRANS_FLAG_NOPREUN, RPMTRANS_FLAG_NORPMDB, RPMTRANS_FLAG_NOTRIGGERIN, RPMTRANS_FLAG_NOTRIGGERPOSTUN, RPMTRANS_FLAG_NOTRIGGERPREIN, RPMTRANS_FLAG_NOTRIGGERUN, RPMTRANS_FLAG_PKGCOMMIT, RPMTRANS_FLAG_TEST, RPMTRANS_TYPE_AUTOROLLBACK, RPMTRANS_TYPE_ROLLBACK, RPMTS_OP_COMPRESS, RPMTS_OP_DBADD, RPMTS_OP_DBREMOVE, RPMTS_OP_DIGEST, RPMTS_OP_UNCOMPRESS, rpmtsChrootDone(), rpmtsColor(), rpmtsCurrDir(), rpmtsFlags(), rpmtsGetRdb(), rpmtsGetTid(), rpmtsInitIterator(), rpmtsNotify(), rpmtsOp(), rpmtsRootDir(), rpmtsSetChrootDone(), rpmtsType(), rpmtsVSFlags(), RPMVSF_NOHDRCHK, runImmedTriggers(), runInstScript(), runTriggers(), s, snprintf(), st, stpcpy(), rpmDataType_u::str, strcmp(), _HE_s::t, t, _HE_s::tag, tag2sln(), uh, rpmDataType_u::ui32p, urlPath(), void, xmalloc, xstrdup(), and xx.

Referenced by _processFailedPackage(), rpmInstallSourcePackage(), rpmpsmNext(), rpmpsmScriptStage(), rpmtsProcess(), and rpmtsRepackage().

static rpmRC runImmedTriggers ( rpmpsm  psm)
static
static rpmRC runInstScript ( rpmpsm  psm)
static

Retrieve and run scriptlet from header.

Parameters
psmpackage state machine data
Returns
rpmRC return code

Definition at line 1168 of file psm.c.

References _free(), alloca(), rpmDataType_u::argv, assert(), exit, fi, headerGet(), memset(), NULL, _HE_s::p, rpmDataType_u::ptr, rc, RPM_STRING_TYPE, rpmExpand(), RPMRC_OK, runScript(), s, stpcpy(), rpmDataType_u::str, _HE_s::t, t, _HE_s::tag, tag2sln(), and xmalloc.

Referenced by rpmpsmStage().

static rpmRC runScript ( rpmpsm  psm,
Header  h,
const char *  sln,
HE_t  Phe,
const char *  script,
int  arg1,
int  arg2 
)
static

Run scriptlet with args.

Run a script with an interpreter. If the interpreter is not specified, /bin/sh will be used.

Parameters
psmpackage state machine data
hheader
slnname of scriptlet section
Phescriptlet args, Phe->p.argv[0] is interpreter to use
scriptscriptlet body
arg1no. instances of package installed after scriptlet exec (-1 is no arg)
arg2ditto, but for the target package
Returns
RPMRC_OK on success

Definition at line 780 of file psm.c.

References _, _free(), alloca(), rpmDataType_u::argv, argv, assert(), av, _HE_s::c, Chdir(), Chroot(), D_, doputenv(), errno, exit, F_ISSET, Fclose(), fd, fdDup(), fdno, Ferror(), Fileno(), fn, Fopen(), Fwrite(), headerGet(), i, IP, ix, len, memset(), NULL, op, out, _HE_s::p, path, pid, psmWait(), rpmDataType_u::ptr, ptr, rc, RPM_STRING_ARRAY_TYPE, RPMCALLBACK_SCRIPT_ERROR, rpmExpand(), rpmIsDebug, rpmIsVerbose, rpmlog(), RPMLOG_DEBUG, RPMLOG_ERR, RPMRC_FAIL, RPMRC_OK, RPMSCRIPT_MAX, RPMSCRIPT_STATE_EXEC, RPMSCRIPT_STATE_SELINUX, RPMSCRIPT_STATE_UNKNOWN, rpmsqFork(), rpmswEnter(), rpmswExit(), rpmsxExec(), RPMTAG_INSTALLPREFIX, RPMTAG_INSTPREFIXES, RPMTAG_NVRA, RPMTAG_POSTIN, RPMTAG_POSTUN, RPMTAG_PREIN, RPMTAG_PREUN, rpmTempFile(), rpmtsChrootDone(), rpmtsGetRdb(), rpmtsNotify(), rpmtsRootDir(), rpmtsScriptFd(), rpmtsSELinuxEnabled(), SCRIPT_PATH, sprintf(), stpcpy(), rpmDataType_u::str, strcmp(), _HE_s::t, t, _HE_s::tag, tag2sln(), tag2slx(), Unlink(), unsetenv(), rpmop_s::usecs, void, xmalloc, and xx.

Referenced by handleOneTrigger(), and runInstScript().

static rpmRC runTriggers ( rpmpsm  psm)
static

Run trigger scripts in the database that are fired by this header.

Parameters
psmpackage state machine data
Returns
0 on success

Definition at line 1520 of file psm.c.

References _free(), _trigger_tag, argvFree(), assert(), fi, mireFreeAll(), N, NULL, rc, rpmdbCountPackages(), rpmdbTriggerGlobs(), rpmExpand(), RPMRC_FAIL, RPMRC_NOTFOUND, RPMRC_OK, RPMTAG_BASENAMES, RPMTAG_DIRNAMES, RPMTAG_NAME, RPMTAG_PROVIDENAME, rpmteN(), rpmtsGetRdb(), runTriggersLoop(), strcmp(), t, and xx.

Referenced by rpmpsmStage().

static rpmRC runTriggersLoop ( rpmpsm  psm,
rpmTag  tagno,
int  arg2 
)
static

Run a dependency set loop against rpmdb triggers.

Parameters
psmpackage state machine data
tagnodependency set to run against rpmdb
arg2scriptlet arg2
Returns
RPMRC_OK on success

Definition at line 1425 of file psm.c.

References _free(), argiAdd(), argiCount(), argiData(), argiFree(), argiSort(), ds, fi, handleOneTrigger(), i, j, mi, mireRegexec(), NULL, pattern, rc, rpmdsFree(), rpmdsInit(), rpmdsN(), rpmdsNew(), rpmdsNext(), rpmmiFree(), rpmmiInstance(), rpmmiNext(), rpmmiPrune(), RPMRC_FAIL, RPMRC_OK, RPMTAG_DIRNAMES, RPMTAG_TRIGGERNAME, rpmtsInitIterator(), stpcpy(), strcmp(), void, xmalloc, xstrdup(), and xx.

Referenced by runTriggers().

static const char* tag2sln ( rpmTag  tag)
static
static rpmScriptID tag2slx ( rpmTag  tag)
static

Variable Documentation

int _psm_debug = 0

Definition at line 72 of file psm.c.

Referenced by rpmpsmGetPool().

int _psm_threads = 0

Definition at line 74 of file psm.c.

Referenced by rpmpsmNext().

rpmioPool _psmPool

Definition at line 1807 of file psm.c.

Referenced by rpmpsmGetPool().

rpmTag _trigger_tag
static

Definition at line 1213 of file psm.c.

Referenced by runImmedTriggers(), and runTriggers().

int ldconfig_done = 0
static

Definition at line 759 of file psm.c.

const char* ldconfig_path = "/sbin/ldconfig"
static

Definition at line 762 of file psm.c.

const char* SCRIPT_PATH
static
Initial value:
=
"PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin"

Definition at line 376 of file psm.c.

Referenced by runScript().