This is the mail archive of the
cygwin-apps-cvs
mailing list for the cygwin-apps project.
[setup - the official Cygwin setup program] branch topic/libsolv, created. release_2.881-38-gd5186cc
- From: jturney at sourceware dot org
- To: cygwin-apps-cvs at sourceware dot org
- Date: 1 Oct 2017 13:40:18 -0000
- Subject: [setup - the official Cygwin setup program] branch topic/libsolv, created. release_2.881-38-gd5186cc
at d5186cc652030469b526801b7b50d1c99732d3ff (commit)
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=d5186cc652030469b526801b7b50d1c99732d3ff
commit d5186cc652030469b526801b7b50d1c99732d3ff
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Sat Sep 30 23:23:29 2017 +0100
Non-existent source packages aren't accessible for installation
Prevent the src checkbox appearing for source packages which don't exist
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=1808d40ab46627f4002d3ef7946ace8a5ed62aea
commit 1808d40ab46627f4002d3ef7946ace8a5ed62aea
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Sat Sep 30 17:37:12 2017 +0100
Revert "Try to improve the solver's default solution"
This reverts commit b4a62044abb8d9a23a6c9685adb6716f87e8df6b.
Using this solver flag seems to cause all packages to get upgraded.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=ff0bb3d00edcf431501a379e63a9246406322f02
commit ff0bb3d00edcf431501a379e63a9246406322f02
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Fri Sep 29 14:46:46 2017 +0100
Use solver for initial pick list when upgrading
Use the solver to determine initial pick list for Curr or Test, rather than
directly picking packages. Thus the solver's initial solution in the pending
view should be the first thing the user sees.
Note: Keep is magical, and the package db pick list gets reset by
ChooserPage::keepClicked(), rather than going through changeTrust().
We don't unify these two paths, because the trust level passed to
changeTrust() gets recorded in PickView::defTrust and used by the line
picker in some mysterious way, and seems to only be expected to be
TRUST_CURR or TRUST_TEST. There's probably a subtle bug here, in that the
line picker might behave differently depending on if Curr or Test was
selected before Keep.
Drop passing upgrade flag to solver run after the user has made their
selections: the picker selection now reflects what the user is asking for.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=ebd587a795e529473127897db159abc74e2e02a7
commit ebd587a795e529473127897db159abc74e2e02a7
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Fri Sep 29 14:18:44 2017 +0100
Make removeEmptyCategories() explicit, rather than a side effect of defaultTrust()
It's unclear that this can ever do anything. The list of categories is
built as we see packages in those categories, so I don't know how we can
ever get an empty category.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=808105ef8b2bbabbb636345eb8107615c537376f
commit 808105ef8b2bbabbb636345eb8107615c537376f
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Fri May 26 14:30:40 2017 +0100
Handle 'Source:' lines in setup.ini
This is somewhat awkward:
Storing the source package by Id rather than by name is looking a bit like a
premature optimization, but being to able to refer to source packages by Id
is very handy.
If the src pkg isn't seen until after the pkg, we don't know what it's Id
will be. So we have to go back and fixup the Ids after we've seen all
packages.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=786a0b88c5efbde562396241e7130ef1dc359431
commit 786a0b88c5efbde562396241e7130ef1dc359431
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Tue Sep 26 19:43:12 2017 +0100
Link with libregex rather than libgnurx
Use -lregex rather than -lgnurx, as the Fedora mingw{32,63}-libgnurx
cross-packages only contain the library under that name.
(The Cygwin mingw63-{i686,x86_64}-libgnurx cross-packages have both names).
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=fa6b1b6b3d733495c8024a67a99c0b1e88fc0474
commit fa6b1b6b3d733495c8024a67a99c0b1e88fc0474
Author: Ken Brown <kbrown@cornell.edu>
Date: Sat Sep 16 11:39:40 2017 -0400
Allow user to refuse the default problem solutions
Add new method SolverSolution::db2trans to change the solver's
transaction list to reflect the package database. Use it if the user
refuses the default problem solutions. Reinstate warning that this
could cause breakage.
Remove PrereqPage::OnMessageCmd, which is no longer needed (and which
disallows clicking Next if the "Accept default problem solutions" box
is unchecked).
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=b4a62044abb8d9a23a6c9685adb6716f87e8df6b
commit b4a62044abb8d9a23a6c9685adb6716f87e8df6b
Author: Ken Brown <kbrown@cornell.edu>
Date: Sat Sep 16 11:32:57 2017 -0400
Try to improve the solver's default solution
Set the solver flag SOLVER_FLAG_FOCUS_BEST. This helps in the
following situation: A required package has an update available. The
user chooses uninstall. Without the flag the default solution is to
keep the (outdated) package. With the flag the default is to upgrade.
It remains to be seen whether the flag has any undesired effects.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=4a20af748124e5d0febf5e8e430946fb69196c79
commit 4a20af748124e5d0febf5e8e430946fb69196c79
Author: Ken Brown <kbrown@cornell.edu>
Date: Sat Sep 16 11:28:37 2017 -0400
Add a ficitious "base" package that requires all Base packages
Modify the solver's problem report so that it refers to "Base
packages" rather than the "base" package.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=2c010aa36f720cbeccd7db1645ca85a640396ef0
commit 2c010aa36f720cbeccd7db1645ca85a640396ef0
Author: Ken Brown <kbrown@cornell.edu>
Date: Sat Sep 16 11:23:04 2017 -0400
Mention how you can see what packages were added to resolve dependencies
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=0cd3291c5b39d4409302f5e50a6debac071b9d06
commit 0cd3291c5b39d4409302f5e50a6debac071b9d06
Author: Ken Brown <kbrown@cornell.edu>
Date: Fri Sep 8 11:16:24 2017 -0400
Add new member function SolverSolution::trans2db
This resets the package database to reflect the solver's transaction
list. Call this if the user clicks Back on the Prerequisite page, to
allow reviewing and making changes before accepting the solver's
solution.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=9d204326e366f3f65c57569d40dadb597e2594d4
commit 9d204326e366f3f65c57569d40dadb597e2594d4
Author: Ken Brown <kbrown@cornell.edu>
Date: Sat Sep 16 10:50:37 2017 -0400
Factor out SolverTasks::setTasks()
Move the code from prereq.cc that makes a solver task list from packagedb
state into a new function SolverTasks::setTasks.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=b92c4e88fb7beb9bc572262aa938f8b9d9cf778e
commit b92c4e88fb7beb9bc572262aa938f8b9d9cf778e
Author: Ken Brown <kbrown@cornell.edu>
Date: Sat Sep 2 14:35:58 2017 -0400
Simplify code in install.cc
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=b31880128e9e6115f37453306157df0d52e13a6c
commit b31880128e9e6115f37453306157df0d52e13a6c
Author: Ken Brown <kbrown@cornell.edu>
Date: Mon Sep 4 16:44:31 2017 -0400
Fix 'SolverTasks::taskList' typedef
Remove the '&'. This was causing source installs to all refer to the
same package, due to the call to q.add(pkg->desired.sourcePackage(),
SolverTasks::taskInstall) in PrereqChecker::isMet.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=3b8ef4d7d8a415a54e05745ebd9d38a0f95cbeb3
commit 3b8ef4d7d8a415a54e05745ebd9d38a0f95cbeb3
Author: Ken Brown <kbrown@cornell.edu>
Date: Sat Sep 2 14:27:52 2017 -0400
Download only the packages being installed
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=902dd684be14d3882db1221741cea2babebac512
commit 902dd684be14d3882db1221741cea2babebac512
Author: Ken Brown <kbrown@cornell.edu>
Date: Wed Sep 6 10:44:27 2017 -0400
Don't create an "_installed_test_" repo
This prevents libsolv from knowing that an installed test release is
installed, since pool->installed is "_installed".
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=f25f25ca54b1c52294f957802acbadf477e75c41
commit f25f25ca54b1c52294f957802acbadf477e75c41
Author: Ken Brown <kbrown@cornell.edu>
Date: Tue Sep 5 22:22:23 2017 -0400
Allow the installation of test packages without setting "Test" globally
Instead of disabling test repos when "Test" is not selected, just give
them lower priority than ordinary repos.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=4f0e57d5cfdc0c0587858c34f5cfd3d4d8cddbe1
commit 4f0e57d5cfdc0c0587858c34f5cfd3d4d8cddbe1
Author: Ken Brown <kbrown@cornell.edu>
Date: Sat Sep 16 10:06:26 2017 -0400
Ask solver to check dependencies of installed packages
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=02bd4e0c3ccbb1aa3dd8335a2e2d6eebf26ac07a
commit 02bd4e0c3ccbb1aa3dd8335a2e2d6eebf26ac07a
Author: Ken Brown <kbrown@cornell.edu>
Date: Sat Sep 2 12:37:29 2017 -0400
Improve the reading of installed.db
When creating a packageversion for a package listed in installed.db,
use the information for the installed version rather than the
"current" version. Add a new function packagedb::findBinaryVersion to
help with this.
Get as much information about an installed information as possible
from the prior reading of setup.ini.
Improve detection of installed test releases. An installed test
release might not appear in setup.ini because it is no longer
available (e.g., it might have been replaced by a newer test release).
Detect this by comparing its version to the current version.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=56aec9961c767ed994e331d431e5ba66d6f5015a
commit 56aec9961c767ed994e331d431e5ba66d6f5015a
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Fri May 26 14:30:40 2017 +0100
Add a PackageSpecification() constructor which takes a package name and version
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=e82e7095a795319882defbb8ee0675d73bcd7320
commit e82e7095a795319882defbb8ee0675d73bcd7320
Author: Ken Brown <kbrown@cornell.edu>
Date: Sat Sep 16 07:19:55 2017 -0400
Add SolvableVersion::obsoletes()
v2: Add SolvableVersion::obsoletes(), factor out key-to-deplist code from
SolvableVersion::depends() as SolvableVersion::deplist()
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=c0849642e227f24a553422ea6a37008b0779ad00
commit c0849642e227f24a553422ea6a37008b0779ad00
Author: Ken Brown <kbrown@cornell.edu>
Date: Sat Sep 2 11:57:25 2017 -0400
Fix setup.ini parsing
The IniDBBuilderPackage::process function wasn't fully resetting the
addPackageData for a new version of a package. This caused SHA512
failures among other things.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=b43b697684a19b4b36447b493874cd64ec603c8f
commit b43b697684a19b4b36447b493874cd64ec603c8f
Author: Ken Brown <kbrown@cornell.edu>
Date: Wed Aug 30 17:36:13 2017 -0400
Don't override a Keep selection
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=56151ae0050f4e2227608aea053b82642dd4d896
commit 56151ae0050f4e2227608aea053b82642dd4d896
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Mon May 22 18:04:02 2017 +0100
Add obsoletes: support
Note that we need separate depends and obsoletes nodelists
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=3a076f96b09ef863ea7fcede061723d8eb28d754
commit 3a076f96b09ef863ea7fcede061723d8eb28d754
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Fri May 19 11:26:07 2017 +0100
Download/checksum/install/uninstall what transaction wants
Some of this goes rather around the houses to avoid lots of churm: In lots
of cases, we're looking up packagemeta for a given packageversion just so we
can use the pacakgemeta to access the name, which we could do via
packageversion just as easily.
We do actually need packagmeta for a couple of things: To note the package
as installed/uninstalled, and to note postinstalls scripts.
If IncludeSource is on source packages installs will have been added to the
task list in post-processing, so we don't need to handle that specially
anymore.
Source packages to be installed are kept in a separate queue as they are
installed differently to binary packages (root is /usr/src, install isn't
recorded, etc.)
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=f02c77316dbde7bb09d94629c24ff7e889229e1a
commit f02c77316dbde7bb09d94629c24ff7e889229e1a
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Sat Apr 29 15:43:52 2017 +0100
Use solver to check for problems and produce a list of package transactions
Convert chooser UI selections into a SolverTaskList
Apply SolverSolution to that task list (with choice of keep, upgrade,
upgrade with test, IncludeSource) to produce a vector of SolverTransactions.
Store a solution object in packagedb
The transaction list returned by the solver is postprocessed to add
reinstall and IncludeSource actions
Very crudely present solver problems in the PrereqChecker page UI, as text.
Change tickbox to say "accept default solutions" and don't allow to preceed
unless those solutions are accepted (ideally we would have a UI to choose
solutions). Remove warning about missing dependencies.
Also pass initial trust state to PrereqChecker
v2:
Fix comment typo (kbrown)
Tweak comment in OnActivate() (kbrown)
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=50a044a2491305d871bd0795f5b09e46113f8b22
commit 50a044a2491305d871bd0795f5b09e46113f8b22
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Sat Apr 29 15:39:46 2017 +0100
Drop in SolvableVersion as a replacement for packageversion
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=13cf2fa2b5e11bf4ed145aa51817804dfdeab214
commit 13cf2fa2b5e11bf4ed145aa51817804dfdeab214
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Fri Apr 28 17:39:26 2017 +0100
Remove packageversion class
Remove packageversion, _packageversion, defaultversion classes
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=25f7bd1371e8068f62d95171088b6a383d96edbe
commit 25f7bd1371e8068f62d95171088b6a383d96edbe
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Fri Apr 28 15:26:05 2017 +0100
Remove cygpackage class
v2:
Fix typo in bootstrap.sh (kbrown)
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=b7f7bb4491a8c555f996123c2b5474110ca8b70b
commit b7f7bb4491a8c555f996123c2b5474110ca8b70b
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Fri Apr 7 21:52:17 2017 +0100
Change to using a libsolv pool for storing package information
Add class SolverVersion, a wrapper around a Solvable Id. The interface is
similar to class packageversion, the name change is just to make sure I've
got everything.
Place test packages into separate repos.
Expressing that curr: packages are preferred to prev: ones when that is not
the version number ordering should be done with epoch numbers.
Wire up various bits of data in packageversion to Solvable attributes,
including sourcepackage, stability, archive (packagesource) and depends.
Store sourcePackage() by the id rather than name, for much faster lookup.
SolverVersions for the same package can be ordered and compared by evr.
Factor out packagedb:addBinary() and also use it in IniDBBuilder, rather
that inlining the process of adding a package there. Add an analagous
packagedb:addSource() to do the same thing for source packages.
Change to reading installed.db after setup.ini's have been read, so we can
supplement the installed.db packages with information from setup.ini.
Make packagemeta::add_version() check for successful insertion of version.
Record the version at a stability level. The last version wins in setting
curr/test.
Use a Solver object inside packagedb
XXX: All SolvableVersion methods need to check for null solvable?
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=17ade2556ca4ebc824d25a10a864c3f1826f0d66
commit 17ade2556ca4ebc824d25a10a864c3f1826f0d66
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Mon Apr 24 20:17:36 2017 +0100
Store package stability in class packageversion
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=752459c6cad36493daef38e46f8eba0a3bffd253
commit 752459c6cad36493daef38e46f8eba0a3bffd253
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Wed Apr 26 16:22:30 2017 +0100
Hoist scan() up from packageversion to packagemeta
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=eb54ff88c506b96c580d5d1ea709945a6b8a52a2
commit eb54ff88c506b96c580d5d1ea709945a6b8a52a2
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Tue Apr 25 23:44:08 2017 +0100
Hoist uninstall up to Installer::uninstallOne()
This calls packagemeta, which applies to packageversion (which delegates
through packageversion_ to cygpackage) to return lines from the .lst.gz file
(pretending that we know it contains a file list for that specific version)
and to remove the .lst.gz file when done.
Move this all up into Installer::uninstallOne(), where it's all in the same
place as the operation it is reversing, Installer::installOne().
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=e845067673b82c5d78c9e0c223806189cdbdbb2c
commit e845067673b82c5d78c9e0c223806189cdbdbb2c
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Wed Apr 26 15:20:14 2017 +0100
Hoist pick() up to packagemeta
We are always writing packagemeta.desired.pick(bool, packagemeta). This
kind of suggests something not quite right.
The pick flag means install/reinstall, so despite being stored per
packageversion, is only significant to download/install for the desired
version.
There's a slight wrinkle in that we want to also set/clear this flag for the
source packageversion. We can't change this to point to packagemeta rather
than packageversion, as that may not be the same for all versions, so
instead just track this flag separately as srcpicked.
Note that there is still a complicated mapping between the state of desired
and pick and the action represented in the UI:
desired == empty, installed == desired : skip
desired == empty, installed != desired : uninstall
desired == installed, pick == true : reinstall
desired == installed, pick == false : keep
desired != installed, pick == true : upgrade
desired != installed, pick == false : invalid
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=7ef1781d3ad388a0d1066969edcf317012423cc5
commit 7ef1781d3ad388a0d1066969edcf317012423cc5
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Tue May 23 22:19:15 2017 +0100
Hoist addScript() etc. up from packageversion to packagemeta
We're only interesting in storing scripts and later running them from the
desired version as we install it, so despite being stored per
packageversion, this is only significant for the desired version.
Hoist it up from packageversion to packagemeta.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=613b94663b9b008296545b077375934954930b83
commit 613b94663b9b008296545b077375934954930b83
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Sat May 20 16:17:44 2017 +0100
Factor out reading installed.db
Rather that doing implicitly the first time a packagedb is constructed, do
it explicitly at a certain point in time that is early enough.
https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=dde47fb19969d178f8402c81824a9daacd66a7e7
commit dde47fb19969d178f8402c81824a9daacd66a7e7
Author: Jon Turney <jon.turney@dronecode.org.uk>
Date: Fri May 5 12:36:42 2017 +0100
Opaque how PackageDepends is stored
We want to be more opaque about how the PackageDepends for a packageversion
is stored, so rather than exposing a pointer to a PackageDepends object
inside class packageversion, access it by value.
This also makes us be more explicit about set/get of package depends()
Fix some iterations to deal with depends() returning a value rather than a
pointer.
Also adjust dumpPackageDepends() appropriately
Also remove useless debug showing the dependency list before we build it.