parsePrep.c File Reference
RPMBUILD.

Parse prep section from spec file. More...

`#include "system.h"`
`#include <rpmio.h>`
`#include <rpmiotypes.h>`
`#include <argv.h>`
`#include <rpmcb.h>`
`#include <rpmurl.h>`
`#include <rpmbuild.h>`
`#include "misc.h"`
`#include "debug.h"`
Include dependency graph for parsePrep.c:

Go to the source code of this file.

## Functions

static rpmRC | checkOwners (const char *urlfn)
| Check that file owner and group are known. More...
static char * | doPatch (Spec spec, rpmuint32_t c, int strip, const char *db, int reverse, int removeEmpties, int fuzz, const char *subdir)
| Expand patchN macro into prep scriptlet. More...
static const char * | doUntar (Spec spec, rpmuint32_t c, int quietly)
| Expand setup macro into prep scriptlet. More...
static int | doSetupMacro (Spec spec, const char *line)
| Parse setup macro. More...
static rpmRC | doPatchMacro (Spec spec, const char *line)
| Parse patch line. More...
static void | prepFetchVerbose (struct Source *sp, struct stat *st)
static int | prepFetch (Spec spec)
| Check that all sources/patches/icons exist locally, fetching if necessary. More...
int | parsePrep (Spec spec, int verify)
| Parse %prep section of a spec file. More...

## Variables

static int | leaveDirs
static int | skipDefaultAction
static int | createDir
static int | quietly
static const char * | dirName = NULL
static struct poptOption | optionsTable []

## Detailed Description

Parse prep section from spec file.

Definition in file parsePrep.c.

## Function Documentation

static rpmRC checkOwners | ( | const char * | urlfn | ) |

static

Check that file owner and group are known.

Parameters

  urlfn | file url

Returns
  RPMRC_OK on success

Definition at line 46 of file parsePrep.c.

References _, errno, getGname(), getUname(), Lstat(), rpmlog(), RPMLOG_ERR, RPMRC_FAIL, and RPMRC_OK.

Referenced by doPatch(), and doUntar().

static char* doPatch | ( | Spec | spec,
|  | rpmuint32_t | c,
|  | int | strip,
|  | const char * | db,
|  | int | reverse,
|  | int | removeEmpties,
|  | int | fuzz,
|  | const char * | subdir
| ) |  |

static

Expand patchN macro into prep scriptlet.

Parameters

  spec | build info
  c | patch index
  strip | patch level (i.e. patch -p argument)
  db | saved file suffix (i.e. patch –suffix argument)
  reverse | include -R?
  removeEmpties | include -E?
  fuzz | include -F? (fuzz<0 means no)
  subdir | sub-directory (i.e patch -d argument);

Returns
  expanded patch macro (NULL on error)

Definition at line 79 of file parsePrep.c.

References _, _free(), checkOwners(), COMPRESSED_BZIP2, COMPRESSED_LZMA, COMPRESSED_LZOP, COMPRESSED_NOT, COMPRESSED_OTHER, COMPRESSED_XZ, COMPRESSED_ZIP, Source::flags, Spec_s::force, isCompressed(), Source::next, Source::num, rpmExpand(), RPMFILE_PATCH, rpmGenPath(), rpmGetPath(), rpmlog(), RPMLOG_ERR, Source::source, Spec_s::sources, stpcpy(), URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, urlPath(), and xstrdup().

Referenced by doPatchMacro().

static rpmRC doPatchMacro | ( | Spec | spec,
|  | const char * | line
| ) |  |

static

Parse patch line.

Parameters

  spec | build info
  line | current line from spec file

Returns
  RPMRC_OK on success

Definition at line 531 of file parsePrep.c.

References _, doPatch(), Spec_s::line, Spec_s::lineNum, parseNum(), Spec_s::prep, rpmExpandNumeric(), rpmiobAppend(), rpmlog(), RPMLOG_ERR, RPMRC_FAIL, and RPMRC_OK.

Referenced by parsePrep().

static int doSetupMacro | ( | Spec | spec,
|  | const char * | line
| ) |  |

static

Parse setup macro.

Todo:
  FIXME: Option -q broken when not immediately after setup.

Parameters

  spec | build info
  line | current line from spec file

Returns
  0 on success

Definition at line 367 of file parsePrep.c.

References _, _free(), addMacro(), Spec_s::buildSubdir, createDir, dirName, doUntar(), Package_s::header, headerNEVRA(), leaveDirs, Spec_s::lineNum, Spec_s::macros, Source::num, optionsTable, Spec_s::packages, parseNum(), Spec_s::prep, quietly, RMIL_SPEC, Spec_s::rootURL, rpmExpand(), rpmGenPath(), rpmiobAppend(), rpmiobFree(), rpmiobNew(), rpmiobStr(), rpmioMkpath(), rpmlog(), RPMLOG_ERR, RPMRC_FAIL, skipDefaultAction, snprintf(), urlPath(), and xstrdup().

Referenced by parsePrep().

static const char* doUntar | ( | Spec | spec,
|  | rpmuint32_t | c,
|  | int | quietly
| ) |  |

static

Expand setup macro into prep scriptlet.

Parameters

  spec | build info
  c | source index
  quietly | should -vv be omitted from tar?

Returns
  expanded setup macro (NULL on error)

Definition at line 215 of file parsePrep.c.

References _, _free(), _rpmmg_debug, checkOwners(), COMPRESSED_BZIP2, COMPRESSED_LZMA, COMPRESSED_LZOP, COMPRESSED_NOT, COMPRESSED_OTHER, COMPRESSED_XZ, COMPRESSED_ZIP, Source::flags, Spec_s::force, getSourceDir(), isCompressed(), Source::next, Source::num, quietly, RPMFILE_SOURCE, rpmGenPath(), rpmGetPath(), rpmIsVerbose, rpmlog(), RPMLOG_ERR, rpmmgFile(), rpmmgFree(), rpmmgNew(), Source::source, Spec_s::sources, stpcpy(), URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, urlPath(), and xstrdup().

Referenced by doSetupMacro().

static int prepFetch | ( | Spec | spec | ) |

static

Check that all sources/patches/icons exist locally, fetching if necessary.

Definition at line 698 of file parsePrep.c.

References _, _free(), rpmBuildArguments_s::buildAmount, errno, Source::flags, ftpStrerror(), Source::fullSource, getSourceDir(), Lstat(), Source::next, Source::num, prepFetchVerbose(), quietly, rpmBTArgs, RPMBUILD_FETCHSOURCE, rpmExpand(), RPMFILE_ICON, RPMFILE_PATCH, RPMFILE_SOURCE, rpmGenPath(), rpmIsVerbose, rpmlog(), RPMLOG_ERR, RPMLOG_NOTICE, rpmMkdirPath(), RPMRC_OK, Source::source, Spec_s::sources, and urlGetFile().

Referenced by parsePrep().

static void prepFetchVerbose | ( | struct Source * | sp,
|  | struct stat * | st
| ) |  |

static

Definition at line 666 of file parsePrep.c.

References _free(), rpmBuildArguments_s::buildAmount, Source::flags, Source::num, quietly, rpmBTArgs, RPMBUILD_FETCHSOURCE, RPMFILE_SOURCE, rpmIsVerbose, rpmlog(), RPMLOG_NOTICE, snprintf(), and Source::source.

Referenced by prepFetch().

## Variable Documentation

int createDir

static

Definition at line 26 of file parsePrep.c.

Referenced by doSetupMacro().

const char* dirName = NULL

static

Definition at line 28 of file parsePrep.c.

Referenced by doLookup(), doSetupMacro(), rpmalAllFileSatisfiesDepend(), rpmdbFindByFile(), and rpmGetFilesystemUsage().

int leaveDirs

static

Definition at line 24 of file parsePrep.c.

Referenced by doSetupMacro().

struct poptOption optionsTable[]

static

Initial value:
= {
{ NULL, 'a', POPT_ARG_STRING, NULL, 'a', NULL, NULL},
{ NULL, 'b', POPT_ARG_STRING, NULL, 'b', NULL, NULL},
{ NULL, 'c', 0, &createDir, 0, NULL, NULL},
{ NULL, 'D', 0, &leaveDirs, 0, NULL, NULL},
{ NULL, 'n', POPT_ARG_STRING, &dirName, 0, NULL, NULL},
{ NULL, 'T', 0, &skipDefaultAction, 0, NULL, NULL},
{ NULL, 'q', 0, &quietly, 0, NULL, NULL},
{ 0, 0, 0, 0, 0, NULL, NULL}
}

Definition at line 30 of file parsePrep.c.

Referenced by doSetupMacro().

int quietly

static

Definition at line 26 of file parsePrep.c.

Referenced by doSetupMacro(), doUntar(), prepFetch(), and prepFetchVerbose().

int skipDefaultAction

static

Definition at line 24 of file parsePrep.c.

Referenced by doSetupMacro().