Main Page Modules Data Structures File List Data Fields Globals Related Pages

# RPMBUILD.

## Files

file | build.c
| Top-level build dispatcher.

file | buildio.h
| Routines to read and write packages.

file | expression.c
| Simple logical expression parser.

file | files.c
| The post-build, pre-packaging file tree walk to assemble the package manifest.

file | misc.c
file | myftw.c
| Modified ftw() -- uses Lstat() instead of stat().

file | myftw.h
| Portable ftw(3) using lstat() instead of stat().

file | names.c
| Simple user/group name/id cache (plus hostname and buildtime).

file | pack.c
| Assemble components of an RPM package.

file | parseBuildInstallClean.c
| Parse build/install/clean section from spec file.

file | parseChangelog.c
| Parse changelog section from spec file.

file | parseDescription.c
| Parse description section from spec file.

file | parseFiles.c
| Parse files section from spec file.

file | parsePreamble.c
| Parse tags in global section from spec file.

file | parsePrep.c
| Parse prep section from spec file.

file | parseReqs.c
| Parse dependency tag from spec file or from auto-dependency generator.

file | parseScript.c
| Parse install-time script section from spec file.

file | parseSpec.c
| Top level dispatcher for spec file parsing.

file | reqprov.c
| Add dependency tags to package header(s).

file | rpmbuild.h
| This is the *only* module users of librpmbuild should need to include.

file | rpmcli.h
file | rpmspec.h
| The Spec and Package data structures used during build.

file | spec.c
| Handle spec data structure.

## Data Structures

struct | OpenFileInfo
struct | PackageStruct
struct | ReadLevelEntry
struct | Source
struct | speclines_s
struct | SpecStruct
struct | spectag_s
struct | spectags_s
struct | TriggerFileEntry

## Typedefs

typedef enum rpmBuildFlags_e | rpmBuildFlags
typedef enum rpmParseState_e | rpmParseState
typedef SpecStruct * | Spec
typedef ReadLevelEntry | RLE_t
typedef OpenFileInfo | OFI_t
typedef spectag_s * | spectag
typedef spectags_s * | spectags
typedef speclines_s * | speclines
typedef PackageStruct * | Package

## Enumerations

enum | rpmBuildFlags_e { RPMBUILD_NONE = 0, RPMBUILD_PREP = (1 << 0), RPMBUILD_BUILD = (1 << 1), RPMBUILD_INSTALL = (1 << 2), RPMBUILD_CLEAN = (1 << 3), RPMBUILD_FILECHECK = (1 << 4), RPMBUILD_PACKAGESOURCE = (1 << 5), RPMBUILD_PACKAGEBINARY = (1 << 6), RPMBUILD_RMSOURCE = (1 << 7), RPMBUILD_RMBUILD = (1 << 8), RPMBUILD_STRINGBUF = (1 << 9), RPMBUILD_RMSPEC = (1 << 10) }
enum | rpmParseState_e { PART_NONE = 0, PART_PREAMBLE = 1, PART_PREP = 2, PART_BUILD = 3, PART_INSTALL = 4, PART_CLEAN = 5, PART_FILES = 6, PART_PRE = 7, PART_POST = 8, PART_PREUN = 9, PART_POSTUN = 10, PART_DESCRIPTION = 11, PART_CHANGELOG = 12, PART_TRIGGERIN = 13, PART_TRIGGERUN = 14, PART_VERIFYSCRIPT = 15, PART_BUILDARCHITECTURES = 16, PART_TRIGGERPOSTUN = 17, PART_LAST = 18 }

## Functions

void | freeNames (void)
const char * | getUname (uid_t uid)
const char * | getUnameS (const char *uname)
uid_t | getUidS (const char *uname)
const char * | getGname (gid_t gid)
const char * | getGnameS (const char *gname)
gid_t | getGidS (const char *gname)
const char *const | buildHost (void)
int_32 *const | getBuildTime (void)
int | readLine (Spec spec, int strip)
void | closeSpec (Spec spec)
void | handleComments (char *s)
rpmParseState | isPart (const char *line)
int | parseNum (const char *line, int *res)
void | addChangelogEntry (Header h, time_t time, const char *name, const char *text)
int | parseBuildInstallClean (Spec spec, rpmParseState parsePart)
int | parseChangelog (Spec spec)
int | parseDescription (Spec spec)
int | parseFiles (Spec spec)
int | parsePreamble (Spec spec, int initialPackage)
int | parsePrep (Spec spec)
int | parseRCPOT (Spec spec, Package pkg, const char *field, int tag, int index, rpmsenseFlags tagflags)
int | parseScript (Spec spec, int parsePart)
int | parseExpressionBoolean (Spec spec, const char *expr)
char * | parseExpressionString (Spec spec, const char *expr)
int | doScript (Spec spec, int what, const char *name, StringBuf sb, int test)
int | lookupPackage (Spec spec, const char *name, int flag, Package *pkg)
Package | newPackage (Spec spec)
Package | freePackages (Package packages)
Package | freePackage (Package pkg)
int | addReqProv (Spec spec, Header h, rpmsenseFlags depFlags, const char *depName, const char *depEVR, int index)
int | rpmlibNeedsFeature (Header h, const char *feature, const char *featureEVR)
int | processBinaryFiles (Spec spec, int installSpecialDoc, int test)
void | initSourceHeader (Spec spec)
int | processSourceFiles (Spec spec)
int | parseSpec (Spec *specp, const char *specFile, const char *rootURL, const char *buildRootURL, int recursing, const char *passPhrase, char *cookie, int anyarch, int force)
int | buildSpec (Spec spec, int what, int test)
int | packageBinaries (Spec spec)
int | packageSources (Spec spec)
Spec | newSpec (void)
Spec | freeSpec (Spec spec)
OpenFileInfo * | newOpenFileInfo (void)
spectag | stashSt (Spec spec, Header h, int tag, const char *lang)
int | addSource (Spec spec, Package pkg, const char *field, int tag)
int | parseNoSource (Spec spec, const char *field, int tag)

## Variables

int(* | parseSpecVec )(Spec *specp, const char *specFile, const char *rootdir, const char *buildRoot, int recursing, const char *passPhrase, char *cookie, int anyarch, int force)
Spec(* | freeSpecVec )(Spec spec)

## Typedef Documentation

typedef struct OpenFileInfo OFI_t

typedef struct PackageStruct* Package

| Definition at line 178 of file rpmspec.h.

typedef struct ReadLevelEntry RLE_t

typedef enum rpmBuildFlags_e rpmBuildFlags

| Bit(s) to control buildSpec() operation.

typedef enum rpmParseState_e rpmParseState

| Spec file parser states. Referenced by getGidS, isPart, parseBuildInstallClean, and parseSpec.

typedef struct SpecStruct* Spec

| Definition at line 11 of file rpmspec.h.

typedef struct speclines_s * speclines

typedef struct spectag_s * spectag

typedef struct spectags_s * spectags

## Enumeration Type Documentation

enum rpmBuildFlags_e

Bit(s) to control buildSpec() operation.

Enumeration values:

  RPMBUILD_NONE |
  RPMBUILD_PREP | Execute %prep.
  RPMBUILD_BUILD | Execute %build.
  RPMBUILD_INSTALL | Execute %install.
  RPMBUILD_CLEAN | Execute %clean.
  RPMBUILD_FILECHECK | Check %files manifest.
  RPMBUILD_PACKAGESOURCE | Create source package.
  RPMBUILD_PACKAGEBINARY | Create binary package(s).
  RPMBUILD_RMSOURCE | Remove source(s) and patch(s).
  RPMBUILD_RMBUILD | Remove build sub-tree.
  RPMBUILD_STRINGBUF | only for doScript()
  RPMBUILD_RMSPEC | Remove spec file.

Definition at line 22 of file rpmbuild.h.

enum rpmParseState_e

Spec file parser states.

Enumeration values:

  PART_NONE |
  PART_PREAMBLE |
  PART_PREP |
  PART_BUILD |
  PART_INSTALL |
  PART_CLEAN |
  PART_FILES |
  PART_PRE |
  PART_POST |
  PART_PREUN |
  PART_POSTUN |
  PART_DESCRIPTION |
  PART_CHANGELOG |
  PART_TRIGGERIN |
  PART_TRIGGERUN |
  PART_VERIFYSCRIPT |
  PART_BUILDARCHITECTURES |
  PART_TRIGGERPOSTUN |
  PART_LAST |

Definition at line 51 of file rpmbuild.h.

## Function Documentation

void addChangelogEntry | ( | Header | h,
|  | time_t | time,
|  | const char * | name,
|  | const char * | text
| ) |

Add changelog entry to header.

Parameters:

  h | header
  time | time of change
  name | person who made the change
  text | description of change

Definition at line 11 of file parseChangelog.c.

Referenced by addChangelog, and headerInject.

int addReqProv | ( | Spec | spec,
|  | Header | h,
|  | rpmsenseFlags | depFlags,
|  | const char * | depName,
|  | const char * | depEVR,
|  | int | index
| ) |

Add dependency to header, filtering duplicates.

Parameters:

  spec | spec file control structure
  h | header
  depFlags | (e.g. Requires: foo < 0:1.2-3, both "Requires:" and "<")
  depName | (e.g. Requires: foo < 0:1.2-3, "foo")
  depEVR | (e.g. Requires: foo < 0:1.2-3, "0:1.2-3")
  index | (0 always)

Returns:
  0 always

Definition at line 11 of file reqprov.c.

Referenced by parseRCPOT, parseScript, and rpmlibNeedsFeature.

int addSource | ( | Spec | spec,
|  | Package | pkg,
|  | const char * | field,
|  | int | tag
| ) |

Parameters:

  spec | spec file control structure

Definition at line 246 of file spec.c.

const char* const buildHost | ( | void |  | ) |

Return build hostname.

Returns:
  build hostname

Definition at line 179 of file names.c.

int buildSpec | ( | Spec | spec,
|  | int | what,
|  | int | test
| ) |

Build stages state machine driver.

Parameters:

  spec | spec file control structure
  what | bit(s) to enable stages of build
  test | don't execute scripts or package if testing

Returns:
  0 on success

Definition at line 264 of file build.c.

References rpmsenseFlags.

Referenced by buildForTarget, and buildSpec.

void closeSpec | ( | Spec | spec | ) |

Stop reading from spec file, freeing resources.

Parameters:

  spec | spec file control structure

Definition at line 358 of file parseSpec.c.

Referenced by freeSpec, and parseSpec.

int doScript | ( | Spec | spec,
|  | int | what,
|  | const char * | name,
|  | StringBuf | sb,
|  | int | test
| ) |

Run a build script, assembled from spec file scriptlet section.

Parameters:

  spec | spec file control structure
  what | type of script
  name | name of scriptlet section
  sb | lines that compose script body
  test | don't execute scripts or package if testing

Returns:
  0 on success, RPMERR_SCRIPT on failure

Definition at line 57 of file build.c.

References PART_CLEAN, PART_FILES, and PART_PRE.

Referenced by buildSpec, and processPackageFiles.

void freeNames | ( | void |  | ) |

| Destroy uid/gid caches. Definition at line 29 of file names.c.

Package freePackage | ( | Package | pkg | ) |

Destroy package control structure.

Parameters:

  pkg | package control structure

Returns:
  NULL

Definition at line 149 of file spec.c.

Package freePackages | ( | Package | packages | ) |

Destroy all packages associated with spec file.

Parameters:

  packages | package control structure chain

Returns:
  NULL

Definition at line 177 of file spec.c.

Spec freeSpec | ( | Spec | spec | ) |

Destroy Spec structure.

Parameters:

  spec | spec file control structure

Returns:
  NULL always

Definition at line 463 of file spec.c.

int_32* const getBuildTime | ( | void |  | ) |

Return build time stamp.

Returns:
  build time stamp

Definition at line 170 of file names.c.

gid_t getGidS | ( | const char * | gname | ) |

Return cached group id.

Todo:
  Implement using hash.

Parameters:

  gname | group name

Returns:
  cached gid

Definition at line 148 of file names.c.

References rpmParseState.

Referenced by genCpioListAndHeader.

const char* getGname | ( | gid_t | gid | ) |

Return cached group name from group id.

Todo:
  Implement using hash.

Parameters:

  gid | group id

Returns:
  cached group name

Definition at line 104 of file names.c.

Referenced by addFile, checkOwners, and processSourceFiles.

const char* getGnameS | ( | const char * | gname | ) |

Return cached group name.

Todo:
  Implement using hash.

Parameters:

  gname | group name

Returns:
  cached group name

Definition at line 126 of file names.c.

Referenced by addFile.

uid_t getUidS | ( | const char * | uname | ) |

Return cached user id.

Todo:
  Implement using hash.

Parameters:

  uname | user name

Returns:
  cached uid

Definition at line 82 of file names.c.

Referenced by genCpioListAndHeader.

const char* getUname | ( | uid_t | uid | ) |

Return cached user name from user id.

Todo:
  Implement using hash.

Parameters:

  uid | user id

Returns:
  cached user name

Definition at line 38 of file names.c.

Referenced by addFile, checkOwners, headerInject, and processSourceFiles.

const char* getUnameS | ( | const char * | uname | ) |

Return cached user name.

Todo:
  Implement using hash.

Parameters:

  uname | user name

Returns:
  cached user name

Definition at line 60 of file names.c.

References PART_POST.

Referenced by addFile.

void handleComments | ( | char * | s | ) |

Truncate comment lines.

Parameters:

  s | skip white space, truncate line at '#'

Definition at line 97 of file parseSpec.c.

Referenced by copyNextLine, and processPackageFiles.

void initSourceHeader | ( | Spec | spec | ) |

Create and initialize header for source package.

Parameters:

  spec | spec file control structure

Definition at line 2005 of file files.c.

Referenced by buildForTarget, and processSourceFiles.

rpmParseState isPart | ( | const char * | line | ) |

Check line for section separator, return next parser state.

Parameters:

  line | from spec file

Returns:
  next parser state

Definition at line 54 of file parseSpec.c.

References PART_BUILD, PART_INSTALL, and PART_PREP.

Referenced by parseBuildInstallClean, parseChangelog, parseDescription, parseFiles, parsePreamble, parsePrep, and parseScript.

int lookupPackage | ( | Spec | spec,
|  | const char * | name,
|  | int | flag,
|  | Package * | pkg
| ) |

Find sub-package control structure by name.

Parameters:

  spec | spec file control structure
  name | (sub-)package name
  flag | if PART_SUBNAME, then 1st package name is prepended

Return values:

  pkg | package control structure

Returns:
  0 on success, 1 on failure

Definition at line 61 of file spec.c.

References PART_BUILDARCHITECTURES, PART_CHANGELOG, PART_DESCRIPTION, PART_POSTUN, PART_PREUN, PART_TRIGGERIN, PART_TRIGGERUN, and PART_VERIFYSCRIPT.

struct OpenFileInfo* newOpenFileInfo | ( | void |  | ) |

| Definition at line 542 of file spec.c. Referenced by forceIncludeFile, and parseSpec.

Package newPackage | ( | Spec | spec | ) |

Create and initialize package control structure.

Parameters:

  spec | spec file control structure

Returns:
  package control structure

Definition at line 102 of file spec.c.

Spec newSpec | ( | void |  | ) |

Create and initialize Spec structure.

Returns:
  spec spec file control structure

Definition at line 406 of file spec.c.

Referenced by parseSpec, and readRPM.

int packageBinaries | ( | Spec | spec | ) |

Generate binary package(s).

Parameters:

  spec | spec file control structure

Returns:
  0 on success

Definition at line 689 of file pack.c.

Referenced by buildSpec.

int packageSources | ( | Spec | spec | ) |

Generate source package.

Parameters:

  spec | spec file control structure

Returns:
  0 on success

Definition at line 788 of file pack.c.

Referenced by buildSpec.

int parseBuildInstallClean | ( | Spec | spec,
|  | rpmParseState | parsePart
| ) |

Parse %build/%install/%clean section(s) of a spec file.

Parameters:

  spec | spec file control structure
  parsePart | current rpmParseState

Returns:
  >= 0 next rpmParseState, < 0 on error

Definition at line 12 of file parseBuildInstallClean.c.

Referenced by parseSpec.

int parseChangelog | ( | Spec | spec | ) |

Parse %changelog section of a spec file.

Parameters:

  spec | spec file control structure

Returns:
  >= 0 next rpmParseState, < 0 on error

Definition at line 205 of file parseChangelog.c.

Referenced by parseSpec.

int parseDescription | ( | Spec | spec | ) |

Parse %description section of a spec file.

Parameters:

  spec | spec file control structure

Returns:
  >= 0 next rpmParseState, < 0 on error

Definition at line 29 of file parseDescription.c.

References RPMBUILD_CLEAN, RPMBUILD_FILECHECK, RPMBUILD_PACKAGEBINARY, RPMBUILD_PACKAGESOURCE, RPMBUILD_RMBUILD, and RPMBUILD_RMSOURCE.

Referenced by parseSpec.

int parseExpressionBoolean | ( | Spec | spec,
|  | const char * | expr
| ) |

Evaluate boolean expression.

Parameters:

  spec | spec file control structure
  expr | expression to parse

Returns:

Definition at line 674 of file expression.c.

Referenced by readLine.

char* parseExpressionString | ( | Spec | spec,
|  | const char * | expr
| ) |

Evaluate string expression.

Parameters:

  spec | spec file control structure
  expr | expression to parse

Returns:

Definition at line 721 of file expression.c.

int parseFiles | ( | Spec | spec | ) |

Parse %files section of a spec file.

Parameters:

  spec | spec file control structure

Returns:
  >= 0 next rpmParseState, < 0 on error

Definition at line 26 of file parseFiles.c.

References RPMBUILD_BUILD, RPMBUILD_INSTALL, and RPMBUILD_PREP.

Referenced by parseSpec.

int parseNoSource | ( | Spec | spec,
|  | const char * | field,
|  | int | tag
| ) |

Parameters:

  spec | spec file control structure

Definition at line 202 of file spec.c.

int parseNum | ( | const char * | line,
|  | int * | res
| ) |

Parse a number.

Parameters:

  line | from spec file

Return values:

  res | pointer to int

Returns:
  0 on success, 1 on failure

Definition at line 9 of file misc.c.

Referenced by addSource, doPatchMacro, doSetupMacro, handlePreambleTag, and parseNoSource.

int parsePreamble | ( | Spec | spec,
|  | int | initialPackage
| ) |

Parse tags from preamble of a spec file.

Parameters:

  spec | spec file control structure
  initialPackage |

Returns:
  >= 0 next rpmParseState, < 0 on error

Definition at line 835 of file parsePreamble.c.

Referenced by parseSpec.

int parsePrep | ( | Spec | spec | ) |

Parse %prep section of a spec file.

Parameters:

  spec | spec file control structure

Returns:
  >= 0 next rpmParseState, < 0 on error

Definition at line 543 of file parsePrep.c.

Referenced by parseSpec.

int parseRCPOT | ( | Spec | spec,
|  | Package | pkg,
|  | const char * | field,
|  | int | tag,
|  | int | index,
|  | rpmsenseFlags | tagflags
| ) |

Parse dependency relations from spec file and/or autogenerated output buffer.

Parameters:

  spec | spec file control structure
  pkg | package control structure
  field | text to parse (e.g. "foo < 0:1.2-3, bar = 5:6.7")
  tag | tag, identifies type of dependency
  index | (0 always)
  tagflags | dependency flags already known from context

Returns:
  0 on success, RPMERR_BADSPEC on failure

Definition at line 35 of file parseReqs.c.

References RPMBUILD_RMSPEC, and RPMBUILD_STRINGBUF.

Referenced by generateDepends, handlePreambleTag, and parseScript.

int parseScript | ( | Spec | spec,
|  | int | parsePart
| ) |

Parse %pre et al scriptlets from a spec file.

Parameters:

  spec | spec file control structure
  parsePart | current rpmParseState

Returns:
  >= 0 next rpmParseState, < 0 on error

Definition at line 69 of file parseScript.c.

References PART_LAST, and PART_TRIGGERPOSTUN.

Referenced by parseSpec.

int parseSpec | ( | Spec * | specp,
|  | const char * | specFile,
|  | const char * | rootURL,
|  | const char * | buildRootURL,
|  | int | recursing,
|  | const char * | passPhrase,
|  | char * | cookie,
|  | int | anyarch,
|  | int | force
| ) |

Parse spec file into spec control structure.

Return values:

  specp | spec file control structure

Parameters:

  specFile |
  rootURL |
  buildRootURL |
  recursing | parse is recursive?
  passPhrase |
  cookie |
  anyarch |
  force |

Returns:

Definition at line 377 of file parseSpec.c.

Referenced by buildForTarget, and parseSpec.

int processBinaryFiles | ( | Spec | spec,
|  | int | installSpecialDoc,
|  | int | test
| ) |

Post-build processing for binary package(s).

Parameters:

  spec | spec file control structure
  installSpecialDoc |
  test | don't execute scripts or package if testing

Returns:
  0 on success

Definition at line 2645 of file files.c.

Referenced by buildSpec.

int processSourceFiles | ( | Spec | spec | ) |

Post-build processing for source package.

Parameters:

  spec | spec file control structure

Returns:
  0 on success

Definition at line 2068 of file files.c.

Referenced by buildSpec.

int readLine | ( | Spec | spec,
|  | int | strip
| ) |

Read next line from spec file.

Parameters:

  spec | spec file control structure
  strip | truncate comments?

Returns:
  0 on success, 1 on EOF, <0 on error

Definition at line 179 of file parseSpec.c.

Referenced by parseBuildInstallClean, parseChangelog, parseDescription, parseFiles, parsePreamble, parsePrep, and parseScript.

int rpmlibNeedsFeature | ( | Header | h,
|  | const char * | feature,
|  | const char * | featureEVR
| ) |

Add rpmlib feature dependency.

Parameters:

  h | header
  feature | rpm feature name (i.e. "rpmlib(Foo)" for feature Foo)
  featureEVR | rpm feature epoch/version/release

Returns:
  0 always

Definition at line 120 of file reqprov.c.

References int_32.

Referenced by genCpioListAndHeader, parseRCPOT, parseScript, processPackageFiles, and writeRPM.

spectag stashSt | ( | Spec | spec,
|  | Header | h,
|  | int | tag,
|  | const char * | lang
| ) |

Parameters:

  spec | spec file control structure

Definition at line 401 of file parsePreamble.c.

Referenced by handlePreambleTag, and parseDescription.

## Variable Documentation

Spec(* freeSpecVec)(Spec spec) | ( | Spec | spec | ) |

Todo:
  Eliminate linkage loop into librpmbuild.a

Definition at line 206 of file rpmspec.h.

int(* parseSpecVec)(Spec * specp, const char * specFile, const char * rootdir, const char * buildRoot, int recursing, const char * passPhrase, char * cookie, int anyarch, int force) | ( | Spec * | specp,
|  | const char * | specFile,
|  | const char * | rootdir,
|  | const char * | buildRoot,
|  | int | recursing,
|  | const char * | passPhrase,
|  | char * | cookie,
|  | int | anyarch,
|  | int | force
| ) |

Todo:
  Eliminate linkage loop into librpmbuild.a

Definition at line 492 of file rpmbuild.h.