From: Jon Turney <jon.turney@dronecode.org.uk>
To: cygwin-apps@cygwin.com
Cc: Jon Turney <jon.turney@dronecode.org.uk>
Subject: [PATCH setup 00/14] Use libsolv, solve all our problems... (WIP)
Date: Wed, 31 May 2017 10:53:00 -0000 [thread overview]
Message-ID: <20170531105015.162228-1-jon.turney@dronecode.org.uk> (raw)
... 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.
This replaces the current PackageVersion class with a similar one which stores
the information in a libsolv pool, and the current depsolver with the libsolv
solver (as used by zypper, dnf and others).
Immediately, this enables:
- use of a version relation in package dependencies
- an obsoletes: relation between packages
This also makes it much easier to support:
- version numbers with an epoch component (I think just how we handle ':' in
filenames needs auditing to make this work)
- other commonly-implemented package relations such as conflicts:, provides:
etc.
What remains to be done:
- I've dodged a lot of the UI issues: If the solver reports problems, all that
can be done is accept the default solution or cancel. This possibly isn't a
big problem until we have a package set which can contain problems...
- We had a very poor UI for showing what will actually be done (combine in
your head the "Pending" view with packages listed in the text on the
PrereChecker page), and this removes part of that
- 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
libsolv needs to be lightly patched to build for Win32, see [1]. I will ITP
that, but it probably also needs an RPM to support cross-building.
[1] https://github.com/jon-turney/libsolv
Jon Turney (14):
Opaque how PackageDepends is stored
Factor out reading installed.db
Hoist addScript() etc. up from packageversion to packagemeta
Hoist pick() up to packagemeta
Hoist uninstall up to Installer::uninstallOne()
Hoist scan() up from packageversion to packagemeta
Store package stability in class packageversion
Change to using a libsolv pool for storing package information
Remove cygpackage class
Remove packageversion class
Drop in SolvableVersion as a replacement for packageversion
Use solver to check for problems and produce a list of package
transactions
Download/checksum/install/uninstall what transaction wants
Add obsoletes: support
IniDBBuilderPackage.cc | 331 ++++++++---------------
IniDBBuilderPackage.h | 32 ++-
Makefile.am | 7 +-
PackageSpecification.cc | 12 +
PackageSpecification.h | 7 +-
PickPackageLine.cc | 14 +-
PickView.cc | 9 +-
bootstrap.sh | 2 +-
choose.cc | 8 +-
configure.ac | 1 +
cygpackage.cc | 187 -------------
cygpackage.h | 88 -------
desktop.cc | 1 -
download.cc | 72 ++---
ini.cc | 1 +
inilex.ll | 1 +
iniparse.yy | 3 +
install.cc | 176 ++++++++-----
libsolv.cc | 689 ++++++++++++++++++++++++++++++++++++++++++++++++
libsolv.h | 231 ++++++++++++++++
package_db.cc | 115 ++++++--
package_db.h | 8 +
package_depends.cc | 19 +-
package_depends.h | 2 +-
package_meta.cc | 294 ++++++++++++---------
package_meta.h | 30 ++-
package_version.cc | 414 -----------------------------
package_version.h | 190 +------------
postinstall.cc | 6 +-
prereq.cc | 206 ++++-----------
prereq.h | 22 +-
res.rc | 4 +-
32 files changed, 1606 insertions(+), 1576 deletions(-)
delete mode 100644 cygpackage.cc
delete mode 100644 cygpackage.h
create mode 100644 libsolv.cc
create mode 100644 libsolv.h
delete mode 100644 package_version.cc
--
2.12.3
next reply other threads:[~2017-05-31 10:53 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-31 10:53 Jon Turney [this message]
2017-05-31 10:53 ` [PATCH setup 03/14] Hoist addScript() etc. up from packageversion to packagemeta Jon Turney
2017-05-31 10:53 ` [PATCH setup 01/14] Opaque how PackageDepends is stored Jon Turney
2017-05-31 10:53 ` [PATCH setup 02/14] Factor out reading installed.db Jon Turney
2017-05-31 10:53 ` [PATCH setup 04/14] Hoist pick() up to packagemeta Jon Turney
2017-05-31 10:53 ` [PATCH setup 05/14] Hoist uninstall up to Installer::uninstallOne() Jon Turney
2017-05-31 10:57 ` [PATCH setup 07/14] Store package stability in class packageversion Jon Turney
2017-05-31 10:57 ` [PATCH setup 09/14] Remove cygpackage class Jon Turney
2017-05-31 10:57 ` [PATCH setup 08/14] Change to using a libsolv pool for storing package information Jon Turney
2017-05-31 10:57 ` [PATCH setup 10/14] Remove packageversion class Jon Turney
2017-05-31 10:57 ` [PATCH setup 06/14] Hoist scan() up from packageversion to packagemeta Jon Turney
2017-05-31 11:05 ` [PATCH setup 11/14] Drop in SolvableVersion as a replacement for packageversion Jon Turney
2017-05-31 11:05 ` [PATCH setup 14/14] Add obsoletes: support Jon Turney
2017-05-31 11:05 ` [PATCH setup 13/14] Download/checksum/install/uninstall what transaction wants Jon Turney
2017-05-31 11:05 ` [PATCH setup 12/14] Use solver to check for problems and produce a list of package transactions Jon Turney
2017-08-29 13:37 ` [PATCH setup 00/14] Use libsolv, solve all our problems... (WIP) Ken Brown
2017-08-30 21:47 ` Ken Brown
2017-09-01 15:01 ` Ken Brown
2017-09-02 16:57 ` Ken Brown
2017-09-05 13:34 ` Jon Turney
2017-09-05 18:40 ` Achim Gratz
2017-09-06 2:52 ` Ken Brown
2017-11-23 18:10 ` Jon Turney
2017-11-23 20:32 ` Ken Brown
2017-11-23 20:54 ` Achim Gratz
2017-09-08 18:54 ` Ken Brown
2017-09-11 20:40 ` Ken Brown
2017-09-13 19:17 ` Achim Gratz
2017-09-13 21:16 ` Ken Brown
2017-09-14 17:26 ` Achim Gratz
2017-09-14 20:46 ` Ken Brown
2017-09-15 19:24 ` Jon Turney
2017-09-16 16:21 ` Ken Brown
2017-09-19 12:24 ` Ken Brown
2017-09-19 16:46 ` Jon Turney
2017-09-19 16:58 ` Ken Brown
2017-12-05 14:32 ` Jon Turney
2017-12-05 17:36 ` Ken Brown
2017-12-13 17:31 ` Ken Brown
2017-12-13 18:06 ` Achim Gratz
2017-12-13 22:31 ` Ken Brown
2017-12-14 14:12 ` Ken Brown
2017-12-24 15:00 ` Ken Brown
2018-01-09 13:25 ` Jon Turney
2018-01-09 15:37 ` Ken Brown
2018-01-09 15:49 ` Ken Brown
2018-01-13 14:14 ` Jon Turney
2018-01-13 19:56 ` Ken Brown
2018-01-13 21:29 ` Brian Inglis
2018-01-13 22:55 ` Ken Brown
2018-01-14 0:00 ` Ken Brown
2018-01-14 1:52 ` Brian Inglis
2018-01-14 2:37 ` Ken Brown
2018-01-15 19:02 ` Jon Turney
2018-01-15 21:50 ` Ken Brown
2018-01-18 19:14 ` Jon Turney
2017-09-15 15:15 ` Jon Turney
2017-09-15 16:53 ` Ken Brown
2017-09-15 20:56 ` cyg Simple
2017-09-17 16:02 ` Ken Brown
2017-09-26 14:50 ` Jon Turney
2017-09-26 16:07 ` Ken Brown
2017-09-27 19:14 ` Jon Turney
2017-09-27 20:33 ` Ken Brown
2017-09-29 17:38 ` Jon Turney
2017-09-29 20:34 ` Ken Brown
2017-10-02 14:07 ` Jon Turney
2017-10-02 15:17 ` Marco Atzeri
2017-10-04 14:43 ` Jon Turney
2017-10-10 11:18 ` Ken Brown
2017-10-10 15:49 ` Jon Turney
2017-10-17 12:45 ` Ken Brown
2017-10-17 18:47 ` Jon Turney
2017-10-18 15:28 ` Ken Brown
2017-10-18 15:57 ` Ken Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170531105015.162228-1-jon.turney@dronecode.org.uk \
--to=jon.turney@dronecode.org.uk \
--cc=cygwin-apps@cygwin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).