From 6c7b53b108b24d831b6f8b9d3260eae52d38ebb9 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Thu, 6 Oct 2011 11:02:31 +0300 Subject: [PATCH] Add implicit self-provides during spec parse already - Makes the self-provides accessible on spec parse queries, shouldn't affect anything else. --- build/pack.c | 34 ---------------------------------- build/parseSpec.c | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 35 deletions(-) diff --git a/build/pack.c b/build/pack.c index 1cb23dd..51b7500 100644 --- a/build/pack.c +++ b/build/pack.c @@ -522,38 +522,6 @@ static const rpmTagVal copyTags[] = { 0 }; -/* - * Add extra provides to package. - */ -static void addPackageProvides(Header h) -{ - const char *arch, *name; - char *evr, *isaprov; - rpmsenseFlags pflags = RPMSENSE_EQUAL; - - /* = provide */ - name = headerGetString(h, RPMTAG_NAME); - arch = headerGetString(h, RPMTAG_ARCH); - evr = headerGetAsString(h, RPMTAG_EVR); - headerPutString(h, RPMTAG_PROVIDENAME, name); - headerPutString(h, RPMTAG_PROVIDEVERSION, evr); - headerPutUint32(h, RPMTAG_PROVIDEFLAGS, &pflags, 1); - - /* - * () = provide - * FIXME: noarch needs special casing for now as BuildArch: noarch doesn't - * cause reading in the noarch macros :-/ - */ - isaprov = rpmExpand(name, "%{?_isa}", NULL); - if (!rstreq(arch, "noarch") && !rstreq(name, isaprov)) { - headerPutString(h, RPMTAG_PROVIDENAME, isaprov); - headerPutString(h, RPMTAG_PROVIDEVERSION, evr); - headerPutUint32(h, RPMTAG_PROVIDEFLAGS, &pflags, 1); - } - free(isaprov); - free(evr); -} - static rpmRC checkPackages(char *pkgcheck) { int fail = rpmExpandNumeric("%{?_nonzero_exit_pkgcheck_terminate_build}"); @@ -602,8 +570,6 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating) headerPutString(pkg->header, RPMTAG_BUILDHOST, buildHost()); headerPutUint32(pkg->header, RPMTAG_BUILDTIME, getBuildTime(), 1); - addPackageProvides(pkg->header); - { char * optflags = rpmExpand("%{optflags}", NULL); headerPutString(pkg->header, RPMTAG_OPTFLAGS, optflags); free(optflags); diff --git a/build/parseSpec.c b/build/parseSpec.c index a9c31de..78fb089 100644 --- a/build/parseSpec.c +++ b/build/parseSpec.c @@ -503,6 +503,36 @@ static void initSourceHeader(rpmSpec spec) } } +/* Add extra provides to package. */ +static void addPackageProvides(Header h) +{ + const char *arch, *name; + char *evr, *isaprov; + rpmsenseFlags pflags = RPMSENSE_EQUAL; + + /* = provide */ + name = headerGetString(h, RPMTAG_NAME); + arch = headerGetString(h, RPMTAG_ARCH); + evr = headerGetAsString(h, RPMTAG_EVR); + headerPutString(h, RPMTAG_PROVIDENAME, name); + headerPutString(h, RPMTAG_PROVIDEVERSION, evr); + headerPutUint32(h, RPMTAG_PROVIDEFLAGS, &pflags, 1); + + /* + * () = provide + * FIXME: noarch needs special casing for now as BuildArch: noarch doesn't + * cause reading in the noarch macros :-/ + */ + isaprov = rpmExpand(name, "%{?_isa}", NULL); + if (!rstreq(arch, "noarch") && !rstreq(name, isaprov)) { + headerPutString(h, RPMTAG_PROVIDENAME, isaprov); + headerPutString(h, RPMTAG_PROVIDEVERSION, evr); + headerPutUint32(h, RPMTAG_PROVIDEFLAGS, &pflags, 1); + } + free(isaprov); + free(evr); +} + static void addTargets(Package Pkgs) { char *platform = rpmExpand("%{_target_platform}", NULL); @@ -518,6 +548,7 @@ static void addTargets(Package Pkgs) headerPutString(pkg->header, RPMTAG_PLATFORM, platform); pkg->ds = rpmdsThis(pkg->header, RPMTAG_REQUIRENAME, RPMSENSE_EQUAL); + addPackageProvides(pkg->header); } free(platform); free(arch); @@ -677,7 +708,7 @@ static rpmSpec parseSpec(const char *specFile, rpmSpecFlags flags, } } - /* Add arch, os and platform for each package */ + /* Add arch, os and platform, self-provides etc for each package */ addTargets(spec->packages); closeSpec(spec); -- 2.7.4