unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Canonical location for emacs-version string in source tree?
@ 2010-05-20 16:57 Jeff Kowalczyk
  2010-05-20 17:12 ` Ken Raeburn
  0 siblings, 1 reply; 27+ messages in thread
From: Jeff Kowalczyk @ 2010-05-20 16:57 UTC (permalink / raw)
  To: emacs-devel

Gentoo GNU/Linux's packaging of emacs bzr trunk recently adapted to a bzr
changeset that removed one of the several copies of emacs-version (e.g.
"24.0.50") found in the source tree [1].

Can one of these locations in the source tree  (i.e. emacs.c or configure.in) be
designated as the canonical location for packagers to find the version string?

Thanks,
Jeff Kowalczyk

[1] http://bugs.gentoo.org/show_bug.cgi?id=320021




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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-20 16:57 Canonical location for emacs-version string in source tree? Jeff Kowalczyk
@ 2010-05-20 17:12 ` Ken Raeburn
  2010-05-20 18:01   ` Eli Zaretskii
  2010-05-20 19:57   ` Stefan Monnier
  0 siblings, 2 replies; 27+ messages in thread
From: Ken Raeburn @ 2010-05-20 17:12 UTC (permalink / raw)
  To: Jeff Kowalczyk; +Cc: emacs-devel

On May 20, 2010, at 12:57, Jeff Kowalczyk wrote:
> Gentoo GNU/Linux's packaging of emacs bzr trunk recently adapted to a bzr
> changeset that removed one of the several copies of emacs-version (e.g.
> "24.0.50") found in the source tree [1].

Well, it moved it, from version.el to emacs.c.

> Can one of these locations in the source tree  (i.e. emacs.c or configure.in) be
> designated as the canonical location for packagers to find the version string?

I thought about moving in that direction a bit when making my change, but the C code needs to get the value easily at compile time on both UNIX and Windows platforms, which rules out using autoconf's PACKAGE_VERSION (unless we can generate PACKAGE_VERSION on Windows) and using non-trivial scripts to extract it from configure.in or elsewhere (unless someone wants to write and debug both versions).

I'm not opposed to someone doing the work; I just couldn't effectively do it myself at the time, and didn't need it for my work.  And for Emacs maintenance itself, there are scripts and lisp packages (not distributed in the Emacs package) that know where the version strings live and how to update them consistently, so there hasn't been a big demand to reduce them all to one master source location.

If you need to pick one place, then I think for now emacs.c is the right place.

Ken


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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-20 17:12 ` Ken Raeburn
@ 2010-05-20 18:01   ` Eli Zaretskii
  2010-05-21  1:39     ` Ken Raeburn
  2010-05-21  5:44     ` Ulrich Mueller
  2010-05-20 19:57   ` Stefan Monnier
  1 sibling, 2 replies; 27+ messages in thread
From: Eli Zaretskii @ 2010-05-20 18:01 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: jtk, emacs-devel

> From: Ken Raeburn <raeburn@raeburn.org>
> Date: Thu, 20 May 2010 13:12:29 -0400
> Cc: emacs-devel@gnu.org
> 
> If you need to pick one place, then I think for now emacs.c is the right place.

Until someone moves it again, that is...

Why was it moved, anyway?  I don't remember any discussions of that,
apologies if I missed something.  The string was in version.el since
forever.  The move subtly broke the MS-DOS port, btw, which I could
have prevented if I just knew about it coming, which I didn't until
now.

<Shrug> I guess it's a lost battle, anyway.



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-20 17:12 ` Ken Raeburn
  2010-05-20 18:01   ` Eli Zaretskii
@ 2010-05-20 19:57   ` Stefan Monnier
  1 sibling, 0 replies; 27+ messages in thread
From: Stefan Monnier @ 2010-05-20 19:57 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: Jeff Kowalczyk, emacs-devel

> I'm not opposed to someone doing the work; I just couldn't effectively
> do it myself at the time, and didn't need it for my work.  And for
> Emacs maintenance itself, there are scripts and lisp packages (not
> distributed in the Emacs package) that know where the version strings
> live and how to update them consistently, so there hasn't been a big
> demand to reduce them all to one master source location.

Actually, I'd be happy to see it reduced to just a single location,
because it's the second biggest source of conflicts when merging the
emacs-23 branch into trunk (tho it's only when the merge includes
a change of revision obviously, but that's pretty frequent during the
pretest period).


        Stefan



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-20 18:01   ` Eli Zaretskii
@ 2010-05-21  1:39     ` Ken Raeburn
  2010-05-21  5:44       ` Eli Zaretskii
  2010-05-21 20:19       ` Stefan Monnier
  2010-05-21  5:44     ` Ulrich Mueller
  1 sibling, 2 replies; 27+ messages in thread
From: Ken Raeburn @ 2010-05-21  1:39 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Emacs Dev [emacs-devel]

On May 20, 2010, at 14:01, Eli Zaretskii wrote:
>> From: Ken Raeburn <raeburn@raeburn.org>
>> Date: Thu, 20 May 2010 13:12:29 -0400
>> Cc: emacs-devel@gnu.org
>> 
>> If you need to pick one place, then I think for now emacs.c is the right place.
> 
> Until someone moves it again, that is...

Well, yeah.

> Why was it moved, anyway?  I don't remember any discussions of that,
> apologies if I missed something.  The string was in version.el since
> forever.  The move subtly broke the MS-DOS port, btw, which I could
> have prevented if I just knew about it coming, which I didn't until
> now.

"emacs --version" would print out the version if it was set, otherwise ignore the option; it does this early in main(), before Lisp code is loaded.  The "make install" rule always runs "emacs --version" to figure out the DOC file name.  If you build with CANNOT_DUMP, the emacs binary that gets run hasn't had the basic Lisp code pre-loaded into it.  So "emacs --version" pops up a window.

Making the C code aware of the version number seemed like the easiest way to deal with it.  I'm sorry about the problem with the MS-DOS build; I took this approach because I thought that it (unlike trying to generate all version-string appearances from one canonical source) would be a simple, relatively minor change with little impact on the DOS/Windows builds.  (Using PACKAGE_VERSION presumes you're using the autoconf-based configure script.  Extracting it from anywhere to make something visible to C requires running some external program like grep or sed.)  Apparently I underestimated the impact anyways.  I did discuss it a bit with Chong Yidong because he had made some comments a while back in response to my talking about the "--version" problem, but I didn't bring up my planned change on the list.

It seems like half the seemingly-minor tweaks I do relating to the build system wind up stomping on the DOS/Windows builds in some subtle way I didn't expect.  *sigh*  Next time I'll try to make sure you're in the loop....  I don't have any more such changes planned right now though.

Ken


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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-20 18:01   ` Eli Zaretskii
  2010-05-21  1:39     ` Ken Raeburn
@ 2010-05-21  5:44     ` Ulrich Mueller
  1 sibling, 0 replies; 27+ messages in thread
From: Ulrich Mueller @ 2010-05-21  5:44 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: jtk, Ken Raeburn, emacs-devel

>>>>> On Thu, 20 May 2010, Eli Zaretskii wrote:

> Until someone moves it again, that is...

> Why was it moved, anyway? I don't remember any discussions of that,
> apologies if I missed something. The string was in version.el since
> forever.

It was there in Emacs 16.56 already. If the location is changing only
every 25 years, then I won't complain. ;-)

Ulrich



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-21  1:39     ` Ken Raeburn
@ 2010-05-21  5:44       ` Eli Zaretskii
  2010-05-21 20:19       ` Stefan Monnier
  1 sibling, 0 replies; 27+ messages in thread
From: Eli Zaretskii @ 2010-05-21  5:44 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: emacs-devel

> From: Ken Raeburn <raeburn@raeburn.org>
> Date: Thu, 20 May 2010 21:39:53 -0400
> Cc: "Emacs Dev \[emacs-devel\]" <emacs-devel@gnu.org>
> 
> Making the C code aware of the version number seemed like the
> easiest way to deal with it.  I'm sorry about the problem with the
> MS-DOS build; I took this approach because I thought that it (unlike
> trying to generate all version-string appearances from one canonical
> source) would be a simple, relatively minor change with little
> impact on the DOS/Windows builds.

It _is_ with little impact, but the DOS build looks into version.el to
set $(version) in the top-level Makefile, which all the sub-Make's
then use.  You probably didn't think of grepping the files in the
msdos/ subdirectory when you looked for the effects of that change.  I
will fix this when I have time.

I don't expect anyone to know all those factoids, much less being an
expert on how the DOS port builds and works.  Just talking before
changes like that are made is good enough.



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-21  1:39     ` Ken Raeburn
  2010-05-21  5:44       ` Eli Zaretskii
@ 2010-05-21 20:19       ` Stefan Monnier
  2010-05-21 21:33         ` Eli Zaretskii
  1 sibling, 1 reply; 27+ messages in thread
From: Stefan Monnier @ 2010-05-21 20:19 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: Eli Zaretskii, Emacs Dev [emacs-devel]

> "emacs --version" would print out the version if it was set, otherwise
> ignore the option; it does this early in main(), before Lisp code is
> loaded.  The "make install" rule always runs "emacs --version" to
> figure out the DOC file name.  If you build with CANNOT_DUMP, the
> emacs binary that gets run hasn't had the basic Lisp code pre-loaded
> into it.  So "emacs --version" pops up a window.

A simple fix is to get rid of the DOC-NN.NN.NN madness and just use
"DOC" as the file name.  Any objection?


        Stefan



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-21 20:19       ` Stefan Monnier
@ 2010-05-21 21:33         ` Eli Zaretskii
  2010-05-22  0:54           ` Stefan Monnier
  2010-05-22 16:03           ` Richard Stallman
  0 siblings, 2 replies; 27+ messages in thread
From: Eli Zaretskii @ 2010-05-21 21:33 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: raeburn, emacs-devel

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: Eli Zaretskii <eliz@gnu.org>,  "Emacs Dev \[emacs-devel\]" <emacs-devel@gnu.org>
> Date: Fri, 21 May 2010 16:19:32 -0400
> 
> > "emacs --version" would print out the version if it was set, otherwise
> > ignore the option; it does this early in main(), before Lisp code is
> > loaded.  The "make install" rule always runs "emacs --version" to
> > figure out the DOC file name.  If you build with CANNOT_DUMP, the
> > emacs binary that gets run hasn't had the basic Lisp code pre-loaded
> > into it.  So "emacs --version" pops up a window.
> 
> A simple fix is to get rid of the DOC-NN.NN.NN madness and just use
> "DOC" as the file name.  Any objection?

Would the emacs-NN.NN.NN madness go with it as well?



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-21 21:33         ` Eli Zaretskii
@ 2010-05-22  0:54           ` Stefan Monnier
  2010-05-22  2:24             ` Ken Raeburn
  2010-05-22  6:32             ` Eli Zaretskii
  2010-05-22 16:03           ` Richard Stallman
  1 sibling, 2 replies; 27+ messages in thread
From: Stefan Monnier @ 2010-05-22  0:54 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: raeburn, emacs-devel

>> > "emacs --version" would print out the version if it was set, otherwise
>> > ignore the option; it does this early in main(), before Lisp code is
>> > loaded.  The "make install" rule always runs "emacs --version" to
>> > figure out the DOC file name.  If you build with CANNOT_DUMP, the
>> > emacs binary that gets run hasn't had the basic Lisp code pre-loaded
>> > into it.  So "emacs --version" pops up a window.
>> A simple fix is to get rid of the DOC-NN.NN.NN madness and just use
>> "DOC" as the file name.  Any objection?
> Would the emacs-NN.NN.NN madness go with it as well?

I'd be in favor of it, tho I don't really care.


        Stefan



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-22  0:54           ` Stefan Monnier
@ 2010-05-22  2:24             ` Ken Raeburn
  2010-05-22 13:07               ` Stefan Monnier
  2010-05-22  6:32             ` Eli Zaretskii
  1 sibling, 1 reply; 27+ messages in thread
From: Ken Raeburn @ 2010-05-22  2:24 UTC (permalink / raw)
  To: Emacs Developers

On May 21, 2010, at 20:54, Stefan Monnier wrote:
>>> A simple fix is to get rid of the DOC-NN.NN.NN madness and just use
>>> "DOC" as the file name.  Any objection?
>> Would the emacs-NN.NN.NN madness go with it as well?
> 
> I'd be in favor of it, tho I don't really care.

I thought about that, and was trying to guess what reasons there might be for keeping it as is.  All I could come up with was using one emacs binary while installing a newly-compiled one into the same tree.  If you change the doc strings or order of functions in the emacs C sources, or the pre-loaded Lisp sources, the offsets in the DOC file may change, so the values loaded into one Emacs binary correspond to its matching DOC file.  (Though there are attempts to keep them consistent by running make-docfile on all the stuff you *might* be loading depending on the configuration, via ${SOME_MACHINE_OBJECTS}.)

Though, I've also been wondering if it would be worthwhile to compile those doc strings into read-only data (shared between processes) in the Emacs binary itself, and scrap the DOC file altogether.  Through the wonder of gcc 'section' attributes, we could (depending on the configuration) even lump all the documentation together on disk pages that don't even need to get loaded unless you actually reference them.  Without the emacs/DOC file coordination to worry about, simply installing a new binary after deleting the old one or renaming it to "emacs.old" should be safer on most systems, even if you're running the old one.

Ken


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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-22  0:54           ` Stefan Monnier
  2010-05-22  2:24             ` Ken Raeburn
@ 2010-05-22  6:32             ` Eli Zaretskii
  1 sibling, 0 replies; 27+ messages in thread
From: Eli Zaretskii @ 2010-05-22  6:32 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: raeburn, emacs-devel

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Fri, 21 May 2010 20:54:00 -0400
> Cc: raeburn@raeburn.org, emacs-devel@gnu.org
> 
> >> > "emacs --version" would print out the version if it was set, otherwise
> >> > ignore the option; it does this early in main(), before Lisp code is
> >> > loaded.  The "make install" rule always runs "emacs --version" to
> >> > figure out the DOC file name.  If you build with CANNOT_DUMP, the
> >> > emacs binary that gets run hasn't had the basic Lisp code pre-loaded
> >> > into it.  So "emacs --version" pops up a window.
> >> A simple fix is to get rid of the DOC-NN.NN.NN madness and just use
> >> "DOC" as the file name.  Any objection?
> > Would the emacs-NN.NN.NN madness go with it as well?
> 
> I'd be in favor of it, tho I don't really care.

Without its companion DOC-NN.NN.NN, emacs-NN.NN.NN is not really fully
operational.



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-22  2:24             ` Ken Raeburn
@ 2010-05-22 13:07               ` Stefan Monnier
  0 siblings, 0 replies; 27+ messages in thread
From: Stefan Monnier @ 2010-05-22 13:07 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: Emacs Developers

> while installing a newly-compiled one into the same tree.  If you change
> the doc strings or order of functions in the emacs C sources, or the
> pre-loaded Lisp sources, the offsets in the DOC file may change, so the
> values loaded into one Emacs binary correspond to its matching DOC file.

That's OK: there's code to detect such "out of date offsets" that then
calls Snarf-documentation again to reset the offsets.
It doesn't work in every possible case, but I've been using such a setup
for many years now and have seen a wrong docstring only maybe twice.


        Stefan



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-21 21:33         ` Eli Zaretskii
  2010-05-22  0:54           ` Stefan Monnier
@ 2010-05-22 16:03           ` Richard Stallman
  2010-05-23 13:19             ` Stefan Monnier
  1 sibling, 1 reply; 27+ messages in thread
From: Richard Stallman @ 2010-05-22 16:03 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: raeburn, monnier, emacs-devel

    > A simple fix is to get rid of the DOC-NN.NN.NN madness and just use
    > "DOC" as the file name.  Any objection?

    Would the emacs-NN.NN.NN madness go with it as well?

Using version numbers in the DOC file name (and elsewhere) makes it
possible for multiple Emacs versions to coexist.  And putting the version
numbers in the executables is useful for this too.  You can install
the executable under whatever name you like.



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-22 16:03           ` Richard Stallman
@ 2010-05-23 13:19             ` Stefan Monnier
  2010-05-23 13:44               ` Lennart Borgman
                                 ` (2 more replies)
  0 siblings, 3 replies; 27+ messages in thread
From: Stefan Monnier @ 2010-05-23 13:19 UTC (permalink / raw)
  To: rms; +Cc: Eli Zaretskii, raeburn, emacs-devel

>> A simple fix is to get rid of the DOC-NN.NN.NN madness and just use
>> "DOC" as the file name.  Any objection?
>     Would the emacs-NN.NN.NN madness go with it as well?

> Using version numbers in the DOC file name (and elsewhere) makes it
> possible for multiple Emacs versions to coexist.

I have several co-existing `emacs' executables here, and they coexist
just fine with a single DOC file.  They just all show the same
docstrings, which I wouldn't even consider as an issue.


        Stefan



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-23 13:19             ` Stefan Monnier
@ 2010-05-23 13:44               ` Lennart Borgman
  2010-05-23 14:16               ` Drew Adams
  2010-05-24 15:38               ` Richard Stallman
  2 siblings, 0 replies; 27+ messages in thread
From: Lennart Borgman @ 2010-05-23 13:44 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, raeburn, rms, emacs-devel

On Sun, May 23, 2010 at 3:19 PM, Stefan Monnier
<monnier@iro.umontreal.ca> wrote:
>>> A simple fix is to get rid of the DOC-NN.NN.NN madness and just use
>>> "DOC" as the file name.  Any objection?
>>     Would the emacs-NN.NN.NN madness go with it as well?
>
>> Using version numbers in the DOC file name (and elsewhere) makes it
>> possible for multiple Emacs versions to coexist.
>
> I have several co-existing `emacs' executables here, and they coexist
> just fine with a single DOC file.  They just all show the same
> docstrings, which I wouldn't even consider as an issue.

If someone think that is problematic then perhaps Emacs could look for
DOC-NN.NN.NN first and use that if it happens to exist (i.e. is copied
by the user).



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

* RE: Canonical location for emacs-version string in source tree?
  2010-05-23 13:19             ` Stefan Monnier
  2010-05-23 13:44               ` Lennart Borgman
@ 2010-05-23 14:16               ` Drew Adams
  2010-05-24 13:14                 ` Stefan Monnier
  2010-05-24 13:58                 ` Ken Raeburn
  2010-05-24 15:38               ` Richard Stallman
  2 siblings, 2 replies; 27+ messages in thread
From: Drew Adams @ 2010-05-23 14:16 UTC (permalink / raw)
  To: 'Stefan Monnier', rms
  Cc: 'Eli Zaretskii', raeburn, emacs-devel

> >> A simple fix is to get rid of the DOC-NN.NN.NN madness and just use
> >> "DOC" as the file name.  Any objection?
> >     Would the emacs-NN.NN.NN madness go with it as well?
> 
> > Using version numbers in the DOC file name (and elsewhere) makes it
> > possible for multiple Emacs versions to coexist.
> 
> I have several co-existing `emacs' executables here, and they coexist
> just fine with a single DOC file.  They just all show the same
> docstrings, which I wouldn't even consider as an issue.

I haven't been following this thread, so excuse me if I misunderstand.

I have multiple Emacs versions installed (multiple binaries), and I expect each
of them to faithfully have its own set of doc strings, that is, specific to the
particular build.  Trying to deal with doc bugs and improvements would be
problematic without this distinction.

That concern might be irrelevant to having "a single DOC file" in the source
tree - dunno.  I'm not concerned about the build process, but I would not want
multiple binaries of Emacs on my machine to show the same set of doc strings.




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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-23 14:16               ` Drew Adams
@ 2010-05-24 13:14                 ` Stefan Monnier
  2010-05-24 13:57                   ` Drew Adams
  2010-05-24 13:58                 ` Ken Raeburn
  1 sibling, 1 reply; 27+ messages in thread
From: Stefan Monnier @ 2010-05-24 13:14 UTC (permalink / raw)
  To: Drew Adams; +Cc: 'Eli Zaretskii', raeburn, rms, emacs-devel

> I have multiple Emacs versions installed (multiple binaries), and
> I expect each of them to faithfully have its own set of doc strings,
> that is, specific to the particular build.  Trying to deal with doc
> bugs and improvements would be problematic without this distinction.

Please explain more precisely your use case.

> That concern might be irrelevant to having "a single DOC file" in the
> source tree - dunno.  I'm not concerned about the build process, but
> I would not want multiple binaries of Emacs on my machine to show the
> same set of doc strings.

They already show the same docstrings for all non-preloaded files.


        Stefan



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

* RE: Canonical location for emacs-version string in source tree?
  2010-05-24 13:14                 ` Stefan Monnier
@ 2010-05-24 13:57                   ` Drew Adams
  2010-05-24 14:13                     ` Stefan Monnier
  0 siblings, 1 reply; 27+ messages in thread
From: Drew Adams @ 2010-05-24 13:57 UTC (permalink / raw)
  To: 'Stefan Monnier'
  Cc: 'Eli Zaretskii', raeburn, rms, emacs-devel

> > I have multiple Emacs versions installed (multiple binaries), and
> > I expect each of them to faithfully have its own set of doc strings,
> > that is, specific to the particular build.  Trying to deal with doc
> > bugs and improvements would be problematic without this distinction.
> 
> Please explain more precisely your use case.

? 

The doc a user sees for a given version should be up-to-date and reflect that
version faithfully. That's all.

> > That concern might be irrelevant to having "a single DOC 
> > file" in the source tree - dunno.  I'm not concerned about
> > the build process, but I would not want multiple binaries
> > of Emacs on my machine to show the same set of doc strings.
> 
> They already show the same docstrings for all non-preloaded files.

If a doc string has changed between versions then the versions should not show
the same doc string (which is the case currently). That's appropriate: the doc
strings for a given version should be up-to-date, reflecting that version.

As I say, perhaps the proposed change will not affect that. Just asking.




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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-23 14:16               ` Drew Adams
  2010-05-24 13:14                 ` Stefan Monnier
@ 2010-05-24 13:58                 ` Ken Raeburn
  2010-05-24 14:16                   ` Stefan Monnier
  2010-05-24 14:21                   ` Drew Adams
  1 sibling, 2 replies; 27+ messages in thread
From: Ken Raeburn @ 2010-05-24 13:58 UTC (permalink / raw)
  To: Drew Adams
  Cc: 'Eli Zaretskii', emacs-devel, 'Stefan Monnier',
	rms

On May 23, 2010, at 10:16, Drew Adams wrote:
> I have multiple Emacs versions installed (multiple binaries), and I expect each
> of them to faithfully have its own set of doc strings, that is, specific to the
> particular build.  Trying to deal with doc bugs and improvements would be
> problematic without this distinction.

The release version number is coded into the directory name, so it's only different builds of the same release that would have the DOC files winding up in the same directory.  And the build process jumps through some hoops to ensure that the file is consistently built from the same input files, regardless of build options.  And as Stefan has pointed out, there's code to detect when the offsets are wrong (e.g., if functions got added, removed, or reordered).  So if we didn't use filenames varying for each build, the doc strings would actually have to change between builds for the result to be wrong, which I think pretty much confines it to developers' builds.  And even then, it probably doesn't matter much unless the semantics of a function change; having an old binary see typographical or grammatical fixes from a newer build may be less objectionable.

(The Windows build appears to be different on the naming score, with DOC and DOC-X instead of DOC-nn.nn.nn; I don't know about the other stuff.)

Still, I'm inclined to think it's better that each version uses the doc strings it was built and installed with.

Possibly more important is that multiple versions installed under the same prefix with the same release version number will share lisp files, even if the lisp files have changed.  So I'm a bit skeptical of the utility of keeping the binaries separate from one install to the next.

> That concern might be irrelevant to having "a single DOC file" in the source
> tree - dunno.  I'm not concerned about the build process, but I would not want
> multiple binaries of Emacs on my machine to show the same set of doc strings.

Ken


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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-24 13:57                   ` Drew Adams
@ 2010-05-24 14:13                     ` Stefan Monnier
  2010-05-24 14:25                       ` Drew Adams
  0 siblings, 1 reply; 27+ messages in thread
From: Stefan Monnier @ 2010-05-24 14:13 UTC (permalink / raw)
  To: Drew Adams; +Cc: 'Eli Zaretskii', raeburn, rms, emacs-devel

>> > I have multiple Emacs versions installed (multiple binaries), and
>> > I expect each of them to faithfully have its own set of doc strings,
>> > that is, specific to the particular build.  Trying to deal with doc
>> > bugs and improvements would be problematic without this distinction.
>> Please explain more precisely your use case.

> ?
> The doc a user sees for a given version should be up-to-date and reflect that
> version faithfully. That's all.

That's neither precise, nor is it a use case.

In any case, IIUC your use-case (which you fail to describe) is
unaffected because you don't use several binary executables that share
the same source tree, same DOC file and same lisp tree.


        Stefan



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-24 13:58                 ` Ken Raeburn
@ 2010-05-24 14:16                   ` Stefan Monnier
  2010-05-24 14:50                     ` Ken Raeburn
  2010-05-24 14:21                   ` Drew Adams
  1 sibling, 1 reply; 27+ messages in thread
From: Stefan Monnier @ 2010-05-24 14:16 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: 'Eli Zaretskii', rms, Drew Adams, emacs-devel

> Still, I'm inclined to think it's better that each version uses the
> doc strings it was built and installed with.

Even tho noone cares that it will still use "the latest .elc file
around" for the non-prebuilt packages?  And "the docstring from the
latest .elc file" for non-preloaded packages that have been modified
and recompiled since you loaded that package?


        Stefan



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

* RE: Canonical location for emacs-version string in source tree?
  2010-05-24 13:58                 ` Ken Raeburn
  2010-05-24 14:16                   ` Stefan Monnier
@ 2010-05-24 14:21                   ` Drew Adams
  1 sibling, 0 replies; 27+ messages in thread
From: Drew Adams @ 2010-05-24 14:21 UTC (permalink / raw)
  To: 'Ken Raeburn'
  Cc: 'Eli Zaretskii', emacs-devel, 'Stefan Monnier',
	rms

> > I have multiple Emacs versions installed (multiple 
> > binaries), and I expect each of them to faithfully have
> > its own set of doc strings, that is, specific to the
> > particular build.  Trying to deal with doc bugs and 
> > improvements would be problematic without this distinction.
> 
> The release version number is coded into the directory name, 
> so it's only different builds of the same release that would 
> have the DOC files winding up in the same directory.  And the 
> build process jumps through some hoops to ensure that the 
> file is consistently built from the same input files, 
> regardless of build options.  And as Stefan has pointed out, 
> there's code to detect when the offsets are wrong (e.g., if 
> functions got added, removed, or reordered).  So if we didn't 
> use filenames varying for each build, the doc strings would 
> actually have to change between builds for the result to be 
> wrong, which I think pretty much confines it to developers' 
> builds.  And even then, it probably doesn't matter much 
> unless the semantics of a function change; having an old 
> binary see typographical or grammatical fixes from a newer 
> build may be less objectionable.
> 
> (The Windows build appears to be different on the naming 
> score, with DOC and DOC-X instead of DOC-nn.nn.nn; I don't 
> know about the other stuff.)
> 
> Still, I'm inclined to think it's better that each version 
> uses the doc strings it was built and installed with.
> 
> Possibly more important is that multiple versions installed 
> under the same prefix with the same release version number 
> will share lisp files, even if the lisp files have changed.  
> So I'm a bit skeptical of the utility of keeping the binaries 
> separate from one install to the next.
> 
> > That concern might be irrelevant to having "a single DOC 
> > file" in the source tree - dunno.  I'm not concerned about
> > the build process, but I would not want multiple binaries
> > of Emacs on my machine to show the same set of doc strings.

Thanks for trying to clarify. My impression from your first paragraph was that
this only affected the build process, not the resulting binaries, so there would
be no problem for users of different binaries seeing the proper doc.

But your last paragraph gives me the opposite impression wrt Lisp code. I admit
I don't really understand.

What I would like is (as now) for each binary (development build) that I use to
have the doc and source code that belongs to it, so I can refer to that doc and
code accurately. If nothing else, that is important for investigating bugs and
filing bug reports.

If that were not the case, it would affect also bug reports that 3rd-party
libraries receive from users of Emacs development versions. Those users need to
have access to the latest (for their build) doc and source code. And so do the
3rd-party developers who try to investigate such bug reports.

Recently I reported an Emacs bug that I narrowed down to changes made between
two particular dates. (Unfortunately, those dates were not close together.) With
the proposed change I might still be able to do that in terms of binary
behavior, but if the source code did not actually differ between the two builds
then I would not be able to use the debugger on the source code or otherwise dig
deeper to find the change that introduced the bug.

I'm guessing that I am just not understanding the issue at all, however. I
cannot imagine that builds would be made available for testing that would not
contain the relevant (up-to-date) doc strings or source code.




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

* RE: Canonical location for emacs-version string in source tree?
  2010-05-24 14:13                     ` Stefan Monnier
@ 2010-05-24 14:25                       ` Drew Adams
  0 siblings, 0 replies; 27+ messages in thread
From: Drew Adams @ 2010-05-24 14:25 UTC (permalink / raw)
  To: 'Stefan Monnier'
  Cc: 'Eli Zaretskii', raeburn, rms, emacs-devel

> > The doc a user sees for a given version should be 
> > up-to-date and reflect that version faithfully. That's all.
> 
> In any case, IIUC your use-case (which you fail to describe) is
> unaffected because you don't use several binary executables that share
> the same source tree, same DOC file and same lisp tree.

No, I do not. I was afraid that the proposed change would make that the case, so
that different builds for the same release that I obtain as Windows binaries
would somehow have exactly the same doc (and Lisp source code?). That would be
bad.

As I said before, I did not understand the proposal (and still don't). But IIUC
now, it seems to affect only those who build Emacs and not those of us who use
prebuilt (e.g. by Sean) Windows binaries. The zip file for a given prebuilt
Windows binary will, IIUC, still contain the up-to-date doc and Lisp code.

If so, fine, and please ignore the noise of my question and lack of
understanding.




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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-24 14:16                   ` Stefan Monnier
@ 2010-05-24 14:50                     ` Ken Raeburn
  0 siblings, 0 replies; 27+ messages in thread
From: Ken Raeburn @ 2010-05-24 14:50 UTC (permalink / raw)
  To: Emacs Developers

On May 24, 2010, at 10:16, Stefan Monnier wrote:
>> Still, I'm inclined to think it's better that each version uses the
>> doc strings it was built and installed with.
> 
> Even tho noone cares that it will still use "the latest .elc file
> around" for the non-prebuilt packages?  And "the docstring from the
> latest .elc file" for non-preloaded packages that have been modified
> and recompiled since you loaded that package?

Well, I think it would make sense for it *all* to stay consistent, once installed, or don't even try; the Lisp issue is why I said I'm skeptical of the utility of keeping separate binaries.  They get separate doc files but use the latest lisp files (and other stuff), and if the old binary is already running, or if there were changes in the pre-loaded lisp files, the old binary may run into inconsistencies in the interfaces in the Lisp code loaded.  On the other hand, if this use case is dependent on stuff not changing much, shouldn't that include the DOC file data?

Most other packages I've seen don't make any effort to keep the old installed binaries useable after a new installation of the same version (or if they do, it's by renaming the old installed binary to "foo.old", not by coming up with new names for each new install), and Emacs only does it part-way.  I don't think it's worth the effort.  If you really want separately useable versions, use --prefix or --program-transform-name or something.  Or we could make Emacs figure out where it lives at run time and compute relative paths to the Lisp and other support files so the whole tree can be relocated if the developer wants to save it, much like Emacs.app on the Mac.

Ken


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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-23 13:19             ` Stefan Monnier
  2010-05-23 13:44               ` Lennart Borgman
  2010-05-23 14:16               ` Drew Adams
@ 2010-05-24 15:38               ` Richard Stallman
  2010-05-24 17:44                 ` Stefan Monnier
  2 siblings, 1 reply; 27+ messages in thread
From: Richard Stallman @ 2010-05-24 15:38 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: eliz, raeburn, emacs-devel

    I have several co-existing `emacs' executables here, and they coexist
    just fine with a single DOC file.  They just all show the same
    docstrings, which I wouldn't even consider as an issue.

That means only one of them gives the correct doc strings.

I set up a mechanism that has worked fine for decades
and enables each version to display its own doc string.
Please don't break it.



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

* Re: Canonical location for emacs-version string in source tree?
  2010-05-24 15:38               ` Richard Stallman
@ 2010-05-24 17:44                 ` Stefan Monnier
  0 siblings, 0 replies; 27+ messages in thread
From: Stefan Monnier @ 2010-05-24 17:44 UTC (permalink / raw)
  To: rms; +Cc: eliz, raeburn, emacs-devel

>     I have several co-existing `emacs' executables here, and they coexist
>     just fine with a single DOC file.  They just all show the same
>     docstrings, which I wouldn't even consider as an issue.
> That means only one of them gives the correct doc strings.

Depends what you mean by "correct docstrings".  It means they will all
show the latest docstrings, which are usually the more correct ones, in
my world.  As you know all too well, documentation is not quite like
code.  It's for that same reason that we do not need to document every
docstring change in the ChangeLog.

> I set up a mechanism that has worked fine for decades
> and enables each version to display its own doc string.

Actually, it stopped working when we started to leave docstrings (and
"worse": byte-code) in the .elc files.  Ever since this (good) change
was installed your mechanism has only worked for pre-loaded packages.
And noone complained about it, AFAICT, so this subtlety you're trying to
defend is really not worth the trouble.

My bet is that if you try it, you won't notice the difference.


        Stefan



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

end of thread, other threads:[~2010-05-24 17:44 UTC | newest]

Thread overview: 27+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-05-20 16:57 Canonical location for emacs-version string in source tree? Jeff Kowalczyk
2010-05-20 17:12 ` Ken Raeburn
2010-05-20 18:01   ` Eli Zaretskii
2010-05-21  1:39     ` Ken Raeburn
2010-05-21  5:44       ` Eli Zaretskii
2010-05-21 20:19       ` Stefan Monnier
2010-05-21 21:33         ` Eli Zaretskii
2010-05-22  0:54           ` Stefan Monnier
2010-05-22  2:24             ` Ken Raeburn
2010-05-22 13:07               ` Stefan Monnier
2010-05-22  6:32             ` Eli Zaretskii
2010-05-22 16:03           ` Richard Stallman
2010-05-23 13:19             ` Stefan Monnier
2010-05-23 13:44               ` Lennart Borgman
2010-05-23 14:16               ` Drew Adams
2010-05-24 13:14                 ` Stefan Monnier
2010-05-24 13:57                   ` Drew Adams
2010-05-24 14:13                     ` Stefan Monnier
2010-05-24 14:25                       ` Drew Adams
2010-05-24 13:58                 ` Ken Raeburn
2010-05-24 14:16                   ` Stefan Monnier
2010-05-24 14:50                     ` Ken Raeburn
2010-05-24 14:21                   ` Drew Adams
2010-05-24 15:38               ` Richard Stallman
2010-05-24 17:44                 ` Stefan Monnier
2010-05-21  5:44     ` Ulrich Mueller
2010-05-20 19:57   ` Stefan Monnier

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).