This is the mail archive of the cygwin-apps mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH setup 00/14] Use libsolv, solve all our problems... (WIP)

On 12/13/2017 5:31 PM, Ken Brown wrote:
On 12/13/2017 1:05 PM, Achim Gratz wrote:
Ken Brown writes:
1. Uninstall A.
2. Don't uninstall B.

On the surface, it would seem that libsolv chose 2 by default, because
it returned an empty transaction list.  This was reflected in the log
and was also clear when I selected 'Back'.

I don't think there is a default in this case.  I also see in zypper
that the order of the proposed solutions (there can be way more than two
if the dependencies are more complicated) is not always the same, so
there is no preference implied by the order as well.

Maybe we have to deal with this situation ourselves.  Whenever a
problem involves a missing dependency, we could choose as default
solution the one that installs/keeps the dependent package, as is
currently done.

That solution unfortunately isn't always the one that causes the least
amount of transactions or even the least amount of breakage.

That may be true, but I still think it's a reasonable default.  The user doesn't have to accept it.  Also, it's consistent with what setup currently does, so it won't surprise anyone.

The attached patch attempts to implement my suggestion.



+      if (type == SOLVER_RULE_PKG_REQUIRES)
+	{
+	  packagemeta *pkg = db.findBinary(PackageSpecification(pool_dep2str(pool.pool, dep)));
+	  if (!pkg->desired && pkg->installed < pkg->default_version)
+	    // User chose to uninstall or skip a required package.
+	    trans.push_back(SolverTransaction(pkg->default_version,
+					      SolverTransaction::transInstall));

This isn't quite right. We also need a transErase if the package is installed. Revised patch attached.


Attachment: 0001-Implement-a-default-solution-for-SOLVER_RULE_PKG_REQ.patch
Description: Text document

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]