Resolver::solverInit()
{
// Solving with the satsolver
- static bool poolDumped = false;
- MIL << "-------------- Calling SAT Solver -------------------" << endl;
- if ( getenv("ZYPP_FULLLOG") ) {
- Testcase testcase("/var/log/YaST2/autoTestcase");
- if (!poolDumped) {
- testcase.createTestcase (*this, true, false); // dump pool
- poolDumped = true;
- } else {
- testcase.createTestcase (*this, false, false); // write control file only
- }
+ static bool poolDumped = false;
+ MIL << "-------------- Calling SAT Solver -------------------" << endl;
+ if ( getenv("ZYPP_FULLLOG") ) {
+ Testcase testcase("/var/log/YaST2/autoTestcase");
+ if (!poolDumped) {
+ testcase.createTestcase (*this, true, false); // dump pool
+ poolDumped = true;
+ } else {
+ testcase.createTestcase (*this, false, false); // write control file only
}
+ }
- _satResolver->setFixsystem(false);
- _satResolver->setIgnorealreadyrecommended(false);
- _satResolver->setAllowdowngrade(false);
- _satResolver->setAllowarchchange(false);
- _satResolver->setAllowvendorchange(false);
- _satResolver->setAllowuninstall(false);
- _satResolver->setUpdatesystem(false);
- _satResolver->setAllowvirtualconflicts(false);
- _satResolver->setNoupdateprovide(true);
- _satResolver->setDosplitprovides(false);
+ _satResolver->setFixsystem(false);
+ _satResolver->setIgnorealreadyrecommended(false);
+ _satResolver->setAllowdowngrade(false);
+ _satResolver->setAllowarchchange(false);
+ _satResolver->setAllowvendorchange(false);
+ _satResolver->setAllowuninstall(false);
+ _satResolver->setUpdatesystem(false);
+ _satResolver->setAllowvirtualconflicts(false);
+ _satResolver->setNoupdateprovide(false);
+ _satResolver->setDosplitprovides(false);
- if (_upgradeMode) {
- _satResolver->setAllowdowngrade(true);
- _satResolver->setUpdatesystem(false); // not needed cause packages has already been evaluteted by distupgrade
- _satResolver->setDosplitprovides(true);
+ if (_upgradeMode) {
+ _satResolver->setAllowdowngrade(true);
+ _satResolver->setUpdatesystem(false); // not needed cause packages has already been evaluteted by distupgrade
+ _satResolver->setDosplitprovides(true);
+ if ( !getenv("ZYPP_NO_SAT_UPDATE") ) {
+ MIL << "-------------- Calling SAT Solver in distupgrade mode -------------------" << endl;
+ // SAT solver will do the dist update
+ _satResolver->setAllowarchchange(true);
+ _satResolver->setAllowvendorchange(true);
+ _satResolver->setUpdatesystem(true);
+ _satResolver->setDistupgrade(true);
+ _satResolver->setDistupgrade_removeunsupported(false);
}
+ }
- if (_forceResolve)
- _satResolver->setAllowuninstall(true);
+ if (_forceResolve)
+ _satResolver->setAllowuninstall(true);
- if (_onlyRequires == indeterminate)
- _satResolver->setOnlyRequires(ZConfig::instance().solver_onlyRequires());
- else if (_onlyRequires)
- _satResolver->setOnlyRequires(true);
- else
- _satResolver->setOnlyRequires(false);
-
- if (_verifying)
- _satResolver->setFixsystem(true);
-
- if (_ignorealreadyrecommended)
- _satResolver->setIgnorealreadyrecommended(true);
-
- // Resetting additional solver information
- _isInstalledBy.clear();
- _installs.clear();
- _satifiedByInstalled.clear();
- _installedSatisfied.clear();
+ if (_onlyRequires == indeterminate)
+ _satResolver->setOnlyRequires(ZConfig::instance().solver_onlyRequires());
+ else if (_onlyRequires)
+ _satResolver->setOnlyRequires(true);
+ else
+ _satResolver->setOnlyRequires(false);
+
+ if (_verifying)
+ _satResolver->setFixsystem(true);
+
+ if (_ignorealreadyrecommended)
+ _satResolver->setIgnorealreadyrecommended(true);
+
+ // Resetting additional solver information
+ _isInstalledBy.clear();
+ _installs.clear();
+ _satifiedByInstalled.clear();
+ _installedSatisfied.clear();
}
bool
os << " dosplitprovides = " << _solv->dosplitprovides << endl;
os << " onlyRequires = " << _solv->dontinstallrecommended << endl;
os << " ignorealreadyrecommended = " << _solv->ignorealreadyrecommended << endl;
+ os << " distupgrade = " << _distupgrade << endl;
+ os << " distupgrade_removeunsupported = " << _distupgrade_removeunsupported << endl;
+
} else {
os << "<NULL>";
}
, _dosplitprovides(false)
, _onlyRequires(ZConfig::instance().solver_onlyRequires())
, _ignorealreadyrecommended(false)
+ , _distupgrade(false)
+ , _distupgrade_removeunsupported(false)
{
}
_solv->allowdowngrade = _allowdowngrade;
_solv->allowuninstall = _allowuninstall;
_solv->allowarchchange = _allowarchchange;
+ _solv->allowvendorchange = _allowvendorchange;
+ _solv->allowvirtualconflicts = _allowvirtualconflicts;
_solv->dosplitprovides = _dosplitprovides;
_solv->noupdateprovide = _noupdateprovide;
_solv->dontinstallrecommended = _onlyRequires;
+ _solv->distupgrade = _distupgrade;
+ _solv->distupgrade_removeunsupported = _distupgrade_removeunsupported;
sat::Pool::instance().prepare();
bool _allowarchchange; // allow to change architecture of installed solvables
bool _allowvendorchange; // allow to change vendor of installed solvables
bool _allowuninstall; // allow removal of installed solvables
- bool _updatesystem; // distupgrade
+ bool _updatesystem; // update
bool _allowvirtualconflicts; // false: conflicts on package name, true: conflicts on package provides
bool _noupdateprovide; // true: update packages needs not to provide old package
bool _dosplitprovides; // true: consider legacy split provides
bool _onlyRequires; // true: consider required packages only
bool _ignorealreadyrecommended; // true: ignore recommended packages that were already recommended by the installed packages
+ bool _distupgrade;
+ bool _distupgrade_removeunsupported;
// ---------------------------------- methods
std::string SATprobleminfoString (Id problem, std::string &detail, Id &ignoreId);
bool ignorealreadyrecommended () const {return _ignorealreadyrecommended;}
void setIgnorealreadyrecommended ( const bool ignorealreadyrecommended) { _ignorealreadyrecommended = ignorealreadyrecommended;}
+ bool distupgrade () const {return _distupgrade;}
+ void setDistupgrade ( const bool distupgrade) { _distupgrade = distupgrade;}
+
+ bool distupgrade_removeunsupported () const {return _distupgrade_removeunsupported;}
+ void setDistupgrade_removeunsupported ( const bool distupgrade_removeunsupported) { _distupgrade_removeunsupported = distupgrade_removeunsupported;}
+
bool allowdowngrade () const {return _allowdowngrade;}
void setAllowdowngrade ( const bool allowdowngrade) { _allowdowngrade = allowdowngrade;}