135 lines
4.1 KiB
Diff
135 lines
4.1 KiB
Diff
Fix up platform and related sysinfo file loading.
|
|
|
|
Upstream-Status: Pending
|
|
|
|
This ensures that RPM knows the compatible set of package types at all times.
|
|
|
|
Signed-off-by: Mark Hatle <mark.hatle@windriver.com>
|
|
|
|
diff -ur rpm-5.4.0.orig/lib/depends.c rpm-5.4.0/lib/depends.c
|
|
--- rpm-5.4.0.orig/lib/depends.c 2011-02-15 20:40:13.002849708 -0600
|
|
+++ rpm-5.4.0/lib/depends.c 2011-02-15 20:47:05.838981632 -0600
|
|
@@ -248,7 +248,7 @@
|
|
he->p.ptr = _free(he->p.ptr);
|
|
}
|
|
|
|
-#if defined(RPM_VENDOR_WINDRIVER)
|
|
+#if defined(RPM_VENDOR_WINDRIVER) && !defined(RPM_VENDOR_OE)
|
|
/*
|
|
* If we're capable of installing multiple colors
|
|
* but at least one of the packages are white (0), we
|
|
@@ -505,7 +505,7 @@
|
|
return 0;
|
|
}
|
|
|
|
-#if defined(RPM_VENDOR_WINDRIVER)
|
|
+#if defined(RPM_VENDOR_WINDRIVER) && !defined(RPM_VENDOR_OE)
|
|
/* Is "compat" compatible w/ arch? */
|
|
int _isCompatibleArch(const char * arch, const char * compat)
|
|
{
|
|
@@ -649,7 +649,7 @@
|
|
|
|
if (arch == NULL || (parch = rpmteA(p)) == NULL)
|
|
continue;
|
|
-#if defined(RPM_VENDOR_WINDRIVER)
|
|
+#if defined(RPM_VENDOR_WINDRIVER) && !defined(RPM_VENDOR_OE)
|
|
/* XXX hackery for alias matching. */
|
|
if (!_isCompatibleArch(arch, parch))
|
|
continue;
|
|
@@ -815,6 +815,12 @@
|
|
return rc;
|
|
}
|
|
|
|
+#if defined(RPM_VENDOR_WINDRIVER) || defined(RPM_VENDOR_OE)
|
|
+#define _ETC_RPM_SYSINFO "%{_etcrpm}/sysinfo"
|
|
+#else
|
|
+#define _ETC_RPM_SYSINFO SYSCONFIGDIR "/sysinfo"
|
|
+#endif
|
|
+
|
|
/*@only@*/ /*@null@*/ /*@unchecked@*/
|
|
static char *sysinfo_path = NULL;
|
|
|
|
@@ -1296,7 +1302,7 @@
|
|
sysinfo_path = rpmExpand("%{?_rpmds_sysinfo_path}", NULL);
|
|
if (!(sysinfo_path != NULL && *sysinfo_path == '/')) {
|
|
sysinfo_path = _free(sysinfo_path);
|
|
- sysinfo_path = xstrdup(SYSCONFIGDIR "/sysinfo");
|
|
+ sysinfo_path = rpmExpand(_ETC_RPM_SYSINFO, NULL);
|
|
}
|
|
}
|
|
|
|
diff -ur rpm-5.4.0.orig/lib/rpmds.c rpm-5.4.0/lib/rpmds.c
|
|
--- rpm-5.4.0.orig/lib/rpmds.c 2011-02-15 20:40:13.004855352 -0600
|
|
+++ rpm-5.4.0/lib/rpmds.c 2011-02-15 20:41:55.598846670 -0600
|
|
@@ -1737,7 +1737,7 @@
|
|
/*@-observertrans @*/
|
|
_sysinfo_path = _free(_sysinfo_path);
|
|
/*@=observertrans @*/
|
|
- _sysinfo_path = xstrdup(_ETC_RPM_SYSINFO);
|
|
+ _sysinfo_path = rpmExpand(_ETC_RPM_SYSINFO, NULL);
|
|
}
|
|
}
|
|
/*@=modobserver@*/
|
|
diff -ur rpm-5.4.0.orig/lib/rpmrc.c rpm-5.4.0/lib/rpmrc.c
|
|
--- rpm-5.4.0.orig/lib/rpmrc.c 2011-02-15 20:40:13.006853913 -0600
|
|
+++ rpm-5.4.0/lib/rpmrc.c 2011-02-15 20:44:39.708972391 -0600
|
|
@@ -38,7 +38,13 @@
|
|
static const char * configTarget = NULL;
|
|
|
|
/*@observer@*/ /*@unchecked@*/
|
|
-static const char * platform = SYSCONFIGDIR "/platform";
|
|
+#if defined(RPM_VENDOR_WINDRIVER)
|
|
+#define _ETC_RPM_PLATFORM "%{_etcrpm}/platform"
|
|
+#else
|
|
+#define _ETC_RPM_PLATFORM SYSCONFIGDIR "/platform"
|
|
+#endif
|
|
+
|
|
+static const char * _platform = NULL;
|
|
|
|
/*@only@*/ /*@relnull@*/ /*@unchecked@*/
|
|
void * platpat = NULL;
|
|
@@ -685,16 +691,17 @@
|
|
int rc;
|
|
|
|
while (!gotDefaults) {
|
|
-#if defined(RPM_VENDOR_WINDRIVER)
|
|
- const char * _platform = rpmGetPath(__etcrpm, "/platform", NULL);
|
|
-#else
|
|
- const char * _platform = platform;
|
|
-#endif
|
|
+ if (_platform == NULL) {
|
|
+ _platform = rpmExpand("%{?_rpmrc_platform_path}", NULL);
|
|
+ /* XXX may need to validate path existence somewhen. */
|
|
+ if (!(_platform != NULL && *_platform == '/')) {
|
|
+ _platform = _free(_platform);
|
|
+ _platform = rpmExpand(_ETC_RPM_PLATFORM, NULL);
|
|
+ }
|
|
+ }
|
|
CVOG_t cvog = NULL;
|
|
#if defined(RPM_VENDOR_OPENPKG) /* larger-utsname */
|
|
const char *cp;
|
|
-#endif
|
|
-#if defined(RPM_VENDOR_OPENPKG) /* larger-utsname */
|
|
/* utsname fields on some platforms (like HP-UX) are very small
|
|
(just about 8 characters). This is too small for OpenPKG, so cheat! */
|
|
rc = uname(&un_real);
|
|
@@ -771,9 +778,7 @@
|
|
if (cp != NULL && cp != _platform)
|
|
cp = _free(cp);
|
|
#endif
|
|
-#if defined(RPM_VENDOR_WINDRIVER)
|
|
_platform = _free(_platform);
|
|
-#endif
|
|
|
|
if (configTarget && !parseCVOG(configTarget, &cvog) && cvog != NULL) {
|
|
gotDefaults = 1;
|
|
@@ -1096,6 +1101,8 @@
|
|
|
|
#ifdef PREMACROFILES
|
|
if (rpmReadRC(PREMACROFILES)) return -1;
|
|
+#else
|
|
+ if (rpmReadRC(NULL)) return -1;
|
|
#endif
|
|
|
|
/* Reset umask to its default umask(2) value. */
|