# build/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.
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.
static const char * | doUntar (Spec spec, rpmuint32_t c, int quietly)
| Expand setup macro into prep scriptlet.
static int | doSetupMacro (Spec spec, const char *line)
| Parse setup macro.
static rpmRC | doPatchMacro (Spec spec, const char *line)
| Parse patch line.
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.
int | parsePrep (Spec spec, int verify)
| Parse %prep section of a spec file.

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

Definition at line 26 of file parsePrep.c.

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

int skipDefaultAction

Definition at line 24 of file parsePrep.c.

Referenced by doSetupMacro().