From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 100450 invoked by alias); 11 Dec 2017 22:46:50 -0000 Mailing-List: contact cygwin-apps-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cygwin-apps-cvs-owner@sourceware.org Received: (qmail 100431 invoked by uid 9795); 11 Dec 2017 22:46:50 -0000 Date: Mon, 11 Dec 2017 22:46:00 -0000 Message-ID: <20171211224650.100328.qmail@sourceware.org> From: jturney@sourceware.org To: cygwin-apps-cvs@sourceware.org Subject: [setup - the official Cygwin setup program] branch topic/libsolv, created. release_2.883-42-g8481f81 X-Git-Refname: refs/heads/topic/libsolv X-Git-Reftype: branch X-Git-Oldrev: 0000000000000000000000000000000000000000 X-Git-Newrev: 8481f81ffcf6a2f63e3aa0c3a86341022c6a108b X-SW-Source: 2017-q4/txt/msg00050.txt.bz2 at 8481f81ffcf6a2f63e3aa0c3a86341022c6a108b (commit) https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=8481f81ffcf6a2f63e3aa0c3a86341022c6a108b commit 8481f81ffcf6a2f63e3aa0c3a86341022c6a108b Author: Jon Turney Date: Mon Nov 6 18:02:08 2017 +0000 More crash avoidance in SolvableVersion member functions The following call-stack means we end up calling SolvableVersion methods before packagedb::prep(), i.e. before attributes have been internalized, so their values aren't available. PickView::init_headers PickView::refresh PickView::init ChooserPage::createListview ChooserPage::OnInit We call PickView::refresh again after we've computed the initial solution, so the columns always end up with the correct width. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=e7b7442097b33ac2bb2d84f940fa81d9a9da5b93 commit e7b7442097b33ac2bb2d84f940fa81d9a9da5b93 Author: Jon Turney Date: Sat Nov 4 18:01:49 2017 +0000 Correctly order preparing packagedb for chooser Do packagedb::prep() in ChooserPage::OnActivate(), as doing it in OnInit() is wrong, as that only gets called once (but lazily). Make packagedb::prep() idempotent after packagedb::init(), so it doesn't do it's work again, if we come back to chooser from a later page. Re-arrange applying command line package selection, and determining the initial solution, which should only happen once, but after packagedb::prep() https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=3ed8b28bc444e25b17b6c78e2aa8a93e5b46cab1 commit 3ed8b28bc444e25b17b6c78e2aa8a93e5b46cab1 Author: Jon Turney Date: Thu Nov 2 14:15:04 2017 +0000 Ensure packagedb and underlying solver pool is empty before we read setup.ini We need to make sure the packagedb is empty if we step backwards to here. v2: Also clear solver stored in SolverSolution, which holds a pool pointer https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=947a3dd8028536b7aa33d9d3b8d6b371ff588730 commit 947a3dd8028536b7aa33d9d3b8d6b371ff588730 Author: Jon Turney Date: Mon Oct 30 15:09:33 2017 +0000 Revert "Bump the installed.db version to 4" This reverts commit cbf84482f992011eca70c560a0584bc588db80d6. Do this temporarily so people can test but go back to using setup 2.882 without too much inconvenience... https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=0d090a0a8aba20717a87d52310c3a182aeab4623 commit 0d090a0a8aba20717a87d52310c3a182aeab4623 Author: Ken Brown Date: Fri Oct 27 14:47:22 2017 -0400 Bump the installed.db version to 4 Starting with the commit 'Remove the function filemanip.cc:base', setup correctly parses version numbers of the form e:v-r in installed.db. Bump the version of installed.db to reflect the fact that older setup doesn't parse filenames containing colons correctly. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=6db4839aa3b7d4e1da407ddccf193e29229c2907 commit 6db4839aa3b7d4e1da407ddccf193e29229c2907 Author: Ken Brown Date: Fri Oct 27 14:47:21 2017 -0400 Remove the function filemanip.cc:base() This was called only on plain filenames, not full pathnames, so it was not needed. Moreover, it wasn't correctly handling filenames containing colons. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=92c304fe9c205dd651caeaede5c04b9401626be1 commit 92c304fe9c205dd651caeaede5c04b9401626be1 Author: Ken Brown Date: Sat Oct 28 13:46:19 2017 -0400 Avoid clobbering installed.db when no setup.ini is found If no setup.ini is found, do_ini_thread is never called. But we need to ensure that packagedb::read is called, or else installed.db gets emptied. Move the calls to packagedb::read and other packagedb functions from do_ini_thread to ChooserPage::OnInit. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=d1df71c91446f63a47fd4a424869fe9d784d53ad commit d1df71c91446f63a47fd4a424869fe9d784d53ad Author: Ken Brown Date: Fri Oct 20 06:59:54 2017 -0400 Don't override a Skip selection Introduce SolverTasks::taskSkip, and generate it when the user chooses to Skip a package that the solver wants to install. Implement it by sending a SOLVER_LOCK command on the package name. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=e7432ac3d6c2ab61390a56543dd0d62e87fa41f6 commit e7432ac3d6c2ab61390a56543dd0d62e87fa41f6 Author: Ken Brown Date: Thu Oct 19 14:44:45 2017 -0400 Fix the functionality of taskKeep A taskKeep is generated whenever the user wants to keep an installed version that's different from the default_version, where the latter is whatever the solver has chosen. We need to make sure that default_version is set appropriately wherever it is needed. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=97c49092bad9dcb8b589c6e52e25635b6e8cb8d9 commit 97c49092bad9dcb8b589c6e52e25635b6e8cb8d9 Author: Ken Brown Date: Tue Oct 17 08:12:48 2017 -0400 Extend the SolvableVersion member functions to the empty package Currently some of these functions cause crashes when the package is empty because the libsolv function pool_id2solvable unconditionally dereferences its first argument ('pool'). https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=d6dcd39190ae45ff046f12d189f3d0a975312b15 commit d6dcd39190ae45ff046f12d189f3d0a975312b15 Author: Jon Turney Date: Mon Oct 9 18:10:52 2017 +0100 Take command line package/category install/uninstall into account Rather than overwriting the packagedb changes made from processing command line options in ChooserPage::OnInit(), use the 'initial' flag to changeTrust() in createListview() to take them into consideration. --upgrade-also and --force-current are now handled directly. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=55f94f44f48ed31372ffbd1bee6828be6eb76807 commit 55f94f44f48ed31372ffbd1bee6828be6eb76807 Author: Jon Turney Date: Mon Oct 9 15:37:06 2017 +0100 Change UI to add 'Sync' choice and change 'Test' to checkbox Set the initial update mode in UI correctly: - 'Sync', if --force-current option is used - 'Keep', if packages are selected on command line without --upgrade-also - 'Current', otherwise Add mapping of 'Sync' to SolverSolution::updateForce to mapping of UI update mode to solver update mode. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=30b14e03c5b98b10f9870eba3d69d4dd972e3681 commit 30b14e03c5b98b10f9870eba3d69d4dd972e3681 Author: Jon Turney Date: Mon Oct 9 15:05:22 2017 +0100 Add distupgrade support to solver Also, ignore change transactions (these are usually vendorchange as we forget the vendor for installed packages) Also, don't put unknown type transactions into the transaction list https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=63ae48ab50c7a514189d142043c7fece1d8275d3 commit 63ae48ab50c7a514189d142043c7fece1d8275d3 Author: Jon Turney 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=17f98bfee9ae04cf72468096953ce1ce9efbf2f5 commit 17f98bfee9ae04cf72468096953ce1ce9efbf2f5 Author: Jon Turney 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=ee5c6eac26972e34393529614915b82dcc5806e7 commit ee5c6eac26972e34393529614915b82dcc5806e7 Author: Jon Turney 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=e4776ba8f6ecf4b4430191be9182b8c1fb9a4a5e commit e4776ba8f6ecf4b4430191be9182b8c1fb9a4a5e Author: Ken Brown 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=4b97fb02462e4bb4dca0af392cbc0cb548de919d commit 4b97fb02462e4bb4dca0af392cbc0cb548de919d Author: Ken Brown 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=9367283e8dc7583e9a6c4bf8b48d386ddff99751 commit 9367283e8dc7583e9a6c4bf8b48d386ddff99751 Author: Ken Brown Date: Sat Sep 16 11:23:04 2017 -0400 Mention how you can see what packages were added to resolve dependencies v2: Remove newlines from explanatory text at the end of dependency report The text control we display it in will perform wrapping appropriately https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=e6a887b23fae1d3090f60e930a08e6ed24dca5bd commit e6a887b23fae1d3090f60e930a08e6ed24dca5bd Author: Ken Brown 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=7d8352393f8dabc4f4b293258e0caa7ea283d95e commit 7d8352393f8dabc4f4b293258e0caa7ea283d95e Author: Ken Brown 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=264a13d3100787da1007ebb3ae2ae764cf36e2b4 commit 264a13d3100787da1007ebb3ae2ae764cf36e2b4 Author: Ken Brown Date: Sat Sep 2 14:35:58 2017 -0400 Simplify code in install.cc Avoid passing around a packagemeta, when all we use is the package name. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=5f6e8ffd906acf8a7c719e3e8218c5b3fa4a3d7b commit 5f6e8ffd906acf8a7c719e3e8218c5b3fa4a3d7b Author: Ken Brown 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=13bfba96bac7346993d712f2c2f70278a7d812f2 commit 13bfba96bac7346993d712f2c2f70278a7d812f2 Author: Ken Brown 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=5acb5ce37c688a0ea1ff097796714e6065b7e41c commit 5acb5ce37c688a0ea1ff097796714e6065b7e41c Author: Ken Brown 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=aee83855d74c29a6c2aaf7ce1589a6fabb876732 commit aee83855d74c29a6c2aaf7ce1589a6fabb876732 Author: Ken Brown 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. v2: Give test repos normal, rather than high priority, when selected so we don't prefer a test version over a higher non-test version. https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=e4e8774398397a488e6a42b5acb6a29c2a6ff33a commit e4e8774398397a488e6a42b5acb6a29c2a6ff33a Author: Ken Brown 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=79170d658e18b91980c47c58abd5ba1d498683ee commit 79170d658e18b91980c47c58abd5ba1d498683ee Author: Ken Brown 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=d90e0bb489845361dc4066447250041e79d600ba commit d90e0bb489845361dc4066447250041e79d600ba Author: Jon Turney 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=38da21712d126a98bf90d4651c6909958c4989ca commit 38da21712d126a98bf90d4651c6909958c4989ca Author: Ken Brown 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=7c36c2995ab571ac3f0cd9f464e760ad623d0946 commit 7c36c2995ab571ac3f0cd9f464e760ad623d0946 Author: Ken Brown 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=7ea26ca6d4405046b309f97d54813fa228374b8a commit 7ea26ca6d4405046b309f97d54813fa228374b8a Author: Ken Brown 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=8d641e3328e4649ca538384d5da16979b60a025a commit 8d641e3328e4649ca538384d5da16979b60a025a Author: Jon Turney Date: Mon May 22 18:04:02 2017 +0100 Add obsoletes: support Note that we need separate depends and obsoletes nodelists v2: Reset "obsoletes" between packages. Also add a debugging statement. (kbrown) https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=3f55d0776acbbb60e507bb35dba59f40c770e31f commit 3f55d0776acbbb60e507bb35dba59f40c770e31f Author: Jon Turney 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=3608e56af8034b8ce094f17836c081c0294811ab commit 3608e56af8034b8ce094f17836c081c0294811ab Author: Jon Turney 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=46b2639e383e59ba88b9dcf6cd3ead398e4d84ed commit 46b2639e383e59ba88b9dcf6cd3ead398e4d84ed Author: Jon Turney 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=e8713175db6f441111eb36baa972021973d18dc0 commit e8713175db6f441111eb36baa972021973d18dc0 Author: Jon Turney 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=ce71e3cf308cdc26030c746d7fa193b320378635 commit ce71e3cf308cdc26030c746d7fa193b320378635 Author: Jon Turney 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=a5b66623f2c494a227693841868f38fab7972054 commit a5b66623f2c494a227693841868f38fab7972054 Author: Jon Turney 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 v2: 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). Check for libregex at configure time (Done properly this should use PKG_CHECK_MODULES, rather than checking for the header...) Update build instructions https://sourceware.org/git/gitweb.cgi?p=cygwin-apps/setup.git;h=ec19223ff08c3149e0cca53454e0bb459aa914e5 commit ec19223ff08c3149e0cca53454e0bb459aa914e5 Author: Jon Turney 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=dba5e9cb153a5c7c416daf54d9144910def6e697 commit dba5e9cb153a5c7c416daf54d9144910def6e697 Author: Jon Turney 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=b50f675eb446e90ebac21ed7e473c7080dbad4fe commit b50f675eb446e90ebac21ed7e473c7080dbad4fe Author: Jon Turney 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