--- rpm-5.4.10/build/files.c.dups_terminate~ 2012-07-10 20:09:01.125249185 +0200 +++ rpm-5.4.10/build/files.c 2012-07-10 20:09:01.135249061 +0200 @@ -2917,7 +2917,8 @@ exit: /* auxiliary function for checkDuplicateFiles() */ /* XXX need to pass Header because fi->h is NULL */ -static int fiIntersect(/*@null@*/ rpmfi fi1, /*@null@*/ rpmfi fi2, size_t buildrootL) +static int fiIntersect(/*@null@*/ rpmfi fi1, /*@null@*/ rpmfi fi2, + size_t buildrootL, int _duplicate_files_terminate_build) /*@globals internalState @*/ /*@modifies fi1, fi2, internalState @*/ { @@ -2955,7 +2956,7 @@ static int fiIntersect(/*@null@*/ rpmfi he->tag = RPMTAG_NVRA; N2 = (headerGet(fi2->h, he, 0) ? he->p.str : NULL); - rpmlog(RPMLOG_WARNING, + rpmlog(_duplicate_files_terminate_build ? RPMLOG_ERR : RPMLOG_WARNING, _("File(s) packaged into both %s and %s:\n%s"), N1, N2, rpmiobStr(dups)); @@ -2972,7 +2973,8 @@ static int fiIntersect(/*@null@*/ rpmfi * @param spec spec file control structure * @return number of duplicate files */ -static int checkDuplicateFiles(Spec spec, size_t buildrootL) +static int checkDuplicateFiles(Spec spec, size_t buildrootL, + int _duplicate_files_terminate_build) /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/ /*@modifies *spec->packages, rpmGlobalMacroContext, fileSystem, internalState @*/ @@ -2997,7 +2999,7 @@ static int checkDuplicateFiles(Spec spec #endif if (fi2 == NULL) continue; (void) rpmfiSetHeader(fi2, pkg2->header); - n += fiIntersect(fi1, fi2, buildrootL); + n += fiIntersect(fi1, fi2, buildrootL, _duplicate_files_terminate_build); (void) rpmfiSetHeader(fi2, NULL); fi2 = rpmfiFree(fi2); } @@ -3181,9 +3183,13 @@ rpmRC processBinaryFiles(Spec spec, int } if (res == RPMRC_OK) { + int _duplicate_files_terminate_build = + rpmExpandNumeric("%{?_duplicate_files_terminate_build}"); if (checkUnpackagedFiles(spec) > 0) res = RPMRC_FAIL; - (void) checkDuplicateFiles(spec, buildrootL); + if (checkDuplicateFiles(spec, buildrootL, _duplicate_files_terminate_build) > 0 && + _duplicate_files_terminate_build) + res = RPMRC_FAIL; (void) checkUnpackagedSubdirs(spec, buildrootL); } --- rpm-5.4.10/macros/mandriva.in.dups_terminate~ 2012-05-19 22:35:44.000000000 +0200 +++ rpm-5.4.10/macros/mandriva.in 2012-07-10 20:13:41.582742985 +0200 @@ -126,6 +126,9 @@ end\ # use XZ to compress binary packages: %_binary_payload w5.xzdio +%_duplicate_files_terminate_build 1 + + %_build_pkgcheck_set /usr/bin/rpmlint -T -f %{_sourcedir}/%{name}.rpmlintrc %_build_pkgcheck_srpm /usr/bin/rpmlint -T -f %{_sourcedir}/%{name}.rpmlintrc %_nonzero_exit_pkgcheck_terminate_build 1