84fa912
diff -up rpm-4.6.0/build/parsePreamble.c.inherit-group rpm-4.6.0/build/parsePreamble.c
84fa912
--- rpm-4.6.0/build/parsePreamble.c.inherit-group	2008-12-05 12:49:44.000000000 +0100
84fa912
+++ rpm-4.6.0/build/parsePreamble.c	2009-02-16 12:43:41.000000000 +0100
84fa912
@@ -900,20 +900,30 @@ int parsePreamble(rpmSpec spec, int init
84fa912
 	goto exit;
84fa912
     }
84fa912
 
84fa912
-    if (pkg == spec->packages)
84fa912
+    /* It is the main package */
84fa912
+    if (pkg == spec->packages) {
84fa912
 	fillOutMainPackage(pkg->header);
84fa912
+	/* Define group tag to something when group is undefined in main package*/
84fa912
+	if (!headerIsEntry(pkg->header, RPMTAG_GROUP)) {
84fa912
+	    headerPutString(pkg->header, RPMTAG_GROUP, "Unspecified");
84fa912
+	}
84fa912
+    }
84fa912
 
84fa912
     if (checkForDuplicates(pkg->header, NVR)) {
84fa912
 	goto exit;
84fa912
     }
84fa912
 
84fa912
-    if (pkg != spec->packages)
84fa912
+    if (pkg != spec->packages) {
84fa912
 	headerCopyTags(spec->packages->header, pkg->header,
84fa912
 			(rpmTag *)copyTagsDuringParse);
84fa912
-
84fa912
-    /* Many things expect group to always exist, put something in there... */
84fa912
-    if (!headerIsEntry(pkg->header, RPMTAG_GROUP)) {
84fa912
-	headerPutString(pkg->header, RPMTAG_GROUP, "Unspecified");
84fa912
+	/* inherit group tag from the main package if unspecified */
84fa912
+	if (!headerIsEntry(pkg->header, RPMTAG_GROUP)) {
84fa912
+	    struct rpmtd_s td;
84fa912
+
84fa912
+	    headerGet(spec->packages->header, RPMTAG_GROUP, &td, HEADERGET_DEFAULT);
84fa912
+	    headerPut(pkg->header, &td, HEADERPUT_DEFAULT);
84fa912
+	    rpmtdFreeData(&td);
84fa912
+	}
84fa912
     }
84fa912
 
84fa912
     if (checkForRequired(pkg->header, NVR)) {