Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 291296 - app-editors/emacs-vcs: consolidate live ebuilds into app-editors/emacs
Summary: app-editors/emacs-vcs: consolidate live ebuilds into app-editors/emacs
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All All
: Normal enhancement (vote)
Assignee: GNU Emacs project
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-10-31 13:42 UTC by Jonas Bernoulli
Modified: 2020-09-12 17:29 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jonas Bernoulli 2009-10-31 13:42:15 UTC
I would like to make two related suggestions regarding the way different versions of emacs are mapped to ebuilds in gentoo.

Once emacs switches to bazaar this will require some work in this regard, regardless if the suggestions to follow are honored or not. So if you consider my suggestions to be worthwhile that would probably the right time to do it.

Also please note that I am aware that you probably have thought about this before - maybe you have even decided to go with it already. Or you decided that it is a bad idea - then I would like to hear why.

Currently two packages provide different versions of emacs: app-editors/emacs and app-editors/emacs-cvs, making a third necessary: virtual/emacs.

(1) I would prefer if the development versions would be in app-editors/emacs too - with a 9999 or 50 suffix.

This would make virtual/emacs unnecessary.  But it would make it necessary to use more SLOTs, which would require a lot initial work, but later should require slightly less maintainence.

(2) So the second suggestion is to add the minor version to SLOT and everywhere else where this is required.

This would result in something like this:

Package Version PV             Type     SLOT eselect-name
emacs  	22.3    22.3           released 22.3 emacs-22.3
emacs   23.1    23.1           released 23.1 emacs-23.1
emacs 	23.1.50 23.1.(9999|50) cvs/bzr  23.2 emacs-(23.2|23.1.50)

Installing a release candidate using portage would also be nice. Especially as this would also allow testing gentoo specifics early on. So this might be a natural addition.

emacs 	23.1.90 23.1.90        rc       23.2 emacs-23.1.90

As I can see the major disadvantage of my proposal is the initial work required.

An advantages not mentioned so far is that it would allow to install e.g. 23.1 and 23.2 (opposed to only 23.1.50) at the same time. Which is nice for authors of elisp packages.

What do you think?

Reproducible: Always

Steps to Reproduce:
Comment 1 Ulrich Müller gentoo-dev 2009-10-31 17:39:51 UTC
Well, of course we have thought about this before. ;-)

This is what we are _not_ going to do (at least not in the short term):
- Get rid of virtual/emacs, even if it should have only one provider. As
  experience with the Emacs overlay shows, the virtual comes in handy in some
  situations. Also both maintenance cost and overhead on users' systems (where
  an installed virtual consists of nothing but a VDB entry) are close to zero.
- There is no such concept as major/minor versions for SLOTs. The name of the
  slot is an opaque string, and we shall decide on a case by case basis when
  we'll open a new slot for a version. So far, the differences between minor
  versions of Emacs were always small. But we'll look at it again when 23.2 is
  released.

Things that are discussable:
- Should it be one package or two packages? I don't see much advantage for
  either of them. Keeping it separate might be slightly more flexible, and so
  far I haven't seen many users' complaints about our current scheme.
- The name of the emacs-cvs package (in case we keep it separate). We can
  rename the package every time upstream moves to a new version control
  system, or we can keep emacs-cvs. What's in a name?
Comment 2 Christian Faulhammer (RETIRED) gentoo-dev 2009-11-02 13:29:31 UTC
As far as I remember, emacs-scm came up.
Comment 3 Ulrich Müller gentoo-dev 2009-11-02 18:14:38 UTC
(In reply to comment #2)
> As far as I remember, emacs-scm came up.

Yes, but in case GLEP 54 (in its current form) should be accepted that will not be a valid package name and we'll have to rename again. Which would be a nuisance for users.

IMHO there's no urgent need for action.
Comment 4 Jonas Bernoulli 2009-11-21 18:08:05 UTC
(In reply to comment #1)

First, sorry for the delay.

> Well, of course we have thought about this before. ;-)

I didn't expect anything else!

> This is what we are _not_ going to do (at least not in the short term):

> - Get rid of virtual/emacs, even if it should have only one provider.

Understood.

> - There is no such concept as major/minor versions for SLOTs. The name of the
> slot is an opaque string,

I am well aware of this. I was only suggesting that in the case of Emacs it might be a good idea to use the full version string (even though it is not "necessary") as the slot also to allow installing more versions simultaneously.

> and we shall decide on a case by case basis when we'll open a new slot
> for a version. So far, the differences between minor versions of Emacs
> were always small.

If the differences are small, then I do not understand the reason why this has to be decided case by case.

One reason only to have a limited number of versions available would be that with more versions the probability of version specific bugs that would have to be taken care of would increase. But if the differences are small this seams much less likely.

If the costs are not very high (which I assume, but I might be wrong) why not give the user the choice? Even if it should not make much of a difference in practice.

Also you would not even have to provide this different versions in the official tree for this to be useful! If someone needs some specific version for some esoteric reason he can just copy the ebuild to an overlay and change the version suffix without having to change the SLOT also, which requires that he edits the ebuild - renaming is not enough anymore.
 
> Things that are discussable:
> - Should it be one package or two packages? I don't see much advantage for
>   either of them. Keeping it separate might be slightly more flexible, and so
>   far I haven't seen many users' complaints about our current scheme.

How is this more flexible? The only flexiblity gain I can see is that both emacs-23.1-r2 and emacs-cvs-23.1.9999-r1 can be installed at the same time but using slot=version would offer exactly the same flexibility.

> - The name of the emacs-cvs package (in case we keep it separate). We can
>   rename the package every time upstream moves to a new version control
>   system, or we can keep emacs-cvs. What's in a name?

Renaming the package every time that Emacs moves to a new vc does not seam very appealing; then again how often is that gonna happen? But staying with -cvs would mean that the package name would be misleading.

For example after the soon to take place move to bzr a user that payed attention might think that Gentoo was still using "some kind of cvs mirror" or the "old not updated anymore cvs repo" even though developement moved to bzr! This is what is in a name - information. Or in the case of a "wrong" name - confusion, that is misinformation. 

Because of this and of GLEP 54 I would like to see the -cvs package dropped without a replacement.
Comment 5 Ulrich Müller gentoo-dev 2009-11-21 18:57:47 UTC
(In reply to comment #4)
> One reason only to have a limited number of versions available would be that
> with more versions the probability of version specific bugs that would have
> to be taken care of would increase. But if the differences are small this
> seams much less likely.

The main reason for keeping the number of slots limited is that for some bugs (mostly security bugs, but see bug 236579 for a different example) all slots must be updated and marked stable, which means increased workload not only for us package maintainers, but also for the architecture teams.

> Renaming the package every time that Emacs moves to a new vc does not seam
> very appealing; then again how often is that gonna happen? But staying with
> -cvs would mean that the package name would be misleading.

First of all, a final decision if it should be one or two packages has not yet been made.

*If* we should decide to keep an extra package for pretest and live versions, then it will be named app-editors/emacs-vcs. Rationale for this is:
1. "emacs-scm" could be misunderstood as indicating an Emacs implementation in
   Scheme. (This isn't so far-fetched, see "Edwin" and MIT Scheme.)
2. The Emacs manual uses "VCS" or "version control system" throughout, whereas
   "SCM" doesn't occur.
3. BZR calls itself a "version control system".
Comment 6 Ulrich Müller gentoo-dev 2009-12-27 18:45:18 UTC
Emacs upstream has switched from CVS to Bazaar. Reopening.
Comment 7 Ulrich Müller gentoo-dev 2009-12-27 19:17:42 UTC
app-editors/emacs-cvs moved to app-editors/emacs-vcs.

Having it as two packages has worked well for all the years, so we (Emacs team) decided not to change it.
Comment 8 Ulrich Müller gentoo-dev 2019-12-16 17:08:31 UTC
Reopening. Reading comment #1 10 years and 2 version control systems later, the arguments aren't compelling either way. Experience shows that keeping the two packages in sync (e.g., USE flags in metadata) needs some additional maintenance effort.

Also, now might be a good time for the change, because no further releases of Emacs 26 are to be expected, and the release cycle of Emacs 27 hasn't started yet. (Alternatively, we could wait for the Emacs 27.1 release, i.e., start with the live slot for Emacs 28.)

So, here's the plan:
- Remove any keyworded snapshot versions from app-editors/emacs-vcs.
- Copy the live ebuilds into separate slots of app-editors/emacs. (Not yet sure about the slot name, but "27-vcs" may be the most natural choice, given that the executable is already being installed as emacs-27-vcs.)
- Update dependency in the eclasses from virtual/emacs to app-editors/emacs. Since we allow switching the version with eselect, this will presumably include a ":*" type slot dependency. (Future packages installing modules can use ":=" in the ebuild.)
- NEED_EMACS could then include the minor version, in which case elisp-need-emacs() from elisp-common.eclass would switch to ver_test() for version comparison.
- Package mask app-editors/emacs-vcs for removal. (Don't mask the virtual, but simply remove it.)
Comment 9 Larry the Git Cow gentoo-dev 2019-12-18 10:06:33 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=065156e1a42c62fdd92ba91570e6b7e1b18f8def

commit 065156e1a42c62fdd92ba91570e6b7e1b18f8def
Author:     Ulrich Müller <ulm@gentoo.org>
AuthorDate: 2019-12-17 17:56:43 +0000
Commit:     Ulrich Müller <ulm@gentoo.org>
CommitDate: 2019-12-18 10:06:16 +0000

    app-editors/emacs: Live ebuilds copied from app-editors/emacs-vcs.
    
    The package split between app-editors/emacs for regular ebuilds and
    app-editors/emacs-vcs for live ebuilds has outlived its usefulness,
    and it entails additional maintenance effort to keep the two packages
    (e.g., the list of their use flags in metadata.xml) synchronised.
    
    Therefore, consolidate all GNU Emacs ebuilds in a single package.
    The separate app-editors/emacs-vcs package will be removed soon.
    
    Bug: https://bugs.gentoo.org/291296
    Package-Manager: Portage-2.3.81, Repoman-2.3.20
    Signed-off-by: Ulrich Müller <ulm@gentoo.org>

 app-editors/emacs/emacs-26.3.9999.ebuild | 408 ++++++++++++++++++++++++++++++
 app-editors/emacs/emacs-27.0.9999.ebuild | 416 +++++++++++++++++++++++++++++++
 app-editors/emacs/metadata.xml           |   5 +
 3 files changed, 829 insertions(+)
Comment 10 Ulrich Müller gentoo-dev 2019-12-21 12:59:20 UTC
(In reply to Ulrich Müller from comment #8)
> - Remove any keyworded snapshot versions from app-editors/emacs-vcs.
> - Copy the live ebuilds into separate slots of app-editors/emacs. (Not yet
> sure about the slot name, but "27-vcs" may be the most natural choice, given
> that the executable is already being installed as emacs-27-vcs.)
> - Update dependency in the eclasses from virtual/emacs to app-editors/emacs.
> Since we allow switching the version with eselect, this will presumably
> include a ":*" type slot dependency. (Future packages installing modules can
> use ":=" in the ebuild.)
> - NEED_EMACS could then include the minor version, in which case
> elisp-need-emacs() from elisp-common.eclass would switch to ver_test() for
> version comparison.
> - Package mask app-editors/emacs-vcs for removal. (Don't mask the virtual,
> but simply remove it.)

All done. Only change is that elisp-need-emacs() has been replaced by elisp-check-emacs-version() with slightly different functionality.

Keeping this bug open until removal of app-editors/emacs-vcs and virtual/emacs.
Comment 11 Larry the Git Cow gentoo-dev 2020-01-17 17:38:03 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=cb3eccbbd9baebfc96c99cd447005e4c3181a374

commit cb3eccbbd9baebfc96c99cd447005e4c3181a374
Author:     Ulrich Müller <ulm@gentoo.org>
AuthorDate: 2020-01-17 17:06:13 +0000
Commit:     Ulrich Müller <ulm@gentoo.org>
CommitDate: 2020-01-17 17:37:49 +0000

    app-editors/emacs-vcs: Remove package.
    
    Bug: https://bugs.gentoo.org/291296
    Signed-off-by: Ulrich Müller <ulm@gentoo.org>

 app-editors/emacs-vcs/emacs-vcs-27.0.9999.ebuild | 414 -----------------------
 app-editors/emacs-vcs/metadata.xml               |  58 ----
 2 files changed, 472 deletions(-)
Comment 12 Ulrich Müller gentoo-dev 2020-08-27 12:03:06 UTC
For the record, I made two mistakes with Emacs 27 prereleases and release candidates (which wouldn't have happened with two separate packages, but that isn't an excuse):

- While only users explicitly asking for app-editors/emacs-vcs would get any prerelease versions, these must now be explicitly package.masked. Which I did for emacs-27.0.90, but I forgot about it for emacs-27.0.91. So the latter version would be installed on "normal" users' systems, and it won't go away after the 27.1 release because it is in slot 27-vcs. Unfortunately we cannot package mask the 27-vcs, 28-vcs etc. slots because that would lead to double masking of the live ebuilds.

- Ebuilds for release candidates used to be in app-editors/emacs, and following that principle, emacs-27.1_rc1 and emacs-27.1_rc2 should have been in slot 27, not 27-vcs.

As a partial remedy, the following slotmoves are now in place:
slotmove ~app-editors/emacs-27.0.90 27-vcs 27
slotmove ~app-editors/emacs-27.0.91 27-vcs 27
slotmove =app-editors/emacs-27.1_rc* 27-vcs 27
Comment 13 Larry the Git Cow gentoo-dev 2020-09-12 17:28:53 UTC
The bug has been referenced in the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=df2507b423979a04dcd7cc4d0fac17abf52232f8

commit df2507b423979a04dcd7cc4d0fac17abf52232f8
Author:     Ulrich Müller <ulm@gentoo.org>
AuthorDate: 2020-09-12 17:27:48 +0000
Commit:     Ulrich Müller <ulm@gentoo.org>
CommitDate: 2020-09-12 17:27:48 +0000

    virtual/emacs: Remove package.
    
    Bug: https://bugs.gentoo.org/291296
    Signed-off-by: Ulrich Müller <ulm@gentoo.org>

 virtual/emacs/emacs-23.ebuild    | 10 ----------
 virtual/emacs/emacs-24.ebuild    | 10 ----------
 virtual/emacs/emacs-25.ebuild    | 10 ----------
 virtual/emacs/emacs-26-r2.ebuild | 10 ----------
 virtual/emacs/metadata.xml       |  8 --------
 5 files changed, 48 deletions(-)