[Rpm-maint] Patch: repair nosource/nopatch tag insertion

Michael Schroeder mls at suse.de
Fri Apr 9 13:31:23 UTC 2010


rpm does not allow headerPutUint32 on internal tags, so use
headerPut instead. Maybe NOSOURCE/NOPATCH should not be internal
at all, though. They are useful to check if a rpm is "src" or
"nosrc", there is no other way to detect this.

Also fixes a copy&paste error, the code used RPMTAG_NOSOURCE instead
of RPMTAG_NOPATCH.

--- ./build/files.c.orig	2010-04-08 16:23:42.000000000 +0000
+++ ./build/files.c	2010-04-08 16:23:44.000000000 +0000
@@ -2088,15 +2088,25 @@ int processSourceFiles(rpmSpec spec)
 	if (srcPtr->flags & RPMBUILD_ISSOURCE) {
 	    headerPutString(spec->sourceHeader, RPMTAG_SOURCE, srcPtr->source);
 	    if (srcPtr->flags & RPMBUILD_ISNO) {
-		headerPutUint32(spec->sourceHeader, RPMTAG_NOSOURCE,
-				&srcPtr->num, 1);
+		struct rpmtd_s td;
+		rpmtdReset(&td);
+		td.tag = RPMTAG_NOSOURCE;
+		td.type = RPM_INT32_TYPE;
+		td.data = &srcPtr->num;
+		td.count = 1; 
+		headerPut(spec->sourceHeader, &td, HEADERPUT_APPEND);
 	    }
 	}
 	if (srcPtr->flags & RPMBUILD_ISPATCH) {
 	    headerPutString(spec->sourceHeader, RPMTAG_PATCH, srcPtr->source);
 	    if (srcPtr->flags & RPMBUILD_ISNO) {
-		headerPutUint32(spec->sourceHeader, RPMTAG_NOSOURCE,
-				&srcPtr->num, 1);
+		struct rpmtd_s td;
+		rpmtdReset(&td);
+		td.tag = RPMTAG_NOPATCH;
+		td.type = RPM_INT32_TYPE;
+		td.data = &srcPtr->num;
+		td.count = 1; 
+		headerPut(spec->sourceHeader, &td, HEADERPUT_APPEND);
 	    }
 	}
 


More information about the Rpm-maint mailing list