Hi,
this is actually a fork of the HDEPEND thread (sorry for having
diverged that much there).
As I wrote in the other thread, the problem with PDEPEND is that there
are two (or more) semantics:

- PDEPENDs used as "suggestions" but yet being considered in the
depgraph and actually installed. Usually "suggestion" PDEPENDs are
just packages providing extra features, not strictly required for the
package to work at all.
- PDEPENDs used for breaking dependency cycles (no problem with that).

That is why I'd like to propose to introduce SDEPEND, with the
following, simple, semantics:
dependencies listed in SDEPEND are not required at build time nor
strictly at runtime and they just enable more features in the
installed application. There can be "use?" literals and by default,
PMS should not pull them in in the dependencies calculation if not
specifically asked (through argument or configuration file or else --
like it happens with binpkgs and --with-bdeps).

A bunch of advantages over GLEP 62:
- Simplicity (really, as in KISS). SDEPENDs are easier to understand
and deal with, both at PMS (code) and user levels. They are also
straightforward to use in ebuilds (dev) and through emerge (user). [1]
- The USE flags meaning doesn't really get "stretched" introducing
obscure, unknown and dangerous possible side effects when deployed in
the real(tm) world. I understand that there is some level of risk with
SDEPENDs as well, but we've seen them already in Exherbo and they seem
to work fine there (I've been told this).
- Doesn't preclude the implementation of GLEP 62 anyway. SDEPENDs are
just "suggested" dependencies after all!
- No need to introduce funky cache invalidation logic for PMS
aggressively using caching at several layers of their stack and that
guarantee a consistent depgraph for the installed pkgs repository as
well [2].
- Fixes the "dissociative identity disorder" of PDEPEND ;-).

Disadvantages:
- If SDEPEND contains USE flags, these are written in stone and cannot
be changed without a rebuild. This is generally fine for source
packages, a bit less for binpkgs, but not really a big deal IMO.
- Not as "elastic" as GLEP 62 USE flags, but neither *DEPENDs are
- mgorny will hate me (eheheheh)

Discuss.

[1] It took me more than 5 minutes to understand how GLEP 62 works in
practice and this is not really good to me, for a simple feature like
this.
[2] From GLEP 62 page: "and it is not strictly required that a package
manager must ensure that the dependency graph is still consistent
afterwards".
-- 
Fabio Erculiani

Reply via email to