Use struct Package for source package too

- Makes the src.rpm that little bit more like other packages.
  Doesn't make things any saner here but we'll want to pass around
  package structs instead of headers later on.
This commit is contained in:
Panu Matilainen 2013-04-15 13:23:48 +03:00
parent 6d361d55d6
commit a3e35ad4c7
5 changed files with 28 additions and 26 deletions

View File

@ -1942,6 +1942,7 @@ rpmRC processSourceFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags)
struct FileList_s fl;
ARGV_t files = NULL;
Package pkg;
Package sourcePkg = spec->sourcePackage;
static char *_srcdefattr;
static int oneshot;
@ -1972,7 +1973,7 @@ rpmRC processSourceFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags)
}
}
spec->sourceCpioList = NULL;
sourcePkg->cpioList = NULL;
/* Init the file list structure */
memset(&fl, 0, sizeof(fl));
@ -2045,9 +2046,9 @@ rpmRC processSourceFiles(rpmSpec spec, rpmBuildPkgFlags pkgFlags)
argvFree(files);
if (! fl.processingFailed) {
if (spec->sourceHeader != NULL) {
genCpioListAndHeader(&fl, &spec->sourceCpioList,
spec->sourceHeader, 1);
if (sourcePkg->header != NULL) {
genCpioListAndHeader(&fl, &sourcePkg->cpioList,
sourcePkg->header, 1);
}
}

View File

@ -661,14 +661,15 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
rpmRC packageSources(rpmSpec spec, char **cookie)
{
Package sourcePkg = spec->sourcePackage;
struct cpioSourceArchive_s csabuf;
CSA_t csa = &csabuf;
rpmRC rc;
/* Add some cruft */
headerPutString(spec->sourceHeader, RPMTAG_RPMVERSION, VERSION);
headerPutString(spec->sourceHeader, RPMTAG_BUILDHOST, buildHost());
headerPutUint32(spec->sourceHeader, RPMTAG_BUILDTIME, getBuildTime(), 1);
headerPutString(sourcePkg->header, RPMTAG_RPMVERSION, VERSION);
headerPutString(sourcePkg->header, RPMTAG_BUILDHOST, buildHost());
headerPutUint32(sourcePkg->header, RPMTAG_BUILDTIME, getBuildTime(), 1);
/* XXX this should be %_srpmdir */
{ char *fn = rpmGetPath("%{_srcrpmdir}/", spec->sourceRpmName,NULL);
@ -676,10 +677,10 @@ rpmRC packageSources(rpmSpec spec, char **cookie)
memset(csa, 0, sizeof(*csa));
csa->cpioArchiveSize = 0;
csa->cpioList = rpmfiLink(spec->sourceCpioList);
csa->cpioList = rpmfiLink(sourcePkg->cpioList);
spec->sourcePkgId = NULL;
rc = writeRPM(&spec->sourceHeader, &spec->sourcePkgId, fn, csa, cookie);
rc = writeRPM(&sourcePkg->header, &spec->sourcePkgId, fn, csa, cookie);
/* Do check SRPM package if enabled */
if (rc == RPMRC_OK && pkgcheck[0] != ' ') {

View File

@ -452,14 +452,16 @@ static const rpmTagVal sourceTags[] = {
static void initSourceHeader(rpmSpec spec)
{
Package sourcePkg;
struct Source *srcPtr;
if (spec->sourceHeader)
if (spec->sourcePackage)
return;
spec->sourceHeader = headerNew();
sourcePkg = spec->sourcePackage = xcalloc(1, sizeof(*sourcePkg));
sourcePkg->header = headerNew();
/* Only specific tags are added to the source package header */
headerCopyTags(spec->packages->header, spec->sourceHeader, sourceTags);
headerCopyTags(spec->packages->header, sourcePkg->header, sourceTags);
/* Add the build restrictions */
{
@ -467,7 +469,7 @@ static void initSourceHeader(rpmSpec spec)
struct rpmtd_s td;
while (headerNext(hi, &td)) {
if (rpmtdCount(&td) > 0) {
(void) headerPut(spec->sourceHeader, &td, HEADERPUT_DEFAULT);
(void) headerPut(sourcePkg->header, &td, HEADERPUT_DEFAULT);
}
rpmtdFreeData(&td);
}
@ -475,23 +477,23 @@ static void initSourceHeader(rpmSpec spec)
}
if (spec->BANames && spec->BACount > 0) {
headerPutStringArray(spec->sourceHeader, RPMTAG_BUILDARCHS,
headerPutStringArray(sourcePkg->header, RPMTAG_BUILDARCHS,
spec->BANames, spec->BACount);
}
/* Add tags for sources and patches */
for (srcPtr = spec->sources; srcPtr != NULL; srcPtr = srcPtr->next) {
if (srcPtr->flags & RPMBUILD_ISSOURCE) {
headerPutString(spec->sourceHeader, RPMTAG_SOURCE, srcPtr->source);
headerPutString(sourcePkg->header, RPMTAG_SOURCE, srcPtr->source);
if (srcPtr->flags & RPMBUILD_ISNO) {
headerPutUint32(spec->sourceHeader, RPMTAG_NOSOURCE,
headerPutUint32(sourcePkg->header, RPMTAG_NOSOURCE,
&srcPtr->num, 1);
}
}
if (srcPtr->flags & RPMBUILD_ISPATCH) {
headerPutString(spec->sourceHeader, RPMTAG_PATCH, srcPtr->source);
headerPutString(sourcePkg->header, RPMTAG_PATCH, srcPtr->source);
if (srcPtr->flags & RPMBUILD_ISNO) {
headerPutUint32(spec->sourceHeader, RPMTAG_NOPATCH,
headerPutUint32(sourcePkg->header, RPMTAG_NOPATCH,
&srcPtr->num, 1);
}
}

View File

@ -66,8 +66,7 @@ struct rpmSpec_s {
char * sourceRpmName;
unsigned char * sourcePkgId;
Header sourceHeader;
rpmfi sourceCpioList;
Package sourcePackage;
rpmMacroContext macros;

View File

@ -186,8 +186,7 @@ rpmSpec newSpec(void)
spec->sourceRpmName = NULL;
spec->sourcePkgId = NULL;
spec->sourceHeader = NULL;
spec->sourceCpioList = NULL;
spec->sourcePackage = NULL;
spec->buildRoot = NULL;
spec->buildSubdir = NULL;
@ -243,8 +242,7 @@ rpmSpec rpmSpecFree(rpmSpec spec)
spec->sourceRpmName = _free(spec->sourceRpmName);
spec->sourcePkgId = _free(spec->sourcePkgId);
spec->sourceHeader = headerFree(spec->sourceHeader);
spec->sourceCpioList = rpmfiFree(spec->sourceCpioList);
spec->sourcePackage = freePackage(spec->sourcePackage);
spec->buildRestrictions = headerFree(spec->buildRestrictions);
@ -274,7 +272,7 @@ rpmSpec rpmSpecFree(rpmSpec spec)
Header rpmSpecSourceHeader(rpmSpec spec)
{
return spec->sourceHeader;
return (spec && spec->sourcePackage) ? spec->sourcePackage->header : NULL;
}
rpmds rpmSpecDS(rpmSpec spec, rpmTagVal tag)
@ -419,7 +417,8 @@ int rpmspecQuery(rpmts ts, QVA_t qva, const char * arg)
res += qva->qva_showPackage(qva, ts, pkg->header);
}
} else {
res = qva->qva_showPackage(qva, ts, spec->sourceHeader);
Package sourcePkg = spec->sourcePackage;
res = qva->qva_showPackage(qva, ts, sourcePkg->header);
}
exit: