rpm  5.4.10
rpmbuild.h
Go to the documentation of this file.
1 #ifndef _H_RPMBUILD_
2 #define _H_RPMBUILD_
3 
9 #include <rpmiotypes.h>
10 #include <rpmmacro.h>
11 #include <rpmtypes.h>
12 #include <rpmtag.h>
13 
14 #include <rpmfi.h>
15 
16 #include <rpmcli.h>
17 
18 #include "rpmspec.h"
19 
23 /*@-typeuse@*/
24 typedef enum rpmBuildFlags_e {
25 /*@-enummemuse@*/
27 /*@=enummemuse@*/
28  RPMBUILD_PREP = (1 << 0),
29  RPMBUILD_BUILD = (1 << 1),
30  RPMBUILD_INSTALL = (1 << 2),
31  RPMBUILD_CHECK = (1 << 3),
32  RPMBUILD_CLEAN = (1 << 4),
33  RPMBUILD_FILECHECK = (1 << 5),
36  RPMBUILD_RMSOURCE = (1 << 8),
37  RPMBUILD_RMBUILD = (1 << 9),
38  RPMBUILD_STRINGBUF = (1 << 10),
39  RPMBUILD_TRACK = (1 << 11),
40  RPMBUILD_RMSPEC = (1 << 12),
43 /*@=typeuse@*/
44 
45 #define SKIPSPACE(s) { while (*(s) && xisspace(*(s))) (s)++; }
46 #define SKIPNONSPACE(s) { while (*(s) && !xisspace(*(s))) (s)++; }
47 
48 #define PART_SUBNAME 0
49 #define PART_NAME 1
50 
54 #define PART_BASE 100
55 typedef enum rpmParseState_e {
57  /* leave room for RPMRC_NOTFOUND returns. */
79  /* support "%sanitycheck" script */
84 
88 typedef enum rpmStripFlags_e {
90  STRIP_TRAILINGSPACE = (1 << 0),
91  STRIP_COMMENTS = (1 << 1),
92  STRIP_NOEXPAND = (1 << 2)
94 
95 /*@unchecked@*/
96 extern int _rpmbuildFlags;
97 
98 #ifdef __cplusplus
99 extern "C" {
100 #endif
101 /*@-redecl@*/
102 
106 void freeNames(void)
107  /*@globals internalState@*/
108  /*@modifies internalState */;
109 
116 extern /*@observer@*/ const char * getUname(uid_t uid)
117  /*@globals internalState @*/
118  /*@modifies internalState @*/;
119 
126 extern /*@observer@*/ const char * getUnameS(const char * uname)
127  /*@globals internalState @*/
128  /*@modifies internalState @*/;
129 
136 uid_t getUidS(const char * uname)
137  /*@globals internalState @*/
138  /*@modifies internalState @*/;
139 
146 extern /*@observer@*/ const char * getGname(gid_t gid)
147  /*@globals internalState @*/
148  /*@modifies internalState @*/;
149 
156 extern /*@observer@*/ const char * getGnameS(const char * gname)
157  /*@globals internalState @*/
158  /*@modifies internalState @*/;
159 
166 gid_t getGidS(const char * gname)
167  /*@globals internalState @*/
168  /*@modifies internalState @*/;
169 
174 /*@observer@*/
175 extern const char * buildHost(void)
176  /*@*/;
177 
182 /*@observer@*/
183 extern rpmuint32_t * getBuildTime(void)
184  /*@*/;
185 
192 int readLine(Spec spec, rpmStripFlags strip)
193  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
194  /*@modifies spec->fileStack, spec->readStack, spec->line, spec->lineNum,
195  spec->lbufPtr,
196  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
197  rpmGlobalMacroContext, fileSystem, internalState @*/;
198 
203 void closeSpec(/*@partial@*/ Spec spec)
204  /*@globals fileSystem, internalState @*/
205  /*@modifies spec->fileStack, fileSystem, internalState @*/;
206 
211 void handleComments(char * s)
212  /*@modifies s @*/;
213 
220  /*@modifies spec->foo, spec->nfoo @*/;
221 
228 int parseNum(/*@null@*/ const char * line, /*@null@*/ /*@out@*/rpmuint32_t * res)
229  /*@modifies *res @*/;
230 
239 void addChangelogEntry(Header h, time_t time, const char * name,
240  const char * text)
241  /*@modifies h @*/;
242 
249 int parseBuildInstallClean(Spec spec, rpmParseState parsePart)
250  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
251  /*@modifies spec->build, spec->install, spec->check, spec->clean,
252  spec->macros, spec->foo, spec->nfoo, spec->lbufPtr,
253  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
254  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
255  rpmGlobalMacroContext, fileSystem, internalState @*/;
256 
262 int parseChangelog(Spec spec)
263  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
264  /*@modifies spec->fileStack, spec->readStack, spec->line, spec->lineNum,
265  spec->foo, spec->nfoo, spec->lbufPtr,
266  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
267  spec->packages->header,
268  rpmGlobalMacroContext, fileSystem, internalState @*/;
269 
275 int parseDescription(Spec spec)
276  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
277  /*@modifies spec->packages,
278  spec->foo, spec->nfoo, spec->lbufPtr,
279  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
280  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
281  spec->st,
282  rpmGlobalMacroContext, fileSystem, internalState @*/;
283 
289 int parseFiles(Spec spec)
290  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
291  /*@modifies spec->packages,
292  spec->foo, spec->nfoo, spec->lbufPtr,
293  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
294  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
295  rpmGlobalMacroContext, fileSystem, internalState @*/;
296 
303 int parsePreamble(Spec spec, int initialPackage)
304  /*@globals rpmGlobalMacroContext, h_errno,
305  fileSystem, internalState @*/
306  /*@modifies spec->packages,
307  spec->foo, spec->nfoo, spec->lbufPtr,
308  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
309  spec->buildSubdir,
310  spec->macros, spec->st,
311  spec->sources, spec->numSources, spec->noSource,
312  spec->sourceHeader, spec->BANames, spec->BACount,
313  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
314  rpmGlobalMacroContext, fileSystem, internalState @*/;
315 
322 int parsePrep(Spec spec, int verify)
323  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
324  /*@modifies spec->prep, spec->buildSubdir, spec->macros,
325  spec->foo, spec->nfoo, spec->lbufPtr,
326  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
327  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
328  spec->packages->header,
329  rpmGlobalMacroContext, fileSystem, internalState @*/;
330 
341 rpmRC parseRCPOT(Spec spec, Package pkg, const char * field, rpmTag tagN,
342  rpmuint32_t index, rpmsenseFlags tagflags)
343  /*@globals internalState @*/
344  /*@modifies internalState @*/;
345 
352 int parseScript(Spec spec, int parsePart)
353  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
354  /*@modifies spec->packages,
355  spec->foo, spec->nfoo, spec->lbufPtr,
356  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
357  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
358  rpmGlobalMacroContext, fileSystem, internalState @*/;
359 
366 int parseExpressionBoolean(Spec spec, const char * expr)
367  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
368  /*@modifies rpmGlobalMacroContext, internalState @*/;
369 
376 /*@unused@*/ /*@null@*/
377 char * parseExpressionString(Spec spec, const char * expr)
378  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
379  /*@modifies rpmGlobalMacroContext, internalState @*/;
380 
391 rpmRC doScript(Spec spec, int what, /*@null@*/ const char * name,
392  /*@null@*/ rpmiob iob, int test)
393  /*@globals rpmGlobalMacroContext, h_errno,
394  fileSystem, internalState @*/
395  /*@modifies spec->macros,
396  rpmGlobalMacroContext, fileSystem, internalState @*/;
397 
406 rpmRC lookupPackage(Spec spec, /*@null@*/ const char * name, int flag,
407  /*@out@*/ Package * pkg)
408  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
409  /*@modifies spec->packages, *pkg, rpmGlobalMacroContext,
410  internalState @*/;
411 
417 /*@null@*/
418 Package freePackages(/*@only@*/ /*@null@*/ Package packages)
419  /*@globals fileSystem @*/
420  /*@modifies packages, fileSystem @*/;
421 
428 /*@null@*/
429 Package freePackage(/*@killref@*/ /*@null@*/ Package pkg)
430  /*@globals fileSystem @*/
431  /*@modifies pkg, fileSystem @*/;
432 #define freePackage(_pkg) \
433  ((Package)rpmioFreePoolItem((rpmioItem)(_pkg), __FUNCTION__, __FILE__, __LINE__))
434 
440 /*@only@*/
441 Package newPackage(Spec spec)
442  /*@modifies spec->packages, spec->packages->next @*/;
443 
455 int addReqProv(/*@unused@*/Spec spec, Header h, rpmTag tagN,
456  const char * N, const char * EVR, rpmsenseFlags Flags,
457  rpmuint32_t index)
458  /*@globals internalState @*/
459  /*@modifies h, internalState @*/;
460 
468  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
469  /*@modifies pkg->header, rpmGlobalMacroContext,
470  fileSystem, internalState @*/;
471 
478  /*@globals internalState @*/
479  /*@modifies h, internalState @*/;
480 
488 int rpmlibNeedsFeature(Header h, const char * feature, const char * featureEVR)
489  /*@globals internalState @*/
490  /*@modifies h, internalState @*/;
491 
499 rpmRC processBinaryFiles(Spec spec, int installSpecialDoc, int test)
500  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
501  /*@modifies spec->macros, *spec->packages,
502  spec->packages->fi, spec->packages->fileList,
503  spec->packages->specialDoc, spec->packages->header,
504  rpmGlobalMacroContext, fileSystem, internalState @*/;
505 
512 int initSourceHeader(Spec spec, /*@null@*/ rpmiob *sfp)
513  /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
514  /*@modifies spec->sourceHeader, spec->sourceHdrInit,
515  spec->BANames, *sfp,
516  spec->packages->header,
517  rpmGlobalMacroContext, internalState @*/;
518 
524 int processSourceFiles(Spec spec)
525  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
526  /*@modifies spec->sourceHeader, spec->sourceCpioList,
527  spec->BANames, spec->sourceHdrInit,
528  spec->packages->header,
529  rpmGlobalMacroContext, fileSystem, internalState @*/;
530 
544 int parseSpec(rpmts ts, const char * specFile,
545  /*@null@*/ const char * rootURL,
546  int recursing,
547  /*@null@*/ const char * passPhrase,
548  /*@null@*/ const char * cookie,
549  int anyarch, int force, int verify)
550  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
551  /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
552 
561 rpmRC buildSpec(rpmts ts, Spec spec, int what, int test)
562  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
563  /*@modifies spec->sourceHeader, spec->sourceCpioList, spec->cookie,
564  spec->sourceRpmName, spec->sourcePkgId, spec->sourceHdrInit,
565  spec->macros, spec->BASpecs,
566  spec->BANames, *spec->packages,
567  spec->packages->fi, spec->packages->fileList,
568  spec->packages->specialDoc, spec->packages->header,
569  rpmGlobalMacroContext, fileSystem, internalState @*/;
570 
577  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
578  /*@modifies spec->packages->header, spec->packages->fi,
579  spec->sourceRpmName, spec->cookie, spec->sourcePkgId,
580  rpmGlobalMacroContext, fileSystem, internalState @*/;
581 
588  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
589  /*@modifies spec->sourceHeader, spec->cookie, spec->sourceCpioList,
590  spec->sourceRpmName, spec->sourcePkgId, spec->packages->header,
591  rpmGlobalMacroContext, fileSystem, internalState @*/;
592 
593 /*@=redecl@*/
594 #ifdef __cplusplus
595 }
596 #endif
597 
598 #endif /* _H_RPMBUILD_ */