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