Merge "Fixed incorrect writting host_os to platform/macros for uClibc" into tizen
[platform/upstream/rpm.git] / build / rpmspec.h
1 #ifndef _H_SPEC_
2 #define _H_SPEC_
3
4 /** \ingroup rpmbuild
5  * \file build/rpmspec.h
6  *  The rpmSpec and Package data structures used during build.
7  */
8
9 #include <rpm/rpmstring.h>      /* StringBuf */
10 #include <rpm/rpmcli.h> /* for QVA_t */
11
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15
16 /** \ingroup rpmbuild
17  */
18 typedef struct Package_s * rpmSpecPkg;
19 typedef struct Source * rpmSpecSrc;
20 typedef struct rpmSpecIter_s * rpmSpecPkgIter;
21 typedef struct rpmSpecIter_s * rpmSpecSrcIter;
22
23 enum rpmSourceFlags_e {
24     RPMBUILD_ISSOURCE   = (1 << 0),
25     RPMBUILD_ISPATCH    = (1 << 1),
26     RPMBUILD_ISICON     = (1 << 2),
27     RPMBUILD_ISNO       = (1 << 3),
28 };
29
30 typedef rpmFlags rpmSourceFlags;
31
32 #define RPMBUILD_DEFAULT_LANG "C"
33
34 enum rpmSpecFlags_e {
35     RPMSPEC_NONE        = 0,
36     RPMSPEC_ANYARCH     = (1 << 0),
37     RPMSPEC_FORCE       = (1 << 1),
38     RPMSPEC_NOLANG      = (1 << 2),
39 };
40
41 typedef rpmFlags rpmSpecFlags;
42
43 /** \ingroup rpmbuild
44  * Destroy Spec structure.
45  * @param spec          spec file control structure
46  * @return              NULL always
47  */
48 rpmSpec rpmSpecFree(rpmSpec spec);
49
50 /* Iterator for spec packages */
51 rpmSpecPkgIter rpmSpecPkgIterInit(rpmSpec spec);
52 rpmSpecPkg rpmSpecPkgIterNext(rpmSpecPkgIter iter);
53 rpmSpecPkgIter rpmSpecPkgIterFree(rpmSpecPkgIter iter);
54
55 /* Getters for spec package attributes */
56 Header rpmSpecPkgHeader(rpmSpecPkg pkg);
57
58 /* Iterator for spec sources */
59 rpmSpecSrcIter rpmSpecSrcIterInit(rpmSpec spec);
60 rpmSpecSrc rpmSpecSrcIterNext(rpmSpecSrcIter iter);
61 rpmSpecSrcIter rpmSpecSrcIterFree(rpmSpecSrcIter iter);
62
63 /* Getters for spec source attributes */
64 rpmSourceFlags rpmSpecSrcFlags(rpmSpecSrc src);
65 int rpmSpecSrcNum(rpmSpecSrc src);
66 const char * rpmSpecSrcFilename(rpmSpecSrc src, int full);
67
68 /*
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.
72  */
73 const char * rpmSpecGetSection(rpmSpec spec, int section);
74
75 /** \ingroup rpmbuild
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
81  */
82 int rpmspecQuery(rpmts ts, QVA_t qva, const char * arg);
83
84 #ifdef __cplusplus
85 }
86 #endif
87
88 #endif /* _H_SPEC_ */