Re: dkms needs a pre-depends entry (Policy 3.5)
Ian Jackson <firstname.lastname@example.org> writes:
> Packages which are awaiting trigger processing are not "configured"
> and do not satisfy dependencies. Triggers-supporting tools (which
> includes those in lenny) always try to process triggers just as hard as
> they try to do other configuration steps.
The problem here is that the package that's being triggered isn't either
of the packages that are involved, I believe. The package being triggered
is python-support, which is a dependency of lsb-release, but the package
failing is dkms, which has no dependency on python-support, only on
lsb-release. What's happening, as I understand it, is:
* nvidia-kernel-dkms is requested to be installed.
* dkms is added due to dependency.
* lsb-release is added due to dkms dependency.
* python-support is already installed.
* lsb-release, dkms, and nvidia-kernel-dkms are unpacked.
* Pending trigger added for python-support.
* lsb-release is configured.
<== does this force python-support's trigger to run?
* dkms is configured.
* nvidia-kernel-dkms is configured and attempts to build the module.
Now, this was definitely broken before because dkms only recommended
lsb-release and didn't depend on it. But does this work properly if
there's an actual dependency?
Right now, it's pre-depending, it looks like, which should be too strong
and not required.
>  Well, strictly "configured" isn't a term with a well-defined meaning
> for dpkg, but loosely we mean "configured" to mean "not just unpacked,
> half-configured, or some other state that involves the files being on
> the system but the package not working" .
> A package awaiting trigger processing (that is, a triggering package
> which has activated a trigger in some other package but the other
> package's postinst hasn't been run to deal with it yet) are not in state
> "installed", even though its own postinst has completed.
> The _triggered_ package may satisfy dependencies, but that makes sense.
> If a python addon module triggers python, then the module is not working
> properly until the python trigger has been dealt with, but the rest of
> python is.
So, nvidia-kernel-dkms's postinst shouldn't run until all of its
dependencies are configured, so I think my question is: does dpkg wait to
call the postinst of nvidia-kernel-dkms until after python-support's
trigger runs, when python-support is a dependency of lsb-release and
lsb-release is in turn a dependency of dkms, which is a dependency of
Russ Allbery (email@example.com) <http://www.eyrie.org/~eagle/>