rpm  4.8.1
rpmbuild.h
Go to the documentation of this file.
1 #ifndef _H_RPMBUILD_
2 #define _H_RPMBUILD_
3 
9 #include <rpm/rpmcli.h>
10 #include <rpm/rpmds.h>
11 
12 /* and it shouldn't need these :-( */
13 #include <rpm/rpmstring.h>
14 
15 /* but this will be needed */
16 #include <rpm/rpmspec.h>
17 
18 #ifdef __cplusplus
19 extern "C" {
20 #endif
21 
25 typedef enum rpmBuildFlags_e {
27  RPMBUILD_PREP = (1 << 0),
28  RPMBUILD_BUILD = (1 << 1),
29  RPMBUILD_INSTALL = (1 << 2),
30  RPMBUILD_CHECK = (1 << 3),
31  RPMBUILD_CLEAN = (1 << 4),
32  RPMBUILD_FILECHECK = (1 << 5),
35  RPMBUILD_RMSOURCE = (1 << 8),
36  RPMBUILD_RMBUILD = (1 << 9),
37  RPMBUILD_STRINGBUF = (1 << 10),
38  RPMBUILD_RMSPEC = (1 << 11)
40 
41 #define PART_SUBNAME 0
42 #define PART_NAME 1
43 
50 #define PART_BASE 0
51 typedef enum rpmParseState_e {
52  PART_ERROR = -1,
54  /* leave room for RPMRC_NOTFOUND returns. */
77 } rpmParseState;
78 
79 
80 #define STRIP_NOTHING 0
81 #define STRIP_TRAILINGSPACE (1 << 0)
82 #define STRIP_COMMENTS (1 << 1)
83 
87 void freeNames(void);
88 
95 const char * getUname(uid_t uid);
96 
103 const char * getUnameS(const char * uname);
104 
111 uid_t getUidS(const char * uname);
112 
119 const char * getGname(gid_t gid);
120 
127 const char * getGnameS(const char * gname);
128 
135 gid_t getGidS(const char * gname);
136 
141 const char * buildHost(void) ;
142 
147 rpm_time_t * getBuildTime(void) ;
148 
155 int readLine(rpmSpec spec, int strip);
156 
161 void closeSpec(rpmSpec spec);
162 
167 void handleComments(char * s);
168 
174 rpmParseState isPart(const char * line) ;
175 
182 uint32_t parseUnsignedNum(const char * line, uint32_t * res);
183 
191 void addChangelogEntry(Header h, time_t time, const char * name,
192  const char * text);
193 
200 int parseBuildInstallClean(rpmSpec spec, rpmParseState parsePart);
201 
207 int parseChangelog(rpmSpec spec);
208 
214 int parseDescription(rpmSpec spec);
215 
221 int parseFiles(rpmSpec spec);
222 
229 int parsePreamble(rpmSpec spec, int initialPackage);
230 
236 int parsePrep(rpmSpec spec);
237 
246 rpmRC rpmCharCheck(rpmSpec spec, char *field, size_t fsize, const char *whitelist);
247 
258 rpmRC parseRCPOT(rpmSpec spec, Package pkg, const char * field, rpmTag tagN,
259  int index, rpmsenseFlags tagflags);
260 
267 int parseScript(rpmSpec spec, int parsePart);
268 
275 int parseExpressionBoolean(rpmSpec spec, const char * expr);
276 
283 char * parseExpressionString(rpmSpec spec, const char * expr);
284 
291 rpmRC doRmSource(rpmSpec spec);
302 rpmRC doScript(rpmSpec spec, rpmBuildFlags what, const char * name,
303  StringBuf sb, int test);
304 
313 rpmRC lookupPackage(rpmSpec spec, const char * name, int flag,
314  Package * pkg);
315 
322 
328 Package freePackages(Package packages);
329 
336 
348 int addReqProv(rpmSpec spec, Header h, rpmTag tagN,
349  const char * N, const char * EVR, rpmsenseFlags Flags,
350  uint32_t index);
351 
359 int rpmlibNeedsFeature(Header h, const char * feature, const char * featureEVR);
360 
368 int processBinaryFiles(rpmSpec spec, int installSpecialDoc, int test);
369 
374 void initSourceHeader(rpmSpec spec);
375 
381 int processSourceFiles(rpmSpec spec);
382 
396 int parseSpec(rpmts ts, const char * specFile,
397  const char * rootDir,
398  const char * buildRoot,
399  int recursing,
400  const char * passPhrase,
401  const char * cookie,
402  int anyarch, int force);
403 
412 rpmRC buildSpec(rpmts ts, rpmSpec spec, int what, int test);
413 
419 rpmRC checkPackages(char *pkgcheck);
420 
427 
434 
435 #ifdef __cplusplus
436 }
437 #endif
438 
439 #endif /* _H_RPMBUILD_ */
#define PART_BASE
rpmSpec file parser states.
Definition: rpmbuild.h:50
char * parseExpressionString(rpmSpec spec, const char *expr)
Evaluate string expression.
enum rpmBuildFlags_e rpmBuildFlags
Bit(s) to control buildSpec() operation.
const char * getGname(gid_t gid)
Return cached group name from group id.
void freeNames(void)
Destroy uid/gid caches.
rpmRC parseRCPOT(rpmSpec spec, Package pkg, const char *field, rpmTag tagN, int index, rpmsenseFlags tagflags)
Parse dependency relations from spec file and/or autogenerated output buffer.
int parseDescription(rpmSpec spec)
Parse %description section of a spec file.
Package freePackages(Package packages)
Destroy all packages associated with spec file.
rpmParseState isPart(const char *line)
Check line for section separator, return next parser state.
void handleComments(char *s)
Truncate comment lines.
int parsePrep(rpmSpec spec)
Parse %prep section of a spec file.
int parseChangelog(rpmSpec spec)
Parse %changelog section of a spec file.
int readLine(rpmSpec spec, int strip)
Read next line from spec file.
enum rpmTag_e rpmTag
Tags identify data in package headers.
int addReqProv(rpmSpec spec, Header h, rpmTag tagN, const char *N, const char *EVR, rpmsenseFlags Flags, uint32_t index)
Add dependency to header, filtering duplicates.
const char * getUname(uid_t uid)
Return cached user name from user id.
void initSourceHeader(rpmSpec spec)
Create and initialize header for source package.
const char * buildHost(void)
Return build hostname.
int parseFiles(rpmSpec spec)
Parse %files section of a spec file.
int parseSpec(rpmts ts, const char *specFile, const char *rootDir, const char *buildRoot, int recursing, const char *passPhrase, const char *cookie, int anyarch, int force)
Parse spec file into spec control structure.
The structure used to store values parsed from a spec file.
Definition: rpmspec.h:94
rpmParseState_e
Definition: rpmbuild.h:51
void addChangelogEntry(Header h, time_t time, const char *name, const char *text)
Add changelog entry to header.
Package newPackage(rpmSpec spec)
Create and initialize package control structure.
rpmRC doRmSource(rpmSpec spec)
Remove all sources assigned to spec file.
int parsePreamble(rpmSpec spec, int initialPackage)
Parse tags from preamble of a spec file.
gid_t getGidS(const char *gname)
Return cached group id.
struct StringBufRec * StringBuf
Definition: rpmstring.h:185
rpmRC doScript(rpmSpec spec, rpmBuildFlags what, const char *name, StringBuf sb, int test)
Run a build script, assembled from spec file scriptlet section.
int parseBuildInstallClean(rpmSpec spec, rpmParseState parsePart)
Parse %build/%install/%clean section(s) of a spec file.
Package freePackage(Package pkg)
Destroy package control structure.
void closeSpec(rpmSpec spec)
Stop reading from spec file, freeing resources.
rpmRC packageBinaries(rpmSpec spec)
Generate binary package(s).
rpmBuildFlags_e
Bit(s) to control buildSpec() operation.
Definition: rpmbuild.h:25
uint32_t parseUnsignedNum(const char *line, uint32_t *res)
Parse an unsigned number.
rpm_time_t * getBuildTime(void)
Return build time stamp.
struct rpmts_s * rpmts
The main types involved in transaction manipulation.
Definition: rpmtypes.h:59
int parseScript(rpmSpec spec, int parsePart)
Parse %pre et al scriptlets from a spec file.
rpmRC lookupPackage(rpmSpec spec, const char *name, int flag, Package *pkg)
Find sub-package control structure by name.
uid_t getUidS(const char *uname)
Return cached user id.
int processBinaryFiles(rpmSpec spec, int installSpecialDoc, int test)
Post-build processing for binary package(s).
rpmRC rpmCharCheck(rpmSpec spec, char *field, size_t fsize, const char *whitelist)
Check for inappropriate characters.
enum rpmParseState_e rpmParseState
int parseExpressionBoolean(rpmSpec spec, const char *expr)
Evaluate boolean expression.
rpmRC checkPackages(char *pkgcheck)
Check package(s).
The structure used to store values for a package.
Definition: rpmspec.h:149
enum rpmRC_e rpmRC
Package read return codes.
uint32_t rpm_time_t
Definition: rpmtypes.h:48
rpmRC packageSources(rpmSpec spec)
Generate source package.
int processSourceFiles(rpmSpec spec)
Post-build processing for source package.
int rpmlibNeedsFeature(Header h, const char *feature, const char *featureEVR)
Add rpmlib feature dependency.
const char * getUnameS(const char *uname)
Return cached user name.
rpmRC buildSpec(rpmts ts, rpmSpec spec, int what, int test)
Build stages state machine driver.
const char * getGnameS(const char *gname)
Return cached group name.
enum rpmsenseFlags_e rpmsenseFlags
Dependency Attributes.
struct headerToken_s * Header
RPM header and data retrieval types.
Definition: rpmtypes.h:24