#
SET(LIBZYPP_MAJOR "14")
SET(LIBZYPP_COMPATMINOR "39")
-SET(LIBZYPP_MINOR "39")
+SET(LIBZYPP_MINOR "40")
SET(LIBZYPP_PATCH "0")
#
-# LAST RELEASED: 14.39.0 (39)
+# LAST RELEASED: 14.40.0 (39)
# (The number in parenthesis is LIBZYPP_COMPATMINOR)
#=======
.\" Title: locks
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\" Date: 10/02/2014
+.\" Date: 06/12/2015
.\" Manual: LIBZYPP
-.\" Source: libzypp
+.\" Source: SUSE Linux
.\" Language: English
.\"
-.TH "LOCKS" "5" "10/02/2014" "libzypp" "LIBZYPP"
+.TH "LOCKS" "5" "06/12/2015" "SUSE Linux" "LIBZYPP"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-locks(5)
+LOCKS(5)
========
:man manual: LIBZYPP
-:man source: libzypp
+:man source: SUSE Linux
NAME
'\" t
-.\" Title: zypp-CheckAccessDeleted
+.\" Title: zypp-checkaccessdeleted
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\" Date: 10/02/2014
+.\" Date: 06/12/2015
.\" Manual: LIBZYPP
-.\" Source: libzypp
+.\" Source: SUSE Linux
.\" Language: English
.\"
-.TH "ZYPP\-CHECKACCESSDEL" "1" "10/02/2014" "libzypp" "LIBZYPP"
+.TH "ZYPP\-CHECKACCESSDEL" "1" "06/12/2015" "SUSE Linux" "LIBZYPP"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-zypp-CheckAccessDeleted(1)
+ZYPP-CHECKACCESSDELETED(1)
==========================
:man manual: LIBZYPP
-:man source: libzypp
+:man source: SUSE Linux
NAME
'\" t
-.\" Title: zypp-NameReqPrv
+.\" Title: zypp-namereqprv
.\" Author: [see the "AUTHORS" section]
.\" Generator: DocBook XSL Stylesheets v1.78.1 <http://docbook.sf.net/>
-.\" Date: 10/02/2014
+.\" Date: 06/12/2015
.\" Manual: LIBZYPP
-.\" Source: libzypp
+.\" Source: SUSE Linux
.\" Language: English
.\"
-.TH "ZYPP\-NAMEREQPRV" "1" "10/02/2014" "libzypp" "LIBZYPP"
+.TH "ZYPP\-NAMEREQPRV" "1" "06/12/2015" "SUSE Linux" "LIBZYPP"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
-zypp-NameReqPrv(1)
+ZYPP-NAMEREQPRV(1)
==================
:man manual: LIBZYPP
-:man source: libzypp
+:man source: SUSE Linux
NAME
-------------------------------------------------------------------
+Fri Jul 3 15:24:15 CEST 2015 - ma@suse.de
+
+- Resolver allow tuning DUP mode solver flags (FATE#319128)
+- version 14.40.0 (39)
+
+-------------------------------------------------------------------
Fri Jun 12 12:40:36 CEST 2015 - ma@suse.de
- zypp.conf: Add config values for gpgcheck, repo_gpgcheck
CheckSum real_checksum( _checksum.type(), filesystem::checksum( file, _checksum.type() ));
if ( (real_checksum != _checksum) )
{
+ WAR << "File " << file << " has wrong checksum " << real_checksum << " (expected " << _checksum << ")" << endl;
if ( report->askUserToAcceptWrongDigest( file, _checksum.checksum(), real_checksum.checksum() ) )
{
WAR << "User accepted " << file << " with WRONG CHECKSUM." << std::endl;
void Resolver::setDefaultCleandepsOnRemove() { _pimpl->setCleandepsOnRemove( indeterminate ); }
bool Resolver::cleandepsOnRemove() const { return _pimpl->cleandepsOnRemove(); }
+#define ZOLV_FLAG_BOOL( ZSETTER, ZGETTER ) \
+ void Resolver::ZSETTER( bool yesno_r ){ _pimpl->ZSETTER( yesno_r ); } \
+ bool Resolver::ZGETTER() const { return _pimpl->ZGETTER(); } \
+
+#define ZOLV_FLAG_TRIBOOL( ZSETTER, ZDEFAULT, ZGETTER ) \
+ ZOLV_FLAG_BOOL( ZSETTER , ZGETTER ) \
+ void Resolver::ZDEFAULT() { _pimpl->ZSETTER( indeterminate ); } \
+
+ ZOLV_FLAG_TRIBOOL( dupSetAllowDowngrade, dupSetDefaultAllowDowngrade, dupAllowDowngrade )
+ ZOLV_FLAG_TRIBOOL( dupSetAllowNameChange, dupSetDefaultAllowNameChange, dupAllowNameChange )
+ ZOLV_FLAG_TRIBOOL( dupSetAllowArchChange, dupSetDefaultAllowArchChange, dupAllowArchChange )
+ ZOLV_FLAG_TRIBOOL( dupSetAllowVendorChange, dupSetDefaultAllowVendorChange, dupAllowVendorChange )
+
+#undef ZOLV_FLAG_BOOL
+#undef ZOLV_FLAG_TRIBOOL
+
void Resolver::addUpgradeRepo( Repository repo_r ) { _pimpl->addUpgradeRepo( repo_r ); }
bool Resolver::upgradingRepo( Repository repo_r ) const { return _pimpl->upgradingRepo( repo_r ); }
void Resolver::removeUpgradeRepo( Repository repo_r ) { _pimpl->removeUpgradeRepo( repo_r ); }
/**
- * Do an distribution upgrade
+ * Do an distribution upgrade (DUP)
*
* Perform a distribution upgrade. This performs an update of
* all packages with a special resolver algorithm which takes
void setDefaultCleandepsOnRemove(); // set back to default (in zypp.conf)
bool cleandepsOnRemove() const;
+ /** \name Solver flags for DUP mode.
+ * DUP mode default settings differ from 'ordinary' ones. Default for
+ * all DUP flags is \c true.
+ */
+ //@{
+ /** dup mode: allow to downgrade installed solvable */
+ void dupSetAllowDowngrade( bool yesno_r );
+ void dupSetDefaultAllowDowngrade(); // Set back to default
+ bool dupAllowDowngrade() const;
+
+ /** dup mode: allow to change name of installed solvable */
+ void dupSetAllowNameChange( bool yesno_r );
+ void dupSetDefaultAllowNameChange(); // Set back to default
+ bool dupAllowNameChange() const;
+
+ /** dup mode: allow to change architecture of installed solvables */
+ void dupSetAllowArchChange( bool yesno_r );
+ void dupSetDefaultAllowArchChange(); // Set back to default
+ bool dupAllowArchChange() const;
+
+ /** dup mode: allow to change vendor of installed solvables*/
+ void dupSetAllowVendorChange( bool yesno_r );
+ void dupSetDefaultAllowVendorChange(); // Set back to default
+ bool dupAllowVendorChange() const;
+ //@}
+
/** \name Upgrade to content of a specific repository.
* \note This is an ordinary solver request. You should simply
* \ref resolvePool to execute, and not \ref doUpgrade.
}
//---------------------------------------------------------------------------
+// forward flags too SATResolver
+#define ZOLV_FLAG_TRIBOOL( ZSETTER, ZGETTER, ZVARNAME, ZVARDEFAULT ) \
+ void Resolver::ZSETTER( TriBool state_r ) \
+ { _satResolver->ZVARNAME = indeterminate(state_r) ? ZVARDEFAULT : bool(state_r); } \
+ bool Resolver::ZGETTER() const \
+ { return _satResolver->ZVARNAME; } \
+
+ZOLV_FLAG_TRIBOOL( dupSetAllowDowngrade, dupAllowDowngrade, _dup_allowdowngrade, true )
+ZOLV_FLAG_TRIBOOL( dupSetAllowNameChange, dupAllowNameChange, _dup_allownamechange, true )
+ZOLV_FLAG_TRIBOOL( dupSetAllowArchChange, dupAllowArchChange, _dup_allowarchchange, true )
+ZOLV_FLAG_TRIBOOL( dupSetAllowVendorChange, dupAllowVendorChange, _dup_allowvendorchange, true )
+
+#undef ZOLV_FLAG_TRIBOOL
+//---------------------------------------------------------------------------
void Resolver::setAllowVendorChange( TriBool state_r )
{
//----------------------------------------------------------------------------
// undo
-
void Resolver::undo()
{
UndoTransact info(ResStatus::APPL_LOW);
void setCleandepsOnRemove( TriBool state_r );
//@}
+#define ZOLV_FLAG_TRIBOOL( ZSETTER, ZGETTER ) \
+ void ZSETTER( TriBool state_r ); \
+ bool ZGETTER() const; \
+
+ ZOLV_FLAG_TRIBOOL( dupSetAllowDowngrade, dupAllowDowngrade )
+ ZOLV_FLAG_TRIBOOL( dupSetAllowNameChange, dupAllowNameChange )
+ ZOLV_FLAG_TRIBOOL( dupSetAllowArchChange, dupAllowArchChange )
+ ZOLV_FLAG_TRIBOOL( dupSetAllowVendorChange, dupAllowVendorChange )
+
+#undef ZOLV_FLAG_TRIBOOL
+
ResolverProblemList problems() const;
void applySolutions( const ProblemSolutionList & solutions );
, _allowarchchange(false)
, _allowvendorchange(ZConfig::instance().solver_allowVendorChange())
, _allowuninstall(false)
+ , _dup_allowdowngrade( true )
+ , _dup_allownamechange( true )
+ , _dup_allowarchchange( true )
+ , _dup_allowvendorchange( true )
, _updatesystem(false)
, _noupdateprovide(false)
, _dosplitprovides(true)
solver_set_flag(_solv, SOLVER_FLAG_SPLITPROVIDES, _dosplitprovides);
solver_set_flag(_solv, SOLVER_FLAG_NO_UPDATEPROVIDE, _noupdateprovide);
solver_set_flag(_solv, SOLVER_FLAG_IGNORE_RECOMMENDED, _onlyRequires);
-
+ DBG << "main.cc: " << _dup_allowdowngrade << " / " << solver_get_flag(_solv, SOLVER_FLAG_DUP_ALLOW_DOWNGRADE ) << endl;
+ solver_set_flag(_solv, SOLVER_FLAG_DUP_ALLOW_DOWNGRADE, _dup_allowdowngrade );
+ solver_set_flag(_solv, SOLVER_FLAG_DUP_ALLOW_ARCHCHANGE, _dup_allownamechange );
+ solver_set_flag(_solv, SOLVER_FLAG_DUP_ALLOW_VENDORCHANGE, _dup_allowarchchange );
+ solver_set_flag(_solv, SOLVER_FLAG_DUP_ALLOW_NAMECHANGE, _dup_allowvendorchange );
+ DBG << "main.cc: " << _dup_allowdowngrade << " / " << solver_get_flag(_solv, SOLVER_FLAG_DUP_ALLOW_DOWNGRADE ) << endl;
+#if 1
#define HACKENV(X,D) solver_set_flag(_solv, X, env::HACKENV( #X, D ) );
- HACKENV( SOLVER_FLAG_DUP_ALLOW_DOWNGRADE, true );
- HACKENV( SOLVER_FLAG_DUP_ALLOW_ARCHCHANGE, true );
- HACKENV( SOLVER_FLAG_DUP_ALLOW_VENDORCHANGE,true );
- HACKENV( SOLVER_FLAG_DUP_ALLOW_NAMECHANGE, true );
+ HACKENV( SOLVER_FLAG_DUP_ALLOW_DOWNGRADE, _dup_allowdowngrade );
+ HACKENV( SOLVER_FLAG_DUP_ALLOW_ARCHCHANGE, _dup_allownamechange );
+ HACKENV( SOLVER_FLAG_DUP_ALLOW_VENDORCHANGE,_dup_allowarchchange );
+ HACKENV( SOLVER_FLAG_DUP_ALLOW_NAMECHANGE, _dup_allowvendorchange );
#undef HACKENV
-
+#endif
sat::Pool::instance().prepareForSolving();
// Solve !
// solve results
PoolItemList _result_items_to_install;
PoolItemList _result_items_to_remove;
+ public:
+ bool _fixsystem:1; // repair errors in rpm dependency graph
+ bool _allowdowngrade:1; // allow to downgrade installed solvable
+ bool _allowarchchange:1; // allow to change architecture of installed solvables
+ bool _allowvendorchange:1; // allow to change vendor of installed solvables
+ bool _allowuninstall:1; // allow removal of installed solvables
+ bool _updatesystem:1; // update
+ bool _noupdateprovide:1; // true: update packages needs not to provide old package
+ bool _dosplitprovides:1; // true: consider legacy split provides
+ bool _onlyRequires:1; // true: consider required packages only
+ bool _ignorealreadyrecommended:1; // true: ignore recommended packages that were already recommended by the installed packages
+ bool _distupgrade:1;
+ bool _distupgrade_removeunsupported:1;
+ bool _dup_allowdowngrade:1; // dup mode: allow to downgrade installed solvable
+ bool _dup_allownamechange:1; // dup mode: allow to change name of installed solvable
+ bool _dup_allowarchchange:1; // dup mode: allow to change architecture of installed solvables
+ bool _dup_allowvendorchange:1; // dup mode: allow to change vendor of installed solvables
+ bool _solveSrcPackages:1; // false: generate no job rule for source packages selected in the pool
+ bool _cleandepsOnRemove:1; // whether removing a package should also remove no longer needed requirements
- bool _fixsystem; // repair errors in rpm dependency graph
- bool _allowdowngrade; // allow to downgrade installed solvable
- 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; // update
- 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;
- bool _solveSrcPackages; // false: generate no job rule for source packages selected in the pool
- bool _cleandepsOnRemove; // whether removing a package should also remove no longer needed requirements
-
+ private:
// ---------------------------------- methods
std::string SATprobleminfoString (Id problem, std::string &detail, Id &ignoreId);
void resetItemTransaction (PoolItem item);