On Fri, Oct 04, 2019 at 10:57:39AM -0400, Stephen Gallagher wrote:
[snip]
* The state `dep_enabled` would be set whenever a stream becomes
enabled because some other module stream depended on it. This state
must be entered only if the previous state was `default` or
`available`. (We don't want `enabled` or `disabled` streams being able
to transition to this state.)
* The state `default_enabled` would be set whenever a stream becomes
enabled because a transaction pulled in a package from a default
stream, causing it to be enabled. This state must only be entered if
the previous state was `default` or `dep_enabled`. We don't want
`enabled` or `disabled` to be able to transition to `default_enabled`.
If a user requests installation of a package provided by a stream
currently in the `dep_enabled` state, that stream should transition to
the `default_enabled` state (meaning that now the user would expect it
to be treated the same as any other default-enabled stream).
* When running `dnf update`, if a module stream's dependency on
another module changes to another stream, the transaction should cause
that new stream to be enabled (replacing the current stream) if it is
in the `dep_enabled` state.
When running `dnf update` or `dnf system-upgrade`, if the default
stream for a module installed on the system changes and the module's
current state is `default_enabled`, then the transaction should cause
the new default stream to be enabled.
Hmmm, maybe I'm not thinking straight today, but what happens when you
cross the streams? Correct me if I'm wrong in the following scenario:
Release N:
- foo: available streams: 1.0, 2.0, default: 2.0
- bar: depends on foo 1.0
- user installs foo and bar, gets bar and both foo 1.0
(default_enabled) and foo 2.0 (dep_enabled)
Release N + 1: (cross the streams)
- bar: depends on foo 2.0 now
- foo 1.0 gets uninstalled(?), foo 2.0... what happens to foo 2.0?
does it move to default_enabled or does it remain in dep_enabled?
or does it move to "enabled"?
Release N + 2: (the streams diverge again)
- foo: 1.0 is removed, 3.0 appears and is made default
- what happens on the user's machine? foo 2.0 needs to remain
installed, since bar explicitly depends on it, but will there also
be a foo 3.0 module installed (since the user requested the default
way back when, still in release N)?
Of course, it is completely possible that this case is indeed handled in
the proposal and I am the one at fault for not parsing it properly.
Anyway, thanks to you all for your work on this!
G'luck,
Peter
--
Peter Pentchev roam(a){ringlet.net,debian.org,FreeBSD.org} pp(a)storpool.com
PGP key:
http://people.FreeBSD.org/~roam/roam.key.asc
Key fingerprint 2EE7 A7A5 17FC 124C F115 C354 651E EFB0 2527 DF13