Author: schubi2
Date: Fri Aug 3 12:34:59 2007
New Revision: 6418
URL: http://svn.opensuse.org/viewcvs/zypp?rev=6418&view=rev
Log:
logging additional dependencies; corrected language and system dependencies
Modified:
trunk/libzypp/zypp/solver/detail/Testcase.cc
trunk/libzypp/zypp/solver/detail/Testcase.h
Modified: trunk/libzypp/zypp/solver/detail/Testcase.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/solver/detail/Testcase.cc?rev=6418&r1=6417&r2=6418&view=diff
==============================================================================
--- trunk/libzypp/zypp/solver/detail/Testcase.cc (original)
+++ trunk/libzypp/zypp/solver/detail/Testcase.cc Fri Aug 3 12:34:59 2007
@@ -161,6 +161,13 @@
std::string helixXML( const Resolvable::constPtr &resolvable )
{
stringstream str;
+ if ( isKind<SystemResObject>(resolvable)
+ || isKind<Language>(resolvable) ) {
+ // system resolvable will be generated by the resolver
+ // language dependencies will be written i another part
+ return str.str();
+ }
+
str << "<" << toLower (resolvable->kind().asString()) << ">" << endl;
str << TAB << xml_tag_enclose (resolvable->name(), "name", true) << endl;
if ( isKind<Package>(resolvable) ) {
@@ -224,35 +231,43 @@
ResPool pool = resolver.pool();
RepositoryTable repoTable;
PoolItemList items_to_install;
- PoolItemList items_to_remove;
+ PoolItemList items_to_remove;
+ PoolItemList language;
HelixResolvable system (dumpPath + "/solver-system.xml");
for ( ResPool::const_iterator it = pool.begin(); it != pool.end(); ++it )
{
Resolvable::constPtr res = it->resolvable();
-
- if ( it->status().isInstalled() ) {
- // system channel
- system.addResolvable (res);
+
+ if (isKind<Language>(res)) {
+ if ( it->status().isInstalled()
+ || it->status().isToBeInstalled()) {
+ language.push_back (*it);
+ }
} else {
- // repo channels
- ResObject::constPtr repoItem = it->resolvable();
- Repository repo = repoItem->repository();
- if (repoTable.find (repo) == repoTable.end()) {
- repoTable[repo] = new HelixResolvable(dumpPath + "/"
+ if ( it->status().isInstalled() ) {
+ // system channel
+ system.addResolvable (res);
+ } else {
+ // repo channels
+ ResObject::constPtr repoItem = it->resolvable();
+ Repository repo = repoItem->repository();
+ if (repoTable.find (repo) == repoTable.end()) {
+ repoTable[repo] = new HelixResolvable(dumpPath + "/"
+ numstring(repo.numericId())
+ "-package.xml");
+ }
+ repoTable[repo]->addResolvable (res);
}
- repoTable[repo]->addResolvable (res);
- }
- if ( it->status().isToBeInstalled()
- && !(it->status().isBySolver())) {
- items_to_install.push_back (*it);
- }
- if ( it->status().isToBeUninstalled()
- && !(it->status().isBySolver())) {
- items_to_remove.push_back (*it);
+ if ( it->status().isToBeInstalled()
+ && !(it->status().isBySolver())) {
+ items_to_install.push_back (*it);
+ }
+ if ( it->status().isToBeUninstalled()
+ && !(it->status().isBySolver())) {
+ items_to_remove.push_back (*it);
+ }
}
}
@@ -260,7 +275,8 @@
HelixControl control (dumpPath + "/solver-test.xml",
repoTable,
- resolver.architecture());
+ resolver.architecture(),
+ language);
for (PoolItemList::const_iterator iter = items_to_install.begin(); iter != items_to_install.end(); iter++) {
control.installResolvable (iter->resolvable());
@@ -270,6 +286,8 @@
control.deleteResolvable (iter->resolvable());
}
+ control.addDependencies (resolver.extraCapability(), resolver.extraConflicts());
+
return true;
}
@@ -301,7 +319,8 @@
HelixControl::HelixControl(const std::string & controlPath,
const RepositoryTable & repoTable,
- const Arch & systemArchitecture,
+ const Arch & systemArchitecture,
+ const PoolItemList &languages,
const std::string & systemPath)
:dumpFile (controlPath)
{
@@ -322,6 +341,10 @@
<< "-package.xml\" name=\"" << numstring(repo.numericId())
<< "\" />" << endl;
}
+ for (PoolItemList::const_iterator iter = languages.begin(); iter != languages.end(); iter++) {
+ *file << TAB << "