rpm  4.5
rpmbuild.h
Go to the documentation of this file.
1 #ifndef _H_RPMBUILD_
2 #define _H_RPMBUILD_
3 
9 #include "rpmcli.h"
10 
11 /* and it shouldn't need these :-( */
12 #include "stringbuf.h"
13 #include "misc.h"
14 
15 /* but this will be needed */
16 #include "rpmspec.h"
17 
21 /*@-typeuse@*/
22 typedef enum rpmBuildFlags_e {
23 /*@-enummemuse@*/
25 /*@=enummemuse@*/
26  RPMBUILD_PREP = (1 << 0),
27  RPMBUILD_BUILD = (1 << 1),
28  RPMBUILD_INSTALL = (1 << 2),
29  RPMBUILD_CHECK = (1 << 3),
30  RPMBUILD_CLEAN = (1 << 4),
31  RPMBUILD_FILECHECK = (1 << 5),
34  RPMBUILD_RMSOURCE = (1 << 8),
35  RPMBUILD_RMBUILD = (1 << 9),
36  RPMBUILD_STRINGBUF = (1 << 10),
37  RPMBUILD_RMSPEC = (1 << 11)
39 /*@=typeuse@*/
40 
41 #include <ctype.h>
42 
43 #define SKIPSPACE(s) { while (*(s) && xisspace(*(s))) (s)++; }
44 #define SKIPNONSPACE(s) { while (*(s) && !xisspace(*(s))) (s)++; }
45 
46 #define PART_SUBNAME 0
47 #define PART_NAME 1
48 
52 typedef enum rpmParseState_e {
53  PART_NONE = 0,
55  PART_PREP = 2,
56  PART_BUILD = 3,
58  PART_CHECK = 5,
59  PART_CLEAN = 6,
60  PART_FILES = 7,
61  PART_PRE = 8,
62  PART_POST = 9,
63  PART_PREUN = 10,
64  PART_POSTUN = 11,
75  PART_LAST = 22
77 
78 #define STRIP_NOTHING 0
79 #define STRIP_TRAILINGSPACE (1 << 0)
80 #define STRIP_COMMENTS (1 << 1)
81 #define STRIP_NOEXPAND (1 << 2)
82 
83 #ifdef __cplusplus
84 extern "C" {
85 #endif
86 /*@-redecl@*/
87 
91 void freeNames(void)
92  /*@globals internalState@*/
93  /*@modifies internalState */;
94 
101 extern /*@observer@*/ const char * getUname(uid_t uid)
102  /*@globals internalState @*/
103  /*@modifies internalState @*/;
104 
111 extern /*@observer@*/ const char * getUnameS(const char * uname)
112  /*@globals internalState @*/
113  /*@modifies internalState @*/;
114 
121 uid_t getUidS(const char * uname)
122  /*@globals internalState @*/
123  /*@modifies internalState @*/;
124 
131 extern /*@observer@*/ const char * getGname(gid_t gid)
132  /*@globals internalState @*/
133  /*@modifies internalState @*/;
134 
141 extern /*@observer@*/ const char * getGnameS(const char * gname)
142  /*@globals internalState @*/
143  /*@modifies internalState @*/;
144 
151 gid_t getGidS(const char * gname)
152  /*@globals internalState @*/
153  /*@modifies internalState @*/;
154 
159 /*@observer@*/
160 extern const char * buildHost(void)
161  /*@*/;
162 
167 /*@observer@*/
168 extern int_32 * getBuildTime(void)
169  /*@*/;
170 
177 int readLine(Spec spec, int strip)
178  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
179  /*@modifies spec->fileStack, spec->readStack, spec->line, spec->lineNum,
180  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
181  rpmGlobalMacroContext, fileSystem, internalState @*/;
182 
187 void closeSpec(/*@partial@*/ Spec spec)
188  /*@globals fileSystem, internalState @*/
189  /*@modifies spec->fileStack, fileSystem, internalState @*/;
190 
195 void handleComments(char * s)
196  /*@modifies s @*/;
197 
203 rpmParseState isPart(const char * line) /*@*/;
204 
211 int parseNum(/*@null@*/ const char * line, /*@null@*/ /*@out@*/int * res)
212  /*@modifies *res @*/;
213 
222 void addChangelogEntry(Header h, time_t time, const char * name,
223  const char * text)
224  /*@modifies h @*/;
225 
232 int parseBuildInstallClean(Spec spec, rpmParseState parsePart)
233  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
234  /*@modifies spec->build, spec->install, spec->check, spec->clean,
235  spec->macros,
236  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
237  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
238  rpmGlobalMacroContext, fileSystem, internalState @*/;
239 
245 int parseChangelog(Spec spec)
246  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
247  /*@modifies spec->fileStack, spec->readStack, spec->line, spec->lineNum,
248  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
249  spec->packages->header,
250  rpmGlobalMacroContext, fileSystem, internalState @*/;
251 
257 int parseDescription(Spec spec)
258  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
259  /*@modifies spec->packages,
260  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
261  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
262  spec->st,
263  rpmGlobalMacroContext, fileSystem, internalState @*/;
264 
270 int parseFiles(Spec spec)
271  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
272  /*@modifies spec->packages,
273  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
274  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
275  rpmGlobalMacroContext, fileSystem, internalState @*/;
276 
283 int parsePreamble(Spec spec, int initialPackage)
284  /*@globals rpmGlobalMacroContext, h_errno,
285  fileSystem, internalState @*/
286  /*@modifies spec->packages,
287  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
288  spec->buildSubdir,
289  spec->macros, spec->st,
290  spec->sources, spec->numSources, spec->noSource,
291  spec->sourceHeader, spec->BANames, spec->BACount,
292  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
293  rpmGlobalMacroContext, fileSystem, internalState @*/;
294 
301 int parsePrep(Spec spec, int verify)
302  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
303  /*@modifies spec->prep, spec->buildSubdir, spec->macros,
304  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
305  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
306  rpmGlobalMacroContext, fileSystem, internalState @*/;
307 
318 int parseRCPOT(Spec spec, Package pkg, const char * field, rpmTag tagN,
319  int index, rpmsenseFlags tagflags)
320  /*@globals rpmGlobalMacroContext, h_errno @*/
321  /*@modifies rpmGlobalMacroContext @*/;
322 
329 int parseScript(Spec spec, int parsePart)
330  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
331  /*@modifies spec->packages,
332  spec->fileStack, spec->readStack, spec->line, spec->lineNum,
333  spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
334  rpmGlobalMacroContext, fileSystem, internalState @*/;
335 
342 int parseExpressionBoolean(Spec spec, const char * expr)
343  /*@globals rpmGlobalMacroContext, h_errno @*/
344  /*@modifies rpmGlobalMacroContext @*/;
345 
352 /*@unused@*/ /*@null@*/
353 char * parseExpressionString(Spec spec, const char * expr)
354  /*@globals rpmGlobalMacroContext, h_errno @*/
355  /*@modifies rpmGlobalMacroContext @*/;
356 
367 int doScript(Spec spec, int what, /*@null@*/ const char * name,
368  /*@null@*/ StringBuf sb, int test)
369  /*@globals rpmGlobalMacroContext, h_errno,
370  fileSystem, internalState @*/
371  /*@modifies spec->macros,
372  rpmGlobalMacroContext, fileSystem, internalState @*/;
373 
382 int lookupPackage(Spec spec, /*@null@*/ const char * name, int flag,
383  /*@out@*/ Package * pkg)
384  /*@modifies spec->packages, *pkg @*/;
385 
391 /*@only@*/
392 Package newPackage(Spec spec)
393  /*@modifies spec->packages, spec->packages->next @*/;
394 
400 /*@null@*/
401 Package freePackages(/*@only@*/ /*@null@*/ Package packages)
402  /*@globals fileSystem @*/
403  /*@modifies packages, fileSystem @*/;
404 
410 /*@null@*/
411 Package freePackage(/*@only@*/ /*@null@*/ Package pkg)
412  /*@globals fileSystem @*/
413  /*@modifies pkg, fileSystem @*/;
414 
426 int addReqProv(/*@unused@*/Spec spec, Header h, rpmTag tagN,
427  const char * N, const char * EVR, rpmsenseFlags Flags,
428  int index)
429  /*@modifies h @*/;
430 
437 int processScriptFiles(Spec spec, Package pkg)
438  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
439  /*@modifies pkg->header, rpmGlobalMacroContext,
440  fileSystem, internalState @*/;
441 
448  /*@modifies h @*/;
449 
457 int rpmlibNeedsFeature(Header h, const char * feature, const char * featureEVR)
458  /*@modifies h @*/;
459 
467 int processBinaryFiles(Spec spec, int installSpecialDoc, int test)
468  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
469  /*@modifies spec->macros, *spec->packages,
470  spec->packages->cpioList, spec->packages->fileList,
471  spec->packages->specialDoc, spec->packages->header,
472  rpmGlobalMacroContext, fileSystem, internalState @*/;
473 
480 int initSourceHeader(Spec spec, /*@null@*/ StringBuf *sfp)
481  /*@modifies spec->sourceHeader,
482  spec->BANames, *sfp,
483  spec->packages->header @*/;
484 
490 int processSourceFiles(Spec spec)
491  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
492  /*@modifies spec->sourceHeader, spec->sourceCpioList,
493  spec->BANames,
494  spec->packages->header,
495  rpmGlobalMacroContext, fileSystem, internalState @*/;
496 
510 int parseSpec(rpmts ts, const char * specFile,
511  /*@null@*/ const char * rootURL,
512  int recursing,
513  /*@null@*/ const char * passPhrase,
514  /*@null@*/ char * cookie,
515  int anyarch, int force, int verify)
516  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
517  /*@modifies ts, rpmGlobalMacroContext, fileSystem, internalState @*/;
518 
527 int buildSpec(rpmts ts, Spec spec, int what, int test)
528  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
529  /*@modifies spec->sourceHeader, spec->sourceCpioList, spec->cookie,
530  spec->sourceRpmName, spec->sourcePkgId,
531  spec->macros, spec->BASpecs,
532  spec->BANames, *spec->packages,
533  spec->packages->cpioList, spec->packages->fileList,
534  spec->packages->specialDoc, spec->packages->header,
535  rpmGlobalMacroContext, fileSystem, internalState @*/;
536 
542 int packageBinaries(Spec spec)
543  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
544  /*@modifies spec->packages->header, spec->packages->cpioList,
545  spec->sourceRpmName,
546  rpmGlobalMacroContext, fileSystem, internalState @*/;
547 
553 int packageSources(Spec spec)
554  /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
555  /*@modifies spec->sourceHeader, spec->cookie, spec->sourceCpioList,
556  spec->sourceRpmName, spec->sourcePkgId,
557  rpmGlobalMacroContext, fileSystem, internalState @*/;
558 
559 /*@=redecl@*/
560 #ifdef __cplusplus
561 }
562 #endif
563 
564 #endif /* _H_RPMBUILD_ */