On 10/5/2021 2:24 PM, Achim Gratz wrote:
Ken Brown via Cygwin-apps writes:
There are currently five emacs packages: emacs-common, emacs,
emacs-X11, emacs-w32, and emacs-lucid.  The first includes things that
are needed by each of the other four, and those four each include an
emacs binary.  The binary in the emacs package is
/usr/bin/emacs-nox.exe.  The other packages contain
/usr/bin/emacs-X11.exe, and so on.

This way of naming the packages doesn't really reflect the contents of
the emacs package.  It also means that anyone who installs emacs gets
emacs-nox.exe, even if they plan to use one of the other three
binaries.

I would rather rename the current emacs-common package to emacs and
the current emacs package to emacs-nox.  But then the new emacs would
have to have a way of requiring the installation of at least one of
emacs-nox, emacs-X11, emacs-w32, or emacs-lucid.  Is there any way to
do this with our current setup machinery?

I don't think we have the transaction capability that would be necessary
to specify that the meaning of an already existing package name (two,
actually) changes in this manner.  You might have to use new package
names and place the appropriate obsoletions w.r.t. old names instead.

My idea three years ago was to have the new emacs package require a
"feature" called, for instance, emacs-bin, and then have each of
emacs-nox, emacs-X11, emacs-w32, emacs-lucid "provide" that feature.

I have no idea if multiple packages can provide the same feature. It's
worth trying if it does what you want (you must pick at least one of
those).

This seems to work, with one caveat. Suppose package P requires feature f, and packages Q, R, S,... provide f. If the user selects P and one or more of Q, R, S,..., setup is happy. But if the user simply selects P, then setup/libsolv will choose among Q, R, S,... the one whose name is alphabetically first. In the emacs case, this would be emacs-lucid, which is a stupid default. The default ought to be emacs-nox. So I can make it work if I call that package emacs-basic instead of emacs-nox.

I've only tested setup so far, not calm. Jon, if you're reading this, does calm allow 'requires' and 'provides' to contain arbitrary names that are not package names?

Ken

Reply via email to