#include "system.h"
#include <rpmio.h>
#include <rpmbuild.h>
#include "debug.h"
Go to the source code of this file.
Data Structures | |
struct | tokenBits_s |
struct | optionalTag |
struct | PreambleRec_s |
Defines | |
#define | _RPMEVR_INTERNAL |
#define | _RPMTAG_INTERNAL |
#define | SINGLE_TOKEN_ONLY |
Typedefs | |
typedef struct tokenBits_s * | tokenBits |
typedef struct PreambleRec_s * | PreambleRec |
Functions | |
static void | addOrAppendListEntry (Header h, rpmTag tag, char *line) |
static int | parseSimplePart (char *line, char **name, 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. | |
static rpmRC | checkForDuplicates (Header h, const char *NVR) |
Check that no duplicate tags are present in header. | |
static void | fillOutMainPackage (Header h) |
static int | doIcon (Spec spec, Header h) |
spectag | stashSt (Spec spec, Header h, int tag, const char *lang) |
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. | |
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 [] |
Definition in file parsePreamble.c.
#define _RPMEVR_INTERNAL |
Definition at line 10 of file parsePreamble.c.
#define _RPMTAG_INTERNAL |
Definition at line 11 of file parsePreamble.c.
#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; \ }
Definition at line 520 of file parsePreamble.c.
Referenced by handlePreambleTag().
typedef struct PreambleRec_s * PreambleRec |
typedef struct tokenBits_s * tokenBits |
Definition at line 63 of file parsePreamble.c.
References _free(), alloca(), _HE_s::append, rpmDataType_u::argv, _HE_s::c, headerPut(), _HE_s::p, RPM_STRING_ARRAY_TYPE, _HE_s::t, and _HE_s::tag.
Referenced by handlePreambleTag().
Check that no duplicate tags are present in header.
h | header | |
NVR | package name-version-release |
Definition at line 302 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().
Check that required tags are present in header.
h | header | |
NVR | package name-version-release |
Definition at line 278 of file parsePreamble.c.
References _, headerIsEntry(), requiredTags, rpmlog(), RPMLOG_ERR, RPMRC_FAIL, RPMRC_OK, and tagName().
Referenced by parsePreamble().
static int checkForValidArchitectures | ( | Spec | spec | ) | [static] |
Definition at line 241 of file parsePreamble.c.
References _, _free(), isMemberInEntry(), rpmExpand(), rpmlog(), RPMLOG_ERR, RPMRC_FAIL, and Spec_s::sourceHeader.
Referenced by parsePreamble().
Definition at line 382 of file parsePreamble.c.
References _, _free(), alloca(), _HE_s::c, F_OK, Fclose(), Ferror(), Source::flags, Fopen(), Fread(), Fstrerror(), headerPut(), Source::next, _HE_s::p, RPM_BIN_TYPE, RPMFILE_ICON, rpmGenPath(), rpmlog(), RPMLOG_ERR, RPMRC_FAIL, Source::source, Spec_s::sources, _HE_s::t, _HE_s::tag, rpmDataType_u::ui8p, URL_IS_DASH, URL_IS_FTP, URL_IS_HKP, URL_IS_HTTP, URL_IS_HTTPS, URL_IS_PATH, URL_IS_UNKNOWN, and urlPath().
Referenced by handlePreambleTag().
static void fillOutMainPackage | ( | Header | h | ) | [static] |
Definition at line 345 of file parsePreamble.c.
References _free(), alloca(), _HE_s::c, headerIsEntry(), headerPut(), optionalTags, optionalTag::ot_mac, optionalTag::ot_tag, _HE_s::p, RPM_STRING_TYPE, rpmExpand(), rpmDataType_u::str, _HE_s::t, _HE_s::tag, tagCanonicalize(), and tagGenerate().
Referenced by parsePreamble().
static char* findLastChar | ( | char * | s | ) | [inline, static] |
Definition at line 900 of file parsePreamble.c.
References _, _free(), argvSearch(), argvStrcasecmp(), Spec_s::line, PreambleRec_s::multiLang, PreambleRec_s::obsolete, RPMBUILD_DEFAULT_LANG, rpmlog(), RPMLOG_ERR, rpmTags, SKIPSPACE, PreambleRec_s::tag, tagCanonicalize(), tagGenerate(), tagName(), PreambleRec_s::token, xisspace(), and xstrncasecmp().
Referenced by parsePreamble().
static rpmRC handlePreambleTag | ( | Spec | spec, | |
Package | pkg, | |||
rpmTag | tag, | |||
const char * | macro, | |||
const char * | lang | |||
) | [static] |
Definition at line 533 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(), field(), findLastChar(), Package_s::header, headerAddI18NString(), headerGet(), headerPut(), Spec_s::line, Spec_s::lineNum, Spec_s::macros, 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, SINGLE_TOKEN_ONLY, SKIPNONSPACE, SKIPSPACE, Spec_s::sourceHeader, stashSt(), rpmDataType_u::str, _HE_s::t, _HE_s::tag, tagName(), rpmDataType_u::ui32p, and urlPath().
Referenced by parsePreamble().
Definition at line 216 of file parsePreamble.c.
References _free(), alloca(), rpmDataType_u::argv, _HE_s::c, headerGet(), _HE_s::p, rpmDataType_u::ptr, _HE_s::tag, and xstrcasecmp().
Referenced by checkForValidArchitectures().
static int parseBits | ( | const char * | s, | |
const tokenBits | tokbits, | |||
rpmsenseFlags * | bp | |||
) | [static] |
Definition at line 166 of file parsePreamble.c.
References tokenBits_s::bits, tokenBits_s::name, RPMRC_FAIL, RPMRC_OK, xisalpha(), and xisspace().
Referenced by handlePreambleTag().
static int parseSimplePart | ( | char * | line, | |
char ** | name, | |||
rpmParseState * | flag | |||
) | [static] |
Definition at line 89 of file parsePreamble.c.
References PART_NAME, and PART_SUBNAME.
Referenced by parsePreamble().
static int parseYesNo | ( | const char * | s | ) | [inline, static] |
Definition at line 123 of file parsePreamble.c.
References xstrcasecmp().
Referenced by handlePreambleTag().
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 155 of file parsePreamble.c.
rpmTag copyTagsDuringParse[] [static] |
Initial value:
{ RPMTAG_EPOCH, RPMTAG_VERSION, RPMTAG_RELEASE, RPMTAG_LICENSE, RPMTAG_PACKAGER, RPMTAG_DISTRIBUTION, RPMTAG_DISTURL, RPMTAG_VENDOR, RPMTAG_ICON, RPMTAG_GIF, RPMTAG_XPM, RPMTAG_URL, RPMTAG_CHANGELOGTIME, RPMTAG_CHANGELOGNAME, RPMTAG_CHANGELOGTEXT, RPMTAG_PREFIXES, RPMTAG_DISTTAG, RPMTAG_CVSID, RPMTAG_VARIANTS, RPMTAG_XMAJOR, RPMTAG_XMINOR, RPMTAG_REPOTAG, RPMTAG_KEYWORDS, 0 }
Definition at line 21 of file parsePreamble.c.
Referenced by parsePreamble().
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 140 of file parsePreamble.c.
struct optionalTag optionalTags[] [static] |
Referenced by fillOutMainPackage().
struct PreambleRec_s preambleList[] [static] |
Definition at line 832 of file parsePreamble.c.
rpmTag requiredTags[] [static] |
Initial value:
{ RPMTAG_NAME, RPMTAG_VERSION, RPMTAG_RELEASE, RPMTAG_SUMMARY, RPMTAG_GROUP, RPMTAG_LICENSE, 0 }
Definition at line 51 of file parsePreamble.c.
Referenced by checkForRequired().