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@*/ FD_t fd;
50 /*@dependent@*/ char *readPtr;
51 /*@owned@*/ struct OpenFileInfo *next;
58 /*@only@*/ const char *t_lang;
59 /*@only@*/ const char *t_msgid;
64 /*@owned@*/ struct spectag *st_t;
70 /*@only@*/ char **sl_lines;
76 /*@only@*/ const char *specFile;
77 /*@only@*/ const char *sourceRpmName;
79 /*@owned@*/ struct speclines *sl;
80 /*@owned@*/ struct spectags *st;
82 /*@owned@*/ struct OpenFileInfo *fileStack;
85 /*@dependent@*/ char *nextline;
86 /*@dependent@*/ char *line;
89 /*@owned@*/ struct ReadLevelEntry *readStack;
91 /*@refcounted@*/ Header buildRestrictions;
92 /*@owned@*/ struct SpecStruct **buildArchitectureSpecs;
93 /*@only@*/ const char ** buildArchitectures;
94 int buildArchitectureCount;
95 int inBuildArchitectures;
101 /*@only@*/ const char *buildRoot;
102 /*@only@*/ const char *buildSubdir;
108 /*@owned@*/ struct Source *sources;
112 /*@refcounted@*/ Header sourceHeader;
114 /*@owned@*/ struct cpioFileMapping *sourceCpioList;
116 /*@dependent@*/ struct MacroContext *macros;
118 /*@only@*/ const char *rootdir;
119 /*@only@*/ StringBuf prep;
120 /*@only@*/ StringBuf build;
121 /*@only@*/ StringBuf install;
122 /*@only@*/ StringBuf clean;
124 /*@owned@*/ struct PackageStruct *packages;
127 struct PackageStruct {
128 /*@refcounted@*/ Header header;
131 /*@owned@*/ struct cpioFileMapping *cpioList;
133 /*@owned@*/ struct Source *icon;
144 /*@only@*/ StringBuf specialDoc;
147 struct ReqProvTrigger *triggers;
148 char *triggerScripts;
151 /*@only@*/ struct TriggerFileEntry *triggerFiles;
153 /*@only@*/ char *fileFile;
154 /*@only@*/ StringBuf fileList; /* If NULL, package will not be written */
156 /*@dependent@*/ struct PackageStruct *next;
159 typedef struct PackageStruct *Package;
165 /*@only@*/ Spec newSpec(void);
166 void freeSpec(/*@only@*/ Spec spec);
167 extern void (*freeSpecVec) (Spec spec); /* XXX FIXME */
169 struct OpenFileInfo * newOpenFileInfo(void);
170 struct spectag *stashSt(Spec spec, Header h, int tag, const char *lang);
172 int addSource(Spec spec, Package pkg, const char *field, int tag);
173 int parseNoSource(Spec spec, const char *field, int tag);
179 #endif /* _H_SPEC_ */