From 7a94ee782ec2afa3a1615f14cc8fb46fbad0becf Mon Sep 17 00:00:00 2001 From: jbj Date: Sun, 9 Aug 1998 17:01:57 +0000 Subject: [PATCH] Get the lead exactly right w/o reading rpmrc. CVS patchset: 2240 CVS date: 1998/08/09 17:01:57 --- build/buildio.h | 1 + build/pack.c | 32 ++++++++++++++++++++++++-------- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/build/buildio.h b/build/buildio.h index 89863d2..265b520 100644 --- a/build/buildio.h +++ b/build/buildio.h @@ -11,6 +11,7 @@ typedef struct cpioSourceArchive { int cpioFdIn; struct cpioFileMapping *cpioList; int cpioCount; + struct rpmlead *lead; /* XXX FIXME: exorcize lead/arch/os */ } CSA_t; #ifdef __cplusplus diff --git a/build/pack.c b/build/pack.c index 6b007ee..6d27c6e 100644 --- a/build/pack.c +++ b/build/pack.c @@ -75,6 +75,7 @@ int packageSources(Spec spec) FREE(spec->cookie); + memset(csa, 0, sizeof(*csa)); csa->cpioArchiveSize = 0; csa->cpioFdIn = -1; csa->cpioList = spec->sourceCpioList; @@ -132,6 +133,7 @@ int packageBinaries(Spec spec) sprintf(fileName, "%s/%s", rpmGetVar(RPMVAR_RPMDIR), binRpm); FREE(binRpm); + memset(csa, 0, sizeof(*csa)); csa->cpioArchiveSize = 0; csa->cpioFdIn = -1; csa->cpioList = pkg->cpioList; @@ -157,10 +159,12 @@ int writeRPM(Header header, char *fileName, int type, Header sig; struct rpmlead lead; - csa->cpioArchiveSize = 0; - /* Add the a bogus archive size to the Header */ - headerAddEntry(header, RPMTAG_ARCHIVESIZE, RPM_INT32_TYPE, - &csa->cpioArchiveSize, 1); + if (csa->cpioList != NULL) { + csa->cpioArchiveSize = 0; + /* Add the a bogus archive size to the Header */ + headerAddEntry(header, RPMTAG_ARCHIVESIZE, RPM_INT32_TYPE, + &csa->cpioArchiveSize, 1); + } /* Create and add the cookie */ if (cookie) { @@ -193,8 +197,10 @@ int writeRPM(Header header, char *fileName, int type, } /* Now set the real archive size in the Header */ - headerModifyEntry(header, RPMTAG_ARCHIVESIZE, - RPM_INT32_TYPE, &csa->cpioArchiveSize, 1); + if (csa->cpioList != NULL) { + headerModifyEntry(header, RPMTAG_ARCHIVESIZE, + RPM_INT32_TYPE, &csa->cpioArchiveSize, 1); + } lseek(fd, 0, SEEK_SET); headerWrite(fd, header, HEADER_MAGIC_YES); @@ -214,8 +220,18 @@ int writeRPM(Header header, char *fileName, int type, headerGetEntry(header, RPMTAG_VERSION, NULL, (void **)&version, NULL); headerGetEntry(header, RPMTAG_RELEASE, NULL, (void **)&release, NULL); sprintf(buf, "%s-%s-%s", name, version, release); - rpmGetArchInfo(NULL, &arch); - rpmGetOsInfo(NULL, &os); + + if (csa->cpioList != NULL) { + rpmGetArchInfo(NULL, &arch); + rpmGetOsInfo(NULL, &os); + } else if (csa->lead != NULL) { /* XXX FIXME: exorcize lead/arch/os */ + arch = csa->lead->archnum; + os = csa->lead->osnum; + } else { + arch = -1; + os = -1; + } + memset(&lead, 0, sizeof(lead)); lead.major = RPM_MAJOR_NUMBER; lead.minor = 0; -- 2.7.4