- add new fully recursive macro.c
2.5.3 -> 2.5.4:
+ - skip arch checks if only packaging source rpm.
- add license field to rpmpopt -qi alias.
- provides/obsoletes requires tokens that begin with alnum or _.
- non-zero exit status for verify failures.
s++;
}
- if (parseSpec(&spec, specfile, buildRoot, 0, passPhrase, cookie)) {
- return 1;
+#define _anyarch(_f) \
+(((_f)&(RPMBUILD_PACKAGESOURCE|RPMBUILD_PACKAGEBINARY)) == RPMBUILD_PACKAGESOURCE)
+ if (parseSpec(&spec, specfile, buildRoot, 0, passPhrase, cookie,
+ _anyarch(buildAmount))) {
+ return 1;
}
+#undef _anyarch
if (buildSpec(spec, buildAmount, test)) {
freeSpec(spec);
return 0;
}
-int parsePreamble(Spec spec, int initialPackage)
+int parsePreamble(Spec spec, int initialPackage, int anyarch)
{
int nextPart;
int tag, rc;
return RPMERR_BADSPEC;
}
- if (checkForValidArchitectures(spec)) {
- return RPMERR_BADSPEC;
+ /* XXX Skip valid arch check if only doing -bs processing */
+ if (!anyarch && checkForValidArchitectures(spec)) {
+ return RPMERR_BADSPEC;
}
if (pkg == spec->packages) {
int noLang = 0; /* XXX FIXME: pass as arg */
int parseSpec(Spec *specp, char *specFile, char *buildRoot,
- int inBuildArch, char *passPhrase, char *cookie)
+ int inBuildArch, char *passPhrase, char *cookie,
+ int anyarch)
{
int parsePart = PART_PREAMBLE;
int initialPackage = 1;
while (parsePart != PART_NONE) {
switch (parsePart) {
case PART_PREAMBLE:
- parsePart = parsePreamble(spec, initialPackage);
+ parsePart = parsePreamble(spec, initialPackage, anyarch);
initialPackage = 0;
break;
case PART_PREP:
rpmSetMachine(spec->buildArchitectures[x], NULL);
if (parseSpec(&(spec->buildArchitectureSpecs[index]),
specFile, buildRoot, 1,
- passPhrase, cookie)) {
+ passPhrase, cookie, anyarch)) {
spec->buildArchitectureCount = index;
freeSpec(spec);
return RPMERR_BADSPEC;
int parseChangelog(Spec spec);
int parseDescription(Spec spec);
int parseFiles(Spec spec);
-int parsePreamble(Spec spec, int initialPackage);
+int parsePreamble(Spec spec, int initialPackage, int anyarch);
int parsePrep(Spec spec);
int parseRequiresConflicts(Spec spec, Package pkg, char *field,
int tag, int index);
/* global entry points */
int parseSpec(Spec *specp, char *specFile, char *buildRoot,
- int inBuildArch, char *passPhrase, char *cookie);
+ int inBuildArch, char *passPhrase, char *cookie, int anyarch);
int buildSpec(Spec spec, int what, int test);
int packageBinaries(Spec spec);