Feature #574
implement provides
| Status: | Closed | Start date: | 04/08/2011 | |
|---|---|---|---|---|
| Priority: | Normal | Due date: | ||
| Assignee: | % Done: | 0% |
||
| Category: | - | |||
| Target version: | Alpine Linux - Alpine 2.4.0 |
Description
Packages should be able to export tags which can be used in dependencies.
E.g. vlc could export tag plugin-api=2. And clients could depend on vlc(plugin-api)>=2 instead of exact version number.
This is basically same as "provides". Provides support is just more generic, especially if we allow versioned provides, e.g. "provides=vlc-plugin-api=2". If we don't want to pollute the regular package namespace we can allow some special character in provides, e.g. "provides=vlc:plugin-api=2".
Related issues
Associated revisions
pkg: add field for provides as 'p'
ref #574
all: introduce apk_provides and use it in apk_name
in preparation for provides support. implements also some
dependency satisfaction helper routines.
ref #574.
solver, dot: elementary provides fixes
implementation is still not near finished, but now at least it
can handle it to a minimum degree. many cases are not done right
yet, though. ref #574.
solver: have most inherited things per-package and clean ups
Required for provides support as package might be pulled in via
non-primary package name. This allows relatively easily to pass
through inherited flags via the provided names. ref #574.
solver, test: implements more provides things, add tests
ref #574
solver: allow multiple packages with same virtual provides
ref #574
solver: fix conflicting provides detection
ref #574
solver: consider provided names also for preference
ref #574
History
Updated by Natanael Copa about 1 year ago
- Target version set to Alpine 2.3.0
Updated by Timo Teräs 10 months ago
- Subject changed from package tags and dependencies syntax for them to implement provides
- Description updated (diff)
This feature is subset of 'provides' - it's better to just implement provides properly. Updating subject and description accordingly.
Updated by Natanael Copa 7 months ago
- Target version changed from Alpine 2.3.0 to Alpine 2.4.0
Updated by Timo Teräs 3 months ago
- Status changed from New to Resolved
Basic provides support should be now done.
provides="foo" (no version specified) will provide a virtual name "foo". Multiple packages can be installed providing same name as long as none of them specify a version. In case a package depends on a virtual package, none of the providers will get automatically installed; the user must explicitly choose which package to choose (even if there's only one provider for the virtual name).
Use when providing abstracted functionality: e.g. "mailer", "database-server", "/usr/bin/php" and similar.
provides="bar=1.2" (version specified) will provide a "concrete" package. That is any package providing bar (either by being named so, or by providing the same name) is not allowed to be installed simultaneously. If someone depends on the provided name, the dependency will be automatically installed, and preference is mostly done according to provided version.
Use when providing specific features that should get automatically pulled in. e.g "so:libfoo.so.1=1.2.0", "vlc-plugin-abi=2.0".
Updated by Natanael Copa 26 days ago
- Status changed from Resolved to Closed