Main Page   Modules   Data Structures   File List   Data Fields   Globals   Related Pages  

build/rpmbuild.h

Go to the documentation of this file.
00001 #ifndef _H_RPMBUILD_
00002 #define _H_RPMBUILD_
00003 
00009 #include <rpmcli.h>
00010 
00011 /* and it shouldn't need these :-( */
00012 #include "stringbuf.h"
00013 #include "misc.h"
00014 
00015 /* but this will be needed */
00016 #include "rpmspec.h"
00017 
00021 /*@-typeuse@*/
00022 typedef enum rpmBuildFlags_e {
00023 /*@-enummemuse@*/
00024     RPMBUILD_NONE       = 0,
00025 /*@=enummemuse@*/
00026     RPMBUILD_PREP       = (1 << 0),     
00027     RPMBUILD_BUILD      = (1 << 1),     
00028     RPMBUILD_INSTALL    = (1 << 2),     
00029     RPMBUILD_CLEAN      = (1 << 3),     
00030     RPMBUILD_FILECHECK  = (1 << 4),     
00031     RPMBUILD_PACKAGESOURCE = (1 << 5),  
00032     RPMBUILD_PACKAGEBINARY = (1 << 6),  
00033     RPMBUILD_RMSOURCE   = (1 << 7),     
00034     RPMBUILD_RMBUILD    = (1 << 8),     
00035     RPMBUILD_STRINGBUF  = (1 << 9),     
00036     RPMBUILD_RMSPEC     = (1 << 10)     
00037 } rpmBuildFlags;
00038 /*@=typeuse@*/
00039 
00040 #include <ctype.h>
00041 
00042 #define SKIPSPACE(s) { while (*(s) && xisspace(*(s))) (s)++; }
00043 #define SKIPNONSPACE(s) { while (*(s) && !xisspace(*(s))) (s)++; }
00044 
00045 #define PART_SUBNAME  0
00046 #define PART_NAME     1
00047 
00051 typedef enum rpmParseState_e {
00052     PART_NONE           = 0,    
00053     PART_PREAMBLE       = 1,    
00054     PART_PREP           = 2,    
00055     PART_BUILD          = 3,    
00056     PART_INSTALL        = 4,    
00057     PART_CLEAN          = 5,    
00058     PART_FILES          = 6,    
00059     PART_PRE            = 7,    
00060     PART_POST           = 8,    
00061     PART_PREUN          = 9,    
00062     PART_POSTUN         = 10,   
00063     PART_DESCRIPTION    = 11,   
00064     PART_CHANGELOG      = 12,   
00065     PART_TRIGGERIN      = 13,   
00066     PART_TRIGGERUN      = 14,   
00067     PART_VERIFYSCRIPT   = 15,   
00068     PART_BUILDARCHITECTURES= 16,
00069     PART_TRIGGERPOSTUN  = 17,   
00070     PART_LAST           = 18    
00071 } rpmParseState;
00072 
00073 #define STRIP_NOTHING             0
00074 #define STRIP_TRAILINGSPACE (1 << 0)
00075 #define STRIP_COMMENTS      (1 << 1)
00076 
00077 #ifdef __cplusplus
00078 extern "C" {
00079 #endif
00080 /*@-redecl@*/
00081 
00085 void freeNames(void)
00086         /*@globals internalState@*/
00087         /*@modifies internalState */;
00088 
00095 extern /*@observer@*/ const char * getUname(uid_t uid)  /*@*/;
00096 
00103 extern /*@observer@*/ const char * getUnameS(const char * uname)        /*@*/;
00104 
00111 uid_t getUidS(const char * uname)       /*@*/;
00112 
00119 extern /*@observer@*/ const char * getGname(gid_t gid)          /*@*/;
00120 
00127 extern /*@observer@*/ const char * getGnameS(const char * gname)        /*@*/;
00128 
00135 gid_t getGidS(const char * gname)       /*@*/;
00136 
00141 extern /*@observer@*/ const char * const buildHost(void)        /*@*/;
00142 
00147 extern /*@observer@*/ int_32 * const getBuildTime(void) /*@*/;
00148 
00155 int readLine(Spec spec, int strip)
00156         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00157         /*@modifies spec->fileStack, spec->readStack, spec->line, spec->lineNum,
00158                 spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
00159                 rpmGlobalMacroContext, fileSystem, internalState  @*/;
00160 
00165 void closeSpec(/*@partial@*/ Spec spec)
00166         /*@globals fileSystem, internalState @*/
00167         /*@modifies spec->fileStack, fileSystem, internalState @*/;
00168 
00173 void handleComments(char * s)
00174         /*@modifies s @*/;
00175 
00181 rpmParseState isPart(const char * line) /*@*/;
00182 
00189 int parseNum(/*@null@*/ const char * line, /*@null@*/ /*@out@*/int * res)
00190         /*@modifies *res @*/;
00191 
00199 void addChangelogEntry(Header h, time_t time, const char * name,
00200                 const char * text)
00201         /*@modifies h @*/;
00202 
00209 int parseBuildInstallClean(Spec spec, rpmParseState parsePart)
00210         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00211         /*@modifies spec->build, spec->install, spec->clean, spec->macros,
00212                 spec->fileStack, spec->readStack, spec->line, spec->lineNum,
00213                 spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
00214                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00215 
00221 int parseChangelog(Spec spec)
00222         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00223         /*@modifies spec->fileStack, spec->readStack, spec->line, spec->lineNum,
00224                 spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
00225                 spec->packages->header,
00226                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00227 
00233 int parseDescription(Spec spec)
00234         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00235         /*@modifies spec->packages,
00236                 spec->fileStack, spec->readStack, spec->line, spec->lineNum,
00237                 spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
00238                 spec->st,
00239                 rpmGlobalMacroContext, fileSystem, internalState  @*/;
00240 
00246 int parseFiles(Spec spec)
00247         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00248         /*@modifies spec->packages,
00249                 spec->fileStack, spec->readStack, spec->line, spec->lineNum,
00250                 spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
00251                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00252 
00259 int parsePreamble(Spec spec, int initialPackage)
00260         /*@globals rpmGlobalMacroContext,
00261                 fileSystem, internalState @*/
00262         /*@modifies spec->packages,
00263                 spec->fileStack, spec->readStack, spec->line, spec->lineNum,
00264                 spec->buildSubdir,
00265                 spec->macros, spec->st, spec->buildRootURL,
00266                 spec->sources, spec->numSources, spec->noSource,
00267                 spec->buildRestrictions, spec->BANames, spec->BACount,
00268                 spec->gotBuildRootURL,
00269                 spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
00270                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00271 
00277 int parsePrep(Spec spec)
00278         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00279         /*@modifies spec->prep, spec->buildSubdir, spec->macros,
00280                 spec->fileStack, spec->readStack, spec->line, spec->lineNum,
00281                 spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
00282                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00283 
00294 int parseRCPOT(Spec spec, Package pkg, const char * field, int tag, int index,
00295                rpmsenseFlags tagflags)
00296         /*@globals rpmGlobalMacroContext @*/
00297         /*@modifies rpmGlobalMacroContext @*/;
00298 
00305 int parseScript(Spec spec, int parsePart)
00306         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00307         /*@modifies spec->packages,
00308                 spec->fileStack, spec->readStack, spec->line, spec->lineNum,
00309                 spec->nextline, spec->nextpeekc, spec->lbuf, spec->sl,
00310                 rpmGlobalMacroContext, fileSystem, internalState  @*/;
00311 
00318 int parseExpressionBoolean(Spec spec, const char * expr)
00319         /*@globals rpmGlobalMacroContext @*/
00320         /*@modifies rpmGlobalMacroContext @*/;
00321 
00328 /*@unused@*/
00329 char * parseExpressionString(Spec spec, const char * expr)
00330         /*@globals rpmGlobalMacroContext @*/
00331         /*@modifies rpmGlobalMacroContext @*/;
00332 
00343 int doScript(Spec spec, int what, const char * name, StringBuf sb, int test)
00344         /*@globals rpmGlobalMacroContext,
00345                 fileSystem, internalState @*/
00346         /*@modifies spec->macros,
00347                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00348 
00357 int lookupPackage(Spec spec, /*@null@*/ const char * name, int flag,
00358                 /*@out@*/ Package * pkg)
00359         /*@modifies spec->packages, *pkg @*/;
00360 
00366 /*@only@*/
00367 Package newPackage(Spec spec)
00368         /*@modifies spec->packages, spec->packages->next @*/;
00369 
00375 /*@null@*/
00376 Package freePackages(/*@only@*/ /*@null@*/ Package packages)
00377         /*@globals fileSystem @*/
00378         /*@modifies packages, fileSystem @*/;
00379 
00385 /*@null@*/
00386 Package  freePackage(/*@only@*/ /*@null@*/ Package pkg)
00387         /*@globals fileSystem @*/
00388         /*@modifies pkg, fileSystem @*/;
00389 
00400 int addReqProv(/*@unused@*/Spec spec, Header h,
00401                 rpmsenseFlags depFlags, const char * depName,
00402                 const char * depEVR, int index)
00403         /*@modifies h @*/;
00404 
00412 int rpmlibNeedsFeature(Header h, const char * feature, const char * featureEVR)
00413         /*@modifies h @*/;
00414 
00422 int processBinaryFiles(Spec spec, int installSpecialDoc, int test)
00423         /*@globals rpmGlobalMacroContext,
00424                 fileSystem, internalState @*/
00425         /*@modifies spec->macros,
00426                 spec->packages->cpioList, spec->packages->fileList,
00427                 spec->packages->specialDoc, spec->packages->header,
00428                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00429 
00434 void initSourceHeader(Spec spec)
00435         /*@modifies spec->sourceHeader,
00436                 spec->buildRestrictions, spec->BANames,
00437                 spec->packages->header @*/;
00438 
00444 int processSourceFiles(Spec spec)
00445         /*@globals rpmGlobalMacroContext, fileSystem, internalState @*/
00446         /*@modifies spec->sourceHeader, spec->sourceCpioList,
00447                 spec->buildRestrictions, spec->BANames,
00448                 spec->packages->header,
00449                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00450 
00464 int parseSpec(/*@out@*/ Spec * specp, const char * specFile,
00465                 /*@null@*/ const char * rootURL,
00466                 /*@null@*/ const char * buildRootURL,
00467                 int recursing,
00468                 /*@null@*/ const char * passPhrase,
00469                 /*@null@*/ char * cookie,
00470                 int anyarch, int force)
00471         /*@globals rpmGlobalMacroContext,
00472                 fileSystem, internalState @*/
00473         /*@modifies *specp,
00474                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00475 
00488 /*@-declundef@*/
00489 extern int (*parseSpecVec) (Spec * specp, const char * specFile,
00490                 const char * rootdir,
00491                 /*@null@*/ const char * buildRoot,
00492                 int recursing,
00493                 /*@null@*/ const char * passPhrase,
00494                 /*@null@*/ char * cookie,
00495                 int anyarch, int force)
00496         /*@globals rpmGlobalMacroContext,
00497                 fileSystem, internalState @*/
00498         /*@modifies *specp,
00499                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00500 /*@=declundef@*/
00501 
00509 int buildSpec(Spec spec, int what, int test)
00510         /*@globals rpmGlobalMacroContext,
00511                 fileSystem, internalState @*/
00512         /*@modifies spec->sourceHeader, spec->sourceCpioList, spec->cookie,
00513                 spec->sourceRpmName, spec->macros,
00514                 spec->BASpecs,
00515                 spec->buildRestrictions, spec->BANames,
00516                 spec->packages->cpioList, spec->packages->fileList,
00517                 spec->packages->specialDoc, spec->packages->header,
00518                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00519 
00525 int packageBinaries(Spec spec)
00526         /*@globals rpmGlobalMacroContext,
00527                 fileSystem, internalState @*/
00528         /*@modifies spec->packages->header,
00529                 spec->sourceRpmName,
00530                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00531 
00537 int packageSources(Spec spec)
00538         /*@globals rpmGlobalMacroContext,
00539                 fileSystem, internalState @*/
00540         /*@modifies spec->sourceHeader, spec->cookie,
00541                 spec->sourceRpmName,
00542                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00543 
00544 /*@=redecl@*/
00545 #ifdef __cplusplus
00546 }
00547 #endif
00548 
00549 #endif  /* _H_RPMBUILD_ */

Generated on Wed Sep 4 12:49:49 2002 for rpm by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002