From 383c0b097b7eba16801a9e3c4b8e36a4b6de74ab Mon Sep 17 00:00:00 2001
From: Alexander Kanavin <alex.kanavin@gmail.com>
Date: Fri, 20 Jan 2017 13:33:05 +0200
Subject: [PATCH 2/2] Add support for prefixing /etc from RPM_ETCCONFIGDIR
 environment variable

This is needed so that rpm can pick up target-specific configuration
from target rootfs instead of its own native sysroot.

Upstream-Status: Inappropriate [oe-core specific]
Signed-off-by: Alexander Kanavin <alex.kanavin@gmail.com>
---
 lib/rpmrc.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

Index: git/lib/rpmrc.c
===================================================================
--- git.orig/lib/rpmrc.c
+++ git/lib/rpmrc.c
@@ -455,10 +455,14 @@ const char * lookupInDefaultTable(const
 static void setDefaults(void)
 {
     const char *confdir = rpmConfigDir();
+    const char *etcconfdir = getenv("RPM_ETCCONFIGDIR");
+    if (etcconfdir == NULL)
+        etcconfdir = "";
+
     if (!defrcfiles) {
 	defrcfiles = rstrscat(NULL, confdir, "/rpmrc", ":",
 				confdir, "/" RPMCANONVENDOR "/rpmrc", ":",
-				SYSCONFDIR "/rpmrc", ":");
+				etcconfdir, SYSCONFDIR "/rpmrc", ":", NULL);
     }
 
 #ifndef MACROFILES
@@ -468,9 +472,9 @@ static void setDefaults(void)
 				confdir, "/platform/%{_target}/macros", ":",
 				confdir, "/fileattrs/*.attr", ":",
   				confdir, "/" RPMCANONVENDOR "/macros", ":",
-				SYSCONFDIR "/rpm/macros.*", ":",
-				SYSCONFDIR "/rpm/macros", ":",
-				SYSCONFDIR "/rpm/%{_target}/macros", ":");
+				etcconfdir, SYSCONFDIR "/rpm/macros.*", ":",
+				etcconfdir, SYSCONFDIR "/rpm/macros", ":",
+				etcconfdir, SYSCONFDIR "/rpm/%{_target}/macros", ":", NULL);
     }
 #else
     macrofiles = MACROFILES;
@@ -997,7 +1001,11 @@ static void read_auxv(void)
  */
 static void defaultMachine(rpmrcCtx ctx, const char ** arch, const char ** os)
 {
-    const char * const platform_path = SYSCONFDIR "/rpm/platform";
+    const char *etcconfdir = getenv("RPM_ETCCONFIGDIR");
+    if (etcconfdir == NULL)
+        etcconfdir = "";
+
+    const char * const platform_path = rstrscat(NULL, etcconfdir, SYSCONFDIR "/rpm/platform", NULL);
     static struct utsname un;
     char * chptr;
     canonEntry canon;
@@ -1307,6 +1315,7 @@ static void defaultMachine(rpmrcCtx ctx,
 
     if (arch) *arch = un.machine;
     if (os) *os = un.sysname;
+    free(platform_path);
 }
 
 static
