Age | Commit message (Collapse) | Author | Files | Lines |
|
In discovery phase, there was logic to not process packages
multiple times. However, that logic failed to account the package's
depth and install_if state for the name being processed. This
caused install_if processing failure in certain topologies of the
dependency graph. Adds also a test case that should catch this
issue reliably.
|
|
This ensures a swap is emitted when replacing a virtual with
apk add.
|
|
|
|
declared provider_priority
|
|
tiebreaking
|
|
By introducing a new package metadata field, `provider_priority`
(index letter `k`), we can specify default packages to satisfy a
virtual.
If a user wishes to select an alternative provider for the virtual,
a changeset swapping the default provider for the selected provider
will be generated by the dependency resolver.
|
|
this fixes package selection when a 'real' package exists, but would
need to be provided by another package with 'virtual provides'.
In current package database this can happen with postgresql which is
also provided by postgresql-bdr. Normally postgresql would be satisfied
by postgresql, but if any package depends on postgresql-bdr and there's
no versioned dependency on postgresql this will help apk figure out
that postgresql-bdr should be used.
|
|
being replaced by a provider
|
|
The virtual package provider still needs to be explicitly
given on command line.
|
|
trigger it only if apk-tools can be upgrade, add test cases
|
|
|
|
this makes 'lbu diff' and aaudit diffs nice when a world
dependency is added or removed. sorting also makes the ordering
more deterministic as the world targets constraints are always
applied in the same order. test suite updated accordingly.
|
|
when removing large sets of packets, the ordering of removal
was not quaranteed to honor dependencies. this fixes the removal
order to be in reverse dependency order as far as possible.
|
|
This makes sure any conflicted packages will be removed first.
Useful if we know there are conflicting files, and want to avoid
adding potentially harmful replaces line. Add a test case for
this too.
|
|
allow packages in the cache's installed to be selected for installation
by the solver. add test case for the issue.
|
|
|
|
|
|
noticeable fixes upgrading of packages which get pulled in only
by install_if rule. this also simplifies the inheritance calculation
for packages, as well as the place where it is done for install_if
triggered packages.
|
|
'available' really means 'available in one or more configured
repository'. Cache is not a repository we track, so those are
only available for installation, but not available as preferred
to be installed from repository. fixes #2831.
|
|
|
|
|
|
add also a test case for this
|
|
We should not disqualify non-selectable packages as it would mark it as
dirty, forcing it to reconsider the name again, which could end up in
an endless loop.
fixes #2135
|
|
for musl compatibility
|
|
Mistakenly allowed masked out package to be installed if it was
in cache.
|
|
|
|
|
|
If name N is required, and all providers of A also provide B, it
means that only instances of B can be selected that provide N. This
is strong help with cases when so:libfoo.so.1 is updated to
so:libfoo.so.2 and not everything is recompiled.
|
|
Select latest version of package (if it is not pinned), and print
error if it cannot be installed due to other dependencies.
Together with --available, it selects the latest package which is
present at least in some repository.
This also fixes few solver issues with ordering of package selection
that got quite apparent with this flag. Namely, we cannot "lock"
a package until it's reverse dependencies are locked or not all of
the solver flags are propagated properly.
|
|
if all packages named N provide the virtual package, list only the
name N instead of all packages providing it.
|
|
Fixes also 'fetch' applet to prefer copying/linking to files from
cache if possible.
|
|
|
|
Instead of the dependency oriented logic, switch to print them
for each package or name needed. Might give a bit more readable
errors now. There's still few corner cases that proper error is
not output, which are cought by the test cases.
|
|
mostly useful for reboot, when all packages are not available.
|
|
- try harder to not change anything during self-upgrade
- also honor locking to packages that where earlier used in
merging common dependencies
- clarify upgrade applet help messages
|
|
Fix also pinning test cases to be more sane.
|
|
Handle properly per-name preference flags, and add test cases
for testing those via fix applet.
|
|
Implementing basic dependency handling, install_if and awareness
of pinning.
|
|
This reverts commit a2d873a77c6dd2e7f6219e6941af796e1f904e69.
|
|
This reverts commit 84bfef1a6b587a7da7d12fb701ab0d1d5d6ce2a9.
|
|
make cache a special kind of repository, and automatically cache
special packages (virtual packages, or ones installed from command
line). add test cases for handling virtual packages. fixes #1617.
|
|
We are having so many packages that they might overflow otherwise.
"ERROR: Preference overflow" was already reported.
|
|
It is incorrect optimization causing valid solutions to be skipped.
Any performance it might've gained, should be fixed by reintroduction
of the minimum penalty logic added in previous commit.
|
|
Basic per-name per-package specific scoring added.
|
|
Otherwise we can return no solution at all instead of partially
satisfied solution (and give proper error message).
|
|
|
|
This is an internal error.
|
|
|
|
|
|
use %zu for size_t
|