ref: refs/heads/ma-misc
commit 6a6c546d062c63f81410f4296eb228d8d97a48d3
Author: Michael Andres
Date: Thu Oct 15 15:43:42 2009 +0200
New zypp.conf option solver.upgradeRemoveDropedPackages (true)
- A new product may suggest a list of old and no longer supported
packages (dropped packages). Performing a dist upgrade the solver
may try to delete them, even if they do not cause any dependency
problem.
---
zypp.conf | 18 ++++++++++++++++++
zypp/ZConfig.cc | 15 +++++++++++++--
zypp/ZConfig.h | 19 +++++++++++++++++++
3 files changed, 50 insertions(+), 2 deletions(-)
diff --git a/zypp.conf b/zypp.conf
index f70b00f..ba3f8aa 100644
--- a/zypp.conf
+++ b/zypp.conf
@@ -292,6 +292,24 @@
# solver.upgradeTestcasesToKeep = 2
##
+## Whether dist upgrade should remove a products dropped packages.
+##
+## A new product may suggest a list of old and no longer supported
+## packages (dropped packages). Performing a dist upgrade the solver
+## may try to delete them, even if they do not cause any dependency
+## problem.
+##
+## Turning this option off, the solver will not try to remove those
+## packages unless they actually do cause dependency trouble. You may
+## do the cleanup manually, or simply leave them installed as long
+## as you don't need the disk space.
+##
+## Valid values: Boolean
+## Default value: true
+##
+# solver.upgradeRemoveDropedPackages = true
+
+##
## Packages which are parallel installable with
## diffent versions
##
diff --git a/zypp/ZConfig.cc b/zypp/ZConfig.cc
index 86dec13..180ec75 100644
--- a/zypp/ZConfig.cc
+++ b/zypp/ZConfig.cc
@@ -150,6 +150,7 @@ namespace zypp
const value_type & get() const
{ return _val; }
+ /** Autoconversion to value_type. */
operator const value_type &() const
{ return _val; }
@@ -157,6 +158,7 @@ namespace zypp
void set( const value_type & newval_r )
{ _val = newval_r; }
+ /** Non-const reference to set a new value. */
value_type & ref()
{ return _val; }
@@ -225,6 +227,7 @@ namespace zypp
, solver_onlyRequires ( false )
, solver_allowVendorChange ( false )
, solver_upgradeTestcasesToKeep ( 2 )
+ , solverUpgradeRemoveDropedPackages( true )
, apply_locks_file ( true )
{
@@ -336,8 +339,6 @@ namespace zypp
}
else if ( entry == "commit.downloadMode" )
{
- INT << value << endl;
- INT << deserializeDownloadMode(value) << endl;
commit_downloadMode.set( deserializeDownloadMode( value ) );
}
else if ( entry == "vendordir" )
@@ -356,6 +357,10 @@ namespace zypp
{
solver_upgradeTestcasesToKeep.set( str::strtonum<unsigned>( value ) );
}
+ else if ( entry == "solver.upgradeRemoveDropedPackages" )
+ {
+ solverUpgradeRemoveDropedPackages.restoreToDefault( str::strToBool( value, solverUpgradeRemoveDropedPackages.getDefault() ) );
+ }
else if ( entry == "solver.checkSystemFile" )
{
solver_checkSystemFile = Pathname(value);
@@ -476,6 +481,8 @@ namespace zypp
Option<bool> solver_onlyRequires;
Option<bool> solver_allowVendorChange;
Option<unsigned> solver_upgradeTestcasesToKeep;
+ DefaultOption<bool> solverUpgradeRemoveDropedPackages;
+
Pathname solver_checkSystemFile;
std::set<IdString> multiversion;
@@ -695,6 +702,10 @@ namespace zypp
unsigned ZConfig::solver_upgradeTestcasesToKeep() const
{ return _pimpl->solver_upgradeTestcasesToKeep; }
+ bool ZConfig::solverUpgradeRemoveDropedPackages() const { return _pimpl->solverUpgradeRemoveDropedPackages; }
+ void ZConfig::setSolverUpgradeRemoveDropedPackages( bool val_r ) { _pimpl->solverUpgradeRemoveDropedPackages.set( val_r ); }
+ void ZConfig::resetSolverUpgradeRemoveDropedPackages() { _pimpl->solverUpgradeRemoveDropedPackages.restoreToDefault(); }
+
std::set<IdString> ZConfig::multiversion() const
{ return _pimpl->multiversion; }
diff --git a/zypp/ZConfig.h b/zypp/ZConfig.h
index 3c24a33..4c62c72 100644
--- a/zypp/ZConfig.h
+++ b/zypp/ZConfig.h
@@ -246,6 +246,25 @@ namespace zypp
*/
unsigned solver_upgradeTestcasesToKeep() const;
+ /** Whether dist upgrade should remove a products dropped packages (true).
+ *
+ * A new product may suggest a list of old and no longer supported
+ * packages (dropped packages). Performing a dist upgrade the solver
+ * may try to delete them, even if they do not cause any dependency
+ * problem.
+ *
+ * Turning this option off, the solver will not try to remove those
+ * packages unless they actually do cause dependency trouble. At any
+ * time you may use zypper to detect orphaned packages, and do the
+ * cleanup manually. Or simply leave them installed as long as you don't
+ * need the disk space.
+ */
+ bool solverUpgradeRemoveDropedPackages() const;
+ /** Set \ref solverUpgradeRemoveDropedPackages to \a val_r. */
+ void setSolverUpgradeRemoveDropedPackages( bool val_r );
+ /** Reset \ref solverUpgradeRemoveDropedPackages to the \c zypp.conf default. */
+ void resetSolverUpgradeRemoveDropedPackages();
+
/**
* Packages which can be installed parallel with different versions
* Returning a set of package names (IdString)
--
To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org
For additional commands, e-mail: zypp-commit+help@opensuse.org