4 typedef struct SpecStruct *Spec;
8 struct ReqProvTrigger {
12 int index; /* Only used for triggers */
13 struct ReqProvTrigger *next;
17 struct TriggerFileEntry {
19 /*@only@*/ char *fileName;
20 /*@only@*/ char *script;
21 /*@only@*/ char *prog;
22 /*@owned@*/ struct TriggerFileEntry *next;
25 #define RPMBUILD_ISSOURCE 1
26 #define RPMBUILD_ISPATCH (1 << 1)
27 #define RPMBUILD_ISICON (1 << 2)
28 #define RPMBUILD_ISNO (1 << 3)
30 #define RPMBUILD_DEFAULT_LANG "C"
33 /*@owned@*/ char *fullSource;
34 /*@dependent@*/ char *source; /* Pointer into fullSource */
37 /*@owned@*/ struct Source *next;
40 typedef struct ReadLevelEntry {
42 /*@dependent@*/ struct ReadLevelEntry *next;
45 typedef struct OpenFileInfo {
46 /*@only@*/ char *fileName;
47 /*@dependent@*/ FILE *file;
50 /*@dependent@*/ char *readPtr;
51 /*@owned@*/ struct OpenFileInfo *next;
70 /*@only@*/ char **sl_lines;
76 /*@only@*/ char *specFile;
77 /*@only@*/ char *sourceRpmName;
82 /*@owned@*/ struct OpenFileInfo *fileStack;
89 /*@only@*/ struct ReadLevelEntry *readStack;
91 Header buildRestrictions;
92 /*@owned@*/ struct SpecStruct **buildArchitectureSpecs;
93 char ** buildArchitectures;
94 int buildArchitectureCount;
95 int inBuildArchitectures;
101 /*@only@*/ const char *buildRoot;
102 /*@only@*/ const char *buildSubdir;
108 /*@owned@*/ struct Source *sources;
114 /*@owned@*/ struct cpioFileMapping *sourceCpioList;
116 /*@dependent@*/ struct MacroContext *macros;
118 /*@only@*/ StringBuf prep;
119 /*@only@*/ StringBuf build;
120 /*@only@*/ StringBuf install;
121 /*@only@*/ StringBuf clean;
123 /*@owned@*/ struct PackageStruct *packages;
126 struct PackageStruct {
127 /*@only@*/ Header header;
130 /*@only@*/ struct cpioFileMapping *cpioList;
132 /*@owned@*/ struct Source *icon;
143 /*@only@*/ StringBuf specialDoc;
146 struct ReqProvTrigger *triggers;
147 char *triggerScripts;
150 /*@only@*/ struct TriggerFileEntry *triggerFiles;
152 /*@only@*/ char *fileFile;
153 /*@only@*/ StringBuf fileList; /* If NULL, package will not be written */
155 /*@keep@*/ struct PackageStruct *next;
158 typedef struct PackageStruct *Package;
164 /*@only@*/ Spec newSpec(void);
165 void freeSpec(/*@only@*/ Spec spec);
166 extern void (*freeSpecVec) (Spec spec); /* XXX FIXME */
168 struct OpenFileInfo * newOpenFileInfo(void);
169 struct spectag *stashSt(Spec spec, Header h, int tag, const char *lang);
171 int addSource(Spec spec, Package pkg, const char *field, int tag);
172 int parseNoSource(Spec spec, const char *field, int tag);
178 #endif /* _H_SPEC_ */