hackedteam/core-linux

View on GitHub
contrib/rpm/usr/include/rpm/rpmbuild.h

Summary

Maintainability
Test Coverage
#ifndef    _H_RPMBUILD_
#define    _H_RPMBUILD_

/** \ingroup rpmbuild
 * \file build/rpmbuild.h
 *  This is the *only* module users of librpmbuild should need to include.
 */

#include <rpm/rpmcli.h>
#include <rpm/rpmds.h>
#include <rpm/rpmspec.h>

#ifdef __cplusplus
extern "C" {
#endif

/** \ingroup rpmbuild
 * Bit(s) to control rpmSpecBuild() operation.
 */
enum rpmBuildFlags_e {
    RPMBUILD_NONE    = 0,
    RPMBUILD_PREP    = (1 <<  0),    /*!< Execute %%prep. */
    RPMBUILD_BUILD    = (1 <<  1),    /*!< Execute %%build. */
    RPMBUILD_INSTALL    = (1 <<  2),    /*!< Execute %%install. */
    RPMBUILD_CHECK    = (1 <<  3),    /*!< Execute %%check. */
    RPMBUILD_CLEAN    = (1 <<  4),    /*!< Execute %%clean. */
    RPMBUILD_FILECHECK    = (1 <<  5),    /*!< Check %%files manifest. */
    RPMBUILD_PACKAGESOURCE = (1 <<  6),    /*!< Create source package. */
    RPMBUILD_PACKAGEBINARY = (1 <<  7),    /*!< Create binary package(s). */
    RPMBUILD_RMSOURCE    = (1 <<  8),    /*!< Remove source(s) and patch(s). */
    RPMBUILD_RMBUILD    = (1 <<  9),    /*!< Remove build sub-tree. */
    RPMBUILD_STRINGBUF    = (1 << 10),    /*!< Internal use only */
    RPMBUILD_RMSPEC    = (1 << 11),    /*!< Remove spec file. */

    RPMBUILD_NOBUILD    = (1 << 31)    /*!< Don't execute or package. */
};

typedef rpmFlags rpmBuildFlags;

/** \ingroup rpmbuild
 * Bit(s) to control package generation
 */
enum rpmBuildPkgFlags_e {
    RPMBUILD_PKG_NONE        = 0,
    RPMBUILD_PKG_NODIRTOKENS    = (1 << 0), /*!< Legacy filename layout */
};

typedef rpmFlags rpmBuildPkgFlags;

/** \ingroup rpmbuild
 * Describe build request.
 */
struct rpmBuildArguments_s {
    rpmBuildPkgFlags pkgFlags;    /*!< Bit(s) to control package generation. */
    rpmBuildFlags buildAmount;    /*!< Bit(s) to control build execution. */
    char * buildRootOverride;     /*!< from --buildroot */
    char * cookie;        /*!< NULL for binary, ??? for source, rpm's */
    const char * rootdir;
};

/** \ingroup rpmbuild
 */
typedef    struct rpmBuildArguments_s *    BTA_t;

/** \ingroup rpmbuild
 * Parse spec file into spec control structure.
 * @todo Eliminate buildRoot from here, its a build, not spec property
 *
 * @param specFile    path to spec file
 * @param flags        flags to control operation
 * @param buildRoot    buildRoot override or NULL for default
 * @return        new spec control structure
 */
rpmSpec rpmSpecParse(const char *specFile, rpmSpecFlags flags,
             const char *buildRoot);

/** \ingroup rpmbuild
 * Return the headers of the SRPM that would be built from the spec file
 * @param spec        path to spec file
 * @return        Header
 */
Header rpmSpecSourceHeader(rpmSpec spec);

/** \ingroup rpmbuild
 * Verify build depencies of a spec against.
 * @param ts        (empty) transaction set
 * @param spec        parsed spec control structure
 * @return        rpm problem set or NULL on no problems
 */
rpmps rpmSpecCheckDeps(rpmts ts, rpmSpec spec);

/** \ingroup rpmbuild
 * Retrieve build dependency set from spec.
 * @param spec        parsed spec control structure
 * @param tag        dependency tag
 * @return        dependency set of tag (or NULL)
 */
rpmds rpmSpecDS(rpmSpec spec, rpmTagVal tag);

/** \ingroup rpmbuild
 * Spec build stages state machine driver.
 * @param spec        spec file control structure
 * @param buildArgs    build arguments
 * @return        RPMRC_OK on success
 */
rpmRC rpmSpecBuild(rpmSpec spec, BTA_t buildArgs);

#ifdef __cplusplus
}
#endif

#endif    /* _H_RPMBUILD_ */