Re: RFC: relaxation of debian-emacs-policy dependency requirements
Ian Jackson <firstname.lastname@example.org> writes:
> Rob Browning writes ("RFC: relaxation of debian-emacs-policy dependency requirements"):
>> After some investigation, it looks like we might be able to change
>> policy to just require add-on packages to depend on emacsen-common,
>> which is reasonably small, ~150k, and could probably become smaller if
> Why should a package which happens to also ship some elisp need to
> depend on any Emacs package at all ? What will go wrong if the
> package is installed without any Emacs ?
If the package doesn't need to use any of the emacsen-common build
infrastructure (doesn't need to byte-compile for each flavor, etc.),
then it doesn't need to have any emacsen-related dependencies -- that's
already in policy.
For packages that do need to use the infrastructure, I believe the
original intent was to make sure that an add-on package couldn't start
using emacsen-common before it was fully configured. It may be possible
to re-write emacsen-common to change that requirement, but I'm not
If we do want to try to eliminate that requirement, there are a number
of important constraints (which are also open for discussion):
- Any time an add-on package is installed or upgraded, it should be
automatically "built" (whatever that means, but it usually means
byte-compilation) for every installed flavor of emacs.
- Any time a flavor of emacs is installed or upgraded, every
*fully-installed* add-on package should be automatically
(re)built for that flavor of emacs in an order that respects any
inter-add-on-package dependencies (i.e. say auctex "Depends:
foo-el"). Currently this ordering is handled manually via tsort
from the emacs-install script.
- Every time an emacs flavor is removed, all of the add-ons should
clean themselves up with respect to that flavor.
- Every time an add-on package is removed, it should clean itself up
with respect to every installed flavor of emacs.
- If some collection of add-on packages and some collection of flavors
of emacs are installed in the same dpkg run, the "right thing"
should happen, no matter the order in which dpkg decides to handle them.
- Ideally, there should be no redundant add-on package builds, but
right now, there may be. Imagine "apt-get install auctex emacs23"
At the moment, I believe auctex will be built twice.
- Add-on packages should not be built before all of their package
dependencies are installed, including non-emacs-related deps. This
is currently a problem -- imagine an "apt-get install emacs21 auctex"
where auctex depends on gs and gs (or a gs provider) isn't installed.
If auctex doesn't depend on emacs21, and dpkg installs emacs21 first,
such that emacs21's postinst goes first, that postinst may call
auctex's emasen-common install script to build it when gs isn't
"Depends: foo-el" mentioned above provides a similar problem.
I brought up this RFC because lately I've been trying to determine how
we might be able to improve the current situation, and I've been
learning about triggers to see if they might help. So far, I just know
that triggers can't help with add-on removal since they fire after the
add-on package has been removed.
 Right now if you install several add-ons along with an emacs flavor,
even if the emacs postinst fires in the "middle", it still will
treat all the add-ons as if they're installed, since emacs-install
just looks at the set of add-on install scripts (packages/install/*)
to decide what's available.
Barring something better, I believe we might be able to fix this by
maintaining appropriate state files like
/var/lib/emacsen-common/state/package/installing/FOO from the add-on
preinst/postinst, or similar.
rlb @defaultvalue.org and @debian.org
GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4