--- ./build/files.c.subpackage_failures~ 2013-05-22 18:56:03.629212893 +0400 +++ ./build/files.c 2013-05-22 19:07:50.697775045 +0400 @@ -2513,8 +2513,8 @@ files = argvFree(files); - if (fl.processingFailed) - goto exit; +/* if (fl.processingFailed) + goto exit;*/ /* Verify that file attributes scope over hardlinks correctly. */ if (checkHardLinks(&fl)) @@ -3147,6 +3147,7 @@ HE_t he = (HE_t) memset(alloca(sizeof(*he)), 0, sizeof(*he)); Package pkg; rpmRC res = RPMRC_OK; + short failed_once = 0; char *buildroot = rpmExpand("%{?buildroot}", NULL); size_t buildrootL = strlen(buildroot); @@ -3167,22 +3168,23 @@ he->p.ptr = _free(he->p.ptr); if ((rc = processPackageFiles(spec, pkg, installSpecialDoc, test))) { - res = RPMRC_FAIL; - (void) headerMacrosUnload(pkg->header); - break; + failed_once = 1; } /* Finalize package scriptlets before extracting dependencies. */ if ((rc = processScriptFiles(spec, pkg))) { res = rc; (void) headerMacrosUnload(pkg->header); - break; + if (res == RPMRC_FAIL) { + failed_once = 1; + } + else { + break; + } } if ((rc = rpmfcGenerateDepends(spec, pkg))) { - res = RPMRC_FAIL; - (void) headerMacrosUnload(pkg->header); - break; + failed_once = 1; } /* XXX this should be earlier for deps to be entirely sorted. */ @@ -3191,7 +3193,10 @@ (void) headerMacrosUnload(pkg->header); } - if (res == RPMRC_OK) { + if (failed_once == 1) + res = RPMRC_FAIL; + +/* if (res == RPMRC_OK) {*/ int _duplicate_files_terminate_build = rpmExpandNumeric("%{?_duplicate_files_terminate_build}"); int _unpackaged_subdirs_terminate_build = @@ -3204,7 +3209,7 @@ if (checkUnpackagedSubdirs(spec, buildrootL, _unpackaged_subdirs_terminate_build) > 0 && _unpackaged_subdirs_terminate_build) res = RPMRC_FAIL; - } +/* }*/ return res; }