From a3e35ad4c798c8d6e60444df4f146118599478d6 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Mon, 15 Apr 2013 13:23:48 +0300 Subject: [PATCH] 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. --- build/files.c | 9 +++++---- build/pack.c | 11 ++++++----- build/parseSpec.c | 20 +++++++++++--------- build/rpmbuild_internal.h | 3 +-- build/spec.c | 11 +++++------ 5 files changed, 28 insertions(+), 26 deletions(-) diff --git a/build/files.c b/build/files.c index 4a8cb563e..338ad8227 100644 --- a/build/files.c +++ b/build/files.c @@ -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); } } diff --git a/build/pack.c b/build/pack.c index e273a8437..1e009b057 100644 --- a/build/pack.c +++ b/build/pack.c @@ -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] != ' ') { diff --git a/build/parseSpec.c b/build/parseSpec.c index fcec5c5d4..933a52b7f 100644 --- a/build/parseSpec.c +++ b/build/parseSpec.c @@ -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); } } diff --git a/build/rpmbuild_internal.h b/build/rpmbuild_internal.h index 600c086ad..cfe5ab8c1 100644 --- a/build/rpmbuild_internal.h +++ b/build/rpmbuild_internal.h @@ -66,8 +66,7 @@ struct rpmSpec_s { char * sourceRpmName; unsigned char * sourcePkgId; - Header sourceHeader; - rpmfi sourceCpioList; + Package sourcePackage; rpmMacroContext macros; diff --git a/build/spec.c b/build/spec.c index 4b6b6805d..944a0929b 100644 --- a/build/spec.c +++ b/build/spec.c @@ -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: