On 8/29/2017 9:37 AM, Ken Brown wrote: > On 5/31/2017 6:50 AM, Jon Turney wrote: >> ... solve some problems, perhaps add some new ones, I guess.  I'm not >> 100% >> sure this is the right approach to take, but I wrote it, so here it is. > [...] >> - As implemented, selecting "Current" overrides "Keep".  This is >> wrong, and a >> change from current behaviour, but is probably a symptom of some deeper >> confusion in the picker UI I'm not sure how to address > > I think the problem might be the following lines in the definition of > SolverSolution::update: > >   if (update) >     queue_push2(&job, SOLVER_UPDATE | SOLVER_SOLVABLE_ALL, 0); > > When the prerequisite checker calls SolverSolution::update, doesn't this > cause the upgrading of old versions that we want to keep (assuming > "Current" has been selected)?  As a quick test, I commented out those > lines and found that setup.exe let me keep an old version of a package. > > Maybe you need to add a DISABLE_UPDATE command to the solver task list > to implement "Keep" for packages that would otherwise be updated. DISABLE_UPDATE is not a command. But SOLVER_LOCK seems to do the job. Jon, I'm attaching a patch that should apply to the libsolv branch of your github cygwin-setup repo. So far I've only tested it very lightly, enough to verify that it lets me keep an old version of a package. Ken