commit 06f5fdb6e1ca0e1605522bcf47e244876a389701
Author: Panu Matilainen <pmatilai@redhat.com>
Date: Wed Dec 31 12:41:38 2008 +0200
Look into provides when searching distrover pkg (rhbz#474911)
diff --git a/apt-pkg/rpm/rpmhandler.cc b/apt-pkg/rpm/rpmhandler.cc
index d101d10..3d4342d 100644
--- a/apt-pkg/rpm/rpmhandler.cc
+++ b/apt-pkg/rpm/rpmhandler.cc
@@ -905,11 +905,12 @@ bool RPMDBHandler::Jump(off_t Offset)
return true;
}
-bool RPMDBHandler::JumpByName(string PkgName)
+bool RPMDBHandler::JumpByName(string PkgName, bool Provides)
{
+ raptTag tag = (raptTag)(Provides ? RPMTAG_PROVIDES : RPMDBI_LABEL);
if (RpmIter == NULL) return false;
rpmdbFreeIterator(RpmIter);
- RpmIter = raptInitIterator(Handler, RPMDBI_LABEL, PkgName.c_str(), 0);
+ RpmIter = raptInitIterator(Handler, tag, PkgName.c_str(), 0);
HeaderP = rpmdbNextIterator(RpmIter);
return (HeaderP != NULL);
}
diff --git a/apt-pkg/rpm/rpmhandler.h b/apt-pkg/rpm/rpmhandler.h
index 3d3fc3d..6c7c372 100644
--- a/apt-pkg/rpm/rpmhandler.h
+++ b/apt-pkg/rpm/rpmhandler.h
@@ -233,7 +233,7 @@ class RPMDBHandler : public RPMHdrHandler
virtual bool OrderedOffset() {return false;}
// used by rpmSystem::DistroVer()
- bool JumpByName(string PkgName);
+ bool JumpByName(string PkgName, bool Provides=false);
RPMDBHandler(bool WriteLock=false);
virtual ~RPMDBHandler();
diff --git a/apt-pkg/rpm/rpmsystem.cc b/apt-pkg/rpm/rpmsystem.cc
index 47ba1e1..f8245d4 100644
--- a/apt-pkg/rpm/rpmsystem.cc
+++ b/apt-pkg/rpm/rpmsystem.cc
@@ -210,7 +210,7 @@ string rpmSystem::DistroVer()
return "";
string DistroVersion = "";
- if (RpmDB->JumpByName(DistroVerPkg) == true) {
+ if (RpmDB->JumpByName(DistroVerPkg, true) == true) {
DistroVersion = RpmDB->Version();
} else {
_error->Error(_("Unable to determine version for package %s"),