teknoraver / rpms / rpm

Forked from rpms/rpm 4 months ago
Clone
Blob Blame History Raw
diff -up rpm-4.6.0/build/files.c.noarch-elf-check rpm-4.6.0/build/files.c
--- rpm-4.6.0/build/files.c.noarch-elf-check	2009-02-06 09:18:53.000000000 +0200
+++ rpm-4.6.0/build/files.c	2009-02-21 12:53:21.000000000 +0200
@@ -2174,17 +2174,27 @@ int processBinaryFiles(rpmSpec spec, int
     check_fileList = newStringBuf();
     
     for (pkg = spec->packages; pkg != NULL; pkg = pkg->next) {
-	const char *n, *v, *r;
+	const char *n, *v, *r, *a;
 
 	if (pkg->fileList == NULL)
 	    continue;
 
-	(void) headerNVR(pkg->header, &n, &v, &r);
-	rpmlog(RPMLOG_NOTICE, _("Processing files: %s-%s-%s\n"), n, v, r);
+	(void) headerNEVRA(pkg->header, &n, NULL, &v, &r, &a);
+	rpmlog(RPMLOG_NOTICE, _("Processing files: %s-%s-%s-%s\n"), n, v, r, a);
 		   
 	if ((rc = processPackageFiles(spec, pkg, installSpecialDoc, test)) != RPMRC_OK ||
 	    (rc = rpmfcGenerateDepends(spec, pkg)) != RPMRC_OK)
 	    goto exit;
+
+	if (strcmp(a, "noarch") == 0 && headerGetColor(pkg->header) != 0) {
+	    int terminate = rpmExpandNumeric("%{?_binaries_in_noarch_packages_terminate_build}");
+	    rpmlog(terminate ? RPMLOG_ERR : RPMLOG_WARNING, 
+		    _("Arch dependent binaries in noarch package\n"));
+	    if (terminate) {
+		rc = RPMRC_FAIL;
+		goto exit;
+	    }
+	}
     }
 
     /* Now we have in fileList list of files from all packages.
diff -up rpm-4.6.0/macros.in.noarch-elf-check rpm-4.6.0/macros.in
--- rpm-4.6.0/macros.in.noarch-elf-check	2009-02-21 12:41:20.000000000 +0200
+++ rpm-4.6.0/macros.in	2009-02-21 12:41:20.000000000 +0200
@@ -375,6 +375,9 @@ package or when debugging this package.\
 # Note: The default value should be 0 for legacy compatibility.
 %_missing_doc_files_terminate_build	1
 
+# Should binaries in noarch packages terminate a build?
+%_binaries_in_noarch_packages_terminate_build 1
+
 #
 # Should an ELF file processed by find-debuginfo.sh having no build ID
 # terminate a build?  This is left undefined to disable it and defined to