goto exit;
if ((what & RPMBUILD_PACKAGESOURCE) &&
- (rc = processSourceFiles(spec)))
+ (rc = processSourceFiles(spec, buildArgs->pkgFlags)))
goto exit;
if (((what & RPMBUILD_INSTALL) || (what & RPMBUILD_PACKAGEBINARY) ||
(what & RPMBUILD_FILECHECK)) &&
- (rc = processBinaryFiles(spec, what & RPMBUILD_INSTALL, test)))
+ (rc = processBinaryFiles(spec, buildArgs->pkgFlags,
+ what & RPMBUILD_INSTALL, test)))
goto exit;
if (((what & RPMBUILD_INSTALL) || (what & RPMBUILD_PACKAGEBINARY)) &&
int devminor;
int isDir;
+ rpmBuildPkgFlags pkgFlags;
rpmfileAttrs currentFlags;
specdFlags currentSpecdFlags;
rpmVerifyFlags currentVerifyFlags;
}
/* Compress filelist unless legacy format requested */
- if (!_noDirTokens) {
+ if (!(fl->pkgFlags & RPMBUILD_PKG_NODIRTOKENS)) {
headerConvert(h, HEADERCONV_COMPRESSFILELIST);
/* Binary packages with dirNames cannot be installed by legacy rpm. */
(void) rpmlibNeedsFeature(h, "CompressedFileNames", "3.0.4-1");
/**
*/
-static rpmRC processPackageFiles(rpmSpec spec, Package pkg,
- int installSpecialDoc, int test)
+static rpmRC processPackageFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags,
+ Package pkg, int installSpecialDoc, int test)
{
struct FileList_s fl;
char *s, **fp;
fl.defSpecdFlags = 0;
fl.largeFiles = 0;
+ fl.pkgFlags = pkgFlags;
fl.docDirs = NULL;
{ char *docs = rpmGetPath("%{?__docdir_path}", NULL);
}
}
-int processSourceFiles(rpmSpec spec)
+int processSourceFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags)
{
struct Source *srcPtr;
StringBuf sourceFiles;
fl.fileList = xcalloc((spec->numSources + 1), sizeof(*fl.fileList));
fl.processingFailed = 0;
fl.fileListRecsUsed = 0;
+ fl.pkgFlags = pkgFlags;
fl.buildRoot = NULL;
s = getStringBuf(sourceFiles);
return rc;
}
-int processBinaryFiles(rpmSpec spec, int installSpecialDoc, int test)
+int processBinaryFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags,
+ int installSpecialDoc, int test)
{
Package pkg;
int rc = RPMRC_OK;
rpmlog(RPMLOG_NOTICE, _("Processing files: %s\n"), nvr);
free(nvr);
- if ((rc = processPackageFiles(spec, pkg, installSpecialDoc, test)) != RPMRC_OK ||
+ if ((rc = processPackageFiles(spec, pkgFlags, pkg, installSpecialDoc, test)) != RPMRC_OK ||
(rc = rpmfcGenerateDepends(spec, pkg)) != RPMRC_OK)
goto exit;
#define POPT_NOBUILD -1017
#define POPT_SHORTCIRCUIT -1018
#define POPT_RMSPEC -1019
-#define POPT_SIGN -1020
+#define POPT_NODIRTOKENS -1020
#define POPT_REBUILD 0x4220
#define POPT_RECOMPILE 0x4320
extern int _fsm_debug;
-int _noDirTokens = 0;
-
/**
*/
static void buildArgCallback( poptContext con,
}
break;
+ case POPT_NODIRTOKENS: rba->pkgFlags |= RPMBUILD_PKG_NODIRTOKENS; break;
case POPT_NOBUILD: rba->buildAmount |= RPMBUILD_NOBUILD; break;
case POPT_NOLANG: rba->specFlags |= RPMSPEC_NOLANG; break;
case POPT_SHORTCIRCUIT: rba->shortCircuit = 1; break;
N_("override build root"), "DIRECTORY" },
{ "clean", '\0', 0, 0, POPT_RMBUILD,
N_("remove build tree when done"), NULL},
- { "dirtokens", '\0', POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN, &_noDirTokens, 0,
- N_("generate headers compatible with rpm4 packaging"), NULL},
{ "force", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_FORCE,
N_("ignore ExcludeArch: directives from spec file"), NULL},
{ "fsmdebug", '\0', (POPT_ARG_VAL|POPT_ARGFLAG_DOC_HIDDEN), &_fsm_debug, -1,
N_("do not execute any stages of the build"), NULL },
{ "nodeps", '\0', 0, NULL, RPMCLI_POPT_NODEPS,
N_("do not verify build dependencies"), NULL },
- { "nodirtokens", '\0', POPT_ARG_VAL, &_noDirTokens, 1,
- N_("generate package header(s) compatible with (legacy) rpm[23] packaging"),
+ { "nodirtokens", '\0', 0, 0, POPT_NODIRTOKENS,
+ N_("generate package header(s) compatible with (legacy) rpm v3 packaging"),
NULL},
{ "nodigest", '\0', POPT_ARGFLAG_DOC_HIDDEN, 0, RPMCLI_POPT_NODIGEST,
} rpmBuildFlags;
/** \ingroup rpmbuild
+ * Bit(s) to control package generation
+ */
+typedef enum rpmBuildPkgFlags_e {
+ RPMBUILD_PKG_NONE = 0,
+ RPMBUILD_PKG_NODIRTOKENS = (1 << 0), /*!< Legacy filename layout */
+} rpmBuildPkgFlags;
+
+/** \ingroup rpmbuild
* Describe build command line request.
*/
struct rpmBuildArguments_s {
rpmQueryFlags qva_flags; /*!< Bit(s) to control verification. */
rpmSpecFlags specFlags; /*!< Bit(s) to control spec parsing. */
+ rpmBuildPkgFlags pkgFlags; /*!< Bit(s) to control package generation. */
int buildAmount; /*!< Bit(s) to control operation. */
char * buildRootOverride; /*!< from --buildroot */
char * targets; /*!< Target platform(s), comma separated. */
extern struct poptOption rpmBuildPoptTable[];
/** \ingroup rpmbuild
- * Should version 3 packages be produced?
- */
-extern int _noDirTokens;
-
-/** \ingroup rpmbuild
* Parse spec file into spec control structure.
* @todo Eliminate buildRoot from here, its a build, not spec property
*
/** \ingroup rpmbuild
* Post-build processing for binary package(s).
* @param spec spec file control structure
+ * @param pkgFlags bit(s) to control package generation
* @param installSpecialDoc
* @param test don't execute scripts or package if testing
* @return 0 on success
*/
RPM_GNUC_INTERNAL
-int processBinaryFiles(rpmSpec spec, int installSpecialDoc, int test);
+int processBinaryFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags,
+ int installSpecialDoc, int test);
/** \ingroup rpmbuild
* Post-build processing for policies in binary package(s).
/** \ingroup rpmbuild
* Post-build processing for source package.
* @param spec spec file control structure
+ * @param pkgFlags bit(s) to control package generation
* @return 0 on success
*/
RPM_GNUC_INTERNAL
-int processSourceFiles(rpmSpec spec);
+int processSourceFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags);
/** \ingroup rpmbuild
* Generate binary package(s).