rpm/build/rpmspec.h

149 lines
2.6 KiB
C

#ifndef _H_SPEC_
#define _H_SPEC_
typedef struct SpecStruct *Spec;
#include "rpmmacro.h"
#if 0
struct ReqProvTrigger {
int flags;
char *name;
char *version;
int index; /* Only used for triggers */
struct ReqProvTrigger *next;
};
#endif
struct TriggerFileEntry {
int index;
char *fileName;
char *script;
char *prog;
struct TriggerFileEntry *next;
};
#define RPMBUILD_ISSOURCE 1
#define RPMBUILD_ISPATCH (1 << 1)
#define RPMBUILD_ISICON (1 << 2)
#define RPMBUILD_ISNO (1 << 3)
#define RPMBUILD_DEFAULT_LANG "C"
struct Source {
char *fullSource;
char *source; /* Pointer into fullSource */
int flags;
int num;
struct Source *next;
};
struct ReadLevelEntry {
int reading;
struct ReadLevelEntry *next;
};
struct OpenFileInfo {
char *fileName;
FILE *file;
int lineNum;
char readBuf[BUFSIZ];
char *readPtr;
struct OpenFileInfo *next;
};
struct SpecStruct {
char *specFile;
char *sourceRpmName;
struct OpenFileInfo *fileStack;
char line[BUFSIZ];
int lineNum;
struct ReadLevelEntry *readStack;
Header buildRestrictions;
struct SpecStruct **buildArchitectureSpecs;
char ** buildArchitectures;
int buildArchitectureCount;
int inBuildArchitectures;
int gotBuildRoot;
char *buildRoot;
char *buildSubdir;
char *passPhrase;
int timeCheck;
char *cookie;
struct Source *sources;
int numSources;
int noSource;
Header sourceHeader;
int sourceCpioCount;
struct cpioFileMapping *sourceCpioList;
struct MacroContext *macros;
int autoReq;
int autoProv;
StringBuf prep;
StringBuf build;
StringBuf install;
StringBuf clean;
struct PackageStruct *packages;
};
struct PackageStruct {
Header header;
int cpioCount;
struct cpioFileMapping *cpioList;
struct Source *icon;
int autoReqProv;
char *preInFile;
char *postInFile;
char *preUnFile;
char *postUnFile;
char *verifyFile;
StringBuf specialDoc;
#if 0
struct ReqProvTrigger *triggers;
char *triggerScripts;
#endif
struct TriggerFileEntry *triggerFiles;
char *fileFile;
StringBuf fileList; /* If NULL, package will not be written */
struct PackageStruct *next;
};
typedef struct PackageStruct *Package;
#ifdef __cplusplus
extern "C" {
#endif
Spec newSpec(void);
void freeSpec(Spec spec);
struct OpenFileInfo * newOpenFileInfo(void);
int addSource(Spec spec, Package pkg, char *field, int tag);
int parseNoSource(Spec spec, char *field, int tag);
#ifdef __cplusplus
}
#endif
#endif /* _H_SPEC_ */