# 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 | rpmspec.h
| The Spec and Package data structures used during build.

file | spec.c
| Handle spec data structure.

file | rpmcli.h

## Data Structures

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

## 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

| Referenced by closeSpec(), copyNextLine(), forceIncludeFile(), and readLine().

typedef struct PackageStruct* Package

Definition at line 178 of file rpmspec.h.

Referenced by addSource(), addTriggerIndex(), doRmSource(), freePackage(), freePackages(), generateDepends(), handlePreambleTag(), lookupPackage(), newPackage(), packageBinaries(), parseDescription(), parseFiles(), parseForSimple(), parsePreamble(), parseRCPOT(), parseScript(), parseSpec(), printNewSpecfile(), processBinaryFile(), processBinaryFiles(), processPackageFiles(), processScriptFiles(), processSourceFiles(), and rpmQueryVerify().

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 isPart(), parseBuildInstallClean(), and parseSpec().

typedef struct SpecStruct* Spec

Definition at line 11 of file rpmspec.h.

Referenced by addFileToArrayTag(), addFileToTag(), addFileToTagAux(), addReqProv(), addSource(), buildForTarget(), buildSpec(), checkForValidArchitectures(), closeSpec(), copyNextLine(), doPatch(), doPatchMacro(), doRmSource(), doScript(), doSetupMacro(), doUntar(), findPreambleTag(), findSource(), forceIncludeFile(), freeSpec(), generateDepends(), genSourceRpmName(), handlePreambleTag(), initSourceHeader(), lookupPackage(), newPackage(), newSpec(), packageBinaries(), packageSources(), parseBuildInstallClean(), parseChangelog(), parseDescription(), parseExpressionBoolean(), parseExpressionString(), parseFiles(), parseForSimple(), parseNoSource(), parsePreamble(), parsePrep(), parseRCPOT(), parseScript(), parseSpec(), printNewSpecfile(), processBinaryFiles(), processPackageFiles(), processScriptFiles(), processSourceFiles(), readLine(), readRPM(), rewriteRPM(), rpmQueryVerify(), and stashSt().

typedef struct speclines_s * speclines

| Referenced by freeSl(), newSl(), printNewSpecfile(), and readLine().

typedef struct spectag_s * spectag

| Referenced by freeSt(), parseDescription(), printNewSpecfile(), and stashSt().

typedef struct spectags_s * spectags

| Referenced by freeSt(), newSt(), printNewSpecfile(), and stashSt().

## 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.

References Header, headerAddEntry(), headerAppendEntry(), headerIsEntry(), int_32, RPM_INT32_TYPE, RPM_STRING_ARRAY_TYPE, RPMTAG_CHANGELOGNAME, RPMTAG_CHANGELOGTEXT, and RPMTAG_CHANGELOGTIME.

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.

References _ALL_REQUIRES_MASK, Header, headerAddOrAppendEntry(), HFD_t, HGE_t, isDependsMULTILIB, RPM_INT32_TYPE, RPM_STRING_ARRAY_TYPE, RPMSENSE_ANY, RPMSENSE_CONFLICTS, RPMSENSE_FIND_PROVIDES, RPMSENSE_MULTILIB, RPMSENSE_OBSOLETES, RPMSENSE_PREREQ, RPMSENSE_PROVIDES, RPMSENSE_SENSEMASK, RPMSENSE_TRIGGER, rpmsenseFlags, rpmTag, RPMTAG_CONFLICTFLAGS, RPMTAG_CONFLICTNAME, RPMTAG_CONFLICTVERSION, RPMTAG_OBSOLETEFLAGS, RPMTAG_OBSOLETENAME, RPMTAG_OBSOLETEVERSION, RPMTAG_PROVIDEFLAGS, RPMTAG_PROVIDENAME, RPMTAG_PROVIDEVERSION, RPMTAG_REQUIREFLAGS, RPMTAG_REQUIRENAME, RPMTAG_REQUIREVERSION, RPMTAG_TRIGGERFLAGS, RPMTAG_TRIGGERINDEX, RPMTAG_TRIGGERNAME, RPMTAG_TRIGGERVERSION, rpmTagType, and Spec.

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 245 of file spec.c.

References _, _free(), addMacro(), PackageStruct::icon, SpecStruct::line, SpecStruct::lineNum, SpecStruct::macros, Source::next, SpecStruct::numSources, Package, parseNum(), RMIL_SPEC, RPMBUILD_ISICON, RPMBUILD_ISPATCH, RPMBUILD_ISSOURCE, RPMERR_BADSPEC, rpmError, rpmGetPath(), RPMTAG_ICON, RPMTAG_PATCH, RPMTAG_SOURCE, SKIPSPACE, SpecStruct::sources, Spec, xmalloc(), and xstrdup().

Referenced by handlePreambleTag().

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

Return build hostname.

Returns:
  build hostname

Definition at line 179 of file names.c.

References _, RPMMESS_WARNING, and rpmMessage.

Referenced by headerInject(), packageBinaries(), packageSources(), and writeRPM().

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 _, SpecStruct::BACount, SpecStruct::BASpecs, doRmSource(), doScript(), packageBinaries(), packageSources(), processBinaryFiles(), processSourceFiles(), SpecStruct::recursing, RPMBUILD_BUILD, RPMBUILD_CLEAN, RPMBUILD_FILECHECK, RPMBUILD_INSTALL, RPMBUILD_PACKAGEBINARY, RPMBUILD_PACKAGESOURCE, RPMBUILD_PREP, RPMBUILD_RMBUILD, RPMBUILD_RMSOURCE, RPMBUILD_RMSPEC, rpmlogGetNrecs(), rpmlogPrint(), RPMMESS_NORMAL, rpmMessage, Spec, SpecStruct::specFile, and Unlink().

Referenced by buildForTarget().

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.

References _free(), Fclose(), OpenFileInfo::fd, OpenFileInfo::fileName, SpecStruct::fileStack, OpenFileInfo::next, OFI_t, and Spec.

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 _, _build_debug, _free(), addMacro(), SpecStruct::build, SpecStruct::buildSubdir, SpecStruct::clean, delMacro(), errno, Fclose(), FD_t, fdGetFp(), Fdopen(), Ferror(), Fileno(), getStringBuf(), urlinfo_s::host, SpecStruct::install, SpecStruct::macros, makeTempFile(), poptParseArgvString(), SpecStruct::prep, RMIL_SPEC, SpecStruct::rootURL, RPMBUILD_BUILD, RPMBUILD_CLEAN, RPMBUILD_INSTALL, RPMBUILD_PREP, RPMBUILD_RMBUILD, RPMBUILD_STRINGBUF, RPMERR_SCRIPT, rpmError, rpmExpand(), rpmGenPath(), RPMMESS_NORMAL, rpmMessage, Spec, strerror(), StringBuf, Unlink(), URL_IS_FTP, URL_IS_HTTP, URL_IS_PATH, URL_IS_UNKNOWN, urlinfo, urlPath(), urlSplit(), and urlinfo_s::urltype.

Referenced by buildSpec(), and processPackageFiles().

void freeNames | ( | void |  | ) |

| Destroy uid/gid caches. Definition at line 29 of file names.c. References _free(), gid_used, gnames, uid_used, and unames. Referenced by main().

Package freePackage | ( | Package | pkg | ) |

Destroy package control structure.

Parameters:

  pkg | package control structure

Returns:
  NULL

Definition at line 148 of file spec.c.

References _free(), PackageStruct::cpioList, PackageStruct::fileFile, PackageStruct::fileList, freeFi(), freeSources(), freeStringBuf(), freeTriggerFiles(), PackageStruct::header, headerFree(), PackageStruct::icon, Package, PackageStruct::postInFile, PackageStruct::postUnFile, PackageStruct::preInFile, PackageStruct::preUnFile, PackageStruct::specialDoc, TFI_t, PackageStruct::triggerFiles, and PackageStruct::verifyFile.

Referenced by freePackages().

Package freePackages | ( | Package | packages | ) |

Destroy all packages associated with spec file.

Parameters:

  packages | package control structure chain

Returns:
  NULL

Definition at line 176 of file spec.c.

References freePackage(), PackageStruct::next, and Package.

Referenced by freeSpec().

Spec freeSpec | ( | Spec | spec | ) |

Destroy Spec structure.

Parameters:

  spec | spec file control structure

Returns:
  NULL always

Definition at line 462 of file spec.c.

References _free(), SpecStruct::BACount, SpecStruct::BANames, SpecStruct::BASpecs, SpecStruct::build, SpecStruct::buildRestrictions, SpecStruct::buildRootURL, SpecStruct::buildSubdir, SpecStruct::clean, closeSpec(), SpecStruct::cookie, OpenFileInfo::fileName, SpecStruct::fileStack, freeFi(), freePackages(), freeSl(), freeSources(), freeSt(), freeStringBuf(), headerFree(), SpecStruct::install, OpenFileInfo::next, ReadLevelEntry::next, SpecStruct::packages, SpecStruct::passPhrase, SpecStruct::prep, SpecStruct::readStack, SpecStruct::recursing, SpecStruct::rootURL, SpecStruct::sl, SpecStruct::sourceCpioList, SpecStruct::sourceHeader, SpecStruct::sourceRpmName, SpecStruct::sources, Spec, SpecStruct::specFile, SpecStruct::st, and TFI_t.

Referenced by buildForTarget(), main(), parseSpec(), and readRPM().

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

Return build time stamp.

Returns:
  build time stamp

Definition at line 170 of file names.c.

References int_32.

Referenced by headerInject(), packageBinaries(), packageSources(), and writeRPM().

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

Return cached group id.

Todo:
  Implement using hash.

Parameters:

  group | name

Returns:
  cached gid

Definition at line 148 of file names.c.

References _, gid_used, gids, gnames, rpmlog(), and xstrdup().

Referenced by genCpioListAndHeader().

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

Return cached group name from group id.

Todo:
  Implement using hash.

Parameters:

  group | id

Returns:
  cached group name

Definition at line 104 of file names.c.

References _, gid_used, gids, gnames, rpmlog(), and xstrdup().

Referenced by addFile(), checkOwners(), and processSourceFiles().

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

Return cached group name.

Todo:
  Implement using hash.

Parameters:

  group | name

Returns:
  cached group name

Definition at line 126 of file names.c.

References _, gid_used, gids, gnames, rpmlog(), and xstrdup().

Referenced by addFile().

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

Return cached user id.

Todo:
  Implement using hash.

Parameters:

  user | name

Returns:
  cached uid

Definition at line 82 of file names.c.

References _, rpmlog(), uid_used, uids, unames, and xstrdup().

Referenced by genCpioListAndHeader().

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

Return cached user name from user id.

Todo:
  Implement using hash.

Parameters:

  user | id

Returns:
  cached user name

Definition at line 38 of file names.c.

References _, rpmlog(), uid_used, uids, unames, and xstrdup().

Referenced by addFile(), checkOwners(), headerInject(), and processSourceFiles().

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

Return cached user name.

Todo:
  Implement using hash.

Parameters:

  user | name

Returns:
  cached user name

Definition at line 60 of file names.c.

References _, rpmlog(), uid_used, uids, unames, and xstrdup().

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.

References SKIPSPACE.

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 2008 of file files.c.

References SpecStruct::BACount, SpecStruct::BANames, SpecStruct::buildRestrictions, PackageStruct::header, HEADER_I18NTABLE, headerAddEntry(), headerFreeData(), headerFreeIterator(), headerInitIterator(), HeaderIterator, headerNew(), headerNextIterator(), int_32, SpecStruct::packages, RPM_STRING_ARRAY_TYPE, RPMTAG_ARCH, RPMTAG_BUILDARCHS, RPMTAG_CHANGELOGNAME, RPMTAG_CHANGELOGTEXT, RPMTAG_CHANGELOGTIME, RPMTAG_DESCRIPTION, RPMTAG_DISTRIBUTION, RPMTAG_DISTURL, RPMTAG_EPOCH, RPMTAG_GROUP, RPMTAG_LICENSE, RPMTAG_NAME, RPMTAG_OS, RPMTAG_PACKAGER, RPMTAG_RELEASE, RPMTAG_SUMMARY, RPMTAG_URL, RPMTAG_VENDOR, RPMTAG_VERSION, SpecStruct::sourceHeader, and Spec.

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 initParts(), PartRec::len, PART_NONE, partList, rpmParseState, PartRec::token, xisspace(), and xstrncasecmp().

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 60 of file spec.c.

References alloca(), PackageStruct::header, headerNVR(), PackageStruct::next, Package, SpecStruct::packages, PART_SUBNAME, and Spec.

Referenced by parseDescription(), parseFiles(), parsePreamble(), and parseScript().

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

| Definition at line 541 of file spec.c. References xmalloc(). 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 101 of file spec.c.

References headerNew(), PackageStruct::next, Package, SpecStruct::packages, Spec, and xcalloc().

Referenced by parsePreamble(), and readRPM().

Spec newSpec | ( | void |  | ) |

Create and initialize Spec structure.

Returns:
  spec spec file control structure

Definition at line 405 of file spec.c.

References headerNew(), newSl(), newSt(), rpmGlobalMacroContext, Spec, and xcalloc().

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.

References _, _free(), buildHost(), SpecStruct::cookie, copyTags, PackageStruct::cpioList, CSA_t, errno, fdFree, fdNew, PackageStruct::fileList, genSourceRpmName(), getBuildTime(), PackageStruct::header, headerAddEntry(), headerCopyTags(), headerNVR(), headerSprintf(), Mkdir(), PackageStruct::next, Package, SpecStruct::packages, SpecStruct::passPhrase, processScriptFiles(), providePackageNVR(), RPM_INT32_TYPE, RPM_STRING_TYPE, RPMERR_BADFILENAME, rpmError, rpmExpand(), rpmGetPath(), rpmHeaderFormats, RPMLEAD_BINARY, RPMTAG_BUILDHOST, RPMTAG_BUILDTIME, RPMTAG_COOKIE, RPMTAG_OPTFLAGS, RPMTAG_RPMVERSION, RPMTAG_SOURCERPM, rpmTagTable, SpecStruct::sourceRpmName, Spec, Stat(), strerror(), VERSION, and writeRPM().

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.

References _free(), buildHost(), SpecStruct::cookie, CSA_t, fdFree, fdNew, genSourceRpmName(), getBuildTime(), headerAddEntry(), SpecStruct::passPhrase, RPM_INT32_TYPE, RPM_STRING_TYPE, rpmGetPath(), RPMLEAD_SOURCE, RPMTAG_BUILDHOST, RPMTAG_BUILDTIME, RPMTAG_RPMVERSION, SpecStruct::sourceCpioList, SpecStruct::sourceHeader, SpecStruct::sourceRpmName, Spec, VERSION, and writeRPM().

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.

References _, appendStringBuf, SpecStruct::build, SpecStruct::clean, SpecStruct::install, isPart(), SpecStruct::line, SpecStruct::lineNum, newStringBuf(), PART_BUILD, PART_CLEAN, PART_INSTALL, PART_NONE, readLine(), RPMERR_BADSPEC, rpmError, rpmParseState, Spec, StringBuf, and STRIP_NOTHING.

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.

References addChangelog(), appendStringBuf, freeStringBuf(), PackageStruct::header, isPart(), SpecStruct::line, newStringBuf(), SpecStruct::packages, PART_NONE, readLine(), Spec, StringBuf, and STRIP_COMMENTS.

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 _, _free(), appendLineStringBuf, freeStringBuf(), getStringBuf(), PackageStruct::header, headerAddI18NString(), headerIsEntry(), isPart(), lang, SpecStruct::line, SpecStruct::lineNum, lookupPackage(), name, newStringBuf(), noLang, optionsTable, Package, PART_NAME, PART_NONE, PART_SUBNAME, POPT_BADOPTION_NOALIAS, poptBadOption(), poptContext, poptFreeContext(), poptGetArg(), poptGetContext(), poptGetNextOpt(), poptParseArgvString(), poptPeekArg(), poptStrerror(), readLine(), RPMBUILD_DEFAULT_LANG, RPMERR_BADSPEC, rpmError, RPMTAG_DESCRIPTION, Spec, spectag, stashSt(), StringBuf, STRIP_COMMENTS, STRIP_TRAILINGSPACE, stripTrailingBlanksStringBuf(), and spectag_s::t_nlines.

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.

References _, _free(), _value::data, DEBUG, doLogical(), _parseState::nextToken, _parseState::p, rdToken(), RPMERR_BADSPEC, rpmError, _parseState::spec, Spec, _parseState::str, TOK_EOF, _parseState::tokenValue, _value::type, Value, valueFree(), and xstrdup().

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.

References _, _free(), _value::data, DEBUG, doLogical(), _parseState::nextToken, _parseState::p, rdToken(), RPMERR_BADSPEC, rpmError, _parseState::spec, Spec, _parseState::str, TOK_EOF, _parseState::tokenValue, _value::type, Value, valueFree(), and xstrdup().

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 _, _free(), appendStringBuf, file, PackageStruct::fileFile, PackageStruct::fileList, isPart(), SpecStruct::line, SpecStruct::lineNum, lookupPackage(), name, newStringBuf(), optionsTable, Package, PART_NAME, PART_NONE, PART_SUBNAME, POPT_BADOPTION_NOALIAS, poptBadOption(), poptContext, poptFreeContext(), poptGetArg(), poptGetContext(), poptGetNextOpt(), poptParseArgvString(), poptPeekArg(), poptStrerror(), readLine(), RPMERR_BADSPEC, rpmError, rpmGetPath(), Spec, and STRIP_COMMENTS.

Referenced by parseSpec().

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

Parameters:

  spec | spec file control structure

Definition at line 201 of file spec.c.

References _, findSource(), SpecStruct::lineNum, parseNum(), RPMBUILD_ISNO, RPMBUILD_ISPATCH, RPMBUILD_ISSOURCE, RPMERR_BADSPEC, rpmError, RPMTAG_NOSOURCE, SKIPNONWHITE, SKIPWHITE, and Spec.

Referenced by handlePreambleTag().

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.

References _, SpecStruct::anyarch, SpecStruct::BANames, SpecStruct::buildRootURL, checkForDuplicates(), checkForRequired(), checkForValidArchitectures(), copyTagsDuringParse, fillOutMainPackage(), findPreambleTag(), SpecStruct::gotBuildRootURL, handlePreambleTag(), PackageStruct::header, headerAddEntry(), headerCopyTags(), headerNVR(), int_32, isPart(), SpecStruct::line, SpecStruct::lineNum, lookupPackage(), newPackage(), Package, SpecStruct::packages, parseSimplePart(), PART_BUILDARCHITECTURES, PART_NONE, PART_SUBNAME, readLine(), SpecStruct::recursing, RPM_STRING_TYPE, RPMERR_BADSPEC, rpmError, RPMTAG_NAME, SKIPSPACE, Spec, STRIP_COMMENTS, and STRIP_TRAILINGSPACE.

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.

References _, appendLineStringBuf, appendStringBuf, doPatchMacro(), doSetupMacro(), SpecStruct::force, freeSplitString(), freeStringBuf(), getStringBuf(), isPart(), SpecStruct::line, SpecStruct::lineNum, newStringBuf(), PART_NONE, SpecStruct::prep, readLine(), RPMERR_BADSPEC, rpmError, Spec, splitString(), StringBuf, and STRIP_NOTHING.

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 _, _free(), addReqProv(), SpecStruct::buildRestrictions, PackageStruct::header, Header, SpecStruct::line, SpecStruct::lineNum, Package, ReqComparisons, RPMERR_BADSPEC, rpmError, rpmExpandNumeric(), rpmlibNeedsFeature(), RPMSENSE_ANY, RPMSENSE_CONFLICTS, RPMSENSE_OBSOLETES, RPMSENSE_PREREQ, RPMSENSE_PROVIDES, RPMSENSE_SENSEMASK, RPMSENSE_TRIGGERIN, RPMSENSE_TRIGGERPOSTUN, RPMSENSE_TRIGGERUN, rpmsenseFlags, RPMTAG_BUILDCONFLICTS, RPMTAG_BUILDPREREQ, RPMTAG_BUILDREQUIRES, RPMTAG_CONFLICTFLAGS, RPMTAG_OBSOLETEFLAGS, RPMTAG_PREREQ, RPMTAG_PROVIDEFLAGS, RPMTAG_REQUIREFLAGS, RPMTAG_TRIGGERIN, RPMTAG_TRIGGERPOSTUN, RPMTAG_TRIGGERUN, SKIPNONWHITE, SKIPWHITE, Spec, ReqComp::token, xisalnum(), and xmalloc().

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 _, _free(), addReqProv(), addTriggerIndex(), appendStringBuf, file, freeStringBuf(), getStringBuf(), PackageStruct::header, headerAddEntry(), headerIsEntry(), isPart(), SpecStruct::line, SpecStruct::lineNum, lookupPackage(), name, newStringBuf(), optionsTable, Package, parseRCPOT(), PART_NAME, PART_NONE, PART_POST, PART_POSTUN, PART_PRE, PART_PREUN, PART_SUBNAME, PART_TRIGGERIN, PART_TRIGGERPOSTUN, PART_TRIGGERUN, PART_VERIFYSCRIPT, POPT_BADOPTION_NOALIAS, poptBadOption(), poptContext, poptFreeContext(), poptGetArg(), poptGetContext(), poptGetNextOpt(), poptParseArgvString(), poptPeekArg(), poptStrerror(), PackageStruct::postInFile, PackageStruct::postUnFile, PackageStruct::preInFile, PackageStruct::preUnFile, prog, readLine(), RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, RPMERR_BADSPEC, rpmError, rpmlibNeedsFeature(), RPMSENSE_INTERP, RPMSENSE_SCRIPT_POST, RPMSENSE_SCRIPT_POSTUN, RPMSENSE_SCRIPT_PRE, RPMSENSE_SCRIPT_PREUN, RPMSENSE_SCRIPT_VERIFY, RPMTAG_POSTIN, RPMTAG_POSTINPROG, RPMTAG_POSTUN, RPMTAG_POSTUNPROG, RPMTAG_PREIN, RPMTAG_PREINPROG, RPMTAG_PREUN, RPMTAG_PREUNPROG, RPMTAG_TRIGGERIN, RPMTAG_TRIGGERPOSTUN, RPMTAG_TRIGGERSCRIPTPROG, RPMTAG_TRIGGERSCRIPTS, RPMTAG_TRIGGERUN, RPMTAG_VERIFYSCRIPT, RPMTAG_VERIFYSCRIPTPROG, Spec, StringBuf, STRIP_NOTHING, stripTrailingBlanksStringBuf(), PackageStruct::verifyFile, and xstrdup().

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.

References _, _debug, _free(), addMacro(), SpecStruct::anyarch, SpecStruct::BACount, SpecStruct::BANames, SpecStruct::BASpecs, SpecStruct::buildRootURL, closeSpec(), SpecStruct::cookie, delMacro(), OpenFileInfo::fileName, SpecStruct::fileStack, SpecStruct::force, freeSpec(), SpecStruct::gotBuildRootURL, PackageStruct::header, headerAddEntry(), headerIsEntry(), headerNVR(), SpecStruct::macros, newOpenFileInfo(), newSpec(), PackageStruct::next, Package, SpecStruct::packages, parseBuildInstallClean(), parseChangelog(), parseDescription(), parseFiles(), parsePreamble(), parsePrep(), parseScript(), PART_BUILD, PART_BUILDARCHITECTURES, PART_CHANGELOG, PART_CLEAN, PART_DESCRIPTION, PART_FILES, PART_INSTALL, PART_LAST, PART_NONE, PART_POST, PART_POSTUN, PART_PRE, PART_PREAMBLE, PART_PREP, PART_PREUN, PART_TRIGGERIN, PART_TRIGGERPOSTUN, PART_TRIGGERUN, PART_VERIFYSCRIPT, SpecStruct::passPhrase, SpecStruct::recursing, RMIL_RPMRC, RMIL_SPEC, SpecStruct::rootURL, RPM_MACHTABLE_BUILDARCH, RPM_STRING_TYPE, RPMERR_BADSPEC, rpmError, rpmExpand(), rpmExpandNumeric(), rpmGetArchInfo(), rpmGetMachine(), rpmGetOsInfo(), rpmGetPath(), rpmMachineScore(), rpmParseState, rpmSetMachine(), RPMTAG_ARCH, RPMTAG_DESCRIPTION, RPMTAG_OS, RPMTAG_PLATFORM, RPMTAG_RHNPLATFORM, Spec, SpecStruct::specFile, SpecStruct::timeCheck, urlPath(), xcalloc(), and xstrdup().

Referenced by buildForTarget(), and main().

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 2648 of file files.c.

References _, PackageStruct::cpioList, PackageStruct::fileList, generateDepends(), PackageStruct::header, headerIsEntry(), headerNVR(), PackageStruct::next, Package, SpecStruct::packages, printDeps(), processPackageFiles(), RPMMESS_NORMAL, rpmMessage, RPMTAG_MULTILIBS, and Spec.

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 2071 of file files.c.

References _, _free(), appendLineStringBuf, FileList_s::buildRootURL, FileListRec_s::diskURL, errno, FileList_s::fileList, FileListRec, FileList_s::fileListRecsUsed, FileListRec_s::fileURL, FileListRec_s::fl_st, FileListRec_s::flags, freeFileList(), freeSplitString(), freeStringBuf(), genCpioListAndHeader(), getGname(), getStringBuf(), getUname(), FileListRec_s::gname, headerAddOrAppendEntry(), PackageStruct::icon, initSourceHeader(), FileListRec_s::langs, newStringBuf(), PackageStruct::next, Source::next, SpecStruct::numSources, Package, SpecStruct::packages, FileList_s::prefix, FileList_s::processingFailed, RPM_INT32_TYPE, RPM_STRING_ARRAY_TYPE, RPMBUILD_ISNO, RPMBUILD_ISPATCH, RPMBUILD_ISSOURCE, RPMERR_BADSPEC, rpmError, RPMFILE_GHOST, RPMFILE_SPECFILE, rpmGetPath(), RPMTAG_NOPATCH, RPMTAG_NOSOURCE, RPMTAG_PATCH, RPMTAG_SOURCE, RPMVERIFY_ALL, SKIPSPACE, SpecStruct::sourceCpioList, SpecStruct::sourceHeader, SpecStruct::sources, Spec, SpecStruct::specFile, splitString(), Stat(), strerror(), StringBuf, TFI_t, FileList_s::totalFileSize, FileListRec_s::uname, urlPath(), FileListRec_s::verifyFlags, xcalloc(), and xstrdup().

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.

References _, _free(), copyNextLine(), Fclose(), OpenFileInfo::fd, fdGetFp(), Ferror(), OpenFileInfo::fileName, SpecStruct::fileStack, Fopen(), forceIncludeFile(), Fstrerror(), SpecStruct::line, OpenFileInfo::lineNum, SpecStruct::lineNum, matchTok(), OpenFileInfo::next, ReadLevelEntry::next, OFI_t, parseExpressionBoolean(), OpenFileInfo::readBuf, ReadLevelEntry::reading, OpenFileInfo::readPtr, SpecStruct::readStack, RPMERR_BADSPEC, RPMERR_UNMATCHEDIF, rpmError, rpmExpand(), rpmGetArchInfo(), rpmGetOsInfo(), SKIPNONSPACE, SKIPSPACE, SpecStruct::sl, speclines_s::sl_lines, speclines_s::sl_nalloc, speclines_s::sl_nlines, Spec, speclines, xisspace(), xmalloc(), xrealloc(), and xstrdup().

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 addReqProv(), alloca(), Header, RPMSENSE_EQUAL, RPMSENSE_LESS, RPMSENSE_RPMLIB, and stpcpy().

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.

References Header, HGE_t, SpecStruct::lineNum, RPMBUILD_DEFAULT_LANG, RPMTAG_NAME, Spec, spectag, spectags, SpecStruct::st, spectags_s::st_nalloc, spectags_s::st_ntags, spectags_s::st_t, spectag_s::t_lang, spectag_s::t_msgid, spectag_s::t_nlines, spectag_s::t_startx, spectag_s::t_tag, tagName(), xrealloc(), and xstrdup().

Referenced by handlePreambleTag(), and parseDescription().

## Variable Documentation

Spec(* freeSpecVec)(Spec spec)

Todo:
  Eliminate linkage loop into librpmbuild.a

Definition at line 206 of file rpmspec.h.

Referenced by main(), and rpmQueryVerify().

int(* parseSpecVec)(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.

Referenced by main(), and rpmQueryVerify().