5 * \file build/rpmspec.h
6 * The rpmSpec and Package data structures used during build.
9 #include <rpm/rpmstring.h> /* StringBuf */
10 #include <rpm/rpmcli.h> /* for QVA_t */
18 typedef struct Package_s * rpmSpecPkg;
19 typedef struct Source * rpmSpecSrc;
20 typedef struct rpmSpecIter_s * rpmSpecPkgIter;
21 typedef struct rpmSpecIter_s * rpmSpecSrcIter;
23 enum rpmSourceFlags_e {
24 RPMBUILD_ISSOURCE = (1 << 0),
25 RPMBUILD_ISPATCH = (1 << 1),
26 RPMBUILD_ISICON = (1 << 2),
27 RPMBUILD_ISNO = (1 << 3),
30 typedef rpmFlags rpmSourceFlags;
32 #define RPMBUILD_DEFAULT_LANG "C"
36 RPMSPEC_ANYARCH = (1 << 0),
37 RPMSPEC_FORCE = (1 << 1),
38 RPMSPEC_NOLANG = (1 << 2),
41 typedef rpmFlags rpmSpecFlags;
44 * Destroy Spec structure.
45 * @param spec spec file control structure
48 rpmSpec rpmSpecFree(rpmSpec spec);
50 /* Iterator for spec packages */
51 rpmSpecPkgIter rpmSpecPkgIterInit(rpmSpec spec);
52 rpmSpecPkg rpmSpecPkgIterNext(rpmSpecPkgIter iter);
53 rpmSpecPkgIter rpmSpecPkgIterFree(rpmSpecPkgIter iter);
55 /* Getters for spec package attributes */
56 Header rpmSpecPkgHeader(rpmSpecPkg pkg);
58 /* Iterator for spec sources */
59 rpmSpecSrcIter rpmSpecSrcIterInit(rpmSpec spec);
60 rpmSpecSrc rpmSpecSrcIterNext(rpmSpecSrcIter iter);
61 rpmSpecSrcIter rpmSpecSrcIterFree(rpmSpecSrcIter iter);
63 /* Getters for spec source attributes */
64 rpmSourceFlags rpmSpecSrcFlags(rpmSpecSrc src);
65 int rpmSpecSrcNum(rpmSpecSrc src);
66 const char * rpmSpecSrcFilename(rpmSpecSrc src, int full);
69 * Retrieve parsed spec script section (RPMBUILD_PREP, RPMBUILD_BUILD etc).
70 * As a special case, RPMBUILD_NONE as section returns the entire spec in
71 * preprocessed (macros expanded etc) format.
73 const char * rpmSpecGetSection(rpmSpec spec, int section);
76 * Function to query spec file(s).
77 * @param ts transaction set
78 * @param qva parsed query/verify options
79 * @param arg query argument
80 * @return 0 on success, else no. of failures
82 int rpmspecQuery(rpmts ts, QVA_t qva, const char * arg);