teknoraver / rpms / rpm

Forked from rpms/rpm 4 months ago
Clone

Blame rpm-4.12-beta1-spec-header-deps.patch

Panu Matilainen 5f4984
commit 0bda2faa4de368a87f85084856a5fed701774acb
Panu Matilainen 5f4984
Author: Panu Matilainen <pmatilai@redhat.com>
Panu Matilainen 5f4984
Date:   Mon Aug 18 16:31:14 2014 +0300
Panu Matilainen 5f4984
Panu Matilainen 5f4984
    Populate manual dependencies into spec pkg headers early too
Panu Matilainen 5f4984
    
Panu Matilainen 5f4984
    - Similar to commit 1b41c91431d37295701281ff208f99a51f660c89, rpmspec
Panu Matilainen 5f4984
      and other tools expect to find manually specified dependencies
Panu Matilainen 5f4984
      from the headers of a freshly parsed spec. This means we need to
Panu Matilainen 5f4984
      add this cruft two times: once for the manual dependencies and then
Panu Matilainen 5f4984
      scratch all that and redo from start after automatic dependencies
Panu Matilainen 5f4984
      have been discovered at the end of package build.
Panu Matilainen 5f4984
    - Fixes another regression (rpmspec dependency queries went dead)
Panu Matilainen 5f4984
      introduced in commit a357c99c58a5e1367160dfa692f26d14bd3a3df1
Panu Matilainen 5f4984
Panu Matilainen 5f4984
diff --git a/build/pack.c b/build/pack.c
Panu Matilainen 5f4984
index dc24fb5..4abca48 100644
Panu Matilainen 5f4984
--- a/build/pack.c
Panu Matilainen 5f4984
+++ b/build/pack.c
Panu Matilainen 5f4984
@@ -618,6 +618,11 @@ rpmRC packageBinaries(rpmSpec spec, const char *cookie, int cheating)
Panu Matilainen 5f4984
 	headerPutUint32(pkg->header, RPMTAG_BUILDTIME, getBuildTime(), 1);
Panu Matilainen 5f4984
 
Panu Matilainen 5f4984
 	for (int i=0; i
Panu Matilainen 5f4984
+	    /* Nuke any previously added dependencies from the header */
Panu Matilainen 5f4984
+	    headerDel(pkg->header, rpmdsTagN(pkg->dependencies[i]));
Panu Matilainen 5f4984
+	    headerDel(pkg->header, rpmdsTagEVR(pkg->dependencies[i]));
Panu Matilainen 5f4984
+	    headerDel(pkg->header, rpmdsTagF(pkg->dependencies[i]));
Panu Matilainen 5f4984
+	    /* ...and add again, now with automatic dependencies included */
Panu Matilainen 5f4984
 	    rpmdsPutToHeader(pkg->dependencies[i], pkg->header);
Panu Matilainen 5f4984
 	}
Panu Matilainen 5f4984
 
Panu Matilainen 5f4984
diff --git a/build/parseSpec.c b/build/parseSpec.c
Panu Matilainen 5f4984
index b14c3ee..77cf409 100644
Panu Matilainen 5f4984
--- a/build/parseSpec.c
Panu Matilainen 5f4984
+++ b/build/parseSpec.c
Panu Matilainen 5f4984
@@ -548,6 +548,11 @@ static void addTargets(Package Pkgs)
Panu Matilainen 5f4984
 	headerPutString(pkg->header, RPMTAG_PLATFORM, platform);
Panu Matilainen 5f4984
 	headerPutString(pkg->header, RPMTAG_OPTFLAGS, optflags);
Panu Matilainen 5f4984
 
Panu Matilainen 5f4984
+	/* Add manual dependencies early for rpmspec etc to look at */
Panu Matilainen 5f4984
+	for (int i=0; i
Panu Matilainen 5f4984
+	    rpmdsPutToHeader(pkg->dependencies[i], pkg->header);
Panu Matilainen 5f4984
+	}
Panu Matilainen 5f4984
+
Panu Matilainen 5f4984
 	pkg->ds = rpmdsThis(pkg->header, RPMTAG_REQUIRENAME, RPMSENSE_EQUAL);
Panu Matilainen 5f4984
 	addPackageProvides(pkg);
Panu Matilainen 5f4984
     }