unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* GNU ELPA package for CC-mode
@ 2018-08-19 13:24 Stefan Monnier
  2018-08-19 20:49 ` Alan Mackenzie
  0 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2018-08-19 13:24 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel

Hi Alan,

I just tested the construction of a GNU ELPA package for CC-mode using
the :core thingy of elpa.git and everything looks good.

So I'm thinking of adding the patch below to elpa.git, which will cause
elpa.gnu.org to automatically construct a GNU ELPA package of CC-mode (from
the lisp/progmode/cc-*.el files in emacs.git).  If we do that, then
a new CC-mode ELPA package will be automatically constructed when the
"Version:" header of cc-mode.el is modified.

I just pushed to trunk a commit which added a "Version: 5.33.1" header
to cc-mode.el.  We may want to update this version number before pushing
the patch below to elpa.git since I'm not sure 5.33.1 is right (AFAICT
5.33 is the last released version, but it was a while ago, so maybe
5.34 is a better choice).


        Stefan


diff --git a/externals-list b/externals-list
index 048b73525..2a80f802f 100644
--- a/externals-list
+++ b/externals-list
@@ -36,6 +36,19 @@
  ("bbdb"		:external "git://git.savannah.nongnu.org/bbdb.git")
  ("bug-hunter" :subtree "https://github.com/Malabarba/elisp-bug-hunter")
  ;;FIXME:("cedet"	:external "??")
+ ("cc-mode"		:core "lisp/progmodes/cc-align.el"
+                              "lisp/progmodes/cc-awk.el"
+                              "lisp/progmodes/cc-bytecomp.el"
+                              "lisp/progmodes/cc-cmds.el"
+                              "lisp/progmodes/cc-defs.el"
+                              "lisp/progmodes/cc-engine.el"
+                              "lisp/progmodes/cc-fonts.el"
+                              "lisp/progmodes/cc-guess.el"
+                              "lisp/progmodes/cc-langs.el"
+                              "lisp/progmodes/cc-menus.el"
+                              "lisp/progmodes/cc-mode.el"
+                              "lisp/progmodes/cc-styles.el"
+                              "lisp/progmodes/cc-vars.el")
  ("chess"		:external nil) ;; Was https://github.com/jwiegley/emacs-chess.git
  ;; ("cobol-mode"          :subtree "https://gist.github.com/Edward-H/6768e7dc53ea3dd2adca")
  ("cl-print"		:core "lisp/emacs-lisp/cl-print.el")



^ permalink raw reply related	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-19 13:24 GNU ELPA package for CC-mode Stefan Monnier
@ 2018-08-19 20:49 ` Alan Mackenzie
  2018-08-19 23:45   ` Stefan Monnier
  0 siblings, 1 reply; 76+ messages in thread
From: Alan Mackenzie @ 2018-08-19 20:49 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Hello, Stefan.

On Sun, Aug 19, 2018 at 09:24:24 -0400, Stefan Monnier wrote:
> Hi Alan,

> I just tested the construction of a GNU ELPA package for CC-mode using
> the :core thingy of elpa.git and everything looks good.

Who's going to be testing this?  I've a slight suspicion that sometimes
people add things to CC Mode that depend on things in master.  That would
be subotimal for ELPA.

> So I'm thinking of adding the patch below to elpa.git, which will cause
> elpa.gnu.org to automatically construct a GNU ELPA package of CC-mode (from
> the lisp/progmode/cc-*.el files in emacs.git).  If we do that, then
> a new CC-mode ELPA package will be automatically constructed when the
> "Version:" header of cc-mode.el is modified.

This will need some new scheme for version numbers.

> I just pushed to trunk a commit which added a "Version: 5.33.1" header
> to cc-mode.el.

What sort of "header"?  How does this header get associated with
cc-mode.el?  The actual version number is in cc-defs.el.  There may be
possibilities for confusion here.

> We may want to update this version number before pushing the patch
> below to elpa.git since I'm not sure 5.33.1 is right (AFAICT 5.33 is
> the last released version, but it was a while ago, so maybe 5.34 is a
> better choice).

No, 5.34 will be for the next standalone version (which hopefully won't
be too far away).  I think the right thing to do will be to generate the
"header" version number from the actual version number, and append some
suffix characterising the ELPA version, which would be automatically
incremented as commits are made to CC Mode.  Maybe.  Somehow.

>         Stefan

-- 
Alan Mackenzie (Nuremberg, Germany).



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-19 20:49 ` Alan Mackenzie
@ 2018-08-19 23:45   ` Stefan Monnier
  2018-08-20  8:24     ` Jostein Kjønigsen
  2018-08-21 16:20     ` Alan Mackenzie
  0 siblings, 2 replies; 76+ messages in thread
From: Stefan Monnier @ 2018-08-19 23:45 UTC (permalink / raw)
  To: emacs-devel

>> I just tested the construction of a GNU ELPA package for CC-mode using
>> the :core thingy of elpa.git and everything looks good.
> Who's going to be testing this?  I've a slight suspicion that sometimes
> people add things to CC Mode that depend on things in master.  That would
> be subotimal for ELPA.

This has not proved to be a problem for other packages we handle this
way (e.g. soap-client, python.el, ...).
One of the reasons is that it's so cheap&quick to release a new version
that such problems are trivial to solve if/when they show up.

Also it's easier for contributors to discover that the package is
distributed via GNU ELPA than to try and search the web for some
indication that the package may be distributed separately somewhere (and
then try and figure out if that other distribution site is still related
to the code that's bundled with Emacs, ...), so I think contributors are
more aware of this issue for those :core GNU ELPA packages.

Finally, GNU ELPA packages are very rarely installed on Emacs<24 and
XEmacs, so backward incompatibilities are slightly less severe than what
you experience with your own distribution of CC-mode.

>> So I'm thinking of adding the patch below to elpa.git, which will cause
>> elpa.gnu.org to automatically construct a GNU ELPA package of CC-mode (from
>> the lisp/progmode/cc-*.el files in emacs.git).  If we do that, then
>> a new CC-mode ELPA package will be automatically constructed when the
>> "Version:" header of cc-mode.el is modified.
> This will need some new scheme for version numbers.
>> I just pushed to trunk a commit which added a "Version: 5.33.1" header
>> to cc-mode.el.
> What sort of "header"?

Search for "5.33" in the cc-mode.el of the master branch.

> No, 5.34 will be for the next standalone version (which hopefully won't
> be too far away).  I think the right thing to do will be to generate the
> "header" version number from the actual version number, and append some
> suffix characterising the ELPA version, which would be automatically
> incremented as commits are made to CC Mode.  Maybe.  Somehow.

The generation of the new package happens when the "Version:" header
changes, so I don't think we want this header to be auto-generated on
every commit.


        Stefan




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-19 23:45   ` Stefan Monnier
@ 2018-08-20  8:24     ` Jostein Kjønigsen
  2018-08-20 14:06       ` Stefan Monnier
  2018-08-21 16:20     ` Alan Mackenzie
  1 sibling, 1 reply; 76+ messages in thread
From: Jostein Kjønigsen @ 2018-08-20  8:24 UTC (permalink / raw)
  To: Stefan Monnier, emacs-devel; +Cc: Alan Mackenzie

[-- Attachment #1: Type: text/plain, Size: 1681 bytes --]

On Mon, Aug 20, 2018, at 1:45 AM, Stefan Monnier wrote:
>>> I just tested the construction of a GNU ELPA package for CC-
>>> mode using>>> the :core thingy of elpa.git and everything looks good.
>> Who's going to be testing this?  I've a slight suspicion that
>> sometimes>> people add things to CC Mode that depend on things in master.
>> That would>> be subotimal for ELPA.
> 
> This has not proved to be a problem for other packages we handle this> way (e.g. soap-client, python.el, ...).
> One of the reasons is that it's so cheap&quick to release a new
> version> that such problems are trivial to solve if/when they show up.

cc-mode is not only used inside core Emacs, but also by third party
developers.
cc-mode has historically been shipped as part of Emacs, and has (as I've
understood things) tried to maintain a compatibility situation in line
with that: i.e. a minor Emacs release should not warrant breaking
changes in cc-mode.
When cc-mode has breaking changes, third-party major-modes deriving from
cc-mode trying to provide a reasonable level of compatibilty (thus
reducing friction for end-users), has previously had the option to check
against the running version of Emacs to decide which code-path to use.
As such, a change like this seems to impact third-party major-modes
deriving from cc-mode.
I'm not saying such a change universally and categorically will make
things worse (I can see some things improving too), but I think it
makes sense to consider the full impact of such changes before
committing to them.
--
Regards
Jostein Kjønigsen

jostein@kjonigsen.net 🍵 jostein@gmail.com
https://jostein.kjonigsen.net




[-- Attachment #2: Type: text/html, Size: 2742 bytes --]

^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-20  8:24     ` Jostein Kjønigsen
@ 2018-08-20 14:06       ` Stefan Monnier
  2018-08-20 17:58         ` Jostein Kjønigsen
  0 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2018-08-20 14:06 UTC (permalink / raw)
  To: Jostein Kjønigsen; +Cc: Alan Mackenzie, jostein, emacs-devel

>>>> I just tested the construction of a GNU ELPA package for CC-
>>>> mode using>>> the :core thingy of elpa.git and everything looks good.
>>> Who's going to be testing this?  I've a slight suspicion that
>>> sometimes>> people add things to CC Mode that depend on things in master.
>>> That would>> be subotimal for ELPA.
>> This has not proved to be a problem for other packages we handle this> way
>> (e.g. soap-client, python.el, ...).
>> One of the reasons is that it's so cheap&quick to release a new
>> version> that such problems are trivial to solve if/when they show up.
>
> cc-mode is not only used inside core Emacs, but also by third party
> developers.
[...]

I'm not suggesting to remove CC-mode from Emacs.  Only to *additionally*
distribute it via GNU ELPA.


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-20 14:06       ` Stefan Monnier
@ 2018-08-20 17:58         ` Jostein Kjønigsen
  2018-08-21 13:30           ` Stefan Monnier
  0 siblings, 1 reply; 76+ messages in thread
From: Jostein Kjønigsen @ 2018-08-20 17:58 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Alan Mackenzie, jostein, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1519 bytes --]

On Mon, Aug 20, 2018, at 4:06 PM, Stefan Monnier wrote:
>>>>> I just tested the construction of a GNU ELPA package for CC-
>>>>> mode using>>> the :core thingy of elpa.git and everything looks
>>>>> good.>>>> Who's going to be testing this?  I've a slight suspicion that
>>>> sometimes>> people add things to CC Mode that depend on things in
>>>> sometimes>> master.>>>> That would>> be subotimal for ELPA.
>>> This has not proved to be a problem for other packages we handle
>>> this> way>>> (e.g. soap-client, python.el, ...).
>>> One of the reasons is that it's so cheap&quick to release a new
>>> version> that such problems are trivial to solve if/when they show
>>> version> up.>> 
>> cc-mode is not only used inside core Emacs, but also by third party
>> developers.
> [...]
> 
> I'm not suggesting to remove CC-mode from Emacs.  Only to
> **additionally**> distribute it via GNU ELPA.
> 
> 
>         Stefan

I realize that.

I was just pointing out how that can make handling compatibility
harder than it used to be for packages and major-modes which derives
from cc-mode.
It seems though, as my  suggestion to make this less of a problem
(separate versioning for cc-mode accessible through programmatic
means, c-version) is already implemented and in place, and as a third-
party package author, I can transition to verify against that instead
of emacs-version.
--
Regards
Jostein Kjønigsen

jostein@kjonigsen.net 🍵 jostein@gmail.com
https://jostein.kjonigsen.net



[-- Attachment #2: Type: text/html, Size: 2653 bytes --]

^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-20 17:58         ` Jostein Kjønigsen
@ 2018-08-21 13:30           ` Stefan Monnier
  0 siblings, 0 replies; 76+ messages in thread
From: Stefan Monnier @ 2018-08-21 13:30 UTC (permalink / raw)
  To: emacs-devel

> I was just pointing out how that can make handling compatibility
> harder than it used to be for packages and major-modes which derives
> from cc-mode.

Not really: CC-mode is *already* available as a separate package, the
only novelty I propose is to distribute it via GNU ELPA rather than via
a package that needs to be installed by hand.


        Stefan




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-19 23:45   ` Stefan Monnier
  2018-08-20  8:24     ` Jostein Kjønigsen
@ 2018-08-21 16:20     ` Alan Mackenzie
  2018-08-23  5:25       ` Stefan Monnier
  1 sibling, 1 reply; 76+ messages in thread
From: Alan Mackenzie @ 2018-08-21 16:20 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Hello, Stefan.

On Sun, Aug 19, 2018 at 19:45:52 -0400, Stefan Monnier wrote:

[ .... ]

> Finally, GNU ELPA packages are very rarely installed on Emacs<24 and
> XEmacs, so backward incompatibilities are slightly less severe than
> what you experience with your own distribution of CC-mode.

I'm highly unlikely to introduce backward incompatibilities with Emacs
26.  Somebody else using master as a development platform is more likely
to do so.  But perhaps, as you say, this isn't really such a big issue.

> >> So I'm thinking of adding the patch below to elpa.git, which will
> >> cause elpa.gnu.org to automatically construct a GNU ELPA package of
> >> CC-mode (from the lisp/progmode/cc-*.el files in emacs.git).  If we
> >> do that, then a new CC-mode ELPA package will be automatically
> >> constructed when the "Version:" header of cc-mode.el is modified.
> > This will need some new scheme for version numbers.
> >> I just pushed to trunk a commit which added a "Version: 5.33.1"
> >> header to cc-mode.el.
> > What sort of "header"?

> Search for "5.33" in the cc-mode.el of the master branch.

Ah.  So it's metadata written into a source file.  I'm against this.
Would it not be possible to store the version number elsewhere?
Metadata in ordinary files is ugly and causes problems.  A significant
one being that VCS logs get polluted by updates of metadata, making it
unpleasant, or even difficult, to use a log display.

This "Version:" header certainly has no place in master, though I can
see an argument being made for it being included in an ELPA version of
CC Mode.

> > No, 5.34 will be for the next standalone version (which hopefully won't
> > be too far away).  I think the right thing to do will be to generate the
> > "header" version number from the actual version number, and append some
> > suffix characterising the ELPA version, which would be automatically
> > incremented as commits are made to CC Mode.  Maybe.  Somehow.

> The generation of the new package happens when the "Version:" header
> changes, so I don't think we want this header to be auto-generated on
> every commit.

"Changes" is a verb with an agent.  Under what scenario do you envisage
this version number being changed?  Automatically upon a CC Mode commit
to master is what I thought you had in mind.  Are you suggesting doing
this by hand when it takes somebody's fancy?

>         Stefan

-- 
Alan Mackenzie (Nuremberg, Germany).



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-21 16:20     ` Alan Mackenzie
@ 2018-08-23  5:25       ` Stefan Monnier
  2018-08-23 21:34         ` Alan Mackenzie
  0 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2018-08-23  5:25 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel

>> Search for "5.33" in the cc-mode.el of the master branch.
> Ah.  So it's metadata written into a source file.  I'm against this.
> Would it not be possible to store the version number elsewhere?
> Metadata in ordinary files is ugly and causes problems.  A significant
> one being that VCS logs get polluted by updates of metadata, making it
> unpleasant, or even difficult, to use a log display.

Not sure I understand: we currently have

    (defconst c-version "5.33.1"

in cc-defs.el.  In which way is this different?

> This "Version:" header certainly has no place in master, though I can
> see an argument being made for it being included in an ELPA version of
> CC Mode.

The purpose of this "Version:" header is to document for package.el
which version of the cc-mode package is bundled with Emacs so that it
can decide whether some other cc-mode ELPA package is more or
less recent (and hence whether to activate that other package or not).

So it very much belongs in `master`.

>> The generation of the new package happens when the "Version:" header
>> changes, so I don't think we want this header to be auto-generated on
>> every commit.
> "Changes" is a verb with an agent.  Under what scenario do you envisage
> this version number being changed?

Someone pushed a commit which changes that part of the file.

> Automatically upon a CC Mode commit to master is what I thought you
> had in mind.  Are you suggesting doing this by hand when it takes
> somebody's fancy?

Right: when you decide the code deserves a new GNU ELPA release.


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-23  5:25       ` Stefan Monnier
@ 2018-08-23 21:34         ` Alan Mackenzie
  2018-08-23 22:17           ` Stefan Monnier
  0 siblings, 1 reply; 76+ messages in thread
From: Alan Mackenzie @ 2018-08-23 21:34 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Hello, Stefan.

On Thu, Aug 23, 2018 at 01:25:00 -0400, Stefan Monnier wrote:
> >> Search for "5.33" in the cc-mode.el of the master branch.
> > Ah.  So it's metadata written into a source file.  I'm against this.
> > Would it not be possible to store the version number elsewhere?
> > Metadata in ordinary files is ugly and causes problems.  A significant
> > one being that VCS logs get polluted by updates of metadata, making it
> > unpleasant, or even difficult, to use a log display.

> Not sure I understand:

You don't understand the notion of the VCS logs becoming polluted?
Let's try again, then.  At the moment, if you do

    git log -- lisp/progmodes/cc-mode.el

, you get back details of changes to cc-mode.el which are all about the
development of CC Mode.  There's, however, one exception, your latest
change, which has nothing to do with the development of CC Mode.

What you're proposing may lead to these undesirable "exceptions", log
entries which have nothing to do with the development of CC Mode,
becoming common and swamping the substantive entries.  Were this to
happen, it would be unpleasant to scan a git log of cc-mode.el searching
for substantive changes amongst the obtrusive metadata change entries,
or it might possibly even be difficult.

There must surely be a better way of triggering ELPA releases which
doesn't involve this type of pollution.

> .... we currently have

>     (defconst c-version "5.33.1"

> in cc-defs.el.  In which way is this different?

In every possible way, bar the superficial.  c-version is an essential
part of CC Mode, and is THE version of CC Mode.  The proposed VERSION:
header is not a part of CC Mode, it is part of ELPA, recording the
number of the ELPA release only.

> > This "Version:" header certainly has no place in master, though I can
> > see an argument being made for it being included in an ELPA version of
> > CC Mode.

> The purpose of this "Version:" header is to document for package.el
> ....

Yes.  It's essentially part of package.el, not part of CC Mode or of
master.

> .... which version of the cc-mode package is bundled with Emacs so
> that it ....

"It" being what?  Emacs?  package.el?

> .... can decide whether some other cc-mode ELPA package is more or
> less recent (and hence whether to activate that other package or not).

Sorry, I don't follow that bit.  Something's deciding something about
dates, and there are several CC Mode ELPA packages around.  Or
something.

> So it very much belongs in `master`.

I can't follow your arguments, sorry.  Your conclusion doesn't appear to
follow from the arguments.  This proposed "Version:" header has no
purpose in master, only in package.el, isn't that right?

"Version:" in master would be pollution, which we want to avoid.  There
surely must be a better way.  How about putting it in a separate file,
called something like elpa-cc.el, or elpa-versions.el, or leaving it out
altogether?  Can ELPA releases be triggered by some mechanism which
doesn't involve changing a library's .el files?

> >> The generation of the new package happens when the "Version:" header
> >> changes, so I don't think we want this header to be auto-generated on
> >> every commit.
> > "Changes" is a verb with an agent.  Under what scenario do you envisage
> > this version number being changed?

> Someone pushed a commit which changes that part of the file.

That wasn't the question I was attempting to ask; I wanted you to tell
me about the schedule for changing the version number, the criterion for
doing so, the frequency with which it will be done, things like that.

> > Automatically upon a CC Mode commit to master is what I thought you
> > had in mind.  Are you suggesting doing this by hand when it takes
> > somebody's fancy?

> Right: when you decide the code deserves a new GNU ELPA release.

It seems to make sense to make such a release on each CC Mode commit to
master.  I thought that was the idea - to keep the ELPA release
synchronised with master.  However, if we end up keeping this obtrusive
"Version:" in cc-mode.el, I would say do it on every tenth commit that
changes the substance of cc-mode.el, thus keeping the aforementioned
pollution within reasonable bounds.

>         Stefan

-- 
Alan Mackenzie (Nuremberg, Germany).



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-23 21:34         ` Alan Mackenzie
@ 2018-08-23 22:17           ` Stefan Monnier
  2018-08-24  8:43             ` Eli Zaretskii
  0 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2018-08-23 22:17 UTC (permalink / raw)
  To: emacs-devel

> You don't understand the notion of the VCS logs becoming polluted?

No, indeed, see below.

> In every possible way, bar the superficial.  c-version is an essential
> part of CC Mode,

Hardly: I removed it in my local Emacs and everything works just as well
as before.

> and is THE version of CC Mode.  The proposed VERSION: header is not
> a part of CC Mode, it is part of ELPA, recording the number of the
> ELPA release only.

The "Version:" header could just as well be THE version.

So, I still don't see in which way they're fundamentally different.

>> > This "Version:" header certainly has no place in master, though I can
>> > see an argument being made for it being included in an ELPA version of
>> > CC Mode.
>> The purpose of this "Version:" header is to document for package.el
>> ....
> Yes.  It's essentially part of package.el, not part of CC Mode or of
> master.

I don't think the version of a package can be considered to be "part of
package.el".

>> .... which version of the cc-mode package is bundled with Emacs so
>> that it ....
> "It" being what?  Emacs?  package.el?

package.el or "Emacs via package.el".

>> .... can decide whether some other cc-mode ELPA package is more or
>> less recent (and hence whether to activate that other package or not).
>> So it very much belongs in `master`.
> I can't follow your arguments, sorry.

Here's the scenario:

- Scene 1:
  Georges is happily using Emacs-25.4 when he notices that he'd like the
  support for newer C++ language features present in the newer version of
  CC-mode, so he installs a newer CC-mode package locally.

- Scene 2: Georges is very happy.

- Scene 3: Georges is a bit older, using Emacs-28.3 and usually happy
  about it, except baffled that his CC-mode is still not supporting the
  latest features of C++++ despite the etc/NEWS claiming that it does.

- Scene 4: Georges realizes that the problem was the old CC-mode package
  he had installed which took precedence over his Emacs's newer bundled
  CC-mode.  So he removes his old CC-mode package.

- Scene 5: Goerges is forced to go back to Emacs-25.4 temporarily and is
  annoyed that he get rid of that old CC-mode package which worked
  better than the even older CC-mode bundled with Emacs-25.4.

By adding a "Version:" header in Emacs's bundled CC-mode package,
package.el can automatically decide whether to use the bundled CC-mode
package of the separately install CC-mode package based on which of the
two is more recent, so Georges wouldn't hit the above problem in scene
3 and wouldn't have to remove the old CC-mode package hence could switch
between 25.4 and 28.3 without problems.

> Your conclusion doesn't appear to
> follow from the arguments.  This proposed "Version:" header has no
> purpose in master, only in package.el, isn't that right?

Not sure what you mean by "in package.el".  "package.el" is a file
bundled with Emacs which provides facilities to
install/activate/deinstall packages and that's all.

>> >> The generation of the new package happens when the "Version:" header
>> >> changes, so I don't think we want this header to be auto-generated on
>> >> every commit.
>> > "Changes" is a verb with an agent.  Under what scenario do you envisage
>> > this version number being changed?
>> Someone pushed a commit which changes that part of the file.
> That wasn't the question I was attempting to ask; I wanted you to tell
> me about the schedule for changing the version number, the criterion for
> doing so, the frequency with which it will be done, things like that.

I'd assume that unless you decide otherwise noone but you would change
that "Version:" header (for fear of you biting their head off), so you'd
get to choose those things the way you like.

Personally, I'd recommend you'd upgrade the "Version:" header whenever
the file has accrued enough new features or bug fixes that some users of
non-master Emacs may want to install that new package in their
own Emacs.

> It seems to make sense to make such a release on each CC Mode commit to
> master.  I thought that was the idea - to keep the ELPA release
> synchronised with master.  However, if we end up keeping this obtrusive
> "Version:" in cc-mode.el, I would say do it on every tenth commit that
> changes the substance of cc-mode.el, thus keeping the aforementioned
> pollution within reasonable bounds.

You can upgrade the "Version:" header as part of some other commit.
That's usually what I do.


        Stefan




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-23 22:17           ` Stefan Monnier
@ 2018-08-24  8:43             ` Eli Zaretskii
  2018-08-24 11:56               ` Michael Albinus
                                 ` (2 more replies)
  0 siblings, 3 replies; 76+ messages in thread
From: Eli Zaretskii @ 2018-08-24  8:43 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Thu, 23 Aug 2018 18:17:22 -0400
> 
> > and is THE version of CC Mode.  The proposed VERSION: header is not
> > a part of CC Mode, it is part of ELPA, recording the number of the
> > ELPA release only.
> 
> The "Version:" header could just as well be THE version.

For packages which already have some "version" string somewhere, why
cannot we teach package.el to look for them, when it doesn't find the
"Version:" header?  I think this should be easy to implement (we could
ask the package maintainers to add something or use some standard
format, if what we already have is not enough), and should leave
everyone happy.  Right?



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-24  8:43             ` Eli Zaretskii
@ 2018-08-24 11:56               ` Michael Albinus
  2018-08-24 22:21                 ` Stefan Monnier
  2018-08-24 15:48               ` Stefan Monnier
  2018-08-24 22:17               ` Stefan Monnier
  2 siblings, 1 reply; 76+ messages in thread
From: Michael Albinus @ 2018-08-24 11:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Stefan Monnier, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

Hi Eli,

>> The "Version:" header could just as well be THE version.
>
> For packages which already have some "version" string somewhere, why
> cannot we teach package.el to look for them, when it doesn't find the
> "Version:" header?  I think this should be easy to implement (we could
> ask the package maintainers to add something or use some standard
> format, if what we already have is not enough), and should leave
> everyone happy.  Right?

Sounds good. Tramp is suffering from the same problem. It's version is
`tramp-version' in file trampver.el. This file is generated by the
autoconf/configure mechanism, when I release a new Tramp version.

Nothing, which belongs to a "Version:" header in tramp.el. This is one
of the problems, which hinders me to bring Tramp into GNU ELPA.

As compromise, I generate already a "Version:" header in trampver.el,
but this is not understood by package.el (yet).

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-24  8:43             ` Eli Zaretskii
  2018-08-24 11:56               ` Michael Albinus
@ 2018-08-24 15:48               ` Stefan Monnier
  2018-08-24 19:21                 ` Eli Zaretskii
  2018-08-24 22:17               ` Stefan Monnier
  2 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2018-08-24 15:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

>> > and is THE version of CC Mode.  The proposed VERSION: header is not
>> > a part of CC Mode, it is part of ELPA, recording the number of the
>> > ELPA release only.
>> The "Version:" header could just as well be THE version.
> For packages which already have some "version" string somewhere, why
> cannot we teach package.el to look for them, when it doesn't find the
> "Version:" header?

This Version: header is not used by package.el, by the way: instead
it's used (on Emacs's master) by autoload.el, and on elpa.git it's
used by the admin/archive-contents.el.


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-24 15:48               ` Stefan Monnier
@ 2018-08-24 19:21                 ` Eli Zaretskii
  0 siblings, 0 replies; 76+ messages in thread
From: Eli Zaretskii @ 2018-08-24 19:21 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: emacs-devel@gnu.org
> Date: Fri, 24 Aug 2018 11:48:56 -0400
> 
> > For packages which already have some "version" string somewhere, why
> > cannot we teach package.el to look for them, when it doesn't find the
> > "Version:" header?
> 
> This Version: header is not used by package.el, by the way: instead
> it's used (on Emacs's master) by autoload.el, and on elpa.git it's
> used by the admin/archive-contents.el.

Thanks for the correction.  My suggestion still stands, though.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-24  8:43             ` Eli Zaretskii
  2018-08-24 11:56               ` Michael Albinus
  2018-08-24 15:48               ` Stefan Monnier
@ 2018-08-24 22:17               ` Stefan Monnier
  2018-08-25  7:02                 ` Eli Zaretskii
  2018-08-25  8:51                 ` Alan Mackenzie
  2 siblings, 2 replies; 76+ messages in thread
From: Stefan Monnier @ 2018-08-24 22:17 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

> For packages which already have some "version" string somewhere, why
> cannot we teach package.el to look for them, when it doesn't find the
> "Version:" header?

We could implement workarounds, of course.  The more, the messier.

In the case of CC-mode, I still don't know what's so much better about
putting the version in cc-defs.el's `c-version` variable.

At least in the case of Tramp, I believe I understand the problem to be
that Michael doesn't want tools to modify human-written files, but that
explanation doesn't work for CC-mode.

> I think this should be easy to implement (we could ask the package
> maintainers to add something or use some standard format, if what we
> already have is not enough),

"Use some standard format" is exactly what "Version:" is.


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-24 11:56               ` Michael Albinus
@ 2018-08-24 22:21                 ` Stefan Monnier
  2018-08-25  8:43                   ` Tramp as ELPA package (was: GNU ELPA package for CC-mode) Michael Albinus
  2018-08-25 19:15                   ` GNU ELPA package for CC-mode Clément Pit-Claudel
  0 siblings, 2 replies; 76+ messages in thread
From: Stefan Monnier @ 2018-08-24 22:21 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Eli Zaretskii, emacs-devel

> Sounds good. Tramp is suffering from the same problem. It's version is
> `tramp-version' in file trampver.el. This file is generated by the
> autoconf/configure mechanism, when I release a new Tramp version.

Where do you keep the "master" version number (i.e. where does the
autoconf/configure mechanism find the version that needs to be put into
tramp-ver.el)?

Any chance you could keep it in a "Version:" line in tramp.el?


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-24 22:17               ` Stefan Monnier
@ 2018-08-25  7:02                 ` Eli Zaretskii
  2018-08-25  8:51                 ` Alan Mackenzie
  1 sibling, 0 replies; 76+ messages in thread
From: Eli Zaretskii @ 2018-08-25  7:02 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

> From: Stefan Monnier <monnier@IRO.UMontreal.CA>
> Cc: emacs-devel@gnu.org
> Date: Fri, 24 Aug 2018 18:17:19 -0400
> 
> > For packages which already have some "version" string somewhere, why
> > cannot we teach package.el to look for them, when it doesn't find the
> > "Version:" header?
> 
> We could implement workarounds, of course.  The more, the messier.

Yes, software engineering in general and practical solutions to
non-trivial problems are sometimes messier than we'd like to.

> > I think this should be easy to implement (we could ask the package
> > maintainers to add something or use some standard format, if what we
> > already have is not enough),
> 
> "Use some standard format" is exactly what "Version:" is.

Well, read that as "some additional standard format", okay?



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Tramp as ELPA package (was: GNU ELPA package for CC-mode)
  2018-08-24 22:21                 ` Stefan Monnier
@ 2018-08-25  8:43                   ` Michael Albinus
  2018-08-25 18:04                     ` Tramp as ELPA package Stefan Monnier
  2018-08-25 19:15                   ` GNU ELPA package for CC-mode Clément Pit-Claudel
  1 sibling, 1 reply; 76+ messages in thread
From: Michael Albinus @ 2018-08-25  8:43 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

>> Sounds good. Tramp is suffering from the same problem. It's version is
>> `tramp-version' in file trampver.el. This file is generated by the
>> autoconf/configure mechanism, when I release a new Tramp version.
>
> Where do you keep the "master" version number (i.e. where does the
> autoconf/configure mechanism find the version that needs to be put into
> tramp-ver.el)?

The Tramp version number is defined in configure.ac, the only place. It
is used in the configure script (in order to check for a proper Emacs
version and print a proper error message when it fails) and in the
generated files trampver.el and trampver.texi.

> Any chance you could keep it in a "Version:" line in tramp.el?

It is already in the "Version:" line of trampver.el. Any chance for
package.el to get it from there?

The point is that I want to keep it as product on savannah. There should
be only one single place keeping the version number (configure.ac), and
tramp.el shall not be generated.

>         Stefan

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-24 22:17               ` Stefan Monnier
  2018-08-25  7:02                 ` Eli Zaretskii
@ 2018-08-25  8:51                 ` Alan Mackenzie
  2018-08-25 10:15                   ` Michael Albinus
  2018-08-25 18:07                   ` Stefan Monnier
  1 sibling, 2 replies; 76+ messages in thread
From: Alan Mackenzie @ 2018-08-25  8:51 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Hello, Stefan.

On Fri, Aug 24, 2018 at 18:17:19 -0400, Stefan Monnier wrote:
> > For packages which already have some "version" string somewhere, why
> > cannot we teach package.el to look for them, when it doesn't find the
> > "Version:" header?

> We could implement workarounds, of course.  The more, the messier.

The situation is already messy.  And you're suggesting in your next
paragraph increasing the messiness in CC Mode.

> In the case of CC-mode, I still don't know what's so much better about
> putting the version in cc-defs.el's `c-version` variable.

It's a lisp variable, hence can be readily used by programs and people
at runtime.  c-version has existed a long time and would necessitate
work to replace by a comment in a different file together with
workarounds to turn it into a variable.

Or, perhaps, c-version and the Version: header mean two different
things, and it would be a mistake to try to merge them into one.  It's
not clear exactly what Version: is.

> At least in the case of Tramp, I believe I understand the problem to be
> that Michael doesn't want tools to modify human-written files, but that
> explanation doesn't work for CC-mode.

Going back to an early post in this thread, the idea was to get an ELPA
version of CC Mode "automatically".  That phrase carries notions of
"effortlessly" and "painlessly".  I have pointed out pain with the
current proposal, namely the "pollution" of the Emacs master repository
with things concerning only ELPA.

> > I think this should be easy to implement (we could ask the package
> > maintainers to add something or use some standard format, if what we
> > already have is not enough),

> "Use some standard format" is exactly what "Version:" is.

Version: is a comment, not a lisp variable.  It's not totally clear what
it's for, and how it works, though some of your recent posts have
helped here.  Where should Version: be documented?

>         Stefan

-- 
Alan Mackenzie (Nuremberg, Germany).



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-25  8:51                 ` Alan Mackenzie
@ 2018-08-25 10:15                   ` Michael Albinus
  2018-08-25 18:07                   ` Stefan Monnier
  1 sibling, 0 replies; 76+ messages in thread
From: Michael Albinus @ 2018-08-25 10:15 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel

Alan Mackenzie <acm@muc.de> writes:

> Hello, Stefan.

Hi Alan,

>> "Use some standard format" is exactly what "Version:" is.
>
> Version: is a comment, not a lisp variable.  It's not totally clear what
> it's for, and how it works, though some of your recent posts have
> helped here.  Where should Version: be documented?

(info "(elisp) Packaging Basics")

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-25  8:43                   ` Tramp as ELPA package (was: GNU ELPA package for CC-mode) Michael Albinus
@ 2018-08-25 18:04                     ` Stefan Monnier
  2018-08-25 21:04                       ` Stefan Monnier
  0 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2018-08-25 18:04 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Eli Zaretskii, emacs-devel

> The point is that I want to keep it as product on savannah. There should
> be only one single place keeping the version number (configure.ac), and
> tramp.el shall not be generated.

If the single place were in tramp.el instead of configure.ac you
wouldn't need tramp.el to be generated either.


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-25  8:51                 ` Alan Mackenzie
  2018-08-25 10:15                   ` Michael Albinus
@ 2018-08-25 18:07                   ` Stefan Monnier
  2018-08-25 18:27                     ` Eli Zaretskii
  1 sibling, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2018-08-25 18:07 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: Eli Zaretskii, emacs-devel

> Going back to an early post in this thread, the idea was to get an ELPA
> version of CC Mode "automatically".  That phrase carries notions of
> "effortlessly" and "painlessly".  I have pointed out pain with the
> current proposal, namely the "pollution" of the Emacs master repository
> with things concerning only ELPA.

From where I stand, this pain is vanishingly small compared to that of
dealing with you.  So, I'll stop here.


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-25 18:07                   ` Stefan Monnier
@ 2018-08-25 18:27                     ` Eli Zaretskii
  0 siblings, 0 replies; 76+ messages in thread
From: Eli Zaretskii @ 2018-08-25 18:27 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: acm, emacs-devel

> From: Stefan Monnier <monnier@IRO.UMontreal.CA>
> Date: Sat, 25 Aug 2018 14:07:13 -0400
> Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org
> 
> >From where I stand, this pain is vanishingly small compared to that of
> dealing with you.

That was uncalled for, and I wish such ad-hominem attacks would have
never seen the light of the day.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-24 22:21                 ` Stefan Monnier
  2018-08-25  8:43                   ` Tramp as ELPA package (was: GNU ELPA package for CC-mode) Michael Albinus
@ 2018-08-25 19:15                   ` Clément Pit-Claudel
  2018-08-25 20:17                     ` Stefan Monnier
  1 sibling, 1 reply; 76+ messages in thread
From: Clément Pit-Claudel @ 2018-08-25 19:15 UTC (permalink / raw)
  To: emacs-devel

On 2018-08-24 18:21, Stefan Monnier wrote:
> Any chance you could keep it in a "Version:" line in tramp.el?

We do this in Flycheck, but it makes retrieving the version number less convenient.
Maybe package.el could provide a simple function which, given a package name, returns the installed version? (Maybe there's one already?)



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-25 19:15                   ` GNU ELPA package for CC-mode Clément Pit-Claudel
@ 2018-08-25 20:17                     ` Stefan Monnier
  2018-08-25 21:17                       ` Tom Tromey
  0 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2018-08-25 20:17 UTC (permalink / raw)
  To: emacs-devel

> We do this in Flycheck, but it makes retrieving the version number
> less convenient.  Maybe package.el could provide a simple function
> which, given a package name, returns the installed version?

Yes, it'd be nice.

> (Maybe there's one already?)

The closest I could find are: (lm-header "version") and `bbdb-version`.


        Stefan




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-25 18:04                     ` Tramp as ELPA package Stefan Monnier
@ 2018-08-25 21:04                       ` Stefan Monnier
  2018-08-26  6:39                         ` Andreas Schwab
  2018-08-26 11:09                         ` Michael Albinus
  0 siblings, 2 replies; 76+ messages in thread
From: Stefan Monnier @ 2018-08-25 21:04 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Eli Zaretskii, emacs-devel

> If the single place were in tramp.el instead of configure.ac you
> wouldn't need tramp.el to be generated either.

See patch below for an example.


        Stefan


diff --git a/configure.ac b/configure.ac
index 4fd0e0d0..f1f033cd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -24,9 +24,12 @@
 # incompatible changes (with quotation) have appeared since 2.50.
 AC_PREREQ([2.50])
 
-# Initialize configure script.  This is the only point Tramp revision
+# Initialize configure script.  The only place where Tramp's version
+# is kept is in lisp/tramp.el's "Version:" header.
 # needs to be set.
-AC_INIT([Tramp], [2.4.0], [tramp-devel@gnu.org])
+# NOTE: the main purpose of the `regexp` call is to strip the final LF.
+define([TRAMP_VERSION], regexp(esyscmd([sed -n -e 's/^;; Version: *//p' lisp/tramp.el]), [[-a-z0-9.]*], [\&]))
+AC_INIT([Tramp], TRAMP_VERSION, [tramp-devel@gnu.org])
 AC_MSG_NOTICE([$PACKAGE_STRING])
 
 # Check suitable make version.
diff --git a/lisp/tramp.el b/lisp/tramp.el
index 5429cdf7..756468c3 100644
--- a/lisp/tramp.el
+++ b/lisp/tramp.el
@@ -6,6 +6,7 @@
 ;;         Michael Albinus <michael.albinus@gmx.de>
 ;; Maintainer: Michael Albinus <michael.albinus@gmx.de>
 ;; Keywords: comm, processes
+;; Version: 2.4.0
 ;; Package: tramp
 
 ;; This file is part of GNU Emacs.



^ permalink raw reply related	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-25 20:17                     ` Stefan Monnier
@ 2018-08-25 21:17                       ` Tom Tromey
  2018-08-25 23:28                         ` Kyle Andrews
  0 siblings, 1 reply; 76+ messages in thread
From: Tom Tromey @ 2018-08-25 21:17 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

>>>>> "Stefan" == Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> We do this in Flycheck, but it makes retrieving the version number
>> less convenient.  Maybe package.el could provide a simple function
>> which, given a package name, returns the installed version?

Stefan> Yes, it'd be nice.

>> (Maybe there's one already?)

Stefan> The closest I could find are: (lm-header "version") and `bbdb-version`.

lm-header is what package.el itself uses.

I suspect this could be done by using a combination of the
load-file-name hack; see the end of:

(info "(elisp) Multi-file Packages")

combined with lm-header.  To make it even better maybe this could be
done using eval-when-compile so that the bytecode just has a constant.

Tom



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA package for CC-mode
  2018-08-25 21:17                       ` Tom Tromey
@ 2018-08-25 23:28                         ` Kyle Andrews
  0 siblings, 0 replies; 76+ messages in thread
From: Kyle Andrews @ 2018-08-25 23:28 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Stefan Monnier, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 881 bytes --]

K

On Sat, Aug 25, 2018, 17:18 Tom Tromey <tom@tromey.com> wrote:

> >>>>> "Stefan" == Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
> >> We do this in Flycheck, but it makes retrieving the version number
> >> less conveni.k,. Lololol Ll..k..

. K

> ent.  Maybe p.j  ackage.el could provide a simple function
> >> which, given a package name, returns the installed version?
>
> Stefan> Yes, it'd be nice.
>
> >> (Maybe there's one already?)
>
> Stefan> The closest I could find are: (lm-header "version") and
> `bbdb-version`.
>
> lm-header is what package.el itself uses.
>
> I suspect this could be done by using a combination of the
> load-file-name hack; see the end of:
>
> (info "(elisp) Multi-file Packages")
>
> combined with lm-header.  To make it even better maybe this could be
> done using eval-when-compile so that the bytecode just has a constant.
>
> Tom
>
>

[-- Attachment #2: Type: text/html, Size: 1485 bytes --]

^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-25 21:04                       ` Stefan Monnier
@ 2018-08-26  6:39                         ` Andreas Schwab
  2018-08-26 10:48                           ` Michael Albinus
  2018-08-26 11:09                         ` Michael Albinus
  1 sibling, 1 reply; 76+ messages in thread
From: Andreas Schwab @ 2018-08-26  6:39 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, Michael Albinus, emacs-devel

On Aug 25 2018, Stefan Monnier <monnier@iro.umontreal.ca> wrote:

> diff --git a/configure.ac b/configure.ac
> index 4fd0e0d0..f1f033cd 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -24,9 +24,12 @@
>  # incompatible changes (with quotation) have appeared since 2.50.
>  AC_PREREQ([2.50])
>  
> -# Initialize configure script.  This is the only point Tramp revision
> +# Initialize configure script.  The only place where Tramp's version
> +# is kept is in lisp/tramp.el's "Version:" header.
>  # needs to be set.
> -AC_INIT([Tramp], [2.4.0], [tramp-devel@gnu.org])
> +# NOTE: the main purpose of the `regexp` call is to strip the final LF.
> +define([TRAMP_VERSION], regexp(esyscmd([sed -n -e 's/^;; Version: *//p' lisp/tramp.el]), [[-a-z0-9.]*], [\&]))
> +AC_INIT([Tramp], TRAMP_VERSION, [tramp-devel@gnu.org])
>  AC_MSG_NOTICE([$PACKAGE_STRING])

You need to add a rule to regenerate configure when tramp.el changes.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-26  6:39                         ` Andreas Schwab
@ 2018-08-26 10:48                           ` Michael Albinus
  0 siblings, 0 replies; 76+ messages in thread
From: Michael Albinus @ 2018-08-26 10:48 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel

Andreas Schwab <schwab@linux-m68k.org> writes:

>> diff --git a/configure.ac b/configure.ac
>> index 4fd0e0d0..f1f033cd 100644
>> --- a/configure.ac
>> +++ b/configure.ac
>> @@ -24,9 +24,12 @@
>>  # incompatible changes (with quotation) have appeared since 2.50.
>>  AC_PREREQ([2.50])
>>  
>> -# Initialize configure script.  This is the only point Tramp revision
>> +# Initialize configure script.  The only place where Tramp's version
>> +# is kept is in lisp/tramp.el's "Version:" header.
>>  # needs to be set.
>> -AC_INIT([Tramp], [2.4.0], [tramp-devel@gnu.org])
>> +# NOTE: the main purpose of the `regexp` call is to strip the final LF.
>> +define([TRAMP_VERSION], regexp(esyscmd([sed -n -e 's/^;; Version:
>> *//p' lisp/tramp.el]), [[-a-z0-9.]*], [\&]))
>> +AC_INIT([Tramp], TRAMP_VERSION, [tramp-devel@gnu.org])
>>  AC_MSG_NOTICE([$PACKAGE_STRING])
>
> You need to add a rule to regenerate configure when tramp.el changes.

This would be too heavy. I've added a rule to regenerate configure, when
the Tramp version in tramp.el changes.

> Andreas.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-25 21:04                       ` Stefan Monnier
  2018-08-26  6:39                         ` Andreas Schwab
@ 2018-08-26 11:09                         ` Michael Albinus
  2018-08-26 15:21                           ` Stefan Monnier
                                             ` (2 more replies)
  1 sibling, 3 replies; 76+ messages in thread
From: Michael Albinus @ 2018-08-26 11:09 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> If the single place were in tramp.el instead of configure.ac you
>> wouldn't need tramp.el to be generated either.
>
> See patch below for an example.

Thanks. I've applied this to the repositories in your name. However,
this is the first step only. Further problems for making Tramp an ELPA
package:

* Revised version structure. Tramp is released roughly every 6 months
  (releases 2.4.0, 2.4.1, ...). In the time between, it has an
  intermediate release string like 2.4.1-pre. At least for the *-pre
  version, Tramp changes frequently, w/o a new version. This does not
  work well for ELPA packages.

  Maybe we need an intermediate release string as the MELPA packages
  have: add a time stamp in the Version: header of tramp.el *only* in
  the Emacs repository, whenever a new version of Tramp shall appear as
  package, like 2.4.1.pre.20180826. This shouldn't be done
  automatically, by intention only. An automatic release of Tramp as
  ELPA package might be too frequent, I fear.

* Several Tramp versions. I maintain several Tramp versions in parallel,
  currently 2.3.4 and 2.4.1. I'm not confident that 2.4.1 shall be the
  ELPA package today, because new features will be added here, and it is
  kind of unstable, therefore. I believe, 2.3.4 would be better suited
  for all users *not* running Emacs 27.0.50. Users running Emacs 27.0.50
  do not need Tramp as ELPA package, because it is always synced with
  the Emacs repository. How do we manage this?

* Providing Tramp documentation. IIUC, ELPA packages could contain
  *.texi and *.info files, but they are not propagated to the
  users. This shall be enhanced, because new features of Tramp are
  reflected there.

* Likely more problems ...

>         Stefan

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-26 11:09                         ` Michael Albinus
@ 2018-08-26 15:21                           ` Stefan Monnier
  2018-08-26 18:04                             ` Michael Albinus
  2018-08-26 15:30                           ` Tom Tromey
  2019-04-04 12:41                           ` Michael Albinus
  2 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2018-08-26 15:21 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Eli Zaretskii, emacs-devel

> * Revised version structure. Tramp is released roughly every 6 months
>   (releases 2.4.0, 2.4.1, ...). In the time between, it has an
>   intermediate release string like 2.4.1-pre. At least for the *-pre
>   version, Tramp changes frequently, w/o a new version. This does not
>   work well for ELPA packages.

To the extent that the *-pre aren't distributed IIUC, I'm not sure what
problem would be caused by simply keeping the version string at "2.4.0"
instead of "2.4.1-pre".

>   Maybe we need an intermediate release string as the MELPA packages
>   have: add a time stamp in the Version: header of tramp.el *only* in
>   the Emacs repository, whenever a new version of Tramp shall appear as
>   package, like 2.4.1.pre.20180826. This shouldn't be done
>   automatically, by intention only. An automatic release of Tramp as
>   ELPA package might be too frequent, I fear.

I don't understand: GNU ELPA packages are only created when the
Version: changes, so it's only as frequent as you choose it to be.

> * Several Tramp versions. I maintain several Tramp versions in parallel,
>   currently 2.3.4 and 2.4.1.  I'm not confident that 2.4.1 shall be the
>   ELPA package today, because new features will be added here, and it is
>   kind of unstable, therefore.  I believe, 2.3.4 would be better suited
>   for all users *not* running Emacs 27.0.50.  Users running Emacs 27.0.50
>   do not need Tramp as ELPA package, because it is always synced with
>   the Emacs repository.  How do we manage this?

We don't.  Org-mode is in the same situation.

All other packages (including Emacs itself, BTW) far only have one
"active" release, basically.

There could be various ways to try and handle that, of course, but
someone would have to work on the elpa.git's admin/* scripts to
implement that kind of support.

IIUC the multiple-releases dance is mostly out-of-fashion in these days
of "DevOps".

> * Providing Tramp documentation. IIUC, ELPA packages could contain
>   *.texi and *.info files, but they are not propagated to the
>   users. This shall be enhanced, because new features of Tramp are
>   reflected there.

The .info files are "propagated to the users", but the .texi files
indeed are currently left unused.  I had plans to add a "make" step to
the way packages are built on elpa.gnu.org (so .info files could be
built from the corresponding .texi files, for example), but my attempts
to get a lightweight LXC container working on elpa.gnu.org have not been
successful yet.  I'm not very experienced in this kind of sysadmin work,
so if someone can help, that'd be great.


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-26 11:09                         ` Michael Albinus
  2018-08-26 15:21                           ` Stefan Monnier
@ 2018-08-26 15:30                           ` Tom Tromey
  2018-08-26 16:26                             ` Stefan Monnier
  2018-08-26 17:46                             ` Michael Albinus
  2019-04-04 12:41                           ` Michael Albinus
  2 siblings, 2 replies; 76+ messages in thread
From: Tom Tromey @ 2018-08-26 15:30 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel

>>>>> "Michael" == Michael Albinus <michael.albinus@gmx.de> writes:

Michael> * Providing Tramp documentation. IIUC, ELPA packages could contain
Michael>   *.texi and *.info files, but they are not propagated to the
Michael>   users. This shall be enhanced, because new features of Tramp are
Michael>   reflected there.

Info files in packages are made available to users.
Your package-building process has to run install-info to make a dir file though.
See (info "(elisp) Multi-file Packages") - search for "install-info".

FWIW I've made a package that consists of nothing but info -- I turned
the Python documentation into info and packaged it so it was easier to
install across multiple machines.  I think people have done this with
RnRS and/or the CL hyperspec as well.

Tom



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-26 15:30                           ` Tom Tromey
@ 2018-08-26 16:26                             ` Stefan Monnier
  2018-08-26 17:46                             ` Michael Albinus
  1 sibling, 0 replies; 76+ messages in thread
From: Stefan Monnier @ 2018-08-26 16:26 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Eli Zaretskii, Michael Albinus, emacs-devel

> FWIW I've made a package that consists of nothing but info -- I turned
> the Python documentation into info and packaged it so it was easier to
> install across multiple machines.  I think people have done this with
> RnRS and/or the CL hyperspec as well.

There's also `ada-ref-man` in GNU ELPA.


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-26 15:30                           ` Tom Tromey
  2018-08-26 16:26                             ` Stefan Monnier
@ 2018-08-26 17:46                             ` Michael Albinus
  1 sibling, 0 replies; 76+ messages in thread
From: Michael Albinus @ 2018-08-26 17:46 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel

Tom Tromey <tom@tromey.com> writes:

Hi Tom,

> Info files in packages are made available to users.
> Your package-building process has to run install-info to make a dir file though.

I ought to know this, because I apply this technique in my own ELPA
package debbugs. But then I've forgotten it ...

Thanks for the reminder.

> Tom

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-26 15:21                           ` Stefan Monnier
@ 2018-08-26 18:04                             ` Michael Albinus
  2018-08-26 18:27                               ` Eli Zaretskii
  0 siblings, 1 reply; 76+ messages in thread
From: Michael Albinus @ 2018-08-26 18:04 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> To the extent that the *-pre aren't distributed IIUC, I'm not sure what
> problem would be caused by simply keeping the version string at "2.4.0"
> instead of "2.4.1-pre".

Between "2.4.0" and "2.4.1", there is half-a-year. Very likely, I would
like to release error fixes in the time between.

And for debugging purposes, it is important whether somebody uses a
Tramp release like "2.4.0", or something taken from a repository, named
"2.4.1-pre". In the latter case, I must be more careful to understand,
which Tramp file versions are used.

>>   Maybe we need an intermediate release string as the MELPA packages
>>   have: add a time stamp in the Version: header of tramp.el *only* in
>>   the Emacs repository, whenever a new version of Tramp shall appear as
>>   package, like 2.4.1.pre.20180826. This shouldn't be done
>>   automatically, by intention only. An automatic release of Tramp as
>>   ELPA package might be too frequent, I fear.
>
> I don't understand: GNU ELPA packages are only created when the
> Version: changes, so it's only as frequent as you choose it to be.

That's the problem. If I keep the release scheme "2.4.0", 2.4.1", ...,
there's a release every half-a-year. I don't want to change this
timing, because it is always a several-days effort for a release. I do
run heavy regression tests prior the release, for example.

But maybe we shall indeed use something like a Tramp ELPA package
release scheme, with something like "2.4.0.1", "2.4.0.2", ..., without
all the effort to make a "real" release as tarball, as it should still
happen.

>> * Several Tramp versions. I maintain several Tramp versions in parallel,
>>   currently 2.3.4 and 2.4.1.  I'm not confident that 2.4.1 shall be the
>>   ELPA package today, because new features will be added here, and it is
>>   kind of unstable, therefore.  I believe, 2.3.4 would be better suited
>>   for all users *not* running Emacs 27.0.50.  Users running Emacs 27.0.50
>>   do not need Tramp as ELPA package, because it is always synced with
>>   the Emacs repository.  How do we manage this?
>
> We don't.  Org-mode is in the same situation.
>
> All other packages (including Emacs itself, BTW) far only have one
> "active" release, basically.

No. Emacs has the master branch, and the emacs-26 branch. I would call
both "active".

> IIUC the multiple-releases dance is mostly out-of-fashion in these days
> of "DevOps".

I don't understand what you mean with this. (And yes, I know what DevOps
means in general.)

>> * Providing Tramp documentation. IIUC, ELPA packages could contain
>>   *.texi and *.info files, but they are not propagated to the
>>   users. This shall be enhanced, because new features of Tramp are
>>   reflected there.
>
> The .info files are "propagated to the users", but the .texi files
> indeed are currently left unused.

As Tom reminded me, it requires to add a proper "dir" file to the Tramp
ELPA package. Since it would be a core package, I ave no idea where this
file to take from.

>         Stefan

Best regrads, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-26 18:04                             ` Michael Albinus
@ 2018-08-26 18:27                               ` Eli Zaretskii
  2018-08-26 18:34                                 ` Michael Albinus
  0 siblings, 1 reply; 76+ messages in thread
From: Eli Zaretskii @ 2018-08-26 18:27 UTC (permalink / raw)
  To: Michael Albinus; +Cc: monnier, emacs-devel

> From: Michael Albinus <michael.albinus@gmx.de>
> Cc: Eli Zaretskii <eliz@gnu.org>,  emacs-devel@gnu.org
> Date: Sun, 26 Aug 2018 20:04:51 +0200
> 
> As Tom reminded me, it requires to add a proper "dir" file to the Tramp
> ELPA package. Since it would be a core package, I ave no idea where this
> file to take from.

Did you try just to run install-info on the generated Info files?



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-26 18:27                               ` Eli Zaretskii
@ 2018-08-26 18:34                                 ` Michael Albinus
  2018-08-26 19:03                                   ` Eli Zaretskii
  0 siblings, 1 reply; 76+ messages in thread
From: Michael Albinus @ 2018-08-26 18:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: monnier, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> As Tom reminded me, it requires to add a proper "dir" file to the Tramp
>> ELPA package. Since it would be a core package, I ave no idea where this
>> file to take from.
>
> Did you try just to run install-info on the generated Info files?

How? All I can do with an ELPA core package is to list the files in
externals-list on top of the elpa repository.

What do I miss?

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-26 18:34                                 ` Michael Albinus
@ 2018-08-26 19:03                                   ` Eli Zaretskii
  2018-08-27  7:12                                     ` Michael Albinus
  0 siblings, 1 reply; 76+ messages in thread
From: Eli Zaretskii @ 2018-08-26 19:03 UTC (permalink / raw)
  To: Michael Albinus; +Cc: monnier, emacs-devel

> From: Michael Albinus <michael.albinus@gmx.de>
> Cc: monnier@iro.umontreal.ca,  emacs-devel@gnu.org
> Date: Sun, 26 Aug 2018 20:34:19 +0200
> 
> > Did you try just to run install-info on the generated Info files?
> 
> How?

Not sure I understand the question.  You provide the files for the
package, don't you?  And 'dir' is just a file to provide, no?  So run
install-info on your system, where you already have the manual
formatted into Info files, and then add the produced 'dir' file to the
repository.

Apologies if I'm missing some important factors here, I was just
trying to be helpful.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-26 19:03                                   ` Eli Zaretskii
@ 2018-08-27  7:12                                     ` Michael Albinus
  2018-08-27 13:33                                       ` Stefan Monnier
  2018-08-27 15:09                                       ` Eli Zaretskii
  0 siblings, 2 replies; 76+ messages in thread
From: Michael Albinus @ 2018-08-27  7:12 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: monnier, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

Hi Eli,

> Not sure I understand the question.  You provide the files for the
> package, don't you?  And 'dir' is just a file to provide, no?  So run
> install-info on your system, where you already have the manual
> formatted into Info files, and then add the produced 'dir' file to the
> repository.

An ELPA core package contains only files from the Emacs repository. In
the file "externals-list" of the elpa git repository you declare, which
files belong to this package. That's all. For Tramp, I would add the
following lines:

--8<---------------cut here---------------start------------->8---
 ("tramp"		:core ("lisp/net/tramp.el" "lisp/net/tramp-adb.el"
			       "lisp/net/tramp-cache.el" "lisp/net/tramp-cmds.el"
			       "lisp/net/tramp-compat.el" "lisp/net/tramp-ftp.el"
			       "lisp/net/tramp-gvfs.el" "lisp/net/tramp-loaddefs.el"
			       "lisp/net/tramp-sh.el" "lisp/net/tramp-smb.el"
			       "lisp/net/tramp-uu.el" "lisp/net/trampver.el"
			       ("doc/misc/tramp.texi" "doc/tramp.texi")
			       ("doc/misc/trampver.texi" "doc/trampver.texi")
			       "info/tramp.info"
			       ("test/lisp/net/tramp-tests.el" "test/tramp-tests.el")))
--8<---------------cut here---------------end--------------->8---

I don't see, how a "dir" file fits into this interface.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-27  7:12                                     ` Michael Albinus
@ 2018-08-27 13:33                                       ` Stefan Monnier
  2018-08-27 13:41                                         ` Michael Albinus
  2018-08-27 15:09                                       ` Eli Zaretskii
  1 sibling, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2018-08-27 13:33 UTC (permalink / raw)
  To: emacs-devel

> 			       ("doc/misc/trampver.texi" "doc/trampver.texi")
> 			       "info/tramp.info"

There's no tramp.info in emacs.git either.

The main issue is to make it so that building GNU ELPA packages can do
some extra preparation than just tarring it up (e.g. build a .info
file, build a dir file, ...).  Making this functionality available to
the :core packages shouldn't be too hard.

        Stefan




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-27 13:33                                       ` Stefan Monnier
@ 2018-08-27 13:41                                         ` Michael Albinus
  2018-08-27 13:44                                           ` Stefan Monnier
  0 siblings, 1 reply; 76+ messages in thread
From: Michael Albinus @ 2018-08-27 13:41 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> 			       ("doc/misc/trampver.texi" "doc/trampver.texi")
>> 			       "info/tramp.info"
>
> There's no tramp.info in emacs.git either.

Indeed. I was under the impression that files from an Emacs installation
are taken, but that's wrong.

> The main issue is to make it so that building GNU ELPA packages can do
> some extra preparation than just tarring it up (e.g. build a .info
> file, build a dir file, ...).  Making this functionality available to
> the :core packages shouldn't be too hard.

Shall I write a (wishlist) bug report?

>         Stefan

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-27 13:41                                         ` Michael Albinus
@ 2018-08-27 13:44                                           ` Stefan Monnier
  2018-08-27 15:22                                             ` Michael Albinus
  0 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2018-08-27 13:44 UTC (permalink / raw)
  To: emacs-devel

> Shall I write a (wishlist) bug report?

Please do (and please put me in the X-Debbugs-Cc).


	Stefan




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-27  7:12                                     ` Michael Albinus
  2018-08-27 13:33                                       ` Stefan Monnier
@ 2018-08-27 15:09                                       ` Eli Zaretskii
  2018-08-27 15:21                                         ` Michael Albinus
  1 sibling, 1 reply; 76+ messages in thread
From: Eli Zaretskii @ 2018-08-27 15:09 UTC (permalink / raw)
  To: Michael Albinus; +Cc: monnier, emacs-devel

> From: Michael Albinus <michael.albinus@gmx.de>
> Cc: monnier@iro.umontreal.ca,  emacs-devel@gnu.org
> Date: Mon, 27 Aug 2018 09:12:12 +0200
> 
> > Not sure I understand the question.  You provide the files for the
> > package, don't you?  And 'dir' is just a file to provide, no?  So run
> > install-info on your system, where you already have the manual
> > formatted into Info files, and then add the produced 'dir' file to the
> > repository.
> 
> An ELPA core package contains only files from the Emacs repository. In
> the file "externals-list" of the elpa git repository you declare, which
> files belong to this package. That's all.

Then what was that configure.ac whose patch you posted up-thread?

Anyway, you could add the Emacs's 'dir' file, couldn't you?



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-27 15:09                                       ` Eli Zaretskii
@ 2018-08-27 15:21                                         ` Michael Albinus
  0 siblings, 0 replies; 76+ messages in thread
From: Michael Albinus @ 2018-08-27 15:21 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: monnier, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

Hi Eli,

>> An ELPA core package contains only files from the Emacs repository. In
>> the file "externals-list" of the elpa git repository you declare, which
>> files belong to this package. That's all.
>
> Then what was that configure.ac whose patch you posted up-thread?

It was posted by Stefan, and it was about configure.ac of the *Tramp*
repository.

> Anyway, you could add the Emacs's 'dir' file, couldn't you?

No. As Stefan explained the other mail, only files under git control
could be referenced to. "dir" and "tramp.info" are generated.

I just wrote bug#32544 about.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-27 13:44                                           ` Stefan Monnier
@ 2018-08-27 15:22                                             ` Michael Albinus
  0 siblings, 0 replies; 76+ messages in thread
From: Michael Albinus @ 2018-08-27 15:22 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> Shall I write a (wishlist) bug report?
>
> Please do (and please put me in the X-Debbugs-Cc).

Bug#32544.

> 	Stefan

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2018-08-26 11:09                         ` Michael Albinus
  2018-08-26 15:21                           ` Stefan Monnier
  2018-08-26 15:30                           ` Tom Tromey
@ 2019-04-04 12:41                           ` Michael Albinus
  2019-04-04 15:48                             ` Stefan Monnier
  2 siblings, 1 reply; 76+ messages in thread
From: Michael Albinus @ 2019-04-04 12:41 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Michael Albinus <michael.albinus@gmx.de> writes:

Hi Stefan,

> Further problems for making Tramp an ELPA package:
>
> * Revised version structure. Tramp is released roughly every 6 months
>   (releases 2.4.0, 2.4.1, ...). In the time between, it has an
>   intermediate release string like 2.4.1-pre. At least for the *-pre
>   version, Tramp changes frequently, w/o a new version. This does not
>   work well for ELPA packages.
>
>   Maybe we need an intermediate release string as the MELPA packages
>   have: add a time stamp in the Version: header of tramp.el *only* in
>   the Emacs repository, whenever a new version of Tramp shall appear as
>   package, like 2.4.1.pre.20180826. This shouldn't be done
>   automatically, by intention only. An automatic release of Tramp as
>   ELPA package might be too frequent, I fear.
>
> * Several Tramp versions. I maintain several Tramp versions in parallel,
>   currently 2.3.4 and 2.4.1. I'm not confident that 2.4.1 shall be the
>   ELPA package today, because new features will be added here, and it is
>   kind of unstable, therefore. I believe, 2.3.4 would be better suited
>   for all users *not* running Emacs 27.0.50. Users running Emacs 27.0.50
>   do not need Tramp as ELPA package, because it is always synced with
>   the Emacs repository. How do we manage this?
>
> * Providing Tramp documentation. IIUC, ELPA packages could contain
>   *.texi and *.info files, but they are not propagated to the
>   users. This shall be enhanced, because new features of Tramp are
>   reflected there.
>
> * Likely more problems ...

I'm coming back to this old thread, since there is still no Tramp ELPA
package. We have bug#32544, but this is also stalled.

Would it be possible to go the same line as org-mode has done? There is
nothing org-mode related in the GNU ELPA repository, but regularly
snapshots of org-mode are published as tar-files for ELPA. In
GNUmakefile of the ELPA repository, there is a target org-fetch which is
used to get this file, und bring it into the archive. Based on this,
org-mode releases are announced for GNU ELPA, like org-mode 9.2.3
recently.

I could imagine, that I'll upload a similar file to the Tramp ftp
archive every time a new Tramp version has been published. It could have
the name tramp-<version>-elpa.tar, and it would contain everything an
ELPA archive file needs. After fetching, this could be offered as GNU
ELPA package then.

What do yo think?

>>         Stefan

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-04 12:41                           ` Michael Albinus
@ 2019-04-04 15:48                             ` Stefan Monnier
  2019-04-04 16:07                               ` Michael Albinus
                                                 ` (2 more replies)
  0 siblings, 3 replies; 76+ messages in thread
From: Stefan Monnier @ 2019-04-04 15:48 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Eli Zaretskii, emacs-devel

> Would it be possible to go the same line as org-mode has done?

I want to get rid of this Org hack, so I'm really not looking forward to
adding more such exceptions.

What you can do is create a Tramp package on elpa.git and push releases
there (complete with the pre-built auxiliary files).  This is what
AUCTeX does, basically (where the files that would ideally be
auto-generated during packaging are instead stored in the elpa.git
repository after making them manually).


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-04 15:48                             ` Stefan Monnier
@ 2019-04-04 16:07                               ` Michael Albinus
  2019-04-05 14:43                               ` Michael Albinus
  2019-04-05 18:55                               ` Achim Gratz
  2 siblings, 0 replies; 76+ messages in thread
From: Michael Albinus @ 2019-04-04 16:07 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

> What you can do is create a Tramp package on elpa.git and push releases
> there (complete with the pre-built auxiliary files).  This is what
> AUCTeX does, basically (where the files that would ideally be
> auto-generated during packaging are instead stored in the elpa.git
> repository after making them manually).

Will check.

>         Stefan

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-04 15:48                             ` Stefan Monnier
  2019-04-04 16:07                               ` Michael Albinus
@ 2019-04-05 14:43                               ` Michael Albinus
  2019-04-05 15:07                                 ` Dmitry Gutov
                                                   ` (2 more replies)
  2019-04-05 18:55                               ` Achim Gratz
  2 siblings, 3 replies; 76+ messages in thread
From: Michael Albinus @ 2019-04-05 14:43 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

> What you can do is create a Tramp package on elpa.git and push releases
> there (complete with the pre-built auxiliary files).  This is what
> AUCTeX does, basically (where the files that would ideally be
> auto-generated during packaging are instead stored in the elpa.git
> repository after making them manually).

auctex is an external package. We discussed this already, the Tramp
repository layout does not fit the requirements of a package archive.

I believe I will upload regularly a generated Tramp package archive to
<https://ftp.gnu.org/gnu/tramp/elpa>, plus a proper archive-contents
file, and announe this as Tramp ELPA. Once it is possible to distribute
Tramp via GNU ELPA I'll switch happily.

>         Stefan

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-05 14:43                               ` Michael Albinus
@ 2019-04-05 15:07                                 ` Dmitry Gutov
  2019-04-05 16:19                                   ` Michael Albinus
  2019-04-05 18:14                                 ` Stephen Leake
  2019-04-06 12:42                                 ` Stefan Monnier
  2 siblings, 1 reply; 76+ messages in thread
From: Dmitry Gutov @ 2019-04-05 15:07 UTC (permalink / raw)
  To: Michael Albinus, Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

On 05.04.2019 17:43, Michael Albinus wrote:
> auctex is an external package. We discussed this already, the Tramp
> repository layout does not fit the requirements of a package archive.

Why don't you create a branch in the Tramp repository which will fit 
those requirements, and regularly sync it with master, as well as push 
it to ELPA?

I think it will require pretty much the same amount of effort.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-05 15:07                                 ` Dmitry Gutov
@ 2019-04-05 16:19                                   ` Michael Albinus
  2019-04-16  7:53                                     ` Steinar Bang
  0 siblings, 1 reply; 76+ messages in thread
From: Michael Albinus @ 2019-04-05 16:19 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel

Dmitry Gutov <dgutov@yandex.ru> writes:

Hi Dmitry,

> Why don't you create a branch in the Tramp repository which will fit
> those requirements, and regularly sync it with master, as well as push
> it to ELPA?

This branch would have a different file system layout. sync is not trivial.

And I maintain Tramp already in two different git repositories (Emacs
and Tramp's own), syncing them is always manual work. Having a third
repository in elpa would be much more work.

Don't forget that Tramp maintenance is almost a one-man-show.

> I think it will require pretty much the same amount of effort.

No. Creating a package archive, and uploading it, can be done in the
Makefile. Once this is written, there is no further effort.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-05 14:43                               ` Michael Albinus
  2019-04-05 15:07                                 ` Dmitry Gutov
@ 2019-04-05 18:14                                 ` Stephen Leake
  2019-04-05 18:20                                   ` Stephen Leake
  2019-04-06 12:42                                 ` Stefan Monnier
  2 siblings, 1 reply; 76+ messages in thread
From: Stephen Leake @ 2019-04-05 18:14 UTC (permalink / raw)
  To: emacs-devel

Michael Albinus <michael.albinus@gmx.de> writes:

> Stefan Monnier <monnier@IRO.UMontreal.CA> writes:
>
>> What you can do is create a Tramp package on elpa.git and push releases
>> there (complete with the pre-built auxiliary files).  This is what
>> AUCTeX does, basically (where the files that would ideally be
>> auto-generated during packaging are instead stored in the elpa.git
>> repository after making them manually).
>
> auctex is an external package. We discussed this already, the Tramp
> repository layout does not fit the requirements of a package archive.

I may have a similar situation with ada-mode; my development work tree
does not match the elpa packages.

To push to elpa, I have a Makefile target that copies the appropriate
files from my development work tree to the elpa tree. Setting that up is
tedious, but as long as the set of files doesn't change often, it's
pretty easy to maintain.

So in elpa, ada-mode only updates when there is a release.

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-05 18:14                                 ` Stephen Leake
@ 2019-04-05 18:20                                   ` Stephen Leake
  2019-04-05 22:18                                     ` Michael Albinus
  0 siblings, 1 reply; 76+ messages in thread
From: Stephen Leake @ 2019-04-05 18:20 UTC (permalink / raw)
  To: emacs-devel

Stephen Leake <stephen_leake@stephe-leake.org> writes:

> Michael Albinus <michael.albinus@gmx.de> writes:
>
>> Stefan Monnier <monnier@IRO.UMontreal.CA> writes:
>>
>>> What you can do is create a Tramp package on elpa.git and push releases
>>> there (complete with the pre-built auxiliary files).  This is what
>>> AUCTeX does, basically (where the files that would ideally be
>>> auto-generated during packaging are instead stored in the elpa.git
>>> repository after making them manually).
>>
>> auctex is an external package. We discussed this already, the Tramp
>> repository layout does not fit the requirements of a package archive.
>
> I may have a similar situation with ada-mode; my development work tree
> does not match the elpa packages.
>
> To push to elpa, I have a Makefile target that copies the appropriate
> files from my development work tree to the elpa tree. Setting that up is
> tedious, but as long as the set of files doesn't change often, it's
> pretty easy to maintain.
>
> So in elpa, ada-mode only updates when there is a release.

If people edit ada-mode in elpa, I have to copy the edits back to my
devel tree; I suspect that is Michael's main complaint. Uploading a
package archive to elpa, rather than source files, prevents that.

That seems like a reasonable work flow. It does violate the principle
that elpa packages be editable by emacs maintainers; they are reduced to
deleting the package if they see a serious problem (as opposed to fixing
the problem).

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-04 15:48                             ` Stefan Monnier
  2019-04-04 16:07                               ` Michael Albinus
  2019-04-05 14:43                               ` Michael Albinus
@ 2019-04-05 18:55                               ` Achim Gratz
  2019-04-06 22:25                                 ` GNU ELPA and package.el (was: Tramp as ELPA package) Stefan Monnier
  2 siblings, 1 reply; 76+ messages in thread
From: Achim Gratz @ 2019-04-05 18:55 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier writes:
>> Would it be possible to go the same line as org-mode has done?
>
> I want to get rid of this Org hack, so I'm really not looking forward to
> adding more such exceptions.

As discussed before: The package requirements are too limiting to allow
larger packages that need to have something built or generated (or even
multiple autoload files) and it's not just Org that falls into this
category.

The other unsolved problem is that anything that gets built in to Emacs
releases still can't be later cleanly updated as a package because none
of the "built-in packages" are actually packages in the ELPA sense.

Last but not least I'll mention again that even if the two points above
were solved, there still is not mechanism to cleanly separate packages
installed at the system level (either with the Emacs release or
separately by the admin) and user-level packages.  Specifically, if
packages are installed at the system level, the user can either use them
all or none of them, but can't really chose on a per-package basis
(without jumping through a number of burning hoops, that is).

> What you can do is create a Tramp package on elpa.git and push releases
> there (complete with the pre-built auxiliary files).

Well, that'd be more or less the same hack as you use for Org, except
you use Git instead of an archive file.

> This is what AUCTeX does, basically (where the files that would
> ideally be auto-generated during packaging are instead stored in the
> elpa.git repository after making them manually).

That is a mistake and should not be forced on anyone.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Wavetables for the Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#BlofeldUserWavetables




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-05 18:20                                   ` Stephen Leake
@ 2019-04-05 22:18                                     ` Michael Albinus
  2019-04-07  0:17                                       ` Stephen Leake
  0 siblings, 1 reply; 76+ messages in thread
From: Michael Albinus @ 2019-04-05 22:18 UTC (permalink / raw)
  To: Stephen Leake; +Cc: emacs-devel

Stephen Leake <stephen_leake@stephe-leake.org> writes:

> If people edit ada-mode in elpa, I have to copy the edits back to my
> devel tree; I suspect that is Michael's main complaint. Uploading a
> package archive to elpa, rather than source files, prevents that.

Yes.

> That seems like a reasonable work flow. It does violate the principle
> that elpa packages be editable by emacs maintainers; they are reduced to
> deleting the package if they see a serious problem (as opposed to fixing
> the problem).

Tramp lives also in Emacs' master, so that problem looks less hurting
for Tramp.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-05 14:43                               ` Michael Albinus
  2019-04-05 15:07                                 ` Dmitry Gutov
  2019-04-05 18:14                                 ` Stephen Leake
@ 2019-04-06 12:42                                 ` Stefan Monnier
  2019-04-08 12:37                                   ` Michael Albinus
  2 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2019-04-06 12:42 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Eli Zaretskii, emacs-devel

>> What you can do is create a Tramp package on elpa.git and push releases
>> there (complete with the pre-built auxiliary files).  This is what
>> AUCTeX does, basically (where the files that would ideally be
>> auto-generated during packaging are instead stored in the elpa.git
>> repository after making them manually).
>
> auctex is an external package. We discussed this already, the Tramp
> repository layout does not fit the requirements of a package archive.

I don't see why that makes any difference to my proposition.

I see you misunderstood my suggestion:

> I believe I will upload regularly a generated Tramp package archive to
> <https://ftp.gnu.org/gnu/tramp/elpa>, plus a proper archive-contents
> file, and announe this as Tramp ELPA. Once it is possible to distribute
> Tramp via GNU ELPA I'll switch happily.

Why can't you take that package archive's content, put it in a Git
branch and push that to elpa.git?
The GNU ELPA scripts just take the elpa.git branch and make a tarball
from it, basically, so whatever's in your tarballs can be put in
elpa.git to get the same result.


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* GNU ELPA and package.el (was: Tramp as ELPA package)
  2019-04-05 18:55                               ` Achim Gratz
@ 2019-04-06 22:25                                 ` Stefan Monnier
  2019-04-07  7:17                                   ` GNU ELPA and package.el Achim Gratz
  0 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2019-04-06 22:25 UTC (permalink / raw)
  To: emacs-devel

[ Changing title since it's not specific to Tramp.  ]

>>> Would it be possible to go the same line as org-mode has done?
>> I want to get rid of this Org hack, so I'm really not looking forward to
>> adding more such exceptions.
> As discussed before: The package requirements are too limiting to allow
> larger packages that need to have something built or generated (or even
> multiple autoload files) and it's not just Org that falls into this
> category.

I'm fully aware of that.  But you can push the prebuilt packages to
elpa.it rather than pushing them to some third-party distribution site,
and let elpa.gnu.org build the corresponding tarball.  This is the only
thing needed to eliminate the "Org hack".

This said, I'd love to get some help improving the elpa.gnu.org build
scripts so we can lift those restrictions altogether.
[ Basically, I'd like to be able to run those package-provided extra
  build rules in some kind of sandbox, e.g. an LXC container; but given
  the limited resources of elpa.gnu.org and its maintenance, it should
  ideally re-use the Debian install already provided by elpa.gnu.org.  ]

> The other unsolved problem is that anything that gets built in to Emacs
> releases still can't be later cleanly updated as a package because none
> of the "built-in packages" are actually packages in the ELPA sense.

I don't know what problem you're thinking of.
You can definitely upgrade Org, python.el, and several others.
I can imagine scenarios where it can partly break, but most of them seem
contrived to me, so if you know of practical problems, please let
me know.

> Last but not least I'll mention again that even if the two points above
> were solved, there still is not mechanism to cleanly separate packages
> installed at the system level (either with the Emacs release or
> separately by the admin) and user-level packages.  Specifically, if
> packages are installed at the system level, the user can either use them
> all or none of them, but can't really chose on a per-package basis
> (without jumping through a number of burning hoops, that is).

Currently, this choice is made via package-load-list.  That was the
initial way to do that, and there hasn't been much noise about it since,
so it hasn't seen much activity, but we could make it more flexible
if needed.  How do you imagine the user making this choice?
You mean you'd like to have a "clickable UI" or something else?

>> What you can do is create a Tramp package on elpa.git and push releases
>> there (complete with the pre-built auxiliary files).
> Well, that'd be more or less the same hack as you use for Org, except
> you use Git instead of an archive file.

That's a big difference for the build scripts.

>> This is what AUCTeX does, basically (where the files that would
>> ideally be auto-generated during packaging are instead stored in the
>> elpa.git repository after making them manually).
> That is a mistake and should not be forced on anyone.

I don't consider it a feature, but other than complaints, I haven't
gotten much help in trying to improve the situation.


        Stefan




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-05 22:18                                     ` Michael Albinus
@ 2019-04-07  0:17                                       ` Stephen Leake
  2019-04-07  7:41                                         ` Michael Albinus
  0 siblings, 1 reply; 76+ messages in thread
From: Stephen Leake @ 2019-04-07  0:17 UTC (permalink / raw)
  To: emacs-devel

Michael Albinus <michael.albinus@gmx.de> writes:

> Stephen Leake <stephen_leake@stephe-leake.org> writes:
>
>> If people edit ada-mode in elpa, I have to copy the edits back to my
>> devel tree; I suspect that is Michael's main complaint. Uploading a
>> package archive to elpa, rather than source files, prevents that.
>
> Yes.
>
>> That seems like a reasonable work flow. It does violate the principle
>> that elpa packages be editable by emacs maintainers; they are reduced to
>> deleting the package if they see a serious problem (as opposed to fixing
>> the problem).
>
> Tramp lives also in Emacs' master, so that problem looks less hurting
> for Tramp.

There's supposed to be a way to take code in Emacs git master and make
it an ELPA package automatically (a "core ELPA package"); is that
working yet? Or is the other way around? Either way, there should be
only one copy, either in emacs git master or elpa git master.

-- 
-- Stephe



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA and package.el
  2019-04-06 22:25                                 ` GNU ELPA and package.el (was: Tramp as ELPA package) Stefan Monnier
@ 2019-04-07  7:17                                   ` Achim Gratz
  2019-04-07 14:07                                     ` Stefan Monnier
  0 siblings, 1 reply; 76+ messages in thread
From: Achim Gratz @ 2019-04-07  7:17 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier writes:
> I'm fully aware of that.  But you can push the prebuilt packages to
> elpa.it rather than pushing them to some third-party distribution site,
> and let elpa.gnu.org build the corresponding tarball.  This is the only
> thing needed to eliminate the "Org hack".

So the only thing you care about is that you don't want to deal with the
tar file?  The reason Org gives you the tar file is that we already had
it available already (Org was distributing its own ELPA packages for
quite some time already), plus we'd rather have ELPA serve the exact
same tarball as you can get from Org's own site.

Let me discuss this on the orgmode list and I'm sure we can find a
solution.

> This said, I'd love to get some help improving the elpa.gnu.org build
> scripts so we can lift those restrictions altogether.
> [ Basically, I'd like to be able to run those package-provided extra
>   build rules in some kind of sandbox, e.g. an LXC container; but given
>   the limited resources of elpa.gnu.org and its maintenance, it should
>   ideally re-use the Debian install already provided by elpa.gnu.org.  ]

Building the release tarballs on the Orgmode server (which used to be a
very small VM on a shared box) didn't take all that much resources, but
a fair bit of time depending on how much the machine was loaded from
other tenants.  Nobody's waiting on the build to finish so she can use
it, so that works OK.

I seem to remember some discussion about Gitlab for GNU.  A Gitlab
instance would usually provide CI pipelines that could produce release
tarballs easily.  If that's on the horizon I'd rather not muck about
with building on the server (you are running code provided from external
sources after all) or inventing your own CI just so you can do it a
little more safely (however safe you think your hand-built solution is).

>> The other unsolved problem is that anything that gets built in to Emacs
>> releases still can't be later cleanly updated as a package because none
>> of the "built-in packages" are actually packages in the ELPA sense.
>
> I don't know what problem you're thinking of.
> You can definitely upgrade Org, python.el, and several others.
> I can imagine scenarios where it can partly break, but most of them seem
> contrived to me, so if you know of practical problems, please let
> me know.

The problem auf autoloads not being able to get redefined in a running
instance of Emacs.  I posted example code, a horrible hack of cleaning
the data structures manually and we've discussed if it was possible to
start a "clean" Emacs for byte compilation to work around this.

The problem was exacerbated by the fact that some Org autoloads would
end up in the global loaddefs.el, a problem that has since been fixed
IIRC (but can creep in any time again).

>> Last but not least I'll mention again that even if the two points above
>> were solved, there still is not mechanism to cleanly separate packages
>> installed at the system level (either with the Emacs release or
>> separately by the admin) and user-level packages.  Specifically, if
>> packages are installed at the system level, the user can either use them
>> all or none of them, but can't really chose on a per-package basis
>> (without jumping through a number of burning hoops, that is).
>
> Currently, this choice is made via package-load-list.  That was the
> initial way to do that, and there hasn't been much noise about it since,
> so it hasn't seen much activity, but we could make it more flexible
> if needed.  How do you imagine the user making this choice?
> You mean you'd like to have a "clickable UI" or something else?

Well yes, most users that can't install their own packages, but can use
package.el would be at loss to do it via package-load-list, but are not
expected to have problems if package.el told them which versions of a
package are avilable on their system and where and which of thos they
want to use (or install one from a package archive).  The other thing
package.el doesn't do at the moment is to "delete" a package that is
either built-in or installed system-wide without replacing it with a
user-installed (later) version.

>>> What you can do is create a Tramp package on elpa.git and push releases
>>> there (complete with the pre-built auxiliary files).
>> Well, that'd be more or less the same hack as you use for Org, except
>> you use Git instead of an archive file.
>
> That's a big difference for the build scripts.

See the beginning of this post.

>>> This is what AUCTeX does, basically (where the files that would
>>> ideally be auto-generated during packaging are instead stored in the
>>> elpa.git repository after making them manually).
>> That is a mistake and should not be forced on anyone.
>
> I don't consider it a feature, but other than complaints, I haven't
> gotten much help in trying to improve the situation.

The last time I tried to discuss the requirements of moving this along
(this really ties into so many places in Emacs that hopefully we have
clear specifications of what to implement before actually starting it)
it was either falling on deaf ears or producing almost allergic
reactions.  Not blaming anyone for not wanting to add to their to-do
list, but I didn't see a way forward and dropped it.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Wavetables for the Terratec KOMPLEXER:
http://Synth.Stromeko.net/Downloads.html#KomplexerWaves




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-07  0:17                                       ` Stephen Leake
@ 2019-04-07  7:41                                         ` Michael Albinus
  0 siblings, 0 replies; 76+ messages in thread
From: Michael Albinus @ 2019-04-07  7:41 UTC (permalink / raw)
  To: Stephen Leake; +Cc: emacs-devel

Stephen Leake <stephen_leake@stephe-leake.org> writes:

>> Tramp lives also in Emacs' master, so that problem looks less hurting
>> for Tramp.
>
> There's supposed to be a way to take code in Emacs git master and make
> it an ELPA package automatically (a "core ELPA package"); is that
> working yet? Or is the other way around? Either way, there should be
> only one copy, either in emacs git master or elpa git master.

I have tried to make Tramp a core package, it failed. See bug#32544.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA and package.el
  2019-04-07  7:17                                   ` GNU ELPA and package.el Achim Gratz
@ 2019-04-07 14:07                                     ` Stefan Monnier
  2019-04-07 17:37                                       ` Achim Gratz
  0 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2019-04-07 14:07 UTC (permalink / raw)
  To: emacs-devel

> So the only thing you care about is that you don't want to deal with the
> tar file?

Pretty much, yes (there's also the use of org-pkg.el rather than headers
in org.el to specify the package version).

>>> The other unsolved problem is that anything that gets built in to Emacs
>>> releases still can't be later cleanly updated as a package because none
>>> of the "built-in packages" are actually packages in the ELPA sense.
>> I don't know what problem you're thinking of.
>> You can definitely upgrade Org, python.el, and several others.
>> I can imagine scenarios where it can partly break, but most of them seem
>> contrived to me, so if you know of practical problems, please let
>> me know.
>
> The problem auf autoloads not being able to get redefined in a running
> instance of Emacs.

Autoload do get redefined by subsequent `autoload`s.
Was there a bug report for it?

> I posted example code, a horrible hack of cleaning the data structures
> manually and we've discussed if it was possible to start a "clean"
> Emacs for byte compilation to work around this.

Sorry, that doesn't ring a bell.  Could you show me the bug#nb?

> Well yes, most users that can't install their own packages, but can use
> package.el would be at loss to do it via package-load-list, but are not
> expected to have problems if package.el told them which versions of a
> package are avilable on their system and where and which of thos they
> want to use (or install one from a package archive).

Hmm... let's see.  The needs I can imagine are:
- prevent activation of a system-wide package.  This should be very rare
  since package activation should not interfere at all, except for rare
  exceptions.  So I'd argue such a need reflects a bug in the package.
- prefer older user-installed package over newer system-wide package.
  This is likely also unusual, but definitely possible and legitimate.

Are there other cases?

> The other thing package.el doesn't do at the moment is to "delete"
> a package that is either built-in or installed system-wide without
> replacing it with a user-installed (later) version.

What would you want Emacs to do to "delete" a built-in or system-wide package?

>>>> This is what AUCTeX does, basically (where the files that would
>>>> ideally be auto-generated during packaging are instead stored in the
>>>> elpa.git repository after making them manually).
>>> That is a mistake and should not be forced on anyone.
>> I don't consider it a feature, but other than complaints, I haven't
>> gotten much help in trying to improve the situation.
> The last time I tried to discuss the requirements of moving this along
> (this really ties into so many places in Emacs that hopefully we have
> clear specifications of what to implement before actually starting it)

Hmm... the text you quote above relates to elpa.gnu.org scripts and
I don't see how it "ties into so many places in Emacs".  What am
I missing.


        Stefan




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA and package.el
  2019-04-07 14:07                                     ` Stefan Monnier
@ 2019-04-07 17:37                                       ` Achim Gratz
  2019-04-07 20:31                                         ` Stefan Monnier
  0 siblings, 1 reply; 76+ messages in thread
From: Achim Gratz @ 2019-04-07 17:37 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier writes:
> Pretty much, yes (there's also the use of org-pkg.el rather than headers
> in org.el to specify the package version).

That I object to: We have proper version control now, this nonsense of
recording additional (and generally uncorrelated) version information in
version controlled files needs to be abolished.  I'm fine with
generating extra files to help ELPA along, but not to alter existing
files from their version-controlled state.

> Autoload do get redefined by subsequent `autoload`s.
> Was there a bug report for it?

I honestly don't remember… it was #10125 (thanks, Glenn), it starts some
way down into the discussion.  The most sticky problem was when the old
autoload pointed to a different file and the new code had moved that
function to another, autoload would happily retrieve the old file and
then of course not get the function it was wanting to get.

>> I posted example code, a horrible hack of cleaning the data structures
>> manually and we've discussed if it was possible to start a "clean"
>> Emacs for byte compilation to work around this.
>
> Sorry, that doesn't ring a bell.  Could you show me the bug#nb?

See above, more of it was here on emacs.devel, around four years ago or
even a bit earlier.  The Gmane IDs unfortunately are useless now, I need
to dig into the archives to get you working links… here are three
mailing list threads:

http://lists.gnu.org/archive/html/emacs-devel/2014-10/msg00567.html
http://lists.gnu.org/archive/html/emacs-devel/2015-11/msg00207.html
http://lists.gnu.org/archive/html/emacs-devel/2016-09/msg00425.html

[Btw, the search page in the mailing list archive has a bug: when you
try to change the search string or the sort order it will remove the
index being searched and doesn't find anything until you add it back
manually.]

>> Well yes, most users that can't install their own packages, but can use
>> package.el would be at loss to do it via package-load-list, but are not
>> expected to have problems if package.el told them which versions of a
>> package are avilable on their system and where and which of thos they
>> want to use (or install one from a package archive).
>
> Hmm... let's see.  The needs I can imagine are:
> - prevent activation of a system-wide package.  This should be very rare
>   since package activation should not interfere at all, except for rare
>   exceptions.  So I'd argue such a need reflects a bug in the package.

I've had to circumvent the whole of site-lisp (and then re-implement 90%
of it as user init) at one time where the admins had borked all of it
for all Emacs versions when they actually only wanted to change things
for when you get an Emacs with a specific version from inside a very
specially configured environment.  Took about two years for them to
clean it up.

> - prefer older user-installed package over newer system-wide package.
>   This is likely also unusual, but definitely possible and legitimate.

Yes.

> Are there other cases?

>> The other thing package.el doesn't do at the moment is to "delete"
>> a package that is either built-in or installed system-wide without
>> replacing it with a user-installed (later) version.
>
> What would you want Emacs to do to "delete" a built-in or system-wide package?

More generally, being able to "delete" a package at any level (or making
it completely invisible) is immensely useful for testing.

>> The last time I tried to discuss the requirements of moving this along
>> (this really ties into so many places in Emacs that hopefully we have
>> clear specifications of what to implement before actually starting it)
>
> Hmm... the text you quote above relates to elpa.gnu.org scripts and
> I don't see how it "ties into so many places in Emacs".  What am
> I missing.

Nothing, I wasn't talking about the elpa scripts, but how built-in
packages and package.el work and interact.  Sorry if I confused you ny
pegging it after that other text.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Factory and User Sound Singles for Waldorf Q+, Q and microQ:
http://Synth.Stromeko.net/Downloads.html#WaldorfSounds




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA and package.el
  2019-04-07 17:37                                       ` Achim Gratz
@ 2019-04-07 20:31                                         ` Stefan Monnier
  2019-04-08 17:55                                           ` Achim Gratz
  0 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2019-04-07 20:31 UTC (permalink / raw)
  To: emacs-devel

>> Pretty much, yes (there's also the use of org-pkg.el rather than headers
>> in org.el to specify the package version).
> That I object to: We have proper version control now, this nonsense of
> recording additional (and generally uncorrelated) version information in
> version controlled files needs to be abolished.

elpa.gnu.org generates the packages from the various branches of elpa.git.
So I'm not sure where it should get its version info if not from version
controlled files.
What alternative do you suggest?

>> Autoload do get redefined by subsequent `autoload`s.
>> Was there a bug report for it?
> I honestly don't remember… it was #10125 (thanks, Glenn), it starts some
> way down into the discussion.  The most sticky problem was when the old
> autoload pointed to a different file and the new code had moved that
> function to another, autoload would happily retrieve the old file and
> then of course not get the function it was wanting to get.

Hmm... IIRC since that discussion package.el was changed to try and
address those problems (starting with
c13baa10d55ec863d3ceaea48c6b2959ece98198, on Dec 2014).

So if there are remaining issues, could you open a new bug report?

>> Hmm... let's see.  The needs I can imagine are:
>> - prevent activation of a system-wide package.  This should be very rare
>>   since package activation should not interfere at all, except for rare
>>   exceptions.  So I'd argue such a need reflects a bug in the package.
> I've had to circumvent the whole of site-lisp (and then re-implement 90%
> of it as user init) at one time where the admins had borked all of it
> for all Emacs versions when they actually only wanted to change things
> for when you get an Emacs with a specific version from inside a very
> specially configured environment.  Took about two years for them to
> clean it up.

Not sure in which way that's related to the issue of system-wide
ELPA packages.

>> - prefer older user-installed package over newer system-wide package.
>>   This is likely also unusual, but definitely possible and legitimate.
> Yes.

One way we could do this is to always prefer the user-installed version
over the system-wide one (tho, this will inevitably be somewhat brittle
since we actually don't truly know which directories are "user" and
which are "system", we can only approximate it e.g. by checking if we
have write access or by declaring that package-user-dir is the only
user directory and all others are system-wide).

>>> The other thing package.el doesn't do at the moment is to "delete"
>>> a package that is either built-in or installed system-wide without
>>> replacing it with a user-installed (later) version.
>> What would you want Emacs to do to "delete" a built-in or
>> system-wide package?
> More generally, being able to "delete" a package at any level (or making
> it completely invisible) is immensely useful for testing.

I still don't know what you mean by "delete" here.

> Nothing, I wasn't talking about the elpa scripts, but how built-in
> packages and package.el work and interact.  Sorry if I confused you by
> pegging it after that other text.

I sense that you're venting a lot of frustration, but it's difficult to
move forward without clear and concrete cases to discuss.


        Stefan




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-06 12:42                                 ` Stefan Monnier
@ 2019-04-08 12:37                                   ` Michael Albinus
  2019-04-08 13:07                                     ` Stefan Monnier
  0 siblings, 1 reply; 76+ messages in thread
From: Michael Albinus @ 2019-04-08 12:37 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

Hi Stefan,

> Why can't you take that package archive's content, put it in a Git
> branch and push that to elpa.git?

I've tried it. I've created a branch 'elpa' in the Tramp repository, and
in this branch I've moved lisp/*.el to the root of the repository (via
git mv). Committed this change. Then I've changed something in tramp.el,
and tried to merge the master and elpa branches. The repository layout
(i.e., where the *.el files are located) is merged as well. Not what I want.

And as I said already, a manual merge (diffing all *.el files, and
applying the changes) is not an option for me, because I must sync three
different repositories manually then.

>         Stefan

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-08 12:37                                   ` Michael Albinus
@ 2019-04-08 13:07                                     ` Stefan Monnier
  2019-04-08 13:31                                       ` Michael Albinus
  2019-05-20 13:05                                       ` Michael Albinus
  0 siblings, 2 replies; 76+ messages in thread
From: Stefan Monnier @ 2019-04-08 13:07 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Eli Zaretskii, emacs-devel

>> Why can't you take that package archive's content, put it in a Git
>> branch and push that to elpa.git?
> I've tried it. I've created a branch 'elpa' in the Tramp repository, and
> in this branch I've moved lisp/*.el to the root of the repository (via
> git mv). Committed this change. Then I've changed something in tramp.el,
> and tried to merge the master and elpa branches. The repository layout
> (i.e., where the *.el files are located) is merged as well. Not what I want.

Indeed, despite Git proponent's optimism, Git doesn't deal very well
with files that have moved, so you can't "git merge" into that
"archive-only" branch.  Instead you need to treat it like a "tarball",
not a branch.  I.e. instead of

    git merge master

you want to use something like:

    cp ../master/lisp/*.el ./
    make
    git commit

Of course, I'd prefer we fix the elpa.gnu.org scripts so they can run
the "make" themselves, which would solve this problem more cleanly.

> And as I said already, a manual merge (diffing all *.el files, and
> applying the changes) is not an option for me, because I must sync three
> different repositories manually then.

I had no intention to suggest manual merges, indeed.


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-08 13:07                                     ` Stefan Monnier
@ 2019-04-08 13:31                                       ` Michael Albinus
  2019-04-08 16:43                                         ` Stefan Monnier
  2019-05-20 13:05                                       ` Michael Albinus
  1 sibling, 1 reply; 76+ messages in thread
From: Michael Albinus @ 2019-04-08 13:31 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

> you want to use something like:
>
>     cp ../master/lisp/*.el ./
>     make
>     git commit

There is still the problem to merge the other direction. What if people
modify the Tramp branch in elpa.git?

> Of course, I'd prefer we fix the elpa.gnu.org scripts so they can run
> the "make" themselves, which would solve this problem more cleanly.

D'accord.

>         Stefan

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-08 13:31                                       ` Michael Albinus
@ 2019-04-08 16:43                                         ` Stefan Monnier
  0 siblings, 0 replies; 76+ messages in thread
From: Stefan Monnier @ 2019-04-08 16:43 UTC (permalink / raw)
  To: Michael Albinus; +Cc: Eli Zaretskii, emacs-devel

> There is still the problem to merge the other direction. What if people
> modify the Tramp branch in elpa.git?

The only sensible way to fix this problem is to tell people not to do that.


        Stefan



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA and package.el
  2019-04-07 20:31                                         ` Stefan Monnier
@ 2019-04-08 17:55                                           ` Achim Gratz
  2019-04-08 19:01                                             ` Stefan Monnier
  0 siblings, 1 reply; 76+ messages in thread
From: Achim Gratz @ 2019-04-08 17:55 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier writes:
> elpa.gnu.org generates the packages from the various branches of elpa.git.
> So I'm not sure where it should get its version info if not from version
> controlled files.

As I said, I'll happily make an exception for ELPA as long as it's
hobbled to not allow a proper build and provide any number of extra
pre-generated files that make up for the difference.  What I do not want
to do (Org maintainer override is possible) is to alter files from their
state in orgmode.git (i.e. if you delete the pre-generated files the
result should be identical to a checkout from orgmode.git).

> What alternative do you suggest?

Either use one of the generated files (via a suitable naming convention)
as before, or take information from either/or tags and notes?

> Hmm... IIRC since that discussion package.el was changed to try and
> address those problems (starting with
> c13baa10d55ec863d3ceaea48c6b2959ece98198, on Dec 2014).
>
> So if there are remaining issues, could you open a new bug report?

I no longer have the test scaffolding in place that allowed me to check
for this across a number of Emacs versions.  IIRC, the changes back then
addressed only that part of the problem that was immediate (i.e. the
package would either fail to compile or activate).

> Not sure in which way that's related to the issue of system-wide
> ELPA packages.

What I'm trying to say is that users might easily find themselves in the
situation that requires them to ignore part of their system installation
(which they can't do anything about because somebody else provides it).
While it is an unlikely case, I think it should still be possible.

> One way we could do this is to always prefer the user-installed version
> over the system-wide one (tho, this will inevitably be somewhat brittle
> since we actually don't truly know which directories are "user" and
> which are "system", we can only approximate it e.g. by checking if we
> have write access or by declaring that package-user-dir is the only
> user directory and all others are system-wide).

The order of all package directories provides a hierarchy already and in
most cases the highest rung should provide the definite information.
That part is mostly working already, I think.  The missing part is
masking single packages at any point in the hierarchy without requiring
the user to have write access to those directories.

>> More generally, being able to "delete" a package at any level (or making
>> it completely invisible) is immensely useful for testing.
>
> I still don't know what you mean by "delete" here.

s/delete/mask/

Does that make more sense now?  I'd be happy if you find a better word
for it.

> I sense that you're venting a lot of frustration, but it's difficult to
> move forward without clear and concrete cases to discuss.

No I don't, life's too short for that.  Anyway, as you say, lets move
things along a bit.

So, let's say the system has a package "Foo" installed and the user
wants to install and use an older version of that.  Another useful case
is to pretend the builtin package "Bar" wasn't there, lets say for
testing purposes (or top prevent problems on upgrading to a much newer
version in the user or system space).


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Wavetables for the Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#BlofeldUserWavetables




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA and package.el
  2019-04-08 17:55                                           ` Achim Gratz
@ 2019-04-08 19:01                                             ` Stefan Monnier
  2019-04-08 20:24                                               ` Achim Gratz
  0 siblings, 1 reply; 76+ messages in thread
From: Stefan Monnier @ 2019-04-08 19:01 UTC (permalink / raw)
  To: emacs-devel

>> elpa.gnu.org generates the packages from the various branches of elpa.git.
>> So I'm not sure where it should get its version info if not from version
>> controlled files.
>
> As I said, I'll happily make an exception for ELPA as long as it's
> hobbled to not allow a proper build and provide any number of extra
> pre-generated files that make up for the difference.  What I do not want
> to do (Org maintainer override is possible) is to alter files from their
> state in orgmode.git (i.e. if you delete the pre-generated files the
> result should be identical to a checkout from orgmode.git).

So you're OK with a convention of taking the version from one of the
revision controlled files.  Good, since that's what we do.  IOW the only
problem is an unlucky collision between the choice made by GNU ELPA (to
take the version from <pkg>.el) and the choice made by Org (to put the
version elsewhere).

I'm pretty sure it's much easier for Org to put the version where GNU
ELPA expects it than for all elpa.git packages to change where they put
their version.

> I no longer have the test scaffolding in place that allowed me to check
> for this across a number of Emacs versions.  IIRC, the changes back then
> addressed only that part of the problem that was immediate (i.e. the
> package would either fail to compile or activate).

I can easily come up with artificial cases that fail miserably with the
current system, but that doesn't really help me figure out what is the
best solution, because all the solutions I can think of also fail
miserably in other artificial cases.

So we'll just have to wait until concrete cases show up.

>> Not sure in which way that's related to the issue of system-wide
>> ELPA packages.
> What I'm trying to say is that users might easily find themselves in the
> situation that requires them to ignore part of their system installation
> (which they can't do anything about because somebody else provides it).

Right, but I don't see what package.el can do about it.

> While it is an unlikely case, I think it should still be possible.

Obviously, they can't override everything that the sysadmin might do,
but they can easily remove the system-wide package directory from
package-directory-list, so AFAIK there's nothing harder about package.el
packages than about anything else the sysadmin might do.

>> One way we could do this is to always prefer the user-installed version
>> over the system-wide one (tho, this will inevitably be somewhat brittle
>> since we actually don't truly know which directories are "user" and
>> which are "system", we can only approximate it e.g. by checking if we
>> have write access or by declaring that package-user-dir is the only
>> user directory and all others are system-wide).
>
> The order of all package directories provides a hierarchy already and in
> most cases the highest rung should provide the definite information.
> That part is mostly working already, I think.

Not that I know: package.el currently doesn't pay much attention to the
order of directories in package-directory-list.  It just gathers all the
packages it finds there and activates the most recent version of each,
by default.

>>> More generally, being able to "delete" a package at any level (or making
>>> it completely invisible) is immensely useful for testing.
>> I still don't know what you mean by "delete" here.
> s/delete/mask/
> Does that make more sense now?  I'd be happy if you find a better word
> for it.

Ah, I see.  Currently you can only do this by either disabling the
package completely (i.e. all versions) or by explicitly selecting
another version of that package (in both cases, this is done in
`package-load-list`).

> So, let's say the system has a package "Foo" installed and the user
> wants to install and use an older version of that.

If we made package-user-dir packages always take precedence over
system-wide packages, then this case is covered, right?

> Another useful case is to pretend the builtin package "Bar" wasn't
> there, lets say for testing purposes.

I think this is going beyond the purpose of package.el.  To make it
workable, we'd need to change the layout of Emacs's builtin files into
many more directories, and I don't think we'll want to go there in
general unless/until there's a really compelling reason for it.

For the specific case of Org, we could arrange something.  Indeed, the
most logical arrangement for Org (arguably) is to remove it from
emacs.git and only include it in tarballs as a "bundled ELPA package",
in which case it should indeed be possible to control it via
package-load-list like any other.


        Stefan




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA and package.el
  2019-04-08 19:01                                             ` Stefan Monnier
@ 2019-04-08 20:24                                               ` Achim Gratz
  2019-04-09  1:39                                                 ` Stefan Monnier
  0 siblings, 1 reply; 76+ messages in thread
From: Achim Gratz @ 2019-04-08 20:24 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier writes:
>> As I said, I'll happily make an exception for ELPA as long as it's
>> hobbled to not allow a proper build and provide any number of extra
>> pre-generated files that make up for the difference.  What I do not want
>> to do (Org maintainer override is possible) is to alter files from their
>> state in orgmode.git (i.e. if you delete the pre-generated files the
>> result should be identical to a checkout from orgmode.git).
>
> So you're OK with a convention of taking the version from one of the
> revision controlled files.  Good, since that's what we do.

…revision controlled file on ELPA.

> IOW the only problem is an unlucky collision between the choice made
> by GNU ELPA (to take the version from <pkg>.el) and the choice made by
> Org (to put the version elsewhere).

Well, Org would have to move it's main file out of the way and replace
it with a generated one just to accomodate ELPA.  That was (very)
briefly contemplated, but it still doesn't make sense.  What if the next
package archive wants it someplace else?

> I'm pretty sure it's much easier for Org to put the version where GNU
> ELPA expects it than for all elpa.git packages to change where they put
> their version.

Why is this more logical than using either the file that defines the
package (org-pkg.el) or the file that normally gets generated for Org
for this purpose (org-version.el)?  For those packages that don't
generate files falling back to the (usually single) file that names the
package is OK, but why not look for <PKG>{-pkg,-version,}.el in that
order in general?

>> What I'm trying to say is that users might easily find themselves in the
>> situation that requires them to ignore part of their system installation
>> (which they can't do anything about because somebody else provides it).
>
> Right, but I don't see what package.el can do about it.

Telling them about all available versions and where they come from would
be a start.  This would likely entail to name the various local package
directories, so they show up by name like the different package archives
already do.

>> While it is an unlikely case, I think it should still be possible.
>
> Obviously, they can't override everything that the sysadmin might do,
> but they can easily remove the system-wide package directory from
> package-directory-list, so AFAIK there's nothing harder about package.el
> packages than about anything else the sysadmin might do.

That's what I was trying to avoid.  If I remove the whole directory, I
then need to add back anything I _do_ want from it.  In more general
terms, currently the user only has ability to do positive selection and
I want her to have negative selection on the package level as well.

>>> One way we could do this is to always prefer the user-installed version
>>> over the system-wide one (tho, this will inevitably be somewhat brittle
>>> since we actually don't truly know which directories are "user" and
>>> which are "system", we can only approximate it e.g. by checking if we
>>> have write access or by declaring that package-user-dir is the only
>>> user directory and all others are system-wide).
>>
>> The order of all package directories provides a hierarchy already and in
>> most cases the highest rung should provide the definite information.
>> That part is mostly working already, I think.
>
> Not that I know: package.el currently doesn't pay much attention to the
> order of directories in package-directory-list.  It just gathers all the
> packages it finds there and activates the most recent version of each,
> by default.

What I meant was that the order of the various local package sources
(and possibly the order of foreign package archives) could be used to
indicate the general preference order, much like load-path does.

>>>> More generally, being able to "delete" a package at any level (or making
>>>> it completely invisible) is immensely useful for testing.
>>> I still don't know what you mean by "delete" here.
>> s/delete/mask/
>> Does that make more sense now?  I'd be happy if you find a better word
>> for it.
>
> Ah, I see.  Currently you can only do this by either disabling the
> package completely (i.e. all versions) or by explicitly selecting
> another version of that package (in both cases, this is done in
> `package-load-list`).

Yes.

>> So, let's say the system has a package "Foo" installed and the user
>> wants to install and use an older version of that.
>
> If we made package-user-dir packages always take precedence over
> system-wide packages, then this case is covered, right?

Yes, for this case this should work.  But the general precedence will
sometimes need to be modified on a per-package basis.  Which probably
would still work via package-load-list.  The tricky question is what
package menu should be doing if the user then asks for updates.  Any
exception should be sticky unless explicitly lifted, but it's not really
recorded what was a user decision and what was the result of automatic
resolution (other package managers keep tabs on this for exactly that
reason).

>> Another useful case is to pretend the builtin package "Bar" wasn't
>> there, lets say for testing purposes.
>
> I think this is going beyond the purpose of package.el.  To make it
> workable, we'd need to change the layout of Emacs's builtin files into
> many more directories, and I don't think we'll want to go there in
> general unless/until there's a really compelling reason for it.
>
> For the specific case of Org, we could arrange something.  Indeed, the
> most logical arrangement for Org (arguably) is to remove it from
> emacs.git and only include it in tarballs as a "bundled ELPA package",
> in which case it should indeed be possible to control it via
> package-load-list like any other.

Ideally anything not needed for dumping Emacs should be a proper package
(whether it's maintained in a different repository or not is orthogonal
to that).  It's probably not going to happen anytime soon, yes.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Wavetables for the Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#BlofeldUserWavetables




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: GNU ELPA and package.el
  2019-04-08 20:24                                               ` Achim Gratz
@ 2019-04-09  1:39                                                 ` Stefan Monnier
  0 siblings, 0 replies; 76+ messages in thread
From: Stefan Monnier @ 2019-04-09  1:39 UTC (permalink / raw)
  To: emacs-devel

> Well, Org would have to move it's main file out of the way and replace
> it with a generated one just to accomodate ELPA.

That's one choice.  Adding the "Version: ..." directly in the current
org.el would also work OK in practice, even if you find it distasteful
in theory.

> That was (very) briefly contemplated, but it still doesn't make sense.
> What if the next package archive wants it someplace else?

Yes, what if.  What if the next package archive decides that `org.el`
should be the name of the Org-mode file that describes the package?

I think you'll be better off crossing this bridge when/if you get to it.

>> I'm pretty sure it's much easier for Org to put the version where GNU
>> ELPA expects it than for all elpa.git packages to change where they put
>> their version.
> Why is this more logical than using either the file that defines the
> package (org-pkg.el) or the file that normally gets generated for Org
> for this purpose (org-version.el)?

"Logical" is probably not the right way to describe it.  Currently, we
indeed exceptionally use org-pkg.el, but it's the one and only package
which does that, so I'd like to get rid of this ad-hoc hack in the
build scripts.

The status-quo is on your side, tho, so I guess I'll have to "suck it up" ;-)

>>> What I'm trying to say is that users might easily find themselves in the
>>> situation that requires them to ignore part of their system installation
>>> (which they can't do anything about because somebody else provides it).
>> Right, but I don't see what package.el can do about it.
> Telling them about all available versions and where they come from would
> be a start.

It already does tell them about all versions.  So IIUC you're asking the
`list-packages` command to display somewhere the package location.

My setup is a bit weird, so my tests aren't very conclusive, but it
seems that there's already some indication of the complete directory
name where the package was found, tho it's not displayed in all cases
(and it's sometimes labeled as "external").

I'm not very familiar with the package UI so I'm probably not the best
person to fix this, but it sounds like a good idea, indeed.

> This would likely entail to name the various local package
> directories, so they show up by name like the different package archives
> already do.

Oh, you're thinking of displaying them directly in the package list
rather than only in the *Help* buffer where an individual package
is described?  Yes, that would require more work to be able to name
those directories, but it would be fairly natural to re-use the
"archive" column for that.

> What I meant was that the order of the various local package sources
> (and possibly the order of foreign package archives) could be used to
> indicate the general preference order, much like load-path does.

Indeed, that sounds fairly natural.  I'm not sure how easy it would be
to do it, tho.  Also not clear would be the interaction with built-in
packages: e.g. it's important for the cl-lib-1.0 built-in packages to
take precedence over user-installed cl-lib-0.5.

>> If we made package-user-dir packages always take precedence over
>> system-wide packages, then this case is covered, right?
> Yes, for this case this should work.  But the general precedence will
> sometimes need to be modified on a per-package basis.

Installing or not installing the package into package-user-dir does give
you the per-package control.

> The tricky question is what package menu should be doing if the user
> then asks for updates.  Any exception should be sticky unless
> explicitly lifted, but it's not really recorded what was a user
> decision and what was the result of automatic resolution (other
> package managers keep tabs on this for exactly that reason).

We do record installation decisions in package-selected-packages.

> Ideally anything not needed for dumping Emacs should be a proper package
> (whether it's maintained in a different repository or not is orthogonal
> to that).

For some definition of "ideal", yes.  But there are downsides as well.


        Stefan




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-05 16:19                                   ` Michael Albinus
@ 2019-04-16  7:53                                     ` Steinar Bang
  0 siblings, 0 replies; 76+ messages in thread
From: Steinar Bang @ 2019-04-16  7:53 UTC (permalink / raw)
  To: emacs-devel

>>>>> Michael Albinus <michael.albinus@gmx.de>:

> Dmitry Gutov <dgutov@yandex.ru> writes:
> Hi Dmitry,

>> Why don't you create a branch in the Tramp repository which will fit
>> those requirements, and regularly sync it with master, as well as push
>> it to ELPA?

> This branch would have a different file system layout. sync is not trivial.

Well, actually, if you ensure that git history is tracked (by ensuring
that the first commit for a file in the new location is an exact copy
of the file in its previous location), and if the changes you do have to
make because of the new layout doesn't conflict with the changes you're
merging from master, then sync should be as simple as:
 git checkout elpa-layout
 git merge master




^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-04-08 13:07                                     ` Stefan Monnier
  2019-04-08 13:31                                       ` Michael Albinus
@ 2019-05-20 13:05                                       ` Michael Albinus
  2019-06-30 19:20                                         ` Michael Albinus
  1 sibling, 1 reply; 76+ messages in thread
From: Michael Albinus @ 2019-05-20 13:05 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

Hi Stefan,

>>> Why can't you take that package archive's content, put it in a Git
>>> branch and push that to elpa.git?
>>
>> I've tried it. I've created a branch 'elpa' in the Tramp repository, and
>> in this branch I've moved lisp/*.el to the root of the repository (via
>> git mv). Committed this change. Then I've changed something in tramp.el,
>> and tried to merge the master and elpa branches. The repository layout
>> (i.e., where the *.el files are located) is merged as well. Not what I want.
>
> Indeed, despite Git proponent's optimism, Git doesn't deal very well
> with files that have moved, so you can't "git merge" into that
> "archive-only" branch.  Instead you need to treat it like a "tarball",
> not a branch.  I.e. instead of
>
>     git merge master
>
> you want to use something like:
>
>     cp ../master/lisp/*.el ./
>     make
>     git commit
>
> Of course, I'd prefer we fix the elpa.gnu.org scripts so they can run
> the "make" themselves, which would solve this problem more cleanly.

Well, in order to make progress, I've created an orphaned branch in the
Tramp repository, as suggested by Glenn. It counts Tramp in version 0,
that we can still test.

Could you, pls, add this as external branch to elpa? The URL is

 ("tramp"		:external "https://git.savannah.gnu.org/cgit/tramp.git/?h=tramp-elpa")

I hope to release this via ELPA in parallel to the next Tramp 2.4.2
release, which is planned roughly at the end of June.

>> And as I said already, a manual merge (diffing all *.el files, and
>> applying the changes) is not an option for me, because I must sync three
>> different repositories manually then.
>
> I had no intention to suggest manual merges, indeed.

I hope a script will do.

>         Stefan

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

* Re: Tramp as ELPA package
  2019-05-20 13:05                                       ` Michael Albinus
@ 2019-06-30 19:20                                         ` Michael Albinus
  0 siblings, 0 replies; 76+ messages in thread
From: Michael Albinus @ 2019-06-30 19:20 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Michael Albinus <michael.albinus@gmx.de> writes:

> Well, in order to make progress, I've created an orphaned branch in the
> Tramp repository, as suggested by Glenn. It counts Tramp in version 0,
> that we can still test.
>
> I hope to release this via ELPA in parallel to the next Tramp 2.4.2
> release, which is planned roughly at the end of June.

For the records, Tramp 2.4.2 has been released as ELPA package by today.

Best regards, Michael.



^ permalink raw reply	[flat|nested] 76+ messages in thread

end of thread, other threads:[~2019-06-30 19:20 UTC | newest]

Thread overview: 76+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-19 13:24 GNU ELPA package for CC-mode Stefan Monnier
2018-08-19 20:49 ` Alan Mackenzie
2018-08-19 23:45   ` Stefan Monnier
2018-08-20  8:24     ` Jostein Kjønigsen
2018-08-20 14:06       ` Stefan Monnier
2018-08-20 17:58         ` Jostein Kjønigsen
2018-08-21 13:30           ` Stefan Monnier
2018-08-21 16:20     ` Alan Mackenzie
2018-08-23  5:25       ` Stefan Monnier
2018-08-23 21:34         ` Alan Mackenzie
2018-08-23 22:17           ` Stefan Monnier
2018-08-24  8:43             ` Eli Zaretskii
2018-08-24 11:56               ` Michael Albinus
2018-08-24 22:21                 ` Stefan Monnier
2018-08-25  8:43                   ` Tramp as ELPA package (was: GNU ELPA package for CC-mode) Michael Albinus
2018-08-25 18:04                     ` Tramp as ELPA package Stefan Monnier
2018-08-25 21:04                       ` Stefan Monnier
2018-08-26  6:39                         ` Andreas Schwab
2018-08-26 10:48                           ` Michael Albinus
2018-08-26 11:09                         ` Michael Albinus
2018-08-26 15:21                           ` Stefan Monnier
2018-08-26 18:04                             ` Michael Albinus
2018-08-26 18:27                               ` Eli Zaretskii
2018-08-26 18:34                                 ` Michael Albinus
2018-08-26 19:03                                   ` Eli Zaretskii
2018-08-27  7:12                                     ` Michael Albinus
2018-08-27 13:33                                       ` Stefan Monnier
2018-08-27 13:41                                         ` Michael Albinus
2018-08-27 13:44                                           ` Stefan Monnier
2018-08-27 15:22                                             ` Michael Albinus
2018-08-27 15:09                                       ` Eli Zaretskii
2018-08-27 15:21                                         ` Michael Albinus
2018-08-26 15:30                           ` Tom Tromey
2018-08-26 16:26                             ` Stefan Monnier
2018-08-26 17:46                             ` Michael Albinus
2019-04-04 12:41                           ` Michael Albinus
2019-04-04 15:48                             ` Stefan Monnier
2019-04-04 16:07                               ` Michael Albinus
2019-04-05 14:43                               ` Michael Albinus
2019-04-05 15:07                                 ` Dmitry Gutov
2019-04-05 16:19                                   ` Michael Albinus
2019-04-16  7:53                                     ` Steinar Bang
2019-04-05 18:14                                 ` Stephen Leake
2019-04-05 18:20                                   ` Stephen Leake
2019-04-05 22:18                                     ` Michael Albinus
2019-04-07  0:17                                       ` Stephen Leake
2019-04-07  7:41                                         ` Michael Albinus
2019-04-06 12:42                                 ` Stefan Monnier
2019-04-08 12:37                                   ` Michael Albinus
2019-04-08 13:07                                     ` Stefan Monnier
2019-04-08 13:31                                       ` Michael Albinus
2019-04-08 16:43                                         ` Stefan Monnier
2019-05-20 13:05                                       ` Michael Albinus
2019-06-30 19:20                                         ` Michael Albinus
2019-04-05 18:55                               ` Achim Gratz
2019-04-06 22:25                                 ` GNU ELPA and package.el (was: Tramp as ELPA package) Stefan Monnier
2019-04-07  7:17                                   ` GNU ELPA and package.el Achim Gratz
2019-04-07 14:07                                     ` Stefan Monnier
2019-04-07 17:37                                       ` Achim Gratz
2019-04-07 20:31                                         ` Stefan Monnier
2019-04-08 17:55                                           ` Achim Gratz
2019-04-08 19:01                                             ` Stefan Monnier
2019-04-08 20:24                                               ` Achim Gratz
2019-04-09  1:39                                                 ` Stefan Monnier
2018-08-25 19:15                   ` GNU ELPA package for CC-mode Clément Pit-Claudel
2018-08-25 20:17                     ` Stefan Monnier
2018-08-25 21:17                       ` Tom Tromey
2018-08-25 23:28                         ` Kyle Andrews
2018-08-24 15:48               ` Stefan Monnier
2018-08-24 19:21                 ` Eli Zaretskii
2018-08-24 22:17               ` Stefan Monnier
2018-08-25  7:02                 ` Eli Zaretskii
2018-08-25  8:51                 ` Alan Mackenzie
2018-08-25 10:15                   ` Michael Albinus
2018-08-25 18:07                   ` Stefan Monnier
2018-08-25 18:27                     ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).