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