rpm  5.4.10
Data Structures | Macros | Typedefs | Functions | Variables
parsePreamble.c File Reference

Parse tags in global section from spec file. More...

#include "system.h"
#include <rpmio.h>
#include <rpmiotypes.h>
#include <rpmlog.h>
#include <rpmurl.h>
#include <argv.h>
#include <mire.h>
#include <rpmbuild.h>
#include "debug.h"
Include dependency graph for parsePreamble.c:

Go to the source code of this file.

Data Structures

struct  tokenBits_s
 
struct  optionalTag
 
struct  PreambleRec_s
 

Macros

#define _RPMEVR_INTERNAL
 
#define _RPMTAG_INTERNAL   /* XXX rpmTags->aTags */
 
#define SINGLE_TOKEN_ONLY
 

Typedefs

typedef struct tokenBits_stokenBits
 
typedef struct PreambleRec_sPreambleRec
 

Functions

static void addOrAppendListEntry (Header h, rpmTag tag, char *line)
 
static int parseSimplePart (Spec spec, char **Np, rpmParseState *flag)
 
static int parseYesNo (const char *s)
 
static int parseBits (const char *s, const tokenBits tokbits, rpmsenseFlags *bp)
 
static char * findLastChar (char *s)
 
static int isMemberInEntry (Header h, const char *name, rpmTag tag)
 
static int checkForValidArchitectures (Spec spec)
 
static rpmRC checkForRequired (Header h, const char *NVR)
 Check that required tags are present in header. More...
 
static rpmRC checkForDuplicates (Header h, const char *NVR)
 Check that no duplicate tags are present in header. More...
 
static void fillOutMainPackage (Header h)
 
static int doIcon (Spec spec, Header h)
 
spectag stashSt (Spec spec, Header h, rpmTag tag, const char *lang)
 stashSt. More...
 
static rpmRC tagValidate (Spec spec, rpmTag tag, const char *value)
 
static rpmRC handlePreambleTag (Spec spec, Package pkg, rpmTag tag, const char *macro, const char *lang)
 
static int findPreambleTag (Spec spec, rpmTag *tagp, const char **macro, char *lang)
 
int parsePreamble (Spec spec, int initialPackage)
 Parse tags from preamble of a spec file. More...
 

Variables

static rpmTag copyTagsDuringParse []
 
static rpmTag requiredTags []
 
static struct tokenBits_s installScriptBits []
 
static struct tokenBits_s buildScriptBits []
 
static struct optionalTag optionalTags []
 
int noLang
 
static struct PreambleRec_s preambleList []
 

Detailed Description

Parse tags in global section from spec file.

Definition in file parsePreamble.c.

Macro Definition Documentation

§ _RPMEVR_INTERNAL

#define _RPMEVR_INTERNAL

Definition at line 15 of file parsePreamble.c.

§ _RPMTAG_INTERNAL

#define _RPMTAG_INTERNAL   /* XXX rpmTags->aTags */

Definition at line 16 of file parsePreamble.c.

§ SINGLE_TOKEN_ONLY

#define SINGLE_TOKEN_ONLY
Value:
if (multiToken) { \
rpmlog(RPMLOG_ERR, _("line %d: Tag takes single token only: %s\n"), \
spec->lineNum, spec->line); \
return RPMRC_FAIL; \
}
#define _(Text)
Definition: system.h:30

Definition at line 556 of file parsePreamble.c.

Referenced by handlePreambleTag().

Typedef Documentation

§ PreambleRec

typedef struct PreambleRec_s * PreambleRec

§ tokenBits

typedef struct tokenBits_s * tokenBits

Function Documentation

§ addOrAppendListEntry()

static void addOrAppendListEntry ( Header  h,
rpmTag  tag,
char *  line 
)
static

§ checkForDuplicates()

static rpmRC checkForDuplicates ( Header  h,
const char *  NVR 
)
static

Check that no duplicate tags are present in header.

Parameters
hheader
NVRpackage name-version-release
Returns
RPMRC_OK if OK

Definition at line 333 of file parsePreamble.c.

References _, _free(), alloca(), headerFini(), headerInit(), headerNext(), _HE_s::p, rpmDataType_u::ptr, rpmlog(), RPMLOG_ERR, RPMRC_FAIL, RPMRC_OK, _HE_s::tag, and tagName().

Referenced by parsePreamble().

§ checkForRequired()

static rpmRC checkForRequired ( Header  h,
const char *  NVR 
)
static

Check that required tags are present in header.

Parameters
hheader
NVRpackage name-version-release
Returns
RPMRC_OK if OK

Definition at line 309 of file parsePreamble.c.

References _, headerIsEntry(), requiredTags, rpmlog(), RPMLOG_ERR, RPMRC_FAIL, RPMRC_OK, and tagName().

Referenced by parsePreamble().

§ checkForValidArchitectures()

static int checkForValidArchitectures ( Spec  spec)
static

§ doIcon()

static int doIcon ( Spec  spec,
Header  h 
)
static

§ fillOutMainPackage()

static void fillOutMainPackage ( Header  h)
static

§ findLastChar()

static char* findLastChar ( char *  s)
inlinestatic

Definition at line 225 of file parsePreamble.c.

Referenced by handlePreambleTag().

§ findPreambleTag()

static int findPreambleTag ( Spec  spec,
rpmTag tagp,
const char **  macro,
char *  lang 
)
static

§ handlePreambleTag()

static rpmRC handlePreambleTag ( Spec  spec,
Package  pkg,
rpmTag  tag,
const char *  macro,
const char *  lang 
)
static

Definition at line 602 of file parsePreamble.c.

References _, _free(), addMacro(), addOrAppendListEntry(), addSource(), alloca(), _HE_s::append, rpmDataType_u::argv, Package_s::autoProv, Package_s::autoReq, Spec_s::BACount, Spec_s::BANames, _HE_s::c, delMacro(), doIcon(), findLastChar(), Package_s::header, headerGet(), headerPut(), Spec_s::line, Spec_s::lineNum, Spec_s::macros, Package_s::noarch, noLang, Spec_s::noSource, Source::num, _HE_s::p, parseBits(), parseNoSource(), parseNum(), parseRCPOT(), parseYesNo(), rpmDataType_u::ptr, RMIL_OLDSPEC, RMIL_SPEC, Spec_s::rootURL, RPM_STRING_ARRAY_TYPE, RPM_STRING_TYPE, RPM_UINT32_TYPE, RPMBUILD_DEFAULT_LANG, rpmGenPath(), rpmlog(), RPMLOG_ERR, RPMRC_FAIL, RPMRC_OK, RPMTAG_AUTOPROV, RPMTAG_AUTOREQ, RPMTAG_AUTOREQPROV, RPMTAG_BUGURL, RPMTAG_BUILDARCHS, RPMTAG_BUILDCONFLICTS, RPMTAG_BUILDENHANCES, RPMTAG_BUILDOBSOLETES, RPMTAG_BUILDPLATFORMS, RPMTAG_BUILDPREREQ, RPMTAG_BUILDPROVIDES, RPMTAG_BUILDREQUIRES, RPMTAG_BUILDROOT, RPMTAG_BUILDSUGGESTS, RPMTAG_CLASS, RPMTAG_CONFLICTFLAGS, RPMTAG_CVSID, RPMTAG_DISTEPOCH, RPMTAG_DISTRIBUTION, RPMTAG_DISTTAG, RPMTAG_DOCDIR, RPMTAG_ENHANCESFLAGS, RPMTAG_EPOCH, RPMTAG_EXCLUDEARCH, RPMTAG_EXCLUDEOS, RPMTAG_EXCLUSIVEARCH, RPMTAG_EXCLUSIVEOS, RPMTAG_GROUP, RPMTAG_ICON, RPMTAG_KEYWORDS, RPMTAG_LICENSE, RPMTAG_NAME, RPMTAG_NOPATCH, RPMTAG_NOSOURCE, RPMTAG_OBSOLETEFLAGS, RPMTAG_PACKAGER, RPMTAG_PATCH, RPMTAG_PREFIXES, RPMTAG_PREREQ, RPMTAG_PROVIDEFLAGS, RPMTAG_RELEASE, RPMTAG_REPOTAG, RPMTAG_REQUIREFLAGS, RPMTAG_SOURCE, RPMTAG_SUGGESTSFLAGS, RPMTAG_SUMMARY, RPMTAG_URL, RPMTAG_VARIANTS, RPMTAG_VENDOR, RPMTAG_VERSION, RPMTAG_XMAJOR, RPMTAG_XMINOR, SINGLE_TOKEN_ONLY, SKIPNONSPACE, SKIPSPACE, Spec_s::sourceHeader, stashSt(), rpmDataType_u::str, _HE_s::t, _HE_s::tag, tagName(), tagValidate(), Spec_s::toplevel, rpmDataType_u::ui32p, and urlPath().

Referenced by parsePreamble().

§ isMemberInEntry()

static int isMemberInEntry ( Header  h,
const char *  name,
rpmTag  tag 
)
static

§ parseBits()

static int parseBits ( const char *  s,
const tokenBits  tokbits,
rpmsenseFlags bp 
)
static

Definition at line 188 of file parsePreamble.c.

References tokenBits_s::bits, tokenBits_s::name, RPMRC_FAIL, RPMRC_OK, xisalpha(), and xisspace().

Referenced by handlePreambleTag().

§ parsePreamble()

int parsePreamble ( Spec  spec,
int  initialPackage 
)

§ parseSimplePart()

static int parseSimplePart ( Spec  spec,
char **  Np,
rpmParseState flag 
)
static

Definition at line 99 of file parsePreamble.c.

References _free(), Spec_s::line, PART_NAME, PART_SUBNAME, and xstrdup().

Referenced by parsePreamble().

§ parseYesNo()

static int parseYesNo ( const char *  s)
inlinestatic

Definition at line 145 of file parsePreamble.c.

References xstrcasecmp().

Referenced by handlePreambleTag().

§ stashSt()

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

§ tagValidate()

static rpmRC tagValidate ( Spec  spec,
rpmTag  tag,
const char *  value 
)
static

Variable Documentation

§ buildScriptBits

struct tokenBits_s buildScriptBits[]
static
Initial value:
= {
{ "prep", RPMSENSE_SCRIPT_PREP },
{ "build", RPMSENSE_SCRIPT_BUILD },
{ "install", RPMSENSE_SCRIPT_INSTALL },
{ "clean", RPMSENSE_SCRIPT_CLEAN },
{ "hint", RPMSENSE_MISSINGOK },
{ NULL, 0 }
}

Definition at line 177 of file parsePreamble.c.

§ copyTagsDuringParse

rpmTag copyTagsDuringParse[]
static

Definition at line 26 of file parsePreamble.c.

Referenced by parsePreamble().

§ installScriptBits

struct tokenBits_s installScriptBits[]
static
Initial value:
= {
{ "interp", RPMSENSE_INTERP },
{ "preun", RPMSENSE_SCRIPT_PREUN },
{ "pre", RPMSENSE_SCRIPT_PRE },
{ "postun", RPMSENSE_SCRIPT_POSTUN },
{ "post", RPMSENSE_SCRIPT_POST },
{ "rpmlib", RPMSENSE_RPMLIB },
{ "verify", RPMSENSE_SCRIPT_VERIFY },
{ "hint", RPMSENSE_MISSINGOK },
{ NULL, 0 }
}

Definition at line 162 of file parsePreamble.c.

§ noLang

int noLang

Definition at line 57 of file poptBT.c.

Referenced by handlePreambleTag().

§ optionalTags

struct optionalTag optionalTags[]
static
Initial value:
= {
{ RPMTAG_VENDOR, "%{vendor}" },
{ RPMTAG_PACKAGER, "%{packager}" },
{ RPMTAG_DISTEPOCH, "%{distepoch}" },
{ RPMTAG_DISTRIBUTION, "%{distribution}" },
{ RPMTAG_DISTTAG, "%{disttag}" },
{ RPMTAG_DISTURL, "%{disturl}" },
{ RPMTAG_BUGURL, "%{bugurl}" },
{ 0xffffffff, "%{class}" },
{ -1, NULL }
}

Referenced by fillOutMainPackage().

§ preambleList

struct PreambleRec_s preambleList[]
static

Definition at line 935 of file parsePreamble.c.

§ requiredTags

rpmTag requiredTags[]
static