rpm 5.2.1

build/rpmspec.h

Go to the documentation of this file.
00001 #ifndef _H_RPMSPEC_
00002 #define _H_RPMSPEC_
00003 
00009 #include <rpmevr.h>
00010 
00013 typedef struct Package_s * Package;
00014 
00017 typedef struct Source * SpecSource;
00018 
00021 struct TriggerFileEntry {
00022     int index;
00023 /*@only@*/
00024     char * fileName;
00025 /*@only@*/
00026     char * script;
00027 /*@only@*/
00028     char * prog;
00029 /*@owned@*/
00030     struct TriggerFileEntry * next;
00031 };
00032 
00033 #define RPMBUILD_DEFAULT_LANG "C"
00034 
00037 struct Source {
00038 /*@owned@*/
00039     const char * fullSource;
00040 /*@dependent@*/ /*@relnull@*/
00041     const char * source;        /* Pointer into fullSource */
00042     int flags;
00043     rpmuint32_t num;
00044 /*@owned@*/
00045     struct Source * next;
00046 };
00047 
00050 /*@-typeuse@*/
00051 typedef struct ReadLevelEntry {
00052     int reading;
00053 /*@dependent@*/
00054     struct ReadLevelEntry * next;
00055 } RLE_t;
00056 /*@=typeuse@*/
00057 
00060 typedef struct OpenFileInfo {
00061 /*@only@*/
00062     const char * fileName;
00063 /*@relnull@*/
00064     FD_t fd;
00065     int lineNum;
00066     char readBuf[BUFSIZ];
00067 /*@dependent@*/
00068     char * readPtr;
00069 /*@owned@*/
00070     struct OpenFileInfo * next;
00071 } OFI_t;
00072 
00075 typedef struct spectag_s {
00076     int t_tag;
00077     int t_startx;
00078     int t_nlines;
00079 /*@only@*/
00080     const char * t_lang;
00081 /*@only@*/
00082     const char * t_msgid;
00083 } * spectag;
00084 
00087 typedef struct spectags_s {
00088 /*@owned@*/
00089     spectag st_t;
00090     int st_nalloc;
00091     int st_ntags;
00092 } * spectags;
00093 
00096 typedef struct speclines_s {
00097 /*@only@*/
00098     char **sl_lines;
00099     int sl_nalloc;
00100     int sl_nlines;
00101 } * speclines;
00102 
00106 struct Spec_s {
00107 /*@only@*/
00108     const char * specFile;      
00109 /*@only@*/
00110     const char * buildSubdir;
00111 /*@only@*/
00112     const char * rootURL;
00113 
00114 /*@owned@*/ /*@null@*/
00115     speclines sl;
00116 /*@owned@*/ /*@null@*/
00117     spectags st;
00118 
00119 /*@owned@*/
00120     struct OpenFileInfo * fileStack;
00121 /*@owned@*/
00122     char *lbuf;
00123     size_t lbuf_len;
00124 /*@dependent@*/
00125     char *lbufPtr;
00126     char nextpeekc;
00127 /*@dependent@*/
00128     char * nextline;
00129 /*@dependent@*/
00130     char * line;
00131     int lineNum;
00132 
00133 /*@owned@*/
00134     struct ReadLevelEntry * readStack;
00135 
00136 /*@owned@*/ /*@null@*/
00137     Spec * BASpecs;
00138 /*@only@*/ /*@null@*/
00139     const char ** BANames;
00140     int BACount;
00141     int recursing;              
00142     int toplevel;
00143 
00144     int force;
00145     int anyarch;
00146 
00147 /*@null@*/
00148     char * passPhrase;
00149     int timeCheck;
00150 /*@null@*/
00151     const char * cookie;
00152 
00153 /*@owned@*/
00154     struct Source * sources;
00155     int numSources;
00156     int noSource;
00157 
00158 /*@only@*/
00159     const char * sourceRpmName;
00160 /*@only@*/
00161     unsigned char * sourcePkgId;
00162 /*@refcounted@*/
00163     Header sourceHeader;
00164 /*@refcounted@*/
00165     rpmfi sourceCpioList;
00166     int sourceHdrInit;
00167 
00168 /*@dependent@*/ /*@null@*/
00169     MacroContext macros;
00170 
00171     rpmRC (*_parseRCPOT) (Spec spec, Package pkg, const char *field, rpmTag tagN,
00172                rpmuint32_t index, rpmsenseFlags tagflags);
00173 
00174 /*@only@*/
00175     rpmiob prep;                
00176 /*@only@*/
00177     rpmiob build;               
00178 /*@only@*/
00179     rpmiob install;             
00180 /*@only@*/
00181     rpmiob check;               
00182 /*@only@*/
00183     rpmiob clean;               
00185     size_t nfoo;
00186 /*@only@*/ /*@relnull@*/
00187     tagStore_t foo;
00188 
00189 /*@owned@*/
00190     Package packages;           
00191 };
00192 
00196 struct Package_s {
00197 /*@refcounted@*/
00198     Header header;
00199 /*@refcounted@*/
00200     rpmds ds;                   
00201 /*@refcounted@*/
00202     rpmfi cpioList;
00203 
00204     int autoReq;
00205     int autoProv;
00206     int noarch;
00207 
00208 /*@only@*/
00209     const char * preInFile;     
00210 /*@only@*/
00211     const char * postInFile;    
00212 /*@only@*/
00213     const char * preUnFile;     
00214 /*@only@*/
00215     const char * postUnFile;    
00216 /*@only@*/
00217     const char * preTransFile;  
00218 /*@only@*/
00219     const char * postTransFile; 
00220 /*@only@*/
00221     const char * verifyFile;    
00222 /*@only@*/
00223     const char * sanityCheckFile;
00225 /*@only@*/
00226     rpmiob specialDoc;
00227 
00228 /*@only@*/
00229     struct TriggerFileEntry * triggerFiles;
00230 
00231 /*@only@*/
00232     const char * fileFile;
00233 /*@only@*/
00234     rpmiob fileList;            /* If NULL, package will not be written */
00235 
00236 /*@dependent@*/
00237     Package next;
00238 };
00239 
00240 #ifdef __cplusplus
00241 extern "C" {
00242 #endif
00243 
00248 /*@only@*/
00249 Spec newSpec(void)
00250         /*@globals rpmGlobalMacroContext, h_errno, internalState @*/
00251         /*@modifies rpmGlobalMacroContext, internalState @*/;
00252 
00258 /*@null@*/
00259 Spec freeSpec(/*@only@*/ /*@null@*/ Spec spec)
00260         /*@globals fileSystem, internalState @*/
00261         /*@modifies spec, fileSystem, internalState @*/;
00262 
00270 int rpmspecQuery(rpmts ts, QVA_t qva, const char * arg)
00271         /*@globals rpmCLIMacroContext,
00272                 rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00273         /*@modifies ts, qva, rpmCLIMacroContext, rpmGlobalMacroContext,
00274                 fileSystem, internalState @*/;
00275 
00278 struct OpenFileInfo * newOpenFileInfo(void)
00279         /*@*/;
00280 
00289 spectag stashSt(Spec spec, Header h, rpmTag tag, const char * lang)
00290         /*@globals internalState @*/
00291         /*@modifies spec->st, internalState @*/;
00292 
00301 int addSource(Spec spec, Package pkg, const char * field, rpmTag tag)
00302         /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
00303         /*@modifies spec->sources, spec->numSources,
00304                 spec->st, spec->macros,
00305                 rpmGlobalMacroContext, fileSystem, internalState @*/;
00306 
00314 int parseNoSource(Spec spec, const char * field, rpmTag tag)
00315         /*@*/;
00316 
00322 int SpecSourceCount(Spec spec)
00323         /*@*/;
00324 
00331 SpecSource getSource(Spec spec, int num)
00332         /*@*/;
00333 
00339 /*@exposed@*/
00340 const char * specSourceName(SpecSource source)
00341         /*@*/;
00342 
00348 /*@exposed@*/
00349 const char * specFullSourceName(SpecSource source)
00350         /*@*/;
00351 
00357 int specSourceNum(SpecSource source)
00358         /*@*/;
00359 
00365 int specSourceFlags(SpecSource source)
00366         /*@*/;
00367 
00373 /*@null@*/
00374 #if defined(RPM_VENDOR_OPENPKG) /* splitted-source-directory */
00375 const char * getSourceDir(rpmfileAttrs attr, const char *filename)
00376 #else
00377 const char * getSourceDir(rpmfileAttrs attr)
00378 #endif
00379         /*@*/;
00380 
00381 #ifdef __cplusplus
00382 }
00383 #endif
00384 
00385 #endif /* _H_SPEC_ */