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

build/rpmspec.h

Go to the documentation of this file.
00001 #ifndef _H_SPEC_
00002 #define _H_SPEC_
00003 
00011 typedef struct SpecStruct *Spec;
00012 
00015 struct TriggerFileEntry {
00016     int index;
00017 /*@only@*/ char * fileName;
00018 /*@only@*/ char * script;
00019 /*@only@*/ char * prog;
00020 /*@owned@*/ struct TriggerFileEntry * next;
00021 };
00022 
00023 #define RPMBUILD_ISSOURCE       (1 << 0)
00024 #define RPMBUILD_ISPATCH        (1 << 1)
00025 #define RPMBUILD_ISICON         (1 << 2)
00026 #define RPMBUILD_ISNO           (1 << 3)
00027 
00028 #define RPMBUILD_DEFAULT_LANG "C"
00029 
00032 struct Source {
00033 /*@owned@*/ char * fullSource;
00034 /*@dependent@*/ char * source;     /* Pointer into fullSource */
00035     int flags;
00036     int num;
00037 /*@owned@*/ struct Source * next;
00038 };
00039 
00042 /*@-typeuse@*/
00043 typedef struct ReadLevelEntry {
00044     int reading;
00045 /*@dependent@*/
00046     struct ReadLevelEntry * next;
00047 } RLE_t;
00048 /*@=typeuse@*/
00049 
00052 typedef struct OpenFileInfo {
00053 /*@only@*/ const char * fileName;
00054     FD_t fd;
00055     int lineNum;
00056     char readBuf[BUFSIZ];
00057 /*@dependent@*/
00058     char * readPtr;
00059 /*@owned@*/
00060     struct OpenFileInfo * next;
00061 } OFI_t;
00062 
00065 typedef struct spectag_s {
00066     int t_tag;
00067     int t_startx;
00068     int t_nlines;
00069 /*@only@*/ const char * t_lang;
00070 /*@only@*/ const char * t_msgid;
00071 } * spectag;
00072 
00075 typedef struct spectags_s {
00076 /*@owned@*/ spectag st_t;
00077     int st_nalloc;
00078     int st_ntags;
00079 } * spectags;
00080 
00083 typedef struct speclines_s {
00084 /*@only@*/ char **sl_lines;
00085     int sl_nalloc;
00086     int sl_nlines;
00087 } * speclines;
00088 
00092 struct SpecStruct {
00093 /*@only@*/ const char * specFile;       
00094 /*@only@*/ const char * sourceRpmName;
00095 /*@only@*/ const char * buildRootURL;
00096 /*@only@*/ const char * buildSubdir;
00097 /*@only@*/ const char * rootURL;
00098 
00099 /*@owned@*/ /*@null@*/ speclines sl;
00100 /*@owned@*/ /*@null@*/ spectags st;
00101 
00102 /*@owned@*/ struct OpenFileInfo * fileStack;
00103     char lbuf[4*BUFSIZ];
00104     char nextpeekc;
00105 /*@dependent@*/ char * nextline;
00106 /*@dependent@*/ char * line;
00107     int lineNum;
00108 
00109 /*@owned@*/ struct ReadLevelEntry * readStack;
00110 
00111 /*@refcounted@*/ Header buildRestrictions;
00112 /*@owned@*/ /*@null@*/ struct SpecStruct ** BASpecs;
00113 /*@only@*/ /*@null@*/ const char ** BANames;
00114     int BACount;
00115     int recursing;                      
00117     int force;
00118     int anyarch;
00119 
00120     int gotBuildRootURL;
00121 
00122 /*@null@*/ char * passPhrase;
00123     int timeCheck;
00124 /*@null@*/ const char * cookie;
00125 
00126 /*@owned@*/ struct Source * sources;
00127     int numSources;
00128     int noSource;
00129 
00130 /*@refcounted@*/
00131     Header sourceHeader;
00132     rpmfi sourceCpioList;
00133 
00134 /*@dependent@*/ /*@null@*/ MacroContext macros;
00135 
00136 /*@only@*/ StringBuf prep;              
00137 /*@only@*/ StringBuf build;             
00138 /*@only@*/ StringBuf install;           
00139 /*@only@*/ StringBuf clean;             
00141 /*@owned@*/ struct PackageStruct * packages;    
00142 };
00143 
00147 struct PackageStruct {
00148 /*@refcounted@*/
00149     Header header;
00150     rpmfi cpioList;
00151 
00152 /*@owned@*/ struct Source * icon;
00153 
00154     int autoReq;
00155     int autoProv;
00156 
00157 /*@only@*/ const char * preInFile;      
00158 /*@only@*/ const char * postInFile;     
00159 /*@only@*/ const char * preUnFile;      
00160 /*@only@*/ const char * postUnFile;     
00161 /*@only@*/ const char * verifyFile;     
00163 /*@only@*/ StringBuf specialDoc;
00164 
00165 /*@only@*/ struct TriggerFileEntry * triggerFiles;
00166 
00167 /*@only@*/ const char * fileFile;
00168 /*@only@*/ StringBuf fileList; /* If NULL, package will not be written */
00169 
00170 /*@dependent@*/ struct PackageStruct * next;
00171 };
00172 
00175 typedef struct PackageStruct * Package;
00176 
00177 #ifdef __cplusplus
00178 extern "C" {
00179 #endif
00180 
00185 /*@only@*/ Spec newSpec(void)
00186         /*@globals rpmGlobalMacroContext @*/
00187         /*@modifies rpmGlobalMacroContext @*/;
00188 
00194 /*@null@*/ Spec freeSpec(/*@only@*/ /*@null@*/ Spec spec)
00195         /*@globals fileSystem, internalState @*/
00196         /*@modifies spec, fileSystem, internalState @*/;
00197 
00202 /*@-declundef@*/
00203 extern /*@null@*/ Spec (*freeSpecVec) (Spec spec)       /* XXX FIXME */
00204         /*@globals fileSystem, internalState @*/
00205         /*@modifies spec, fileSystem, internalState @*/;
00206 /*@=declundef@*/
00207 
00210 struct OpenFileInfo * newOpenFileInfo(void)     /*@*/;
00211 
00218 spectag stashSt(Spec spec, Header h, int tag, const char * lang)
00219         /*@modifies spec->st @*/;
00220 
00227 int addSource(Spec spec, Package pkg, const char * field, int tag)
00228         /*@globals rpmGlobalMacroContext @*/
00229         /*@modifies spec->sources, spec->numSources,
00230                 spec->st, spec->macros,
00231                 pkg->icon,
00232                 rpmGlobalMacroContext @*/;
00233 
00239 int parseNoSource(Spec spec, const char * field, int tag)
00240         /*@modifies nothing @*/;
00241 
00242 #ifdef __cplusplus
00243 }
00244 #endif
00245 
00246 #endif /* _H_SPEC_ */

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