lib/psm.c File Reference
Package state machine to handle a package from a transaction set.
More...
#include "system.h"
#include "psm.h"
#include <rpmmacro.h>
#include <rpmurl.h>
#include "depends.h"
#include "rpmlead.h"
#include "signature.h"
#include "ugid.h"
#include "misc.h"
#include "rpmdb.h"
#include "debug.h"
Go to the source code of this file.
|
Data Structures |
struct | tagMacro |
| Macros to be defined from per-header tag values. More...
|
Functions |
int | rpmVersionCompare (Header first, Header second) |
| Compare headers to determine which header is "newer".
|
void | loadFi (Header h, TFI_t fi) |
| Load data from header into transaction file element info.
|
void | freeFi (TFI_t fi) |
| Destroy transaction element file info.
|
const char *const | fiTypeString (TFI_t fi) |
| Return formatted string representation of package disposition.
|
static int | rpmInstallLoadMacros (TFI_t fi, Header h) |
| Define per-header macros.
|
static int | mergeFiles (TFI_t fi, Header h, Header newH) |
| Copy file data from h to newH.
|
static int | markReplacedFiles (PSM_t psm) |
| Mark files in database shared with this package as "replaced".
|
static rpmRC | chkdir (const char *dpath, const char *dname) |
| Create directory if it does not exist, make sure path is writable.
|
rpmRC | rpmInstallSourcePackage (const char *rootDir, FD_t fd, const char **specFilePtr, rpmCallbackFunction notify, rpmCallbackData notifyData, char **cookie) |
| Install source package.
|
static const char *const | tag2sln (int tag) |
| Return scriptlet name from tag.
|
static int | runScript (PSM_t psm, Header h, const char *sln, int progArgc, const char **progArgv, const char *script, int arg1, int arg2) |
| Run scriptlet with args.
|
static rpmRC | runInstScript (PSM_t psm) |
| Retrieve and run scriptlet from header.
|
static int | handleOneTrigger (PSM_t psm, Header sourceH, Header triggeredH, int arg2, unsigned char *triggersAlreadyRun) |
static int | runTriggers (PSM_t psm) |
| Run trigger scripts in the database that are fired by this header.
|
static int | runImmedTriggers (PSM_t psm) |
| Run triggers from this header that are fired by headers in the database.
|
static const char *const | pkgStageString (pkgStage a) |
int | psmStage (PSM_t psm, pkgStage stage) |
| Package state machine driver.
|
Variables |
static struct tagMacro | tagMacros [] |
| Macros to be defined from per-header tag values.
|
static char * | SCRIPT_PATH |
Detailed Description
Package state machine to handle a package from a transaction set.
Definition in file psm.c.
Function Documentation
static rpmRC chkdir |
( |
const char * |
dpath, |
|
|
const char * |
dname | |
|
) |
| | [static] |
Create directory if it does not exist, make sure path is writable.
- Note:
- This will only create last component of directory path.
- Parameters:
-
| dpath | directory path |
| dname | directory use |
- Returns:
- rpmRC return code
Definition at line 577 of file psm.c.
const char* const fiTypeString |
( |
TFI_t |
fi |
) |
|
Return formatted string representation of package disposition.
- Parameters:
-
- Returns:
- formatted string
Definition at line 235 of file psm.c.
Destroy transaction element file info.
- Parameters:
-
| fi | transaction element file info |
Definition at line 188 of file psm.c.
static int handleOneTrigger |
( |
PSM_t |
psm, |
|
|
Header |
sourceH, |
|
|
Header |
triggeredH, |
|
|
int |
arg2, |
|
|
unsigned char * |
triggersAlreadyRun | |
|
) |
| | [static] |
- Parameters:
-
| psm | package state machine data |
| sourceH | |
| triggeredH | |
| arg2 | |
| triggersAlreadyRun | |
- Returns:
Definition at line 1093 of file psm.c.
Load data from header into transaction file element info.
- Parameters:
-
| h | header |
| fi | transaction element file info |
Definition at line 72 of file psm.c.
static int markReplacedFiles |
( |
PSM_t |
psm |
) |
[static] |
Mark files in database shared with this package as "replaced".
- Parameters:
-
| psm | package state machine data |
- Returns:
- 0 always
Definition at line 497 of file psm.c.
Copy file data from h to newH.
- Parameters:
-
| h | header from |
| newH | header to |
| actions | array of file dispositions |
- Returns:
- 0 on success, 1 on failure
Definition at line 314 of file psm.c.
static const char* const pkgStageString |
( |
pkgStage |
a |
) |
[static] |
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 1342 of file psm.c.
static int rpmInstallLoadMacros |
( |
TFI_t |
fi, |
|
|
Header |
h | |
|
) |
| | [static] |
Define per-header macros.
- Parameters:
-
| fi | transaction element file info |
| h | header |
- Returns:
- 0 always
Definition at line 267 of file psm.c.
Install source package.
- Parameters:
-
| rootDir | path to top of install tree (or NULL) |
| fd | file handle |
- Return values:
-
| specFilePtr | address of spec file name (or NULL) |
- Parameters:
-
| notify | progress callback |
| notifyData | progress callback private data |
- Return values:
-
| cooke | address of cookie pointer (or NULL) |
- Returns:
- rpmRC return code
Definition at line 612 of file psm.c.
Compare headers to determine which header is "newer".
- Parameters:
-
- Returns:
- result of comparison
Definition at line 36 of file psm.c.
static int runImmedTriggers |
( |
PSM_t |
psm |
) |
[static] |
Run triggers from this header that are fired by headers in the database.
- Parameters:
-
| psm | package state machine data |
- Returns:
- 0 on success, 1 on error
Definition at line 1246 of file psm.c.
Retrieve and run scriptlet from header.
- Parameters:
-
| psm | package state machine data |
- Returns:
- rpmRC return code
Definition at line 1046 of file psm.c.
static int runScript |
( |
PSM_t |
psm, |
|
|
Header |
h, |
|
|
const char * |
sln, |
|
|
int |
progArgc, |
|
|
const char ** |
progArgv, |
|
|
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. If the interpreter is /bin/sh, then the args from the header will be ignored, passing instead arg1 and arg2.
- Parameters:
-
| psm | package state machine data |
| h | header |
| sln | name of scriptlet section |
| progArgc | no. of args from header |
| progArgv | args from header, progArgv[0] is the interpreter to use |
| script | scriptlet from header |
| arg1 | no. instances of package installed after scriptlet exec (-1 is no arg) |
| arg2 | ditto, but for the target package |
- Returns:
- 0 on success, 1 on error
Definition at line 825 of file psm.c.
static int runTriggers |
( |
PSM_t |
psm |
) |
[static] |
Run trigger scripts in the database that are fired by this header.
- Parameters:
-
| psm | package state machine data |
- Returns:
- 0 on success, 1 on error
Definition at line 1209 of file psm.c.
static const char* const tag2sln |
( |
int |
tag |
) |
[static] |
Return scriptlet name from tag.
- Parameters:
-
- Returns:
- name of scriptlet
Definition at line 794 of file psm.c.
Variable Documentation
Initial value:
"PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin"
Definition at line 786 of file psm.c.
Macros to be defined from per-header tag values.
- Todo:
- Should other macros be added from header when installing a package?