diff -ur poldek-0.20.1-cvs20070108.22.org/configure.in poldek-0.20.1-cvs20070108.22/configure.in
---- poldek-0.20.1-cvs20070108.22.org/configure.in 2007-01-08 22:14:18.000000000 +0100
-+++ poldek-0.20.1-cvs20070108.22/configure.in 2007-06-05 20:32:56.716966945 +0200
-@@ -305,6 +305,7 @@
+--- poldek-0.20.1-cvs20070108.22.org/configure.in 2007-06-07 19:36:08.476143000 +0200
++++ poldek-0.20.1-cvs20070108.22/configure.in 2007-06-07 19:36:48.148088637 +0200
+@@ -302,6 +302,7 @@
dnl rpm 4.4.7
dnl - killed rpmMachineScore and rpmGetVar
AC_CHECK_FUNCS(rpmMachineScore)
AC_CHECK_FUNCS(rpmioAccess)
dnl - new _rpmvercmp()
diff -ur poldek-0.20.1-cvs20070108.22.org/pm/rpm/misc.c poldek-0.20.1-cvs20070108.22/pm/rpm/misc.c
---- poldek-0.20.1-cvs20070108.22.org/pm/rpm/misc.c 2007-01-08 22:14:18.000000000 +0100
-+++ poldek-0.20.1-cvs20070108.22/pm/rpm/misc.c 2007-06-05 20:33:44.656034816 +0200
-@@ -47,7 +47,7 @@
+--- poldek-0.20.1-cvs20070108.22.org/pm/rpm/misc.c 2007-06-07 19:36:08.476143000 +0200
++++ poldek-0.20.1-cvs20070108.22/pm/rpm/misc.c 2007-06-07 19:40:33.000000000 +0200
+@@ -48,7 +48,7 @@
struct capreq *cr;
uint32_t flags, crflags;
evr = rpmdsEVR(ds);
flags = rpmdsFlags(ds);
-@@ -163,8 +163,11 @@
+@@ -182,8 +182,39 @@
return caps;
}
--
--#ifdef HAVE_RPMMACHINESCORE
+#ifdef HAVE_RPMPLATFORMSCORE
+static int machine_score(int tag, const char *val) {
-+ return rpmPlatformScore(val, platpat, nplatpat);
++ int rc;
++ char *cpu, *vendor, *os;
+
+-#ifdef HAVE_RPMMACHINESCORE
++ cpu = rpmExpand("%{_host_cpu}", NULL);
++ vendor = rpmExpand("%{_host_vendor}", NULL);
++ os = rpmExpand("%{_host_os}", NULL);
++
++ if (cpu && vendor && os) {
++ int size = strlen(cpu) + strlen(vendor) + strlen(os) + 2;
++ char *p = n_malloc(size);
++ switch (tag) {
++ case PMMSTAG_ARCH:
++ snprintf(p, size, "%s-%s-%s", val, vendor, os);
++ break;
++ case PMMSTAG_OS:
++ snprintf(p, size, "%s-%s-%s", cpu, vendor, val);
++ break;
++ default:
++ snprintf(p, size, "%s", val);
++ break;
++ }
++ rc = rpmPlatformScore(p, platpat, nplatpat);
++ n_free(p);
++ } else
++ rc = rpmPlatformScore(val, platpat, nplatpat);
++ n_free(cpu);
++ n_free(vendor);
++ n_free(os);
++ return rc;
+}
+#elif defined(HAVE_RPMMACHINESCORE)
static int machine_score(int tag, const char *val)
{
int rpmtag = 0, rc;
-@@ -231,8 +234,10 @@
+@@ -250,8 +281,10 @@
if (arch == NULL)
return 0;
rc = 9;
diff -ur poldek-0.20.1-cvs20070108.22.org/pm/rpm/pm_rpm.h poldek-0.20.1-cvs20070108.22/pm/rpm/pm_rpm.h
--- poldek-0.20.1-cvs20070108.22.org/pm/rpm/pm_rpm.h 2007-01-08 15:59:16.000000000 +0100
-+++ poldek-0.20.1-cvs20070108.22/pm/rpm/pm_rpm.h 2007-06-05 20:32:56.696965944 +0200
++++ poldek-0.20.1-cvs20070108.22/pm/rpm/pm_rpm.h 2007-06-07 19:36:48.148088637 +0200
@@ -2,6 +2,7 @@
#define POLDEK_PM_RPM_MODULE_H
#endif
diff -ur poldek-0.20.1-cvs20070108.22.org/pm/rpm/rpm.c poldek-0.20.1-cvs20070108.22/pm/rpm/rpm.c
--- poldek-0.20.1-cvs20070108.22.org/pm/rpm/rpm.c 2006-12-18 09:53:02.000000000 +0100
-+++ poldek-0.20.1-cvs20070108.22/pm/rpm/rpm.c 2007-06-05 20:32:56.696965944 +0200
++++ poldek-0.20.1-cvs20070108.22/pm/rpm/rpm.c 2007-06-07 19:36:48.148088637 +0200
@@ -403,7 +403,7 @@