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(-) diff --git a/lib/rpmrc.c b/lib/rpmrc.c index 19fe80f98..6b27b3941 100644 --- a/lib/rpmrc.c +++ b/lib/rpmrc.c @@ -455,10 +455,14 @@ const char * lookupInDefaultTable(const char * name, 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; @@ -989,7 +993,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; @@ -1286,6 +1294,7 @@ static void defaultMachine(rpmrcCtx ctx, const char ** arch, const char ** os) if (arch) *arch = un.machine; if (os) *os = un.sysname; + free(platform_path); } static -- 2.11.0