50 using namespace zypp::str;
62 result +=
"<" + tag +
">";
69 result +=
"</" + tag +
">";
74 std::string
helixXML(
const T &obj );
110 str <<
" />" << endl;
119 str <<
"<dep name='packageand("
127 detail = detail.rhs().detail();
130 && detail.
lhs().
id() == NAMESPACE_MODALIAS) {
131 str <<
"<dep name='modalias(";
132 if (!packageName.
empty())
133 str << packageName <<
":";
152 for ( ; it != caps.
end(); ++it)
164 CapabilitySet::const_iterator it = caps.begin();
166 for ( ; it != caps.end(); ++it)
178 if ( ! caps.empty() )
187 str <<
"<" <<
toLower (resolvable->kind().asString()) <<
">" << endl;
190 str <<
TAB <<
xml_tag_enclose (item->buildtime().asSeconds(),
"buildtime",
true) << endl;
191 if ( isKind<Package>(resolvable) ) {
192 str <<
TAB <<
"<history>" << endl <<
TAB <<
"<update>" << endl;
194 str <<
TAB2 <<
helixXML (resolvable->edition()) << endl;
195 str <<
TAB <<
"</update>" << endl <<
TAB <<
"</history>" << endl;
197 str <<
TAB <<
helixXML (resolvable->arch()) << endl;
198 str <<
TAB <<
helixXML (resolvable->edition()) << endl;
210 str <<
"</" <<
toLower (resolvable->kind().asString()) <<
">" << endl;
234 std::string filename ()
251 *
file <<
"<channel><subchannel>" << endl;
256 *
file <<
"</subchannel></channel>" << endl;
276 const Arch & systemArchitecture,
278 const std::string & systemPath =
"solver-system.xml.gz",
279 const bool forceResolve =
false,
280 const bool onlyRequires =
false,
281 const bool ignorealreadyrecommended =
false);
305 const Arch & systemArchitecture,
307 const std::string & systemPath,
308 const bool forceResolve,
309 const bool onlyRequires,
310 const bool ignorealreadyrecommended)
311 :dumpFile (controlPath)
313 file =
new ofstream(controlPath.c_str());
318 *
file <<
"<?xml version=\"1.0\"?>" << endl
319 <<
"<!-- testcase generated by YaST -->" << endl
321 <<
"<setup arch=\"" << systemArchitecture <<
"\">" << endl
322 <<
TAB <<
"<system file=\"" << systemPath <<
"\"/>" << endl << endl;
323 for ( RepositoryTable::const_iterator it = repoTable.begin();
324 it != repoTable.end(); ++it ) {
326 *
file <<
TAB <<
"<!-- " << endl
327 <<
TAB <<
"- alias : " << repo.
alias() << endl;
332 *
file <<
TAB <<
"- url : " << *itUrl << endl;
334 *
file <<
TAB <<
"- path : " << repo.
path() << endl;
335 *
file <<
TAB <<
"- type : " << repo.
type() << endl;
336 *
file <<
TAB <<
"- generated : " << (it->first.generatedTimestamp()).
form(
"%Y-%m-%d %H:%M:%S" ) << endl;
337 *
file <<
TAB <<
"- outdated : " << (it->first.suggestedExpirationTimestamp()).
form(
"%Y-%m-%d %H:%M:%S" ) << endl;
338 *
file <<
TAB <<
" -->" << endl;
341 <<
"-package.xml.gz\" name=\"" << repo.
alias() <<
"\""
342 <<
" priority=\"" << repo.
priority()
343 <<
"\" />" << endl << endl;
345 for (LocaleSet::const_iterator iter = languages.begin(); iter != languages.end(); iter++) {
346 *
file <<
TAB <<
"<locale name=\"" << iter->code()
351 *
file <<
TAB <<
"<forceResolve/>" << endl;
353 *
file <<
TAB <<
"<onlyRequires/>" << endl;
355 if (ignorealreadyrecommended)
356 *
file <<
TAB <<
"<ignorealreadyrecommended/>" << endl;
358 *
file <<
"</setup>" << endl
359 <<
"<trial>" << endl;
363 :dumpFile (
"/var/log/YaST2/solverTestcase/solver-test.xml")
370 *
file <<
"</trial>" << endl
371 <<
"</test>" << endl;
378 *
file <<
"<install channel=\"" << resObject->repoInfo().alias() <<
"\" kind=\"" <<
toLower (resObject->kind().asString()) <<
"\""
379 <<
" name=\"" << resObject->name() <<
"\"" <<
" arch=\"" << resObject->arch().asString() <<
"\""
380 <<
" version=\"" << resObject->edition().version() <<
"\"" <<
" release=\"" << resObject->edition().release() <<
"\""
381 <<
" status=\"" << status <<
"\""
388 *
file <<
"<lock channel=\"" << resObject->repoInfo().alias() <<
"\" kind=\"" <<
toLower (resObject->kind().asString()) <<
"\""
389 <<
" name=\"" << resObject->name() <<
"\"" <<
" arch=\"" << resObject->arch().asString() <<
"\""
390 <<
" version=\"" << resObject->edition().version() <<
"\"" <<
" release=\"" << resObject->edition().release() <<
"\""
391 <<
" status=\"" << status <<
"\""
398 *
file <<
"<keep channel=\"" << resObject->repoInfo().alias() <<
"\" kind=\"" <<
toLower (resObject->kind().asString()) <<
"\""
399 <<
" name=\"" << resObject->name() <<
"\"" <<
" arch=\"" << resObject->arch().asString() <<
"\""
400 <<
" version=\"" << resObject->edition().version() <<
"\"" <<
" release=\"" << resObject->edition().release() <<
"\""
401 <<
" status=\"" << status <<
"\""
408 *
file <<
"<uninstall " <<
" kind=\"" <<
toLower (resObject->kind().asString()) <<
"\""
409 <<
" name=\"" << resObject->name() <<
"\""
410 <<
" status=\"" << status <<
"\""
416 for (CapabilitySet::const_iterator iter = capRequire.begin(); iter != capRequire.end(); iter++) {
417 *
file <<
"<addRequire " <<
" name=\"" << iter->asString() <<
"\"" <<
"/>" << endl;
419 for (CapabilitySet::const_iterator iter = capConflict.begin(); iter != capConflict.end(); iter++) {
420 *
file <<
"<addConflict " <<
" name=\"" << iter->asString() <<
"\"" <<
"/>" << endl;
426 for_( it, upgradeRepos_r.begin(), upgradeRepos_r.end() )
428 *
file <<
"<upgradeRepo name=\"" << it->alias() <<
"\"/>" << endl;
434 *
file <<
"<distupgrade/>" << endl;
439 *
file <<
"<verify/>" << endl;
444 *
file <<
"<update/>" << endl;
450 :dumpPath(
"/var/log/YaST2/solverTestcase")
464 if ( !path.isExist() ) {
466 ERR <<
"Cannot create directory " <<
dumpPath << endl;
487 ResPool pool = resolver.pool();
493 HelixResolvable_Ptr system = NULL;
502 if ( system && it->status().isInstalled() ) {
504 system->addResolvable (*it);
507 Repository repo = it->resolvable()->satSolvable().repository();
509 if (repoTable.find (repo) == repoTable.end()) {
512 +
"-package.xml.gz");
514 repoTable[repo]->addResolvable (*it);
518 if ( it->status().isToBeInstalled()
519 && !(it->status().isBySolver())) {
520 items_to_install.push_back (*it);
522 if ( it->status().isKept()
523 && !(it->status().isBySolver())) {
524 items_keep.push_back (*it);
526 if ( it->status().isToBeUninstalled()
527 && !(it->status().isBySolver())) {
528 items_to_remove.push_back (*it);
530 if ( it->status().isLocked()
531 && !(it->status().isBySolver())) {
532 items_locked.push_back (*it);
541 "solver-system.xml.gz",
546 for (PoolItemList::const_iterator iter = items_to_install.begin(); iter != items_to_install.end(); iter++) {
550 for (PoolItemList::const_iterator iter = items_locked.begin(); iter != items_locked.end(); iter++) {
551 control.lockResolvable (iter->resolvable(), iter->status());
554 for (PoolItemList::const_iterator iter = items_keep.begin(); iter != items_keep.end(); iter++) {
555 control.keepResolvable (iter->resolvable(), iter->status());
558 for (PoolItemList::const_iterator iter = items_to_remove.begin(); iter != items_to_remove.end(); iter++) {
559 control.deleteResolvable (iter->resolvable(), iter->status());
562 control.addDependencies (resolver.extraRequires(), resolver.extraConflicts());
565 control.addUpgradeRepos( resolver.upgradeRepos() );
567 if (resolver.isUpgradeMode())
568 control.distupgrade ();
569 if (resolver.isUpdateMode())
571 if (resolver.isVerifyingMode())
572 control.verifySystem();