From 383c0b097b7eba16801a9e3c4b8e36a4b6de74ab Mon Sep 17 00:00:00 2001 From: Alexander Kanavin 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 --- 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