Blame rpmfc-push-name-epoch-version-release-macro-before-invoking-depgens.patch

Bernhard M. Wiedemann 1250f9
From 0d2176c9a3ae44fd0a67c9983b1a5ba0a00388fd Mon Sep 17 00:00:00 2001
Bernhard M. Wiedemann 1250f9
From: Igor Gnatenko <i.gnatenko.brain@gmail.com>
Bernhard M. Wiedemann 1250f9
Date: Mon, 15 Oct 2018 19:49:57 +0200
Bernhard M. Wiedemann 1250f9
Subject: [PATCH] rpmfc: push name/epoch/version/release macro before invoking
Bernhard M. Wiedemann 1250f9
 depgens
Bernhard M. Wiedemann 1250f9
Bernhard M. Wiedemann 1250f9
Fixes: https://github.com/rpm-software-management/rpm/issues/502
Bernhard M. Wiedemann 1250f9
Signed-off-by: Igor Gnatenko <i.gnatenko.brain@gmail.com>
Bernhard M. Wiedemann 1250f9
---
Bernhard M. Wiedemann 1250f9
 build/rpmfc.c | 25 +++++++++++++++++++++++++
Bernhard M. Wiedemann 1250f9
 1 file changed, 25 insertions(+)
Bernhard M. Wiedemann 1250f9
Bernhard M. Wiedemann 1250f9
diff --git build/rpmfc.c build/rpmfc.c
Bernhard M. Wiedemann 1250f9
index 2fbfc69ab..eccd6582a 100644
Bernhard M. Wiedemann 1250f9
--- build/rpmfc.c
Bernhard M. Wiedemann 1250f9
+++ build/rpmfc.c
Bernhard M. Wiedemann 1250f9
@@ -1334,9 +1334,31 @@ static rpmRC rpmfcApplyExternal(rpmfc fc)
Bernhard M. Wiedemann 1250f9
     return rc;
Bernhard M. Wiedemann 1250f9
 }
Bernhard M. Wiedemann 1250f9
 
Bernhard M. Wiedemann 1250f9
+typedef const struct macroExport_s {
Bernhard M. Wiedemann 1250f9
+    const char * name;
Bernhard M. Wiedemann 1250f9
+    rpmTagVal tag;
Bernhard M. Wiedemann 1250f9
+} * macroExport;
Bernhard M. Wiedemann 1250f9
+
Bernhard M. Wiedemann 1250f9
+static struct macroExport_s const macroExportList[] = {
Bernhard M. Wiedemann 1250f9
+    { "name",	RPMTAG_NAME },
Bernhard M. Wiedemann 1250f9
+    { "epoch",	RPMTAG_EPOCH },
Bernhard M. Wiedemann 1250f9
+    { "version",	RPMTAG_VERSION },
Bernhard M. Wiedemann 1250f9
+    { "release",	RPMTAG_RELEASE },
Bernhard M. Wiedemann 1250f9
+    { NULL,	0 }
Bernhard M. Wiedemann 1250f9
+};
Bernhard M. Wiedemann 1250f9
+
Bernhard M. Wiedemann 1250f9
 rpmRC rpmfcApply(rpmfc fc)
Bernhard M. Wiedemann 1250f9
 {
Bernhard M. Wiedemann 1250f9
     rpmRC rc;
Bernhard M. Wiedemann 1250f9
+    Package pkg = fc->pkg;
Bernhard M. Wiedemann 1250f9
+    macroExport me;
Bernhard M. Wiedemann 1250f9
+    for (me = macroExportList; me->name; me++) {
Bernhard M. Wiedemann 1250f9
+	char *val = headerGetAsString(pkg->header, me->tag);
Bernhard M. Wiedemann 1250f9
+	if (val) {
Bernhard M. Wiedemann 1250f9
+	    rpmPushMacro(NULL, me->name, NULL, val, RMIL_SPEC);
Bernhard M. Wiedemann 1250f9
+	    free(val);
Bernhard M. Wiedemann 1250f9
+	}
Bernhard M. Wiedemann 1250f9
+    }
Bernhard M. Wiedemann 1250f9
     /* If new-fangled dependency generation is disabled ... */
Bernhard M. Wiedemann 1250f9
     if (!rpmExpandNumeric("%{?_use_internal_dependency_generator}")) {
Bernhard M. Wiedemann 1250f9
 	/* ... then generate dependencies using %{__find_requires} et al. */
Bernhard M. Wiedemann 1250f9
@@ -1347,6 +1369,9 @@ rpmRC rpmfcApply(rpmfc fc)
Bernhard M. Wiedemann 1250f9
 	/* ... otherwise generate per-file dependencies */
Bernhard M. Wiedemann 1250f9
 	rc = rpmfcApplyInternal(fc);
Bernhard M. Wiedemann 1250f9
     }
Bernhard M. Wiedemann 1250f9
+    for (me = macroExportList; me->name; me++)
Bernhard M. Wiedemann 1250f9
+	if (headerIsEntry(pkg->header, me->tag))
Bernhard M. Wiedemann 1250f9
+	    rpmPopMacro(NULL, me->name);
Bernhard M. Wiedemann 1250f9
     return rc;
Bernhard M. Wiedemann 1250f9
 }
Bernhard M. Wiedemann 1250f9