all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* A target that's even more bootstrap?
@ 2019-06-18 11:22 Lars Ingebrigtsen
  2019-06-18 12:16 ` Andreas Schwab
                   ` (2 more replies)
  0 siblings, 3 replies; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-18 11:22 UTC (permalink / raw)
  To: emacs-devel

Unless I'm reading the makefile wrong, there's no target there to say
"remove all compiler artefacts and then recompile"?

There's bootstrap-clean and extraclean, but if you run those, "make" no
longer works and you have to use "sh autogen.sh; ./configure"
manually...  (And if you run bootstrap-clean/extraclean in the wrong
order, you're left with a lot of non-cleaned-up files, so it's rather
confusing.)

Would it be an idea to have a target like "full-bootstrap" that does
these things for you in the correct order?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




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

* Re: A target that's even more bootstrap?
  2019-06-18 11:22 A target that's even more bootstrap? Lars Ingebrigtsen
@ 2019-06-18 12:16 ` Andreas Schwab
  2019-06-18 12:27   ` Lars Ingebrigtsen
  2019-06-18 12:53 ` Phillip Lord
  2019-06-18 15:53 ` Eli Zaretskii
  2 siblings, 1 reply; 59+ messages in thread
From: Andreas Schwab @ 2019-06-18 12:16 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

On Jun 18 2019, Lars Ingebrigtsen <larsi@gnus.org> wrote:

> Unless I'm reading the makefile wrong, there's no target there to say
> "remove all compiler artefacts and then recompile"?

make bootstrap?

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."



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

* Re: A target that's even more bootstrap?
  2019-06-18 12:16 ` Andreas Schwab
@ 2019-06-18 12:27   ` Lars Ingebrigtsen
  0 siblings, 0 replies; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-18 12:27 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: emacs-devel

Andreas Schwab <schwab@suse.de> writes:

> On Jun 18 2019, Lars Ingebrigtsen <larsi@gnus.org> wrote:
>
>> Unless I'm reading the makefile wrong, there's no target there to say
>> "remove all compiler artefacts and then recompile"?
>
> make bootstrap?

No, that neglects to remove dozens of generated files.  Only extraclean
will remove those, apparently.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-18 11:22 A target that's even more bootstrap? Lars Ingebrigtsen
  2019-06-18 12:16 ` Andreas Schwab
@ 2019-06-18 12:53 ` Phillip Lord
  2019-06-18 13:20   ` Stefan Monnier
  2019-06-18 16:03   ` Eli Zaretskii
  2019-06-18 15:53 ` Eli Zaretskii
  2 siblings, 2 replies; 59+ messages in thread
From: Phillip Lord @ 2019-06-18 12:53 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Unless I'm reading the makefile wrong, there's no target there to say
> "remove all compiler artefacts and then recompile"?
>
> There's bootstrap-clean and extraclean, but if you run those, "make" no
> longer works and you have to use "sh autogen.sh; ./configure"
> manually...  (And if you run bootstrap-clean/extraclean in the wrong
> order, you're left with a lot of non-cleaned-up files, so it's rather
> confusing.)
>
> Would it be an idea to have a target like "full-bootstrap" that does
> these things for you in the correct order?

Perhaps it is worth considering the opposite approach. Currently, we
have

mostlyclean
clean
distclean
maintainer-clean
extraclean
bootstrap-clean

The the irregular hyphenation is a bit odd. But, in addition, I would
guess that many of these levels (maintainer-clean, extraclean and
bootstrap-clean) are really only there to save time; with parallel
builds and faster machines I wonder how many of these are actually
needed.

If I understand it, distclean is most severe. So, why not ditch
everything other than distclean and clean?

Phil



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

* Re: A target that's even more bootstrap?
  2019-06-18 12:53 ` Phillip Lord
@ 2019-06-18 13:20   ` Stefan Monnier
  2019-06-18 13:28     ` Lars Ingebrigtsen
  2019-06-18 16:03   ` Eli Zaretskii
  1 sibling, 1 reply; 59+ messages in thread
From: Stefan Monnier @ 2019-06-18 13:20 UTC (permalink / raw)
  To: emacs-devel

> Perhaps it is worth considering the opposite approach. Currently, we
> have
>
> mostlyclean
> clean
> distclean
> maintainer-clean
> extraclean
> bootstrap-clean

FWIW, my main problem with the above is that their name doesn't actually
say what they do, so I never know which one to use.
I find those names unusually obscure.

> The the irregular hyphenation is a bit odd. But, in addition, I would
> guess that many of these levels (maintainer-clean, extraclean and
> bootstrap-clean) are really only there to save time; with parallel
> builds and faster machines I wonder how many of these are
> actually needed.

FWIW none of my machines have gotten any faster over the last 10 years.


        Stefan




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

* Re: A target that's even more bootstrap?
  2019-06-18 13:20   ` Stefan Monnier
@ 2019-06-18 13:28     ` Lars Ingebrigtsen
  0 siblings, 0 replies; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-18 13:28 UTC (permalink / raw)
  To: emacs-devel

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

> FWIW, my main problem with the above is that their name doesn't actually
> say what they do, so I never know which one to use.
> I find those names unusually obscure.

Yeah, me too.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-18 11:22 A target that's even more bootstrap? Lars Ingebrigtsen
  2019-06-18 12:16 ` Andreas Schwab
  2019-06-18 12:53 ` Phillip Lord
@ 2019-06-18 15:53 ` Eli Zaretskii
  2019-06-18 15:58   ` Lars Ingebrigtsen
  2 siblings, 1 reply; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-18 15:53 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Tue, 18 Jun 2019 13:22:02 +0200
> 
> Unless I'm reading the makefile wrong, there's no target there to say
> "remove all compiler artefacts and then recompile"?
> 
> There's bootstrap-clean and extraclean, but if you run those, "make" no
> longer works and you have to use "sh autogen.sh; ./configure"
> manually...  (And if you run bootstrap-clean/extraclean in the wrong
> order, you're left with a lot of non-cleaned-up files, so it's rather
> confusing.)
> 
> Would it be an idea to have a target like "full-bootstrap" that does
> these things for you in the correct order?

The top-level Makefile.in documents what each of these targets does,
so "make extraclean" is supposed to be it.  If it falls short, we
should fix it.

I see no problem with the need to run autogen.sh and the configure
script: this target is supposed to get you into the state identical to
a fresh checkout, so you do have to start with autogen.sh.



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

* Re: A target that's even more bootstrap?
  2019-06-18 15:53 ` Eli Zaretskii
@ 2019-06-18 15:58   ` Lars Ingebrigtsen
  2019-06-18 16:54     ` Eli Zaretskii
  2019-06-18 17:47     ` Andy Moreton
  0 siblings, 2 replies; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-18 15:58 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> I see no problem with the need to run autogen.sh and the configure
> script: this target is supposed to get you into the state identical to
> a fresh checkout, so you do have to start with autogen.sh.

No, after a fresh checkout you can just say "make" and it figures
everything out by itself (on Linux, at least).

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-18 12:53 ` Phillip Lord
  2019-06-18 13:20   ` Stefan Monnier
@ 2019-06-18 16:03   ` Eli Zaretskii
  2019-06-19  9:29     ` Phillip Lord
  2019-06-19 13:15     ` Lars Ingebrigtsen
  1 sibling, 2 replies; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-18 16:03 UTC (permalink / raw)
  To: Phillip Lord; +Cc: larsi, emacs-devel

> From: phillip.lord@russet.org.uk (Phillip Lord)
> Date: Tue, 18 Jun 2019 13:53:02 +0100
> Cc: emacs-devel@gnu.org
> 
> mostlyclean
> clean
> distclean
> maintainer-clean
> extraclean
> bootstrap-clean
> 
> The the irregular hyphenation is a bit odd.

clean, distclean, mostlyclean, and maintainer-clean are from the GNU
Coding Standards (GCS).  Many projects have extraclean.  So this is
tradition of sorts.

> But, in addition, I would guess that many of these levels
> (maintainer-clean, extraclean and bootstrap-clean) are really only
> there to save time; with parallel builds and faster machines I
> wonder how many of these are actually needed.

AFAIK, the issue at hand is not the speed, the issue is to know what
generated files get deleted.  Some builds require a specific target
from this list to be run before the build.  For example, if you weant
to reconfigure from scratch, you want distclean.

> If I understand it, distclean is most severe. So, why not ditch
> everything other than distclean and clean?

Because the GCS says otherwise?



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

* Re: A target that's even more bootstrap?
  2019-06-18 15:58   ` Lars Ingebrigtsen
@ 2019-06-18 16:54     ` Eli Zaretskii
  2019-06-18 17:47     ` Andy Moreton
  1 sibling, 0 replies; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-18 16:54 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: emacs-devel@gnu.org
> Date: Tue, 18 Jun 2019 17:58:02 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > I see no problem with the need to run autogen.sh and the configure
> > script: this target is supposed to get you into the state identical to
> > a fresh checkout, so you do have to start with autogen.sh.
> 
> No, after a fresh checkout you can just say "make" and it figures
> everything out by itself (on Linux, at least).

Then we have yet another bug to be fixed in "extraclean".



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

* Re: A target that's even more bootstrap?
  2019-06-18 15:58   ` Lars Ingebrigtsen
  2019-06-18 16:54     ` Eli Zaretskii
@ 2019-06-18 17:47     ` Andy Moreton
  2019-06-18 19:22       ` Óscar Fuentes
  1 sibling, 1 reply; 59+ messages in thread
From: Andy Moreton @ 2019-06-18 17:47 UTC (permalink / raw)
  To: emacs-devel

On Tue 18 Jun 2019, Lars Ingebrigtsen wrote:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>> I see no problem with the need to run autogen.sh and the configure
>> script: this target is supposed to get you into the state identical to
>> a fresh checkout, so you do have to start with autogen.sh.
>
> No, after a fresh checkout you can just say "make" and it figures
> everything out by itself (on Linux, at least).

...but not if you want an out of tree build (which should be the default
so nothing modifes the source tree).

    AndyM




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

* Re: A target that's even more bootstrap?
  2019-06-18 17:47     ` Andy Moreton
@ 2019-06-18 19:22       ` Óscar Fuentes
  2019-06-19  4:32         ` Elias Mårtenson
  2019-06-19 12:33         ` Andy Moreton
  0 siblings, 2 replies; 59+ messages in thread
From: Óscar Fuentes @ 2019-06-18 19:22 UTC (permalink / raw)
  To: emacs-devel

Andy Moreton <andrewjmoreton@gmail.com> writes:

>> No, after a fresh checkout you can just say "make" and it figures
>> everything out by itself (on Linux, at least).
>
> ...but not if you want an out of tree build (which should be the default
> so nothing modifes the source tree).

In Emacs, out of tree builds are peculiar because they put build
products in the source tree (.elc files).




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

* Re: A target that's even more bootstrap?
  2019-06-18 19:22       ` Óscar Fuentes
@ 2019-06-19  4:32         ` Elias Mårtenson
  2019-06-19  5:29           ` Teemu Likonen
  2019-06-19 11:53           ` Lars Ingebrigtsen
  2019-06-19 12:33         ` Andy Moreton
  1 sibling, 2 replies; 59+ messages in thread
From: Elias Mårtenson @ 2019-06-19  4:32 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: emacs-devel

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

On Wed, 19 Jun 2019 at 03:24, Óscar Fuentes <ofv@wanadoo.es> wrote:

> Andy Moreton <andrewjmoreton@gmail.com> writes:
>
> >> No, after a fresh checkout you can just say "make" and it figures
> >> everything out by itself (on Linux, at least).
> >
> > ...but not if you want an out of tree build (which should be the default
> > so nothing modifes the source tree).
>
> In Emacs, out of tree builds are peculiar because they put build
> products in the source tree (.elc files).
>

Whenever I rebuild, I do:

rm -fr *
git reset --hard
./autogen.sh

I've resorted to doing that every time I rebuild a new version, as all
other options have at one point or another caused issues.

Regards,
Elias

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

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

* Re: A target that's even more bootstrap?
  2019-06-19  4:32         ` Elias Mårtenson
@ 2019-06-19  5:29           ` Teemu Likonen
  2019-06-19 15:12             ` Eli Zaretskii
  2019-06-19 11:53           ` Lars Ingebrigtsen
  1 sibling, 1 reply; 59+ messages in thread
From: Teemu Likonen @ 2019-06-19  5:29 UTC (permalink / raw)
  To: Elias Mårtenson; +Cc: Óscar Fuentes, emacs-devel

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

Elias Mårtenson [2019-06-19 12:32:11+08:00] wrote:

> Whenever I rebuild, I do:
>
> rm -fr *
> git reset --hard

Probably the same but a bit less violent is "git clean -fdx" (maybe
first with "--dry-run").

-- 
/// Teemu Likonen   <https://github.com/tlikonen> //
// PGP: 4E1055DC84E9DFF613D78557719D69D324539450 ///

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

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

* Re: A target that's even more bootstrap?
  2019-06-18 16:03   ` Eli Zaretskii
@ 2019-06-19  9:29     ` Phillip Lord
  2019-06-19 15:21       ` Eli Zaretskii
  2019-06-19 13:15     ` Lars Ingebrigtsen
  1 sibling, 1 reply; 59+ messages in thread
From: Phillip Lord @ 2019-06-19  9:29 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: larsi, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: phillip.lord@russet.org.uk (Phillip Lord)
>> Date: Tue, 18 Jun 2019 13:53:02 +0100
>> Cc: emacs-devel@gnu.org
>> 
>> mostlyclean
>> clean
>> distclean
>> maintainer-clean
>> extraclean
>> bootstrap-clean
>> 
>> The the irregular hyphenation is a bit odd.
>
> clean, distclean, mostlyclean, and maintainer-clean are from the GNU
> Coding Standards (GCS).  Many projects have extraclean.  So this is
> tradition of sorts.
>
>> But, in addition, I would guess that many of these levels
>> (maintainer-clean, extraclean and bootstrap-clean) are really only
>> there to save time; with parallel builds and faster machines I
>> wonder how many of these are actually needed.
>
> AFAIK, the issue at hand is not the speed, the issue is to know what
> generated files get deleted.  Some builds require a specific target
> from this list to be run before the build.  For example, if you weant
> to reconfigure from scratch, you want distclean.
>
>> If I understand it, distclean is most severe. So, why not ditch
>> everything other than distclean and clean?
>
> Because the GCS says otherwise?

The GCS differentiate between "clean" and "mostlyclean" with "may". So,
mostlyclean and clean could be the same. The only difference that is
needed between "distclean" and "maintainer-clean" is that former needs
to delete configure while the latter doesn't (AFAICT, doesn't need
anything else to generate configure). extraclean isn't required and but
could be the same as maintainer-clean. And bootstrap-clean is also not
required -- it could be maintainer-clean. So, it could be made simpler.

But, alas, the inconsistent hyphenation is part of the GCS, so guess we
are stuffed there.

Phil



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

* Re: A target that's even more bootstrap?
  2019-06-19  4:32         ` Elias Mårtenson
  2019-06-19  5:29           ` Teemu Likonen
@ 2019-06-19 11:53           ` Lars Ingebrigtsen
  1 sibling, 0 replies; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-19 11:53 UTC (permalink / raw)
  To: Elias Mårtenson; +Cc: Óscar Fuentes, emacs-devel

Elias Mårtenson <lokedhs@gmail.com> writes:

> Whenever I rebuild, I do:
>
> rm -fr *
> git reset --hard
> ./autogen.sh
>
> I've resorted to doing that every time I rebuild a new version, as all other
> options have at one point or another caused issues.

Yeah, it's a pain.  If you pull down a fresh "git clone" of Emacs, it
always works, but if you've done a "git pull" for a while, you
invariably end up in a situation where none of the sanctioned methods
for building Emacs works and most users seem to just remove the entire
tree and pull down a new copy.  Which is slow and annoying.

Relying on git to get to a clean state (like you're doing here) sounds
like a possible idea.  Perhaps a target that removes all non-tracked
files?  However, that sounds rather destructive: The user may have other
stuff in there, and having a target that's that dangerous is perhaps
overkill...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-18 19:22       ` Óscar Fuentes
  2019-06-19  4:32         ` Elias Mårtenson
@ 2019-06-19 12:33         ` Andy Moreton
  2019-06-19 12:45           ` Óscar Fuentes
  1 sibling, 1 reply; 59+ messages in thread
From: Andy Moreton @ 2019-06-19 12:33 UTC (permalink / raw)
  To: emacs-devel

On Tue 18 Jun 2019, Óscar Fuentes wrote:

> Andy Moreton <andrewjmoreton@gmail.com> writes:
>
>>> No, after a fresh checkout you can just say "make" and it figures
>>> everything out by itself (on Linux, at least).
>>
>> ...but not if you want an out of tree build (which should be the default
>> so nothing modifes the source tree).
>
> In Emacs, out of tree builds are peculiar because they put build
> products in the source tree (.elc files).

Exactly my point - that should not happen. The .elc files should go in
<builddir>/lisp and not in the source tree.

    AndyM




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

* Re: A target that's even more bootstrap?
  2019-06-19 12:33         ` Andy Moreton
@ 2019-06-19 12:45           ` Óscar Fuentes
  2019-06-19 13:35             ` Juanma Barranquero
  2019-06-19 15:29             ` Phillip Lord
  0 siblings, 2 replies; 59+ messages in thread
From: Óscar Fuentes @ 2019-06-19 12:45 UTC (permalink / raw)
  To: emacs-devel

Andy Moreton <andrewjmoreton@gmail.com> writes:

>> In Emacs, out of tree builds are peculiar because they put build
>> products in the source tree (.elc files).
>
> Exactly my point - that should not happen. The .elc files should go in
> <builddir>/lisp and not in the source tree.

I argued about this point on the past to no avail. Some hackers here
find this feature convenient for their workflow.




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

* Re: A target that's even more bootstrap?
  2019-06-18 16:03   ` Eli Zaretskii
  2019-06-19  9:29     ` Phillip Lord
@ 2019-06-19 13:15     ` Lars Ingebrigtsen
  2019-06-19 14:00       ` Andreas Schwab
  2019-06-19 15:28       ` Eli Zaretskii
  1 sibling, 2 replies; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-19 13:15 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel, Phillip Lord

Eli Zaretskii <eliz@gnu.org> writes:

> AFAIK, the issue at hand is not the speed, the issue is to know what
> generated files get deleted.  Some builds require a specific target
> from this list to be run before the build.  For example, if you weant
> to reconfigure from scratch, you want distclean.

distclean does not remove the generated charset map files or the .elc
files.  But it does delete the .o files.  Very confusing.  

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-19 12:45           ` Óscar Fuentes
@ 2019-06-19 13:35             ` Juanma Barranquero
  2019-06-19 13:46               ` Lars Ingebrigtsen
  2019-06-19 15:29             ` Phillip Lord
  1 sibling, 1 reply; 59+ messages in thread
From: Juanma Barranquero @ 2019-06-19 13:35 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: Emacs developers

On Wed, Jun 19, 2019 at 2:52 PM Óscar Fuentes <ofv@wanadoo.es> wrote:
>
> Andy Moreton <andrewjmoreton@gmail.com> writes:

> > Exactly my point - that should not happen. The .elc files should go in
> > <builddir>/lisp and not in the source tree.
>
> I argued about this point on the past to no avail. Some hackers here
> find this feature convenient for their workflow.

I only build in place, and never (ever) install.



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

* Re: A target that's even more bootstrap?
  2019-06-19 13:35             ` Juanma Barranquero
@ 2019-06-19 13:46               ` Lars Ingebrigtsen
  2019-06-19 15:34                 ` Eli Zaretskii
  0 siblings, 1 reply; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-19 13:46 UTC (permalink / raw)
  To: Emacs developers

After some experimentation, this seems to be what's required to make
Emacs really recompile everything, OKURI-NASI and all:

make extraclean; sh autogen.sh; ./configure; make -j8 bootstrap

If I leave out the ./configure, make bootstrap won't delete the .elc
files (!), but this means running configure twice (since bootstrap
always does that).

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




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

* Re: A target that's even more bootstrap?
  2019-06-19 13:15     ` Lars Ingebrigtsen
@ 2019-06-19 14:00       ` Andreas Schwab
  2019-06-19 15:28       ` Eli Zaretskii
  1 sibling, 0 replies; 59+ messages in thread
From: Andreas Schwab @ 2019-06-19 14:00 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, Phillip Lord, emacs-devel

On Jun 19 2019, Lars Ingebrigtsen <larsi@gnus.org> wrote:

> distclean does not remove the generated charset map files or the .elc
> files.  But it does delete the .o files.  Very confusing.  

distclean must not remove distributed files.

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."



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

* Re: A target that's even more bootstrap?
  2019-06-19  5:29           ` Teemu Likonen
@ 2019-06-19 15:12             ` Eli Zaretskii
  2019-06-19 20:06               ` Juanma Barranquero
  0 siblings, 1 reply; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-19 15:12 UTC (permalink / raw)
  To: Teemu Likonen; +Cc: ofv, lokedhs, emacs-devel

> From: Teemu Likonen <tlikonen@iki.fi>
> Date: Wed, 19 Jun 2019 08:29:08 +0300
> Cc: Óscar Fuentes <ofv@wanadoo.es>, emacs-devel@gnu.org
> 
> > Whenever I rebuild, I do:
> >
> > rm -fr *
> > git reset --hard
> 
> Probably the same but a bit less violent is "git clean -fdx" (maybe
> first with "--dry-run").

These targets need to do their job even when Git is not around, or the
source tree has no history data, so we cannot rely on Git for this
matter.



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

* Re: A target that's even more bootstrap?
  2019-06-19  9:29     ` Phillip Lord
@ 2019-06-19 15:21       ` Eli Zaretskii
  0 siblings, 0 replies; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-19 15:21 UTC (permalink / raw)
  To: Phillip Lord; +Cc: larsi, emacs-devel

> From: phillip.lord@russet.org.uk (Phillip Lord)
> Cc: larsi@gnus.org,  emacs-devel@gnu.org
> Date: Wed, 19 Jun 2019 10:29:41 +0100
> 
> >> If I understand it, distclean is most severe. So, why not ditch
> >> everything other than distclean and clean?
> >
> > Because the GCS says otherwise?
> 
> The GCS differentiate between "clean" and "mostlyclean" with "may". So,
> mostlyclean and clean could be the same.

They could do the same, but you asked about ditching them, not about
making them do the same.

> extraclean isn't required and but could be the same as
> maintainer-clean.

No, I think they should be separate, if only because maintainer-clean
is useful on its own right.



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

* Re: A target that's even more bootstrap?
  2019-06-19 13:15     ` Lars Ingebrigtsen
  2019-06-19 14:00       ` Andreas Schwab
@ 2019-06-19 15:28       ` Eli Zaretskii
  2019-06-19 15:32         ` Lars Ingebrigtsen
  1 sibling, 1 reply; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-19 15:28 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel, phillip.lord

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: phillip.lord@russet.org.uk (Phillip Lord),  emacs-devel@gnu.org
> Date: Wed, 19 Jun 2019 15:15:31 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > AFAIK, the issue at hand is not the speed, the issue is to know what
> > generated files get deleted.  Some builds require a specific target
> > from this list to be run before the build.  For example, if you weant
> > to reconfigure from scratch, you want distclean.
> 
> distclean does not remove the generated charset map files or the .elc
> files.  But it does delete the .o files.  Very confusing.  

Why is this confusing?  distclean brings you to the state you are in
after unpacking a release tarball (a.k.a. "distribution").  The
tarball definitely includes the generated charset map files, so
distclean does its job correctly in this case.  The description of
distclean in the top-level Makefile.in says as much; if you think the
text there is not clear enough, we can improve it.



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

* Re: A target that's even more bootstrap?
  2019-06-19 12:45           ` Óscar Fuentes
  2019-06-19 13:35             ` Juanma Barranquero
@ 2019-06-19 15:29             ` Phillip Lord
  2019-06-19 15:59               ` Óscar Fuentes
  1 sibling, 1 reply; 59+ messages in thread
From: Phillip Lord @ 2019-06-19 15:29 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: emacs-devel

Óscar Fuentes <ofv@wanadoo.es> writes:

> Andy Moreton <andrewjmoreton@gmail.com> writes:
>
>>> In Emacs, out of tree builds are peculiar because they put build
>>> products in the source tree (.elc files).
>>
>> Exactly my point - that should not happen. The .elc files should go in
>> <builddir>/lisp and not in the source tree.
>
> I argued about this point on the past to no avail. Some hackers here
> find this feature convenient for their workflow.

It does have an advantage when I build for Windows, for example. I have
to build twice (i686, x86_64), so I do out of source builds. But
byte-compilation happens only once.

I guess the reason for it is that the source distribution, actually
includes the (non-source) elc files. The same is true for configure
which is also generated in source.

Phil




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

* Re: A target that's even more bootstrap?
  2019-06-19 15:28       ` Eli Zaretskii
@ 2019-06-19 15:32         ` Lars Ingebrigtsen
  0 siblings, 0 replies; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-19 15:32 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel, phillip.lord

Eli Zaretskii <eliz@gnu.org> writes:

>> > AFAIK, the issue at hand is not the speed, the issue is to know what
>> > generated files get deleted.  Some builds require a specific target
>> > from this list to be run before the build.  For example, if you weant
>> > to reconfigure from scratch, you want distclean.
>> 
>> distclean does not remove the generated charset map files or the .elc
>> files.  But it does delete the .o files.  Very confusing.  
>
> Why is this confusing?  distclean brings you to the state you are in
> after unpacking a release tarball (a.k.a. "distribution").  The
> tarball definitely includes the generated charset map files, so
> distclean does its job correctly in this case.  The description of
> distclean in the top-level Makefile.in says as much; if you think the
> text there is not clear enough, we can improve it.

The confusing bit (for me) was that you said "if you want to reconfigure
from scratch".  :-)  It's not very a very scratchey target.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-19 13:46               ` Lars Ingebrigtsen
@ 2019-06-19 15:34                 ` Eli Zaretskii
  2019-06-19 15:43                   ` Lars Ingebrigtsen
  0 siblings, 1 reply; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-19 15:34 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Wed, 19 Jun 2019 15:46:34 +0200
> 
> After some experimentation, this seems to be what's required to make
> Emacs really recompile everything, OKURI-NASI and all:
> 
> make extraclean; sh autogen.sh; ./configure; make -j8 bootstrap

Let's fix "make extraclean" so that it does everything that is needed
to get you to the same state as after a fresh checkout/clone.  That's
what that target is for.

Can you tell what it fails to do that requires to run autogen.sh?



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

* Re: A target that's even more bootstrap?
  2019-06-19 15:34                 ` Eli Zaretskii
@ 2019-06-19 15:43                   ` Lars Ingebrigtsen
  2019-06-19 15:48                     ` Eli Zaretskii
  0 siblings, 1 reply; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-19 15:43 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Let's fix "make extraclean" so that it does everything that is needed
> to get you to the same state as after a fresh checkout/clone.  That's
> what that target is for.
>
> Can you tell what it fails to do that requires to run autogen.sh?

OK, there were more failure modes here than I was aware of...

make extraclean bootstrap

just plain fails, ending with

rm -f config-tmp-*
rm -f ./*~ \#*
make -C src bootstrap-clean
make[1]: Entering directory '/home/larsi/src/emacs/trunk/src'
make[1]: *** No rule to make target 'bootstrap-clean'.  Stop.
make[1]: Leaving directory '/home/larsi/src/emacs/trunk/src'
Makefile:891: recipe for target 'src_bootstrap-clean' failed
make: *** [src_bootstrap-clean] Error 2

make extraclean; make bootstrap

does not fail, but extraclean does not remove the .elc files, and
whatever it does also stops "make bootstrap" from removing the .elc
files, which is rather surprising.

Running the autogen.sh; ./configure in between these two makes enables
bootstrap to delete the .elc files.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-19 15:43                   ` Lars Ingebrigtsen
@ 2019-06-19 15:48                     ` Eli Zaretskii
  2019-06-19 16:12                       ` Lars Ingebrigtsen
  0 siblings, 1 reply; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-19 15:48 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: emacs-devel@gnu.org
> Date: Wed, 19 Jun 2019 17:43:41 +0200
> 
> > Can you tell what it fails to do that requires to run autogen.sh?
> 
> OK, there were more failure modes here than I was aware of...
> 
> make extraclean bootstrap
> 
> just plain fails, ending with
> 
> rm -f config-tmp-*
> rm -f ./*~ \#*
> make -C src bootstrap-clean
> make[1]: Entering directory '/home/larsi/src/emacs/trunk/src'
> make[1]: *** No rule to make target 'bootstrap-clean'.  Stop.
> make[1]: Leaving directory '/home/larsi/src/emacs/trunk/src'
> Makefile:891: recipe for target 'src_bootstrap-clean' failed
> make: *** [src_bootstrap-clean] Error 2
> 
> make extraclean; make bootstrap
> 
> does not fail, but extraclean does not remove the .elc files, and
> whatever it does also stops "make bootstrap" from removing the .elc
> files, which is rather surprising.
> 
> Running the autogen.sh; ./configure in between these two makes enables
> bootstrap to delete the .elc files.

We should need to do only this:

  make extraclean
  make

There should be no need to say "make bootstrap", precisely as it isn't
needed in a freshly cloned repository.

So I understand one thing extraclean doesn't do is remove the *.elc
files; let's add that.  What else?



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

* Re: A target that's even more bootstrap?
  2019-06-19 15:29             ` Phillip Lord
@ 2019-06-19 15:59               ` Óscar Fuentes
  2019-06-19 16:18                 ` Stefan Monnier
  0 siblings, 1 reply; 59+ messages in thread
From: Óscar Fuentes @ 2019-06-19 15:59 UTC (permalink / raw)
  To: emacs-devel

phillip.lord@russet.org.uk (Phillip Lord) writes:

> Óscar Fuentes <ofv@wanadoo.es> writes:
>
>> Andy Moreton <andrewjmoreton@gmail.com> writes:
>>
>>>> In Emacs, out of tree builds are peculiar because they put build
>>>> products in the source tree (.elc files).
>>>
>>> Exactly my point - that should not happen. The .elc files should go in
>>> <builddir>/lisp and not in the source tree.
>>
>> I argued about this point on the past to no avail. Some hackers here
>> find this feature convenient for their workflow.
>
> It does have an advantage when I build for Windows, for example. I have
> to build twice (i686, x86_64), so I do out of source builds. But
> byte-compilation happens only once.
>
> I guess the reason for it is that the source distribution, actually
> includes the (non-source) elc files. The same is true for configure
> which is also generated in source.

The reason for this practice was explained to me time ago and it is
related to your case (two or more out-of-tree builds, reuse .elc)

Emacs falsely pretends to support out-of-tree builds. Having an option
for the frankenbuild is fine, even if it defaults to on, but doing it
inconditionally is not, moreover when you can't rely on the build system
to do the right thing when a .el or somesuch changes (hence the need for
`make bootstrap' or "git -fdx" after pulling or while bisecting).




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

* Re: A target that's even more bootstrap?
  2019-06-19 15:48                     ` Eli Zaretskii
@ 2019-06-19 16:12                       ` Lars Ingebrigtsen
  2019-06-19 17:03                         ` Eli Zaretskii
  0 siblings, 1 reply; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-19 16:12 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

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

Eli Zaretskii <eliz@gnu.org> writes:

> We should need to do only this:
>
>   make extraclean
>   make
>
> There should be no need to say "make bootstrap", precisely as it isn't
> needed in a freshly cloned repository.

Sounds good.

> So I understand one thing extraclean doesn't do is remove the *.elc
> files; let's add that.  What else?

I'm comparing a fresh clone with what's in the repo after a make; make
extraclean.  I've made a summary first and include the full list as an
attachment.

diff --unified /tmp/fresh /tmp/extra | grep "^\\+" | grep -v /.git/ > /tmp/diff

+./info
+./info/ebrowse.info
+./info/efaq-w32.info

[etc]

+./aclocal.m4
+./src/TAGS
+./src/config.in
+./etc/refcards/emacsver.tex
+./lib/inttypes.h
+./lib/dtotimespec.o
+./lib/time_rz.o
+./lib/stdint.h
+./lib/qcopy-acl.o
+./lib/utimens.o
+./lib/sha512.o
+./lib/save-cwd.o
+./lib/deps
+./lib/deps/dtoastr.d
+./lib/deps/copy-file-range.d
+./lib/deps/allocator.d

[etc]

+./lib/time.h
+./lib/regex.o
+./lib/filevercmp.o

[etc]

+./lisp/custom.elc
+./lisp/xt-mouse.elc
+./lisp/speedbar.elc

[etc]

+./admin/unidata/uvs.elc
+./admin/unidata/unidata.txt
+./admin/unidata/unidata-gen.elc
+./configure
+./doc/emacs/emacsver.texi

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no

[-- Attachment #2: diff --]
[-- Type: application/octet-stream, Size: 45738 bytes --]

+++ /tmp/extra	2019-06-19 18:09:22.896324132 +0200
+./info
+./info/ebrowse.info
+./info/efaq-w32.info
+./info/octave-mode.info
+./info/flymake.info
+./info/smtpmail.info
+./info/wisent.info
+./info/forms.info
+./info/semantic.info
+./info/mh-e.info
+./info/remember.info
+./info/ido.info
+./info/reftex.info
+./info/calc.info
+./info/mairix-el.info
+./info/org.info
+./info/dbus.info
+./info/htmlfontify.info
+./info/autotype.info
+./info/sieve.info
+./info/emacs-gnutls.info
+./info/rcirc.info
+./info/erc.info
+./info/idlwave.info
+./info/epa.info
+./info/pgg.info
+./info/pcl-cvs.info
+./info/dir
+./info/info.info
+./info/eudc.info
+./info/ede.info
+./info/ses.info
+./info/vhdl-mode.info
+./info/widget.info
+./info/vip.info
+./info/efaq.info
+./info/bovine.info
+./info/dired-x.info
+./info/sc.info
+./info/srecode.info
+./info/cl.info
+./info/emacs-mime.info
+./info/auth.info
+./info/newsticker.info
+./info/woman.info
+./info/nxml-mode.info
+./info/elisp.info
+./info/emacs.info
+./info/eieio.info
+./info/ediff.info
+./info/ccmode.info
+./info/url.info
+./info/eww.info
+./info/todo-mode.info
+./info/eintr.info
+./info/gnus.info
+./info/edt.info
+./info/message.info
+./info/ert.info
+./info/tramp.info
+./info/eshell.info
+./info/speedbar.info
+./info/viper.info
+./info/sasl.info
+./info/ada-mode.info
+./aclocal.m4
+./src/TAGS
+./src/config.in
+./etc/refcards/emacsver.tex
+./lib/inttypes.h
+./lib/dtotimespec.o
+./lib/time_rz.o
+./lib/stdint.h
+./lib/qcopy-acl.o
+./lib/utimens.o
+./lib/sha512.o
+./lib/save-cwd.o
+./lib/deps
+./lib/deps/dtoastr.d
+./lib/deps/copy-file-range.d
+./lib/deps/allocator.d
+./lib/deps/timespec.d
+./lib/deps/fsusage.d
+./lib/deps/gettime.d
+./lib/deps/time_rz.d
+./lib/deps/regex.d
+./lib/deps/acl-internal.d
+./lib/deps/filevercmp.d
+./lib/deps/get-permissions.d
+./lib/deps/u64.d
+./lib/deps/unistd.d
+./lib/deps/careadlinkat.d
+./lib/deps/timespec-add.d
+./lib/deps/md5.d
+./lib/deps/dtotimespec.d
+./lib/deps/qcopy-acl.d
+./lib/deps/filemode.d
+./lib/deps/nstrftime.d
+./lib/deps/c-strcasecmp.d
+./lib/deps/openat-die.d
+./lib/deps/utimens.d
+./lib/deps/count-one-bits.d
+./lib/deps/sha1.d
+./lib/deps/acl-errno-valid.d
+./lib/deps/c-strncasecmp.d
+./lib/deps/sha512.d
+./lib/deps/timespec-sub.d
+./lib/deps/set-permissions.d
+./lib/deps/explicit_bzero.d
+./lib/deps/fingerprint.d
+./lib/deps/count-leading-zeros.d
+./lib/deps/binary-io.d
+./lib/deps/sig2str.d
+./lib/deps/save-cwd.d
+./lib/deps/fcntl.d
+./lib/deps/tempname.d
+./lib/deps/count-trailing-zeros.d
+./lib/deps/stat-time.d
+./lib/deps/pipe2.d
+./lib/deps/close-stream.d
+./lib/deps/sha256.d
+./lib/deps/c-ctype.d
+./lib/time.h
+./lib/regex.o
+./lib/filevercmp.o
+./lib/unistd.h
+./lib/fcntl.o
+./lib/nstrftime.o
+./lib/c-strncasecmp.o
+./lib/count-trailing-zeros.o
+./lib/fcntl.h
+./lib/stdlib.h
+./lib/u64.o
+./lib/binary-io.o
+./lib/acl-internal.o
+./lib/get-permissions.o
+./lib/signal.h
+./lib/allocator.o
+./lib/fingerprint.o
+./lib/md5.o
+./lib/timespec-sub.o
+./lib/fsusage.o
+./lib/dtoastr.o
+./lib/acl-errno-valid.o
+./lib/pipe2.o
+./lib/dirent.h
+./lib/c-strcasecmp.o
+./lib/filemode.o
+./lib/timespec-add.o
+./lib/tempname.o
+./lib/c-ctype.o
+./lib/copy-file-range.o
+./lib/limits.h
+./lib/stdio.h
+./lib/count-leading-zeros.o
+./lib/openat-die.o
+./lib/sys
+./lib/sys/select.h
+./lib/sys/time.h
+./lib/sys/stat.h
+./lib/sys/types.h
+./lib/stat-time.o
+./lib/explicit_bzero.o
+./lib/sha1.o
+./lib/timespec.o
+./lib/string.h
+./lib/careadlinkat.o
+./lib/sig2str.o
+./lib/unistd.o
+./lib/sha256.o
+./lib/close-stream.o
+./lib/alloca.h
+./lib/set-permissions.o
+./lib/libgnu.a
+./lib/gettime.o
+./lib/count-one-bits.o
+./lisp/custom.elc
+./lisp/xt-mouse.elc
+./lisp/speedbar.elc
+./lisp/comint.elc
+./lisp/ehelp.elc
+./lisp/saveplace.elc
+./lisp/select.elc
+./lisp/hexl.elc
+./lisp/xml.elc
+./lisp/pcmpl-rpm.elc
+./lisp/ps-def.elc
+./lisp/simple.elc
+./lisp/mpc.elc
+./lisp/cus-dep.elc
+./lisp/pcmpl-x.elc
+./lisp/startup.elc
+./lisp/profiler.elc
+./lisp/strokes.elc
+./lisp/isearchb.elc
+./lisp/obarray.elc
+./lisp/generic-x.elc
+./lisp/minibuf-eldef.elc
+./lisp/password-cache.elc
+./lisp/jit-lock.elc
+./lisp/case-table.elc
+./lisp/array.elc
+./lisp/info-look.elc
+./lisp/wid-browse.elc
+./lisp/xwidget.elc
+./lisp/htmlfontify.elc
+./lisp/scroll-lock.elc
+./lisp/version.elc
+./lisp/format-spec.elc
+./lisp/find-lisp.elc
+./lisp/newcomment.elc
+./lisp/tool-bar.elc
+./lisp/fringe.elc
+./lisp/ebuff-menu.elc
+./lisp/align.elc
+./lisp/dos-vars.elc
+./lisp/epa-file.elc
+./lisp/ffap.elc
+./lisp/play/spook.elc
+./lisp/play/gamegrid.elc
+./lisp/play/solitaire.elc
+./lisp/play/zone.elc
+./lisp/play/doctor.elc
+./lisp/play/pong.elc
+./lisp/play/fortune.elc
+./lisp/play/mpuz.elc
+./lisp/play/dissociate.elc
+./lisp/play/bubbles.elc
+./lisp/play/studly.elc
+./lisp/play/blackbox.elc
+./lisp/play/gametree.elc
+./lisp/play/hanoi.elc
+./lisp/play/gomoku.elc
+./lisp/play/snake.elc
+./lisp/play/morse.elc
+./lisp/play/animate.elc
+./lisp/play/decipher.elc
+./lisp/play/cookie1.elc
+./lisp/play/life.elc
+./lisp/play/dunnet.elc
+./lisp/play/5x5.elc
+./lisp/play/handwrite.elc
+./lisp/play/tetris.elc
+./lisp/mwheel.elc
+./lisp/linum.elc
+./lisp/cdl.elc
+./lisp/autoarg.elc
+./lisp/find-dired.elc
+./lisp/image/gravatar.elc
+./lisp/image/compface.elc
+./lisp/informat.elc
+./lisp/windmove.elc
+./lisp/calc/calc-menu.elc
+./lisp/calc/calc-vec.elc
+./lisp/calc/calc-undo.elc
+./lisp/calc/calc-rewr.elc
+./lisp/calc/calc-ext.elc
+./lisp/calc/calc-yank.elc
+./lisp/calc/calc-macs.elc
+./lisp/calc/calccomp.elc
+./lisp/calc/calc-units.elc
+./lisp/calc/calc.elc
+./lisp/calc/calc-frac.elc
+./lisp/calc/calc-loaddefs.el
+./lisp/calc/calc-map.elc
+./lisp/calc/calcalg2.elc
+./lisp/calc/calc-lang.elc
+./lisp/calc/calc-incom.elc
+./lisp/calc/calc-help.elc
+./lisp/calc/calc-mtx.elc
+./lisp/calc/calc-store.elc
+./lisp/calc/calc-rules.elc
+./lisp/calc/calc-keypd.elc
+./lisp/calc/calc-embed.elc
+./lisp/calc/calcsel2.elc
+./lisp/calc/calc-alg.elc
+./lisp/calc/calc-stuff.elc
+./lisp/calc/calc-bin.elc
+./lisp/calc/calc-stat.elc
+./lisp/calc/calc-sel.elc
+./lisp/calc/calc-cplx.elc
+./lisp/calc/calc-arith.elc
+./lisp/calc/calcalg3.elc
+./lisp/calc/calc-mode.elc
+./lisp/calc/calc-forms.elc
+./lisp/calc/calc-poly.elc
+./lisp/calc/calc-misc.elc
+./lisp/calc/calc-aent.elc
+./lisp/calc/calc-funcs.elc
+./lisp/calc/calc-trail.elc
+./lisp/calc/calc-math.elc
+./lisp/calc/calc-fin.elc
+./lisp/calc/calc-nlfit.elc
+./lisp/calc/calc-prog.elc
+./lisp/calc/calc-comb.elc
+./lisp/calc/calc-graph.elc
+./lisp/ido.elc
+./lisp/ibuffer-loaddefs.el
+./lisp/dframe.elc
+./lisp/pixel-scroll.elc
+./lisp/ibuf-macs.elc
+./lisp/paren.elc
+./lisp/time-stamp.elc
+./lisp/epg.elc
+./lisp/hex-util.elc
+./lisp/subr.elc
+./lisp/calendar/cal-loaddefs.el~
+./lisp/calendar/diary-lib.elc
+./lisp/calendar/appt.elc
+./lisp/calendar/cal-persia.elc
+./lisp/calendar/cal-islam.elc
+./lisp/calendar/todo-mode.elc
+./lisp/calendar/cal-mayan.elc
+./lisp/calendar/parse-time.elc
+./lisp/calendar/cal-tex.elc
+./lisp/calendar/cal-menu.elc
+./lisp/calendar/cal-french.elc
+./lisp/calendar/hol-loaddefs.el
+./lisp/calendar/cal-loaddefs.el
+./lisp/calendar/cal-bahai.elc
+./lisp/calendar/cal-x.elc
+./lisp/calendar/cal-iso.elc
+./lisp/calendar/calendar.elc
+./lisp/calendar/icalendar.elc
+./lisp/calendar/diary-loaddefs.el
+./lisp/calendar/hol-loaddefs.el~
+./lisp/calendar/cal-julian.elc
+./lisp/calendar/cal-china.elc
+./lisp/calendar/cal-coptic.elc
+./lisp/calendar/time-date.elc
+./lisp/calendar/solar.elc
+./lisp/calendar/diary-loaddefs.el~
+./lisp/calendar/cal-hebrew.elc
+./lisp/calendar/lunar.elc
+./lisp/calendar/timeclock.elc
+./lisp/calendar/holidays.elc
+./lisp/calendar/cal-dst.elc
+./lisp/calendar/cal-move.elc
+./lisp/calendar/cal-html.elc
+./lisp/battery.elc
+./lisp/files-x.elc
+./lisp/tooltip.elc
+./lisp/woman.elc
+./lisp/term/linux.elc
+./lisp/term/internal.elc
+./lisp/term/konsole.elc
+./lisp/term/rxvt.elc
+./lisp/term/tvi970.elc
+./lisp/term/w32-win.elc
+./lisp/term/lk201.elc
+./lisp/term/AT386.elc
+./lisp/term/screen.elc
+./lisp/term/x-win.elc
+./lisp/term/sun.elc
+./lisp/term/pc-win.elc
+./lisp/term/tty-colors.elc
+./lisp/term/vt200.elc
+./lisp/term/cygwin.elc
+./lisp/term/ns-win.elc
+./lisp/term/vt100.elc
+./lisp/term/xterm.elc
+./lisp/term/common-win.elc
+./lisp/term/iris-ansi.elc
+./lisp/term/w32console.elc
+./lisp/term/news.elc
+./lisp/term/tmux.elc
+./lisp/term/wyse50.elc
+./lisp/term/bobcat.elc
+./lisp/avoid.elc
+./lisp/epa.elc
+./lisp/apropos.elc
+./lisp/filenotify.elc
+./lisp/ls-lisp.elc
+./lisp/savehist.elc
+./lisp/ezimage.elc
+./lisp/face-remap.elc
+./lisp/image-file.elc
+./lisp/type-break.elc
+./lisp/term.elc
+./lisp/iimage.elc
+./lisp/epa-mail.elc
+./lisp/subdirs.el
+./lisp/pcmpl-unix.elc
+./lisp/composite.elc
+./lisp/env.elc
+./lisp/info-xref.elc
+./lisp/loaddefs.el~
+./lisp/display-fill-column-indicator.elc
+./lisp/image-dired.elc
+./lisp/w32-fns.elc
+./lisp/emacs-lisp/generator.elc
+./lisp/emacs-lisp/derived.elc
+./lisp/emacs-lisp/bytecomp.elc
+./lisp/emacs-lisp/re-builder.elc
+./lisp/emacs-lisp/lisp-mode.elc
+./lisp/emacs-lisp/checkdoc.elc
+./lisp/emacs-lisp/backquote.elc
+./lisp/emacs-lisp/easymenu.elc
+./lisp/emacs-lisp/smie.elc
+./lisp/emacs-lisp/faceup.elc
+./lisp/emacs-lisp/elint.elc
+./lisp/emacs-lisp/cursor-sensor.elc
+./lisp/emacs-lisp/float-sup.elc
+./lisp/emacs-lisp/benchmark.elc
+./lisp/emacs-lisp/unsafep.elc
+./lisp/emacs-lisp/tcover-unsafep.elc
+./lisp/emacs-lisp/eieio-loaddefs.el
+./lisp/emacs-lisp/package.elc
+./lisp/emacs-lisp/tq.elc
+./lisp/emacs-lisp/ewoc.elc
+./lisp/emacs-lisp/syntax.elc
+./lisp/emacs-lisp/let-alist.elc
+./lisp/emacs-lisp/easy-mmode.elc
+./lisp/emacs-lisp/subr-x.elc
+./lisp/emacs-lisp/chart.elc
+./lisp/emacs-lisp/backtrace.elc
+./lisp/emacs-lisp/cl-indent.elc
+./lisp/emacs-lisp/rmc.elc
+./lisp/emacs-lisp/eldoc.elc
+./lisp/emacs-lisp/cl.elc
+./lisp/emacs-lisp/regexp-opt.elc
+./lisp/emacs-lisp/elp.elc
+./lisp/emacs-lisp/eieio-datadebug.elc
+./lisp/emacs-lisp/eieio-custom.elc
+./lisp/emacs-lisp/bindat.elc
+./lisp/emacs-lisp/cl-extra.elc
+./lisp/emacs-lisp/timer-list.elc
+./lisp/emacs-lisp/byte-run.elc
+./lisp/emacs-lisp/macroexp.elc
+./lisp/emacs-lisp/lisp-mnt.elc
+./lisp/emacs-lisp/testcover.elc
+./lisp/emacs-lisp/radix-tree.elc
+./lisp/emacs-lisp/cl-loaddefs.el
+./lisp/emacs-lisp/cl-preloaded.elc
+./lisp/emacs-lisp/ert-x.elc
+./lisp/emacs-lisp/eieio-core.elc
+./lisp/emacs-lisp/disass.elc
+./lisp/emacs-lisp/lisp.elc
+./lisp/emacs-lisp/debug.elc
+./lisp/emacs-lisp/warnings.elc
+./lisp/emacs-lisp/cl-generic.elc
+./lisp/emacs-lisp/nadvice.elc
+./lisp/emacs-lisp/ert.elc
+./lisp/emacs-lisp/cl-macs.elc
+./lisp/emacs-lisp/eieio-opt.elc
+./lisp/emacs-lisp/package-x.elc
+./lisp/emacs-lisp/tcover-ses.elc
+./lisp/emacs-lisp/cconv.elc
+./lisp/emacs-lisp/autoload.elc
+./lisp/emacs-lisp/text-property-search.elc
+./lisp/emacs-lisp/ring.elc
+./lisp/emacs-lisp/eieio-loaddefs.el~
+./lisp/emacs-lisp/eieio-compat.elc
+./lisp/emacs-lisp/seq.elc
+./lisp/emacs-lisp/cl-print.elc
+./lisp/emacs-lisp/gv.elc
+./lisp/emacs-lisp/helper.elc
+./lisp/emacs-lisp/timer.elc
+./lisp/emacs-lisp/cl-lib.elc
+./lisp/emacs-lisp/cl-seq.elc
+./lisp/emacs-lisp/generic.elc
+./lisp/emacs-lisp/avl-tree.elc
+./lisp/emacs-lisp/copyright.elc
+./lisp/emacs-lisp/pp.elc
+./lisp/emacs-lisp/pcase.elc
+./lisp/emacs-lisp/find-func.elc
+./lisp/emacs-lisp/thunk.elc
+./lisp/emacs-lisp/inline.elc
+./lisp/emacs-lisp/advice.elc
+./lisp/emacs-lisp/shadow.elc
+./lisp/emacs-lisp/eieio-speedbar.elc
+./lisp/emacs-lisp/tabulated-list.elc
+./lisp/emacs-lisp/byte-opt.elc
+./lisp/emacs-lisp/edebug.elc
+./lisp/emacs-lisp/map.elc
+./lisp/emacs-lisp/eieio-base.elc
+./lisp/emacs-lisp/check-declare.elc
+./lisp/emacs-lisp/eieio.elc
+./lisp/emacs-lisp/map-ynp.elc
+./lisp/emacs-lisp/trace.elc
+./lisp/emacs-lisp/rx.elc
+./lisp/emacs-lisp/regi.elc
+./lisp/emacs-lisp/crm.elc
+./lisp/dos-w32.elc
+./lisp/indent.elc
+./lisp/sort.elc
+./lisp/autorevert.elc
+./lisp/repeat.elc
+./lisp/button.elc
+./lisp/notifications.elc
+./lisp/image.elc
+./lisp/obsolete/pc-mode.elc
+./lisp/obsolete/bruce.elc
+./lisp/obsolete/cl-compat.elc
+./lisp/obsolete/vc-arch.elc
+./lisp/obsolete/lucid.elc
+./lisp/obsolete/pgg-parse.elc
+./lisp/obsolete/s-region.elc
+./lisp/obsolete/landmark.elc
+./lisp/obsolete/old-emacs-lock.elc
+./lisp/obsolete/mouse-sel.elc
+./lisp/obsolete/xesam.elc
+./lisp/obsolete/gulp.elc
+./lisp/obsolete/ws-mode.elc
+./lisp/obsolete/yow.elc
+./lisp/obsolete/info-edit.elc
+./lisp/obsolete/pgg-pgp5.elc
+./lisp/obsolete/starttls.elc
+./lisp/obsolete/mailpost.elc
+./lisp/obsolete/tpu-extras.elc
+./lisp/obsolete/vip.elc
+./lisp/obsolete/terminal.elc
+./lisp/obsolete/crisp.elc
+./lisp/obsolete/pgg-gpg.elc
+./lisp/obsolete/eudcb-ph.elc
+./lisp/obsolete/tpu-edt.elc
+./lisp/obsolete/iswitchb.elc
+./lisp/obsolete/assoc.elc
+./lisp/obsolete/pgg-pgp.elc
+./lisp/obsolete/meese.elc
+./lisp/obsolete/pgg-def.elc
+./lisp/obsolete/lmenu.elc
+./lisp/obsolete/otodo-mode.elc
+./lisp/obsolete/tpu-mapper.elc
+./lisp/obsolete/rcompile.elc
+./lisp/obsolete/html2text.elc
+./lisp/obsolete/sup-mouse.elc
+./lisp/obsolete/lazy-lock.elc
+./lisp/obsolete/vi.elc
+./lisp/obsolete/cust-print.elc
+./lisp/obsolete/abbrevlist.elc
+./lisp/obsolete/patcomp.elc
+./lisp/obsolete/fast-lock.elc
+./lisp/obsolete/gs.elc
+./lisp/obsolete/tls.elc
+./lisp/obsolete/sregex.elc
+./lisp/obsolete/pc-select.elc
+./lisp/obsolete/levents.elc
+./lisp/obsolete/cc-compat.elc
+./lisp/obsolete/old-whitespace.elc
+./lisp/obsolete/ledit.elc
+./lisp/obsolete/erc-hecomplete.elc
+./lisp/obsolete/pgg.elc
+./lisp/obsolete/complete.elc
+./lisp/obsolete/longlines.elc
+./lisp/hilit-chg.elc
+./lisp/epg-config.elc
+./lisp/kermit.elc
+./lisp/widget.elc
+./lisp/uniquify.elc
+./lisp/thumbs.elc
+./lisp/find-cmd.elc
+./lisp/image-mode.elc
+./lisp/ses.elc
+./lisp/dired-x.elc
+./lisp/finder-inf.el
+./lisp/shadowfile.elc
+./lisp/winner.elc
+./lisp/ibuf-ext.elc
+./lisp/double.elc
+./lisp/vt-control.elc
+./lisp/cus-load.el
+./lisp/faces.elc
+./lisp/msb.elc
+./lisp/language/utf-8-lang.elc
+./lisp/language/lao.elc
+./lisp/language/khmer.elc
+./lisp/language/china-util.elc
+./lisp/language/vietnamese.elc
+./lisp/language/czech.elc
+./lisp/language/pinyin.elc
+./lisp/language/romanian.elc
+./lisp/language/tibetan.elc
+./lisp/language/cham.elc
+./lisp/language/korean.elc
+./lisp/language/slovak.elc
+./lisp/language/georgian.elc
+./lisp/language/tai-viet.elc
+./lisp/language/tibet-util.elc
+./lisp/language/ethio-util.elc
+./lisp/language/japanese.elc
+./lisp/language/ind-util.elc
+./lisp/language/chinese.elc
+./lisp/language/thai-util.elc
+./lisp/language/hanja-util.elc
+./lisp/language/pinyin.el
+./lisp/language/thai.elc
+./lisp/language/tv-util.elc
+./lisp/language/japan-util.elc
+./lisp/language/sinhala.elc
+./lisp/language/korea-util.elc
+./lisp/language/ethiopic.elc
+./lisp/language/burmese.elc
+./lisp/language/english.elc
+./lisp/language/indian.elc
+./lisp/language/thai-word.elc
+./lisp/language/greek.elc
+./lisp/language/misc-lang.elc
+./lisp/language/cyrillic.elc
+./lisp/language/lao-util.elc
+./lisp/language/cyril-util.elc
+./lisp/language/viet-util.elc
+./lisp/language/hebrew.elc
+./lisp/language/european.elc
+./lisp/xdg.elc
+./lisp/dynamic-setting.elc
+./lisp/hippie-exp.elc
+./lisp/pcmpl-cvs.elc
+./lisp/makesum.elc
+./lisp/info.elc
+./lisp/wid-edit.elc
+./lisp/cus-edit.elc
+./lisp/icomplete.elc
+./lisp/svg.elc
+./lisp/help-mode.elc
+./lisp/emacs-lock.elc
+./lisp/electric.elc
+./lisp/progmodes/xscheme.elc
+./lisp/progmodes/idlw-shell.elc
+./lisp/progmodes/elisp-mode.elc
+./lisp/progmodes/sh-script.elc
+./lisp/progmodes/modula2.elc
+./lisp/progmodes/idlwave.elc
+./lisp/progmodes/pascal.elc
+./lisp/progmodes/grep.elc
+./lisp/progmodes/autoconf.elc
+./lisp/progmodes/ada-prj.elc
+./lisp/progmodes/ps-mode.elc
+./lisp/progmodes/antlr-mode.elc
+./lisp/progmodes/cperl-mode.elc
+./lisp/progmodes/scheme.elc
+./lisp/progmodes/python.elc
+./lisp/progmodes/mixal-mode.elc
+./lisp/progmodes/hideshow.elc
+./lisp/progmodes/prog-mode.elc
+./lisp/progmodes/bat-mode.elc
+./lisp/progmodes/which-func.elc
+./lisp/progmodes/ebnf-ebx.elc
+./lisp/progmodes/compile.elc
+./lisp/progmodes/cc-styles.elc
+./lisp/progmodes/octave.elc
+./lisp/progmodes/ebnf-otz.elc
+./lisp/progmodes/ruby-mode.elc
+./lisp/progmodes/asm-mode.elc
+./lisp/progmodes/glasses.elc
+./lisp/progmodes/tcl.elc
+./lisp/progmodes/ada-stmt.elc
+./lisp/progmodes/ebnf-dtd.elc
+./lisp/progmodes/cwarn.elc
+./lisp/progmodes/cc-defs.elc
+./lisp/progmodes/js.elc
+./lisp/progmodes/prolog.elc
+./lisp/progmodes/cc-langs.elc
+./lisp/progmodes/f90.elc
+./lisp/progmodes/cc-mode.elc
+./lisp/progmodes/ada-xref.elc
+./lisp/progmodes/cc-cmds.elc
+./lisp/progmodes/cc-bytecomp.elc
+./lisp/progmodes/perl-mode.elc
+./lisp/progmodes/make-mode.elc
+./lisp/progmodes/ebnf2ps.elc
+./lisp/progmodes/cc-awk.elc
+./lisp/progmodes/idlw-toolbar.elc
+./lisp/progmodes/flymake-proc.elc
+./lisp/progmodes/bug-reference.elc
+./lisp/progmodes/fortran.elc
+./lisp/progmodes/ebnf-yac.elc
+./lisp/progmodes/subword.elc
+./lisp/progmodes/ebrowse.elc
+./lisp/progmodes/vera-mode.elc
+./lisp/progmodes/idlw-complete-structtag.elc
+./lisp/progmodes/cc-engine.elc
+./lisp/progmodes/ebnf-abn.elc
+./lisp/progmodes/cc-fonts.elc
+./lisp/progmodes/cc-align.elc
+./lisp/progmodes/opascal.elc
+./lisp/progmodes/cc-menus.elc
+./lisp/progmodes/gdb-mi.elc
+./lisp/progmodes/m4-mode.elc
+./lisp/progmodes/dcl-mode.elc
+./lisp/progmodes/flymake.elc
+./lisp/progmodes/flymake-cc.elc
+./lisp/progmodes/vhdl-mode.elc
+./lisp/progmodes/ebnf-iso.elc
+./lisp/progmodes/xref.elc
+./lisp/progmodes/hideif.elc
+./lisp/progmodes/icon.elc
+./lisp/progmodes/ld-script.elc
+./lisp/progmodes/cc-vars.elc
+./lisp/progmodes/ada-mode.elc
+./lisp/progmodes/sql.elc
+./lisp/progmodes/executable.elc
+./lisp/progmodes/gud.elc
+./lisp/progmodes/mantemp.elc
+./lisp/progmodes/inf-lisp.elc
+./lisp/progmodes/cfengine.elc
+./lisp/progmodes/cpp.elc
+./lisp/progmodes/idlw-help.elc
+./lisp/progmodes/cc-guess.elc
+./lisp/progmodes/meta-mode.elc
+./lisp/progmodes/simula.elc
+./lisp/progmodes/verilog-mode.elc
+./lisp/progmodes/cmacexp.elc
+./lisp/progmodes/ebnf-bnf.elc
+./lisp/progmodes/project.elc
+./lisp/progmodes/etags.elc
+./lisp/ruler-mode.elc
+./lisp/expand.elc
+./lisp/doc-view.elc
+./lisp/mail/mail-hist.elc
+./lisp/mail/rmailsort.elc
+./lisp/mail/mail-parse.elc
+./lisp/mail/reporter.elc
+./lisp/mail/uce.elc
+./lisp/mail/binhex.elc
+./lisp/mail/rfc2045.elc
+./lisp/mail/footnote.elc
+./lisp/mail/mailalias.elc
+./lisp/mail/rmailout.elc
+./lisp/mail/rmail-loaddefs.el
+./lisp/mail/rmail-spam-filter.elc
+./lisp/mail/hashcash.elc
+./lisp/mail/rmail.elc
+./lisp/mail/mailclient.elc
+./lisp/mail/emacsbug.elc
+./lisp/mail/qp.elc
+./lisp/mail/rmailsum.elc
+./lisp/mail/rmailkwd.elc
+./lisp/mail/undigest.elc
+./lisp/mail/mail-prsvr.elc
+./lisp/mail/rmailmsc.elc
+./lisp/mail/uudecode.elc
+./lisp/mail/flow-fill.elc
+./lisp/mail/rfc2047.elc
+./lisp/mail/yenc.elc
+./lisp/mail/mspools.elc
+./lisp/mail/rfc2231.elc
+./lisp/mail/mail-extr.elc
+./lisp/mail/mailabbrev.elc
+./lisp/mail/sendmail.elc
+./lisp/mail/ietf-drums.elc
+./lisp/mail/rfc822.elc
+./lisp/mail/metamail.elc
+./lisp/mail/rmailedit.elc
+./lisp/mail/smtpmail.elc
+./lisp/mail/supercite.elc
+./lisp/mail/mailheader.elc
+./lisp/mail/unrmail.elc
+./lisp/mail/rfc2368.elc
+./lisp/mail/rmailmm.elc
+./lisp/mail/feedmail.elc
+./lisp/mail/mail-utils.elc
+./lisp/url/url-ldap.elc
+./lisp/url/url-ns.elc
+./lisp/url/url-file.elc
+./lisp/url/url-dired.elc
+./lisp/url/url-tramp.elc
+./lisp/url/url-gw.elc
+./lisp/url/url-http.elc
+./lisp/url/url-cache.elc
+./lisp/url/url-about.elc
+./lisp/url/url-proxy.elc
+./lisp/url/url-ftp.elc
+./lisp/url/url-history.elc
+./lisp/url/url-nfs.elc
+./lisp/url/url-handlers.elc
+./lisp/url/url-auth.elc
+./lisp/url/url-mailto.elc
+./lisp/url/url-news.elc
+./lisp/url/url-domsuf.elc
+./lisp/url/url-imap.elc
+./lisp/url/url-expand.elc
+./lisp/url/url-cookie.elc
+./lisp/url/url.elc
+./lisp/url/url-methods.elc
+./lisp/url/url-vars.elc
+./lisp/url/url-dav.elc
+./lisp/url/url-parse.elc
+./lisp/url/url-misc.elc
+./lisp/url/url-future.elc
+./lisp/url/url-queue.elc
+./lisp/url/url-privacy.elc
+./lisp/url/url-irc.elc
+./lisp/url/url-cid.elc
+./lisp/url/url-util.elc
+./lisp/disp-table.elc
+./lisp/dom.elc
+./lisp/x-dnd.elc
+./lisp/misearch.elc
+./lisp/delim-col.elc
+./lisp/bindings.elc
+./lisp/color.elc
+./lisp/mb-depth.elc
+./lisp/mh-e/mh-loaddefs.el~
+./lisp/mh-e/mh-folder.elc
+./lisp/mh-e/mh-inc.elc
+./lisp/mh-e/mh-show.elc
+./lisp/mh-e/mh-search.elc
+./lisp/mh-e/mh-e.elc
+./lisp/mh-e/mh-buffers.elc
+./lisp/mh-e/mh-speed.elc
+./lisp/mh-e/mh-tool-bar.elc
+./lisp/mh-e/mh-thread.elc
+./lisp/mh-e/mh-gnus.elc
+./lisp/mh-e/mh-mime.elc
+./lisp/mh-e/mh-utils.elc
+./lisp/mh-e/mh-xface.elc
+./lisp/mh-e/mh-funcs.elc
+./lisp/mh-e/mh-seq.elc
+./lisp/mh-e/mh-loaddefs.el
+./lisp/mh-e/mh-letter.elc
+./lisp/mh-e/mh-junk.elc
+./lisp/mh-e/mh-alias.elc
+./lisp/mh-e/mh-print.elc
+./lisp/mh-e/mh-comp.elc
+./lisp/mh-e/mh-identity.elc
+./lisp/mh-e/mh-scan.elc
+./lisp/mh-e/mh-limit.elc
+./lisp/mh-e/mh-compat.elc
+./lisp/register.elc
+./lisp/proced.elc
+./lisp/flow-ctrl.elc
+./lisp/bs.elc
+./lisp/kmacro.elc
+./lisp/find-file.elc
+./lisp/elec-pair.elc
+./lisp/hl-line.elc
+./lisp/json.elc
+./lisp/fileloop.elc
+./lisp/view.elc
+./lisp/rtree.elc
+./lisp/gnus/gnus-kill.elc
+./lisp/gnus/nnbabyl.elc
+./lisp/gnus/nnmairix.elc
+./lisp/gnus/gnus-picon.elc
+./lisp/gnus/spam-wash.elc
+./lisp/gnus/nnmbox.elc
+./lisp/gnus/nnnil.elc
+./lisp/gnus/gnus-fun.elc
+./lisp/gnus/gmm-utils.elc
+./lisp/gnus/legacy-gnus-agent.elc
+./lisp/gnus/gnus-demon.elc
+./lisp/gnus/gnus-cus.elc
+./lisp/gnus/gnus-topic.elc
+./lisp/gnus/mml2015.elc
+./lisp/gnus/gnus-util.elc
+./lisp/gnus/gnus-group.elc
+./lisp/gnus/nnheader.elc
+./lisp/gnus/mm-extern.elc
+./lisp/gnus/gnus-spec.elc
+./lisp/gnus/gnus-sieve.elc
+./lisp/gnus/deuglify.elc
+./lisp/gnus/gnus-salt.elc
+./lisp/gnus/spam-stat.elc
+./lisp/gnus/nnweb.elc
+./lisp/gnus/nngateway.elc
+./lisp/gnus/gnus-delay.elc
+./lisp/gnus/nndiary.elc
+./lisp/gnus/gnus-undo.elc
+./lisp/gnus/mml-smime.elc
+./lisp/gnus/gnus.elc
+./lisp/gnus/gnus-cite.elc
+./lisp/gnus/gnus-logic.elc
+./lisp/gnus/gnus-bcklg.elc
+./lisp/gnus/nnagent.elc
+./lisp/gnus/gnus-rfc1843.elc
+./lisp/gnus/gnus-diary.elc
+./lisp/gnus/gnus-eform.elc
+./lisp/gnus/nnmaildir.elc
+./lisp/gnus/gnus-cache.elc
+./lisp/gnus/nnml.elc
+./lisp/gnus/gnus-icalendar.elc
+./lisp/gnus/mail-source.elc
+./lisp/gnus/nnrss.elc
+./lisp/gnus/mm-uu.elc
+./lisp/gnus/gnus-agent.elc
+./lisp/gnus/nnregistry.elc
+./lisp/gnus/nndir.elc
+./lisp/gnus/smime.elc
+./lisp/gnus/gnus-srvr.elc
+./lisp/gnus/mm-bodies.elc
+./lisp/gnus/nndoc.elc
+./lisp/gnus/gnus-sum.elc
+./lisp/gnus/gnus-draft.elc
+./lisp/gnus/nnfolder.elc
+./lisp/gnus/mm-encode.elc
+./lisp/gnus/nnoo.elc
+./lisp/gnus/mm-archive.elc
+./lisp/gnus/gnus-gravatar.elc
+./lisp/gnus/gnus-ml.elc
+./lisp/gnus/gnus-msg.elc
+./lisp/gnus/gssapi.elc
+./lisp/gnus/gnus-art.elc
+./lisp/gnus/nnspool.elc
+./lisp/gnus/nnmail.elc
+./lisp/gnus/spam.elc
+./lisp/gnus/smiley.elc
+./lisp/gnus/gnus-bookmark.elc
+./lisp/gnus/nntp.elc
+./lisp/gnus/mml-sec.elc
+./lisp/gnus/gnus-cloud.elc
+./lisp/gnus/nnmh.elc
+./lisp/gnus/gnus-range.elc
+./lisp/gnus/mml.elc
+./lisp/gnus/nndraft.elc
+./lisp/gnus/gnus-registry.elc
+./lisp/gnus/mml1991.elc
+./lisp/gnus/gnus-mh.elc
+./lisp/gnus/spam-report.elc
+./lisp/gnus/gnus-notifications.elc
+./lisp/gnus/mm-decode.elc
+./lisp/gnus/gnus-win.elc
+./lisp/gnus/canlock.elc
+./lisp/gnus/nnir.elc
+./lisp/gnus/score-mode.elc
+./lisp/gnus/nnimap.elc
+./lisp/gnus/gnus-vm.elc
+./lisp/gnus/gnus-score.elc
+./lisp/gnus/gnus-int.elc
+./lisp/gnus/gnus-uu.elc
+./lisp/gnus/gnus-mlspl.elc
+./lisp/gnus/nnvirtual.elc
+./lisp/gnus/gnus-html.elc
+./lisp/gnus/mm-view.elc
+./lisp/gnus/message.elc
+./lisp/gnus/gnus-async.elc
+./lisp/gnus/nneething.elc
+./lisp/gnus/mm-url.elc
+./lisp/gnus/gnus-dired.elc
+./lisp/gnus/gnus-dup.elc
+./lisp/gnus/gnus-start.elc
+./lisp/gnus/mm-util.elc
+./lisp/gnus/mm-partial.elc
+./lisp/font-core.elc
+./lisp/scroll-bar.elc
+./lisp/frameset.elc
+./lisp/autoinsert.elc
+./lisp/loaddefs.el
+./lisp/format.elc
+./lisp/cus-start.elc
+./lisp/cmuscheme.elc
+./lisp/elide-head.elc
+./lisp/cedet/semantic/db-ref.elc
+./lisp/cedet/semantic/decorate/mode.elc
+./lisp/cedet/semantic/decorate/include.elc
+./lisp/cedet/semantic/db-find.elc
+./lisp/cedet/semantic/java.elc
+./lisp/cedet/semantic/ede-grammar.elc
+./lisp/cedet/semantic/ia.elc
+./lisp/cedet/semantic/bovine/c-by.elc
+./lisp/cedet/semantic/bovine/make.elc
+./lisp/cedet/semantic/bovine/scm-by.elc
+./lisp/cedet/semantic/bovine/el.elc
+./lisp/cedet/semantic/bovine/scm.elc
+./lisp/cedet/semantic/bovine/debug.elc
+./lisp/cedet/semantic/bovine/gcc.elc
+./lisp/cedet/semantic/bovine/grammar.elc
+./lisp/cedet/semantic/bovine/c.elc
+./lisp/cedet/semantic/bovine/make-by.elc
+./lisp/cedet/semantic/html.elc
+./lisp/cedet/semantic/db-typecache.elc
+./lisp/cedet/semantic/db-ebrowse.elc
+./lisp/cedet/semantic/db-el.elc
+./lisp/cedet/semantic/chart.elc
+./lisp/cedet/semantic/tag-write.elc
+./lisp/cedet/semantic/doc.elc
+./lisp/cedet/semantic/loaddefs.el~
+./lisp/cedet/semantic/db-javascript.elc
+./lisp/cedet/semantic/sort.elc
+./lisp/cedet/semantic/tag-file.elc
+./lisp/cedet/semantic/texi.elc
+./lisp/cedet/semantic/util-modes.elc
+./lisp/cedet/semantic/db-file.elc
+./lisp/cedet/semantic/tag.elc
+./lisp/cedet/semantic/lex.elc
+./lisp/cedet/semantic/edit.elc
+./lisp/cedet/semantic/sb.elc
+./lisp/cedet/semantic/debug.elc
+./lisp/cedet/semantic/find.elc
+./lisp/cedet/semantic/ia-sb.elc
+./lisp/cedet/semantic/loaddefs.el
+./lisp/cedet/semantic/format.elc
+./lisp/cedet/semantic/imenu.elc
+./lisp/cedet/semantic/tag-ls.elc
+./lisp/cedet/semantic/analyze.elc
+./lisp/cedet/semantic/lex-spp.elc
+./lisp/cedet/semantic/util.elc
+./lisp/cedet/semantic/db-mode.elc
+./lisp/cedet/semantic/dep.elc
+./lisp/cedet/semantic/ctxt.elc
+./lisp/cedet/semantic/idle.elc
+./lisp/cedet/semantic/db.elc
+./lisp/cedet/semantic/grammar.elc
+./lisp/cedet/semantic/symref.elc
+./lisp/cedet/semantic/bovine.elc
+./lisp/cedet/semantic/db-global.elc
+./lisp/cedet/semantic/wisent.elc
+./lisp/cedet/semantic/grammar-wy.elc
+./lisp/cedet/semantic/scope.elc
+./lisp/cedet/semantic/fw.elc
+./lisp/cedet/semantic/senator.elc
+./lisp/cedet/semantic/decorate.elc
+./lisp/cedet/semantic/mru-bookmark.elc
+./lisp/cedet/semantic/analyze/debug.elc
+./lisp/cedet/semantic/analyze/fcn.elc
+./lisp/cedet/semantic/analyze/refs.elc
+./lisp/cedet/semantic/analyze/complete.elc
+./lisp/cedet/semantic/db-debug.elc
+./lisp/cedet/semantic/complete.elc
+./lisp/cedet/semantic/wisent/comp.elc
+./lisp/cedet/semantic/wisent/python-wy.el~
+./lisp/cedet/semantic/wisent/python.elc
+./lisp/cedet/semantic/wisent/java-tags.elc
+./lisp/cedet/semantic/wisent/js-wy.elc
+./lisp/cedet/semantic/wisent/javascript.elc
+./lisp/cedet/semantic/wisent/grammar.elc
+./lisp/cedet/semantic/wisent/wisent.elc
+./lisp/cedet/semantic/wisent/js-wy.el~
+./lisp/cedet/semantic/wisent/python-wy.elc
+./lisp/cedet/semantic/wisent/javat-wy.elc
+./lisp/cedet/semantic/symref/filter.elc
+./lisp/cedet/semantic/symref/grep.elc
+./lisp/cedet/semantic/symref/list.elc
+./lisp/cedet/semantic/symref/idutils.elc
+./lisp/cedet/semantic/symref/cscope.elc
+./lisp/cedet/semantic/symref/global.elc
+./lisp/cedet/cedet.elc
+./lisp/cedet/cedet-global.elc
+./lisp/cedet/srecode.elc
+./lisp/cedet/pulse.elc
+./lisp/cedet/srecode/expandproto.elc
+./lisp/cedet/srecode/java.elc
+./lisp/cedet/srecode/fields.elc
+./lisp/cedet/srecode/dictionary.elc
+./lisp/cedet/srecode/insert.elc
+./lisp/cedet/srecode/compile.elc
+./lisp/cedet/srecode/table.elc
+./lisp/cedet/srecode/el.elc
+./lisp/cedet/srecode/extract.elc
+./lisp/cedet/srecode/texi.elc
+./lisp/cedet/srecode/srt.elc
+./lisp/cedet/srecode/document.elc
+./lisp/cedet/srecode/mode.elc
+./lisp/cedet/srecode/filters.elc
+./lisp/cedet/srecode/find.elc
+./lisp/cedet/srecode/srt-wy.elc
+./lisp/cedet/srecode/loaddefs.el
+./lisp/cedet/srecode/semantic.elc
+./lisp/cedet/srecode/template.elc
+./lisp/cedet/srecode/ctxt.elc
+./lisp/cedet/srecode/cpp.elc
+./lisp/cedet/srecode/map.elc
+./lisp/cedet/srecode/getset.elc
+./lisp/cedet/srecode/srt-mode.elc
+./lisp/cedet/srecode/args.elc
+./lisp/cedet/cedet-idutils.elc
+./lisp/cedet/data-debug.elc
+./lisp/cedet/mode-local.elc
+./lisp/cedet/cedet-cscope.elc
+./lisp/cedet/cedet-files.elc
+./lisp/cedet/ede/custom.elc
+./lisp/cedet/ede/speedbar.elc
+./lisp/cedet/ede/linux.elc
+./lisp/cedet/ede/simple.elc
+./lisp/cedet/ede/make.elc
+./lisp/cedet/ede/proj-archive.elc
+./lisp/cedet/ede/source.elc
+./lisp/cedet/ede/proj-scheme.elc
+./lisp/cedet/ede/proj.elc
+./lisp/cedet/ede/proj-obj.elc
+./lisp/cedet/ede/pconf.elc
+./lisp/cedet/ede/detect.elc
+./lisp/cedet/ede/cpp-root.elc
+./lisp/cedet/ede/srecode.elc
+./lisp/cedet/ede/base.elc
+./lisp/cedet/ede/makefile-edit.elc
+./lisp/cedet/ede/system.elc
+./lisp/cedet/ede/pmake.elc
+./lisp/cedet/ede/proj-shared.elc
+./lisp/cedet/ede/emacs.elc
+./lisp/cedet/ede/loaddefs.el
+./lisp/cedet/ede/auto.elc
+./lisp/cedet/ede/proj-prog.elc
+./lisp/cedet/ede/proj-comp.elc
+./lisp/cedet/ede/proj-elisp.elc
+./lisp/cedet/ede/shell.elc
+./lisp/cedet/ede/autoconf-edit.elc
+./lisp/cedet/ede/util.elc
+./lisp/cedet/ede/dired.elc
+./lisp/cedet/ede/proj-info.elc
+./lisp/cedet/ede/files.elc
+./lisp/cedet/ede/project-am.elc
+./lisp/cedet/ede/generic.elc
+./lisp/cedet/ede/locate.elc
+./lisp/cedet/ede/config.elc
+./lisp/cedet/ede/proj-aux.elc
+./lisp/cedet/ede/proj-misc.elc
+./lisp/cedet/semantic.elc
+./lisp/cedet/ede.elc
+./lisp/cedet/inversion.elc
+./lisp/shell.elc
+./lisp/net/tramp-sh.elc
+./lisp/net/rlogin.elc
+./lisp/net/dbus.elc
+./lisp/net/tramp-cmds.elc
+./lisp/net/newst-ticker.elc
+./lisp/net/tramp-compat.elc
+./lisp/net/eudcb-bbdb.elc
+./lisp/net/mairix.elc
+./lisp/net/quickurl.elc
+./lisp/net/pop3.elc
+./lisp/net/sasl-ntlm.elc
+./lisp/net/tramp.elc
+./lisp/net/sieve.elc
+./lisp/net/newst-plainview.elc
+./lisp/net/goto-addr.elc
+./lisp/net/sieve-manage.elc
+./lisp/net/network-stream.elc
+./lisp/net/eudcb-mab.elc
+./lisp/net/sasl-digest.elc
+./lisp/net/netrc.elc
+./lisp/net/eudcb-ldap.elc
+./lisp/net/newsticker.elc
+./lisp/net/tramp-integration.elc
+./lisp/net/tramp-ftp.elc
+./lisp/net/mailcap.elc
+./lisp/net/puny.elc
+./lisp/net/tramp-adb.elc
+./lisp/net/trampver.elc
+./lisp/net/eww.elc
+./lisp/net/rcirc.elc
+./lisp/net/rfc2104.elc
+./lisp/net/ldap.elc
+./lisp/net/net-utils.elc
+./lisp/net/eudc-export.elc
+./lisp/net/socks.elc
+./lisp/net/shr-color.elc
+./lisp/net/ange-ftp.elc
+./lisp/net/tramp-uu.elc
+./lisp/net/sasl-scram-rfc.elc
+./lisp/net/soap-inspect.elc
+./lisp/net/newst-backend.elc
+./lisp/net/telnet.elc
+./lisp/net/tramp-loaddefs.el~
+./lisp/net/soap-client.elc
+./lisp/net/nsm.elc
+./lisp/net/tramp-smb.elc
+./lisp/net/tramp-archive.elc
+./lisp/net/gnutls.elc
+./lisp/net/tramp-sudoedit.elc
+./lisp/net/eudc-bob.elc
+./lisp/net/sasl.elc
+./lisp/net/sasl-cram.elc
+./lisp/net/snmp-mode.elc
+./lisp/net/imap.elc
+./lisp/net/webjump.elc
+./lisp/net/tramp-rclone.elc
+./lisp/net/zeroconf.elc
+./lisp/net/hmac-def.elc
+./lisp/net/eudc-vars.elc
+./lisp/net/eudc-hotlist.elc
+./lisp/net/hmac-md5.elc
+./lisp/net/eudc.elc
+./lisp/net/browse-url.elc
+./lisp/net/tramp-cache.elc
+./lisp/net/dns.elc
+./lisp/net/dig.elc
+./lisp/net/tramp-gvfs.elc
+./lisp/net/newst-reader.elc
+./lisp/net/tramp-loaddefs.el
+./lisp/net/sieve-mode.elc
+./lisp/net/ntlm.elc
+./lisp/net/secrets.elc
+./lisp/net/shr.elc
+./lisp/net/newst-treeview.elc
+./lisp/timezone.elc
+./lisp/imenu.elc
+./lisp/tempo.elc
+./lisp/macros.elc
+./lisp/thread.elc
+./lisp/recentf.elc
+./lisp/ps-samp.elc
+./lisp/ecomplete.elc
+./lisp/time.elc
+./lisp/userlock.elc
+./lisp/ps-print-loaddefs.el
+./lisp/loadhist.elc
+./lisp/printing.elc
+./lisp/reposition.elc
+./lisp/sb-image.elc
+./lisp/help.elc
+./lisp/ansi-color.elc
+./lisp/dired-loaddefs.el
+./lisp/tar-mode.elc
+./lisp/minibuffer.elc
+./lisp/completion.elc
+./lisp/font-lock.elc
+./lisp/facemenu.elc
+./lisp/man.elc
+./lisp/tutorial.elc
+./lisp/ps-print.elc
+./lisp/nxml/nxml-ns.elc
+./lisp/nxml/rng-uri.elc
+./lisp/nxml/nxml-rap.elc
+./lisp/nxml/rng-parse.elc
+./lisp/nxml/nxml-outln.elc
+./lisp/nxml/xmltok.elc
+./lisp/nxml/rng-dt.elc
+./lisp/nxml/nxml-parse.elc
+./lisp/nxml/nxml-mode.elc
+./lisp/nxml/rng-valid.elc
+./lisp/nxml/rng-pttrn.elc
+./lisp/nxml/rng-nxml.elc
+./lisp/nxml/rng-util.elc
+./lisp/nxml/nxml-enc.elc
+./lisp/nxml/rng-cmpct.elc
+./lisp/nxml/rng-match.elc
+./lisp/nxml/nxml-util.elc
+./lisp/nxml/rng-xsd.elc
+./lisp/nxml/nxml-maint.elc
+./lisp/nxml/rng-loc.elc
+./lisp/nxml/xsd-regexp.elc
+./lisp/nxml/rng-maint.elc
+./lisp/descr-text.elc
+./lisp/dired.elc
+./lisp/ibuffer.elc
+./lisp/dnd.elc
+./lisp/frame.elc
+./lisp/help-at-pt.elc
+./lisp/vcursor.elc
+./lisp/filesets.elc
+./lisp/emulation/viper-macs.elc
+./lisp/emulation/edt-lk201.elc
+./lisp/emulation/cua-gmrk.elc
+./lisp/emulation/edt-pc.elc
+./lisp/emulation/viper-mous.elc
+./lisp/emulation/viper-ex.elc
+./lisp/emulation/edt-vt100.elc
+./lisp/emulation/viper-cmd.elc
+./lisp/emulation/edt-mapper.elc
+./lisp/emulation/viper.elc
+./lisp/emulation/edt.elc
+./lisp/emulation/viper-keym.elc
+./lisp/emulation/viper-init.elc
+./lisp/emulation/cua-rect.elc
+./lisp/emulation/cua-base.elc
+./lisp/emulation/keypad.elc
+./lisp/emulation/viper-util.elc
+./lisp/reveal.elc
+./lisp/tree-widget.elc
+./lisp/midnight.elc
+./lisp/allout.elc
+./lisp/files.elc
+./lisp/erc/erc-join.elc
+./lisp/erc/erc-ezbounce.elc
+./lisp/erc/erc-pcomplete.elc
+./lisp/erc/erc-truncate.elc
+./lisp/erc/erc-services.elc
+./lisp/erc/erc-lang.elc
+./lisp/erc/erc-fill.elc
+./lisp/erc/erc-netsplit.elc
+./lisp/erc/erc-dcc.elc
+./lisp/erc/erc-list.elc
+./lisp/erc/erc-page.elc
+./lisp/erc/erc-desktop-notifications.elc
+./lisp/erc/erc-imenu.elc
+./lisp/erc/erc-backend.elc
+./lisp/erc/erc-capab.elc
+./lisp/erc/erc-spelling.elc
+./lisp/erc/erc-log.elc
+./lisp/erc/erc-autoaway.elc
+./lisp/erc/erc-sound.elc
+./lisp/erc/erc-networks.elc
+./lisp/erc/erc-goodies.elc
+./lisp/erc/erc.elc
+./lisp/erc/erc-match.elc
+./lisp/erc/erc-notify.elc
+./lisp/erc/erc-compat.elc
+./lisp/erc/erc-xdcc.elc
+./lisp/erc/erc-loaddefs.el~
+./lisp/erc/erc-replace.elc
+./lisp/erc/erc-stamp.elc
+./lisp/erc/erc-ibuffer.elc
+./lisp/erc/erc-ring.elc
+./lisp/erc/erc-loaddefs.el
+./lisp/erc/erc-speedbar.elc
+./lisp/erc/erc-button.elc
+./lisp/erc/erc-menu.elc
+./lisp/erc/erc-track.elc
+./lisp/erc/erc-identd.elc
+./lisp/novice.elc
+./lisp/hi-lock.elc
+./lisp/foldout.elc
+./lisp/lpr.elc
+./lisp/dos-fns.elc
+./lisp/whitespace.elc
+./lisp/ps-bdf.elc
+./lisp/chistory.elc
+./lisp/edmacro.elc
+./lisp/registry.elc
+./lisp/textmodes/texinfo.elc
+./lisp/textmodes/reftex-sel.elc
+./lisp/textmodes/rst.elc
+./lisp/textmodes/two-column.elc
+./lisp/textmodes/sgml-mode.elc
+./lisp/textmodes/conf-mode.elc
+./lisp/textmodes/fill.elc
+./lisp/textmodes/artist.elc
+./lisp/textmodes/reftex-cite.elc
+./lisp/textmodes/picture.elc
+./lisp/textmodes/bibtex.elc
+./lisp/textmodes/text-mode.elc
+./lisp/textmodes/tildify.elc
+./lisp/textmodes/table.elc
+./lisp/textmodes/underline.elc
+./lisp/textmodes/bibtex-style.elc
+./lisp/textmodes/reftex-auc.elc
+./lisp/textmodes/tex-mode.elc
+./lisp/textmodes/reftex-loaddefs.el
+./lisp/textmodes/reftex-ref.elc
+./lisp/textmodes/reftex-index.elc
+./lisp/textmodes/makeinfo.elc
+./lisp/textmodes/nroff-mode.elc
+./lisp/textmodes/reftex-dcr.elc
+./lisp/textmodes/paragraphs.elc
+./lisp/textmodes/less-css-mode.elc
+./lisp/textmodes/texinfmt.elc
+./lisp/textmodes/refer.elc
+./lisp/textmodes/dns-mode.elc
+./lisp/textmodes/enriched.elc
+./lisp/textmodes/mhtml-mode.elc
+./lisp/textmodes/page.elc
+./lisp/textmodes/css-mode.elc
+./lisp/textmodes/reftex-toc.elc
+./lisp/textmodes/reftex-global.elc
+./lisp/textmodes/remember.elc
+./lisp/textmodes/reftex.elc
+./lisp/textmodes/refbib.elc
+./lisp/textmodes/page-ext.elc
+./lisp/textmodes/flyspell.elc
+./lisp/textmodes/bib-mode.elc
+./lisp/textmodes/po.elc
+./lisp/textmodes/refill.elc
+./lisp/textmodes/ispell.elc
+./lisp/textmodes/texnfo-upd.elc
+./lisp/textmodes/reftex-vars.elc
+./lisp/textmodes/reftex-parse.elc
+./lisp/delsel.elc
+./lisp/abbrev.elc
+./lisp/mouse-copy.elc
+./lisp/desktop.elc
+./lisp/epa-dired.elc
+./lisp/menu-bar.elc
+./lisp/wdired.elc
+./lisp/outline.elc
+./lisp/plstore.elc
+./lisp/dired-aux.elc
+./lisp/rfn-eshadow.elc
+./lisp/follow.elc
+./lisp/scroll-all.elc
+./lisp/master.elc
+./lisp/htmlfontify-loaddefs.el
+./lisp/cus-theme.elc
+./lisp/ps-mule.elc
+./lisp/ielm.elc
+./lisp/dabbrev.elc
+./lisp/auth-source.elc
+./lisp/misc.elc
+./lisp/help-macro.elc
+./lisp/server.elc
+./lisp/thingatpt.elc
+./lisp/display-line-numbers.elc
+./lisp/epa-hook.elc
+./lisp/jka-compr.elc
+./lisp/vc/vc-hg.elc
+./lisp/vc/vc-hooks.elc
+./lisp/vc/ediff-mult.elc
+./lisp/vc/ediff-merg.elc
+./lisp/vc/pcvs-util.elc
+./lisp/vc/vc-bzr.elc
+./lisp/vc/vc-src.elc
+./lisp/vc/vc-dir.elc
+./lisp/vc/ediff-wind.elc
+./lisp/vc/vc-mtn.elc
+./lisp/vc/pcvs-info.elc
+./lisp/vc/pcvs-defs.elc
+./lisp/vc/cvs-status.elc
+./lisp/vc/vc-filewise.elc
+./lisp/vc/pcvs.elc
+./lisp/vc/diff.elc
+./lisp/vc/vc-dispatcher.elc
+./lisp/vc/vc-annotate.elc
+./lisp/vc/ediff-ptch.elc
+./lisp/vc/ediff-vers.elc
+./lisp/vc/log-edit.elc
+./lisp/vc/log-view.elc
+./lisp/vc/vc.elc
+./lisp/vc/ediff.elc
+./lisp/vc/emerge.elc
+./lisp/vc/add-log.elc
+./lisp/vc/diff-mode.elc
+./lisp/vc/vc-git.elc
+./lisp/vc/vc-rcs.elc
+./lisp/vc/vc-cvs.elc
+./lisp/vc/ediff-init.elc
+./lisp/vc/compare-w.elc
+./lisp/vc/ediff-diff.elc
+./lisp/vc/vc-svn.elc
+./lisp/vc/vc-sccs.elc
+./lisp/vc/smerge-mode.elc
+./lisp/vc/ediff-hook.elc
+./lisp/vc/ediff-help.elc
+./lisp/vc/ediff-util.elc
+./lisp/vc/pcvs-parse.elc
+./lisp/vc/vc-dav.elc
+./lisp/leim/leim-list.el
+./lisp/leim/quail/4Corner.elc
+./lisp/leim/quail/latin-post.elc
+./lisp/leim/quail/ETZY.el
+./lisp/leim/quail/tsang-cns.el
+./lisp/leim/quail/CTLau.el
+./lisp/leim/quail/symbol-ksc.elc
+./lisp/leim/quail/arabic.elc
+./lisp/leim/quail/lao.elc
+./lisp/leim/quail/CTLau-b5.el
+./lisp/leim/quail/Punct.el
+./lisp/leim/quail/ZOZY.elc
+./lisp/leim/quail/tsang-b5.elc
+./lisp/leim/quail/tsang-b5.el
+./lisp/leim/quail/QJ-b5.elc
+./lisp/leim/quail/czech.elc
+./lisp/leim/quail/programmer-dvorak.elc
+./lisp/leim/quail/CTLau-b5.elc
+./lisp/leim/quail/cyril-jis.elc
+./lisp/leim/quail/rfc1345.elc
+./lisp/leim/quail/ARRAY30.el
+./lisp/leim/quail/ipa.elc
+./lisp/leim/quail/ipa-praat.elc
+./lisp/leim/quail/quick-cns.elc
+./lisp/leim/quail/tibetan.elc
+./lisp/leim/quail/tsang-cns.elc
+./lisp/leim/quail/py-punct.elc
+./lisp/leim/quail/uni-input.elc
+./lisp/leim/quail/SW.elc
+./lisp/leim/quail/sgml-input.elc
+./lisp/leim/quail/slovak.elc
+./lisp/leim/quail/hanja3.elc
+./lisp/leim/quail/QJ.elc
+./lisp/leim/quail/georgian.elc
+./lisp/leim/quail/croatian.elc
+./lisp/leim/quail/sisheng.elc
+./lisp/leim/quail/latin-alt.elc
+./lisp/leim/quail/PY-b5.el
+./lisp/leim/quail/PY.elc
+./lisp/leim/quail/TONEPY.el
+./lisp/leim/quail/japanese.elc
+./lisp/leim/quail/PY-b5.elc
+./lisp/leim/quail/tamil-dvorak.elc
+./lisp/leim/quail/quick-b5.elc
+./lisp/leim/quail/hanja-jis.elc
+./lisp/leim/quail/ETZY.elc
+./lisp/leim/quail/Punct-b5.elc
+./lisp/leim/quail/SW.el
+./lisp/leim/quail/quick-cns.el
+./lisp/leim/quail/vnvni.elc
+./lisp/leim/quail/welsh.elc
+./lisp/leim/quail/ZOZY.el
+./lisp/leim/quail/Punct-b5.el
+./lisp/leim/quail/thai.elc
+./lisp/leim/quail/4Corner.el
+./lisp/leim/quail/vntelex.elc
+./lisp/leim/quail/TONEPY.elc
+./lisp/leim/quail/ethiopic.elc
+./lisp/leim/quail/ARRAY30.elc
+./lisp/leim/quail/CTLau.elc
+./lisp/leim/quail/PY.el
+./lisp/leim/quail/indian.elc
+./lisp/leim/quail/hanja.elc
+./lisp/leim/quail/CCDOSPY.el
+./lisp/leim/quail/quick-b5.el
+./lisp/leim/quail/greek.elc
+./lisp/leim/quail/hangul.elc
+./lisp/leim/quail/latin-pre.elc
+./lisp/leim/quail/latin-ltx.elc
+./lisp/leim/quail/QJ.el
+./lisp/leim/quail/persian.elc
+./lisp/leim/quail/lrt.elc
+./lisp/leim/quail/viqr.elc
+./lisp/leim/quail/sami.elc
+./lisp/leim/quail/cyrillic.elc
+./lisp/leim/quail/Punct.elc
+./lisp/leim/quail/CCDOSPY.elc
+./lisp/leim/quail/hebrew.elc
+./lisp/leim/quail/ECDICT.el
+./lisp/leim/quail/ECDICT.elc
+./lisp/leim/quail/pypunct-b5.elc
+./lisp/leim/quail/ZIRANMA.el
+./lisp/leim/quail/ZIRANMA.elc
+./lisp/leim/quail/QJ-b5.el
+./lisp/locate.elc
+./lisp/pcmpl-linux.elc
+./lisp/echistory.elc
+./lisp/talk.elc
+./lisp/forms.elc
+./lisp/calculator.elc
+./lisp/international/utf-7.elc
+./lisp/international/ja-dic-utl.elc
+./lisp/international/iso-cvt.elc
+./lisp/international/cp51932.elc
+./lisp/international/isearch-x.elc
+./lisp/international/robin.elc
+./lisp/international/eucjp-ms.elc
+./lisp/international/ogonek.elc
+./lisp/international/kinsoku.elc
+./lisp/international/ja-dic-cnv.elc
+./lisp/international/iso-ascii.elc
+./lisp/international/mule-cmds.elc
+./lisp/international/mule-conf.elc
+./lisp/international/ccl.elc
+./lisp/international/quail.elc
+./lisp/international/latin1-disp.elc
+./lisp/international/fontset.elc
+./lisp/international/mule-util.elc
+./lisp/international/utf7.elc
+./lisp/international/characters.elc
+./lisp/international/latexenc.elc
+./lisp/international/iso-transl.elc
+./lisp/international/titdic-cnv.elc
+./lisp/international/rfc1843.elc
+./lisp/international/mule-diag.elc
+./lisp/international/mule.elc
+./lisp/international/ucs-normalize.elc
+./lisp/international/kkc.elc
+./lisp/bookmark.elc
+./lisp/auth-source-pass.elc
+./lisp/pcmpl-gnu.elc
+./lisp/allout-widgets.elc
+./lisp/pcomplete.elc
+./lisp/md4.elc
+./lisp/jsonrpc.elc
+./lisp/t-mouse.elc
+./lisp/jka-cmpr-hook.elc
+./lisp/eshell/em-alias.elc
+./lisp/eshell/em-banner.elc
+./lisp/eshell/em-basic.elc
+./lisp/eshell/em-term.elc
+./lisp/eshell/esh-proc.elc
+./lisp/eshell/em-dirs.elc
+./lisp/eshell/esh-opt.elc
+./lisp/eshell/esh-cmd.elc
+./lisp/eshell/em-cmpl.elc
+./lisp/eshell/esh-ext.elc
+./lisp/eshell/em-pred.elc
+./lisp/eshell/em-glob.elc
+./lisp/eshell/esh-mode.elc
+./lisp/eshell/esh-util.elc
+./lisp/eshell/esh-var.elc
+./lisp/eshell/em-xtra.elc
+./lisp/eshell/esh-module.elc
+./lisp/eshell/em-prompt.elc
+./lisp/eshell/em-smart.elc
+./lisp/eshell/esh-groups.el
+./lisp/eshell/em-script.elc
+./lisp/eshell/esh-arg.elc
+./lisp/eshell/em-unix.elc
+./lisp/eshell/em-tramp.elc
+./lisp/eshell/eshell.elc
+./lisp/eshell/esh-io.elc
+./lisp/eshell/em-ls.elc
+./lisp/eshell/em-rebind.elc
+./lisp/eshell/em-hist.elc
+./lisp/tabify.elc
+./lisp/org/org-plot.elc
+./lisp/org/ob-hledger.elc
+./lisp/org/ob-stan.elc
+./lisp/org/ob-eval.elc
+./lisp/org/ox.elc
+./lisp/org/org-loaddefs.el
+./lisp/org/org-ctags.elc
+./lisp/org/ox-ascii.elc
+./lisp/org/org-pcomplete.elc
+./lisp/org/ob-fortran.elc
+./lisp/org/ob-shen.elc
+./lisp/org/org-macs.elc
+./lisp/org/ob-scheme.elc
+./lisp/org/ox-org.elc
+./lisp/org/org-faces.elc
+./lisp/org/ob-sass.elc
+./lisp/org/ob-sqlite.elc
+./lisp/org/ox-md.elc
+./lisp/org/ox-texinfo.elc
+./lisp/org/org-protocol.elc
+./lisp/org/ob-mscgen.elc
+./lisp/org/ox-latex.elc
+./lisp/org/org-datetree.elc
+./lisp/org/ob-lob.elc
+./lisp/org/ob-org.elc
+./lisp/org/ob-groovy.elc
+./lisp/org/ob-python.elc
+./lisp/org/ob-awk.elc
+./lisp/org/org-entities.elc
+./lisp/org/ob-keys.elc
+./lisp/org/org-mouse.elc
+./lisp/org/ob-js.elc
+./lisp/org/ob-core.elc
+./lisp/org/ox-odt.elc
+./lisp/org/ox-icalendar.elc
+./lisp/org/ob-sql.elc
+./lisp/org/ob-java.elc
+./lisp/org/ob-perl.elc
+./lisp/org/ob-gnuplot.elc
+./lisp/org/ob.elc
+./lisp/org/org-colview.elc
+./lisp/org/ob-tangle.elc
+./lisp/org/org-capture.elc
+./lisp/org/ob-maxima.elc
+./lisp/org/ob-ocaml.elc
+./lisp/org/ob-css.elc
+./lisp/org/org-footnote.elc
+./lisp/org/ob-coq.elc
+./lisp/org/ob-sed.elc
+./lisp/org/org-habit.elc
+./lisp/org/ob-ruby.elc
+./lisp/org/org-duration.elc
+./lisp/org/ob-screen.elc
+./lisp/org/org-agenda.elc
+./lisp/org/org-irc.elc
+./lisp/org/ob-octave.elc
+./lisp/org/org-w3m.elc
+./lisp/org/org-indent.elc
+./lisp/org/ob-lilypond.elc
+./lisp/org/ob-processing.elc
+./lisp/org/org-eshell.elc
+./lisp/org/org-list.elc
+./lisp/org/org-src.elc
+./lisp/org/ob-abc.elc
+./lisp/org/ob-ref.elc
+./lisp/org/org-element.elc
+./lisp/org/ob-J.elc
+./lisp/org/org-feed.elc
+./lisp/org/ob-ditaa.elc
+./lisp/org/org-archive.elc
+./lisp/org/ob-forth.elc
+./lisp/org/ob-plantuml.elc
+./lisp/org/ob-C.elc
+./lisp/org/org-docview.elc
+./lisp/org/ob-ledger.elc
+./lisp/org/ob-exp.elc
+./lisp/org/org-attach.elc
+./lisp/org/ox-beamer.elc
+./lisp/org/ob-ebnf.elc
+./lisp/org/org-lint.elc
+./lisp/org/ob-shell.elc
+./lisp/org/org-clock.elc
+./lisp/org/ob-dot.elc
+./lisp/org/ob-lisp.elc
+./lisp/org/org-compat.elc
+./lisp/org/ob-latex.elc
+./lisp/org/ox-publish.elc
+./lisp/org/org-timer.elc
+./lisp/org/org-bibtex.elc
+./lisp/org/ob-vala.elc
+./lisp/org/ob-comint.elc
+./lisp/org/org-bbdb.elc
+./lisp/org/ox-man.elc
+./lisp/org/org-id.elc
+./lisp/org/org-info.elc
+./lisp/org/org-rmail.elc
+./lisp/org/ob-lua.elc
+./lisp/org/org-crypt.elc
+./lisp/org/org.elc
+./lisp/org/org-gnus.elc
+./lisp/org/org-mhe.elc
+./lisp/org/org-mobile.elc
+./lisp/org/ob-table.elc
+./lisp/org/ob-asymptote.elc
+./lisp/org/ob-haskell.elc
+./lisp/org/org-table.elc
+./lisp/org/org-eww.elc
+./lisp/org/ob-picolisp.elc
+./lisp/org/ob-calc.elc
+./lisp/org/ox-html.elc
+./lisp/org/ob-R.elc
+./lisp/org/org-inlinetask.elc
+./lisp/org/ob-emacs-lisp.elc
+./lisp/org/org-macro.elc
+./lisp/org/ob-io.elc
+./lisp/org/ob-makefile.elc
+./lisp/org/ob-matlab.elc
+./lisp/org/ob-clojure.elc
+./lisp/rect.elc
+./lisp/hfy-cmap.elc
+./lisp/tmm.elc
+./lisp/mouse-drag.elc
+./lisp/char-fold.elc
+./lisp/vt100-led.elc
+./lisp/w32-vars.elc
+./lisp/replace.elc
+./lisp/dirtrack.elc
+./lisp/rot13.elc
+./lisp/buff-menu.elc
+./lisp/skeleton.elc
+./lisp/mouse.elc
+./lisp/arc-mode.elc
+./lisp/finder.elc
+./lisp/soundex.elc
+./lisp/window.elc
+./lisp/cus-face.elc
+./lisp/help-fns.elc
+./lisp/filecache.elc
+./lisp/isearch.elc
+./admin/unidata/uvs.elc
+./admin/unidata/unidata.txt
+./admin/unidata/unidata-gen.elc
+./configure
+./doc/emacs/emacsver.texi

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

* Re: A target that's even more bootstrap?
  2019-06-19 15:59               ` Óscar Fuentes
@ 2019-06-19 16:18                 ` Stefan Monnier
  2019-06-19 16:35                   ` Óscar Fuentes
  2019-06-20 13:49                   ` Phillip Lord
  0 siblings, 2 replies; 59+ messages in thread
From: Stefan Monnier @ 2019-06-19 16:18 UTC (permalink / raw)
  To: emacs-devel

> The reason for this practice was explained to me time ago and it is
> related to your case (two or more out-of-tree builds, reuse .elc)

No, the reason for this is that it was designed for the case where you
build from a tarball rather than from a Git clone (AFAIK it was
designed before I wrote the "bootstrap" code which made it possible to build
Emacs without having all the .elc files pre-built, i.e. before we
started using CVS).


        Stefan




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

* Re: A target that's even more bootstrap?
  2019-06-19 16:18                 ` Stefan Monnier
@ 2019-06-19 16:35                   ` Óscar Fuentes
  2019-06-19 17:03                     ` Out of tree builds [was Re: A target that's even more bootstrap?] Glenn Morris
  2019-06-19 17:13                     ` A target that's even more bootstrap? Stefan Monnier
  2019-06-20 13:49                   ` Phillip Lord
  1 sibling, 2 replies; 59+ messages in thread
From: Óscar Fuentes @ 2019-06-19 16:35 UTC (permalink / raw)
  To: emacs-devel

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

>> The reason for this practice was explained to me time ago and it is
>> related to your case (two or more out-of-tree builds, reuse .elc)
>
> No, the reason for this is that it was designed for the case where you
> build from a tarball rather than from a Git clone (AFAIK it was
> designed before I wrote the "bootstrap" code which made it possible to build
> Emacs without having all the .elc files pre-built, i.e. before we
> started using CVS).

I asked to move those .elc files to the build directory and some hackers
explained why doing that would inconvenience them. The reason why it was
implemented is unknown to me, but IIRC support for out-of-tree builds
are a relatively recent development in Emacs, much more modern than the
transition to CVS. So the .elc files were on the source directory from
the beginning because there was no possibility for an out-of-tree build.




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

* Re: A target that's even more bootstrap?
  2019-06-19 16:12                       ` Lars Ingebrigtsen
@ 2019-06-19 17:03                         ` Eli Zaretskii
  2019-06-19 17:29                           ` Lars Ingebrigtsen
  0 siblings, 1 reply; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-19 17:03 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: emacs-devel@gnu.org
> Date: Wed, 19 Jun 2019 18:12:07 +0200
> 
> > So I understand one thing extraclean doesn't do is remove the *.elc
> > files; let's add that.  What else?
> 
> I'm comparing a fresh clone with what's in the repo after a make; make
> extraclean.  I've made a summary first and include the full list as an
> attachment.
> 
> diff --unified /tmp/fresh /tmp/extra | grep "^\\+" | grep -v /.git/ > /tmp/diff

Thanks.

So if you delete all of these, then a simple "make" performs a full
bootstrap, just like in a fresh checkout?  If so, all we need is add
to extraclean the commands to delete these files (I guess to the
respective Makefile.in files in the subdirectories).  And then Bob
will be our uncle again.



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

* Out of tree builds [was Re: A target that's even more bootstrap?]
  2019-06-19 16:35                   ` Óscar Fuentes
@ 2019-06-19 17:03                     ` Glenn Morris
  2019-06-19 17:30                       ` Óscar Fuentes
  2019-06-19 17:13                     ` A target that's even more bootstrap? Stefan Monnier
  1 sibling, 1 reply; 59+ messages in thread
From: Glenn Morris @ 2019-06-19 17:03 UTC (permalink / raw)
  To: ofv; +Cc: emacs-devel

Óscar Fuentes wrote:

> I asked to move those .elc files to the build directory

You were told that patches were welcome. Ref
https://lists.gnu.org/r/emacs-devel/2014-01/msg00976.html
https://lists.gnu.org/r/emacs-devel/2014-01/msg00954.html



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

* Re: A target that's even more bootstrap?
  2019-06-19 16:35                   ` Óscar Fuentes
  2019-06-19 17:03                     ` Out of tree builds [was Re: A target that's even more bootstrap?] Glenn Morris
@ 2019-06-19 17:13                     ` Stefan Monnier
  2019-06-19 17:43                       ` Óscar Fuentes
  1 sibling, 1 reply; 59+ messages in thread
From: Stefan Monnier @ 2019-06-19 17:13 UTC (permalink / raw)
  To: emacs-devel

> I asked to move those .elc files to the build directory and some hackers
> explained why doing that would inconvenience them.

Of course, people have learned to appreciate some of the quirks.

> The reason why it was implemented is unknown to me, but IIRC support
> for out-of-tree builds are a relatively recent development in Emacs,
> much more modern than the transition to CVS.

Hmm... maybe my memory is faulty, but I seem to remember it working
back in the Emacs-19 days.


        Stefan




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

* Re: A target that's even more bootstrap?
  2019-06-19 17:03                         ` Eli Zaretskii
@ 2019-06-19 17:29                           ` Lars Ingebrigtsen
  2019-06-19 18:18                             ` Eli Zaretskii
  0 siblings, 1 reply; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-19 17:29 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> So if you delete all of these, then a simple "make" performs a full
> bootstrap, just like in a fresh checkout?  If so, all we need is add
> to extraclean the commands to delete these files (I guess to the
> respective Makefile.in files in the subdirectories).  And then Bob
> will be our uncle again.

Yup; I tried

make; make extraclean; "rm all the files in the list"

and then

make

and everything worked as it's supposed to -- it looked very much like a
build from a fresh check-out.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Out of tree builds [was Re: A target that's even more bootstrap?]
  2019-06-19 17:03                     ` Out of tree builds [was Re: A target that's even more bootstrap?] Glenn Morris
@ 2019-06-19 17:30                       ` Óscar Fuentes
  0 siblings, 0 replies; 59+ messages in thread
From: Óscar Fuentes @ 2019-06-19 17:30 UTC (permalink / raw)
  To: emacs-devel

Glenn Morris <rgm@gnu.org> writes:

> Óscar Fuentes wrote:
>
>> I asked to move those .elc files to the build directory
>
> You were told that patches were welcome. Ref
> https://lists.gnu.org/r/emacs-devel/2014-01/msg00976.html
> https://lists.gnu.org/r/emacs-devel/2014-01/msg00954.html

Fair enough. Teaching Emacs about the out-of-tree .elc files sounds
doable. As for the required modifications to the build system...




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

* Re: A target that's even more bootstrap?
  2019-06-19 17:13                     ` A target that's even more bootstrap? Stefan Monnier
@ 2019-06-19 17:43                       ` Óscar Fuentes
  0 siblings, 0 replies; 59+ messages in thread
From: Óscar Fuentes @ 2019-06-19 17:43 UTC (permalink / raw)
  To: emacs-devel

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

>> The reason why it was implemented is unknown to me, but IIRC support
>> for out-of-tree builds are a relatively recent development in Emacs,
>> much more modern than the transition to CVS.
>
> Hmm... maybe my memory is faulty, but I seem to remember it working
> back in the Emacs-19 days.

Probably I'm confusing the old MSWindows build system that was obsoleted
when Eli ported the traditional system to MSYS.




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

* Re: A target that's even more bootstrap?
  2019-06-19 17:29                           ` Lars Ingebrigtsen
@ 2019-06-19 18:18                             ` Eli Zaretskii
  2019-06-20 11:32                               ` Lars Ingebrigtsen
  0 siblings, 1 reply; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-19 18:18 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: emacs-devel@gnu.org
> Date: Wed, 19 Jun 2019 19:29:37 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> > So if you delete all of these, then a simple "make" performs a full
> > bootstrap, just like in a fresh checkout?  If so, all we need is add
> > to extraclean the commands to delete these files (I guess to the
> > respective Makefile.in files in the subdirectories).  And then Bob
> > will be our uncle again.
> 
> Yup; I tried
> 
> make; make extraclean; "rm all the files in the list"
> 
> and then
> 
> make
> 
> and everything worked as it's supposed to -- it looked very much like a
> build from a fresh check-out.

Great, thanks.  What's left is to update every Makefile.in with its
share of files to delete in the extraclean target.



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

* Re: A target that's even more bootstrap?
  2019-06-19 15:12             ` Eli Zaretskii
@ 2019-06-19 20:06               ` Juanma Barranquero
  2019-06-19 20:19                 ` Lars Ingebrigtsen
                                   ` (2 more replies)
  0 siblings, 3 replies; 59+ messages in thread
From: Juanma Barranquero @ 2019-06-19 20:06 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Óscar Fuentes, Teemu Likonen, lokedhs, Emacs developers

On Wed, Jun 19, 2019 at 5:14 PM Eli Zaretskii <eliz@gnu.org> wrote:
>
> > From: Teemu Likonen <tlikonen@iki.fi>

> > Probably the same but a bit less violent is "git clean -fdx" (maybe
> > first with "--dry-run").
>
> These targets need to do their job even when Git is not around, or the
> source tree has no history data, so we cannot rely on Git for this
> matter.

Still, it should be possible to use "git clean -fdx" (or perhaps -fdX)
if we detect we're in a git checkout and git's available, and default
to target-jumping around the makefiles otherwise.



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

* Re: A target that's even more bootstrap?
  2019-06-19 20:06               ` Juanma Barranquero
@ 2019-06-19 20:19                 ` Lars Ingebrigtsen
  2019-06-19 20:26                 ` Óscar Fuentes
  2019-06-20  2:30                 ` Eli Zaretskii
  2 siblings, 0 replies; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-19 20:19 UTC (permalink / raw)
  To: Juanma Barranquero
  Cc: Óscar Fuentes, Eli Zaretskii, Teemu Likonen, lokedhs,
	Emacs developers

Juanma Barranquero <lekktu@gmail.com> writes:

> Still, it should be possible to use "git clean -fdx" (or perhaps -fdX)
> if we detect we're in a git checkout and git's available, and default
> to target-jumping around the makefiles otherwise.

A sort of "make git-checkout-clean" or something...

In the past, some of the most difficult build error situations to get
out of have been the result of rearranging some build code, and then the
new code choking on some build artefacts from the previous setups.

The Makefiles in these cases didn't know about these old build
artefacts, so they didn't delete them.

In that case, a git-based "blow out" target would help.

Of course, a different solution would be to have the "extraclean" bits
of the makefile still know about these old artefacts...  But then it's a
question of how many years should we still do an "rm -f some-dir" on
something that's not there.  I guess we could mark these bits with,
like, "OBSOLETE DIR SINCE 23.2".

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-19 20:06               ` Juanma Barranquero
  2019-06-19 20:19                 ` Lars Ingebrigtsen
@ 2019-06-19 20:26                 ` Óscar Fuentes
  2019-06-20  2:30                 ` Eli Zaretskii
  2 siblings, 0 replies; 59+ messages in thread
From: Óscar Fuentes @ 2019-06-19 20:26 UTC (permalink / raw)
  To: emacs-devel

Juanma Barranquero <lekktu@gmail.com> writes:

> Still, it should be possible to use "git clean -fdx" (or perhaps -fdX)
> if we detect we're in a git checkout and git's available, and default
> to target-jumping around the makefiles otherwise.

-fdx is dangerous as you risk losing work on unchecked files. -fdX looks
better.




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

* Re: A target that's even more bootstrap?
  2019-06-19 20:06               ` Juanma Barranquero
  2019-06-19 20:19                 ` Lars Ingebrigtsen
  2019-06-19 20:26                 ` Óscar Fuentes
@ 2019-06-20  2:30                 ` Eli Zaretskii
  2 siblings, 0 replies; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-20  2:30 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: ofv, tlikonen, lokedhs, emacs-devel

> From: Juanma Barranquero <lekktu@gmail.com>
> Date: Wed, 19 Jun 2019 22:06:34 +0200
> Cc: Teemu Likonen <tlikonen@iki.fi>, Óscar Fuentes <ofv@wanadoo.es>, 
> 	lokedhs@gmail.com, Emacs developers <emacs-devel@gnu.org>
> 
> > > Probably the same but a bit less violent is "git clean -fdx" (maybe
> > > first with "--dry-run").
> >
> > These targets need to do their job even when Git is not around, or the
> > source tree has no history data, so we cannot rely on Git for this
> > matter.
> 
> Still, it should be possible to use "git clean -fdx" (or perhaps -fdX)
> if we detect we're in a git checkout and git's available, and default
> to target-jumping around the makefiles otherwise.

There should be no need for that, as we ought to know which generated
files should be removed.

And using Git runs the risk of deleting files unrelated to the build
that the user may wish to keep.



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

* Re: A target that's even more bootstrap?
  2019-06-19 18:18                             ` Eli Zaretskii
@ 2019-06-20 11:32                               ` Lars Ingebrigtsen
  2019-06-20 13:06                                 ` Eli Zaretskii
  0 siblings, 1 reply; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-20 11:32 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Great, thanks.  What's left is to update every Makefile.in with its
> share of files to delete in the extraclean target.

With the patch below, the only remaining files (not in a clean
check-out) are:

+./info
+./src/config.in
+./lib/sys
+./configure

Should the ./configure file also be deleted by extraclean?

If I remove src/config.in, then the subsequent "make" after "make
extraclean" fails with

config.status: error: cannot find input file: `src/config.in'
GNUmakefile:72: recipe for target 'Makefile' failed

and I have to run autogen.sh again...

The two directories 

+./info
+./lib/sys

perhaps don't matter, and I'd rather not do an rm -rf on a directory...

diff --git a/Makefile.in b/Makefile.in
index 21362a9196..26463cec64 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -933,14 +933,15 @@ maintainer-clean: bootstrap-clean $(maintainer_clean_dirs:
 ### Note that we abuse this in some subdirectories (eg leim),
 ### to delete some generated files that are slow to rebuild.
 extraclean_dirs = ${NTDIR} lib-src src leim \
-  admin/charsets admin/grammars admin/unidata
+  admin/charsets admin/grammars admin/unidata lisp lib
 
 $(foreach dir,$(extraclean_dirs),$(eval $(call submake_template,$(dir),extraclean)))
 
 extraclean: $(extraclean_dirs:=_extraclean)
 	${top_maintainer_clean}
-	-rm -f config-tmp-*
-	-rm -f ./*~ \#*
+	-rm -f config-tmp-* aclocal.m4
+	-rm -f ./*~ \#* etc/refcards/emacsver.tex doc/emacs/emacsver.texi
+	-rm -f ${infodir}/*.info ${infodir}/dir
 
 # The src subdir knows how to do the right thing
 # even when the build directory and source dir are different.
diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in
index 31efba0227..a522b0c3aa 100644
--- a/admin/unidata/Makefile.in
+++ b/admin/unidata/Makefile.in
@@ -116,6 +116,6 @@ maintainer-clean:
 ## Do not remove these files, even in a bootstrap, because they rarely
 ## change and it slows down bootstrap (a tiny bit).
 ## Cf leim/ja-dic (which is much slower).
-extraclean:
+extraclean: distclean
 	rm -f ${top_srcdir}/src/macuvs.h ${unidir}/charscript.el*
 	rm -f ${unifiles} ${unidir}/charprop.el
diff --git a/leim/Makefile.in b/leim/Makefile.in
index 4307d50087..d5619d9c67 100644
--- a/leim/Makefile.in
+++ b/leim/Makefile.in
@@ -159,7 +159,7 @@ maintainer-clean:
 
 ## We do not delete ja-dic, even in a bootstrap, because it rarely
 ## changes and is slow to regenerate.
-extraclean:
+extraclean: bootstrap-clean
 	rm -rf ${leimdir}/ja-dic
 
 ### Makefile.in ends here
diff --git a/lib/Makefile.in b/lib/Makefile.in
index ac32c7070f..bf9b01f143 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -126,6 +126,8 @@ distclean bootstrap-clean:
 	rm -fr $(DEPDIR)
 maintainer-clean: distclean
 	rm -f TAGS gnulib.mk
+extraclean: distclean
+
 .PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/lisp/Makefile.in b/lisp/Makefile.in
index 9bcd5a8824..6d37884c7e 100644
--- a/lisp/Makefile.in
+++ b/lisp/Makefile.in
@@ -453,7 +453,7 @@ $(CAL_DIR)/hol-loaddefs.el:
 	   --eval "(setq generated-autoload-file (expand-file-name (unmsys--file-name \"$@\")))" \
 	   -f batch-update-autoloads $(CAL_DIR)
 
-.PHONY: bootstrap-clean distclean maintainer-clean
+.PHONY: bootstrap-clean distclean maintainer-clean extraclean
 
 bootstrap-clean:
 	find $(lisp) -name '*.elc' $(FIND_DELETE)
@@ -465,6 +465,8 @@ distclean:
 maintainer-clean: distclean bootstrap-clean
 	rm -f TAGS
 
+extraclean: bootstrap-clean distclean
+
 .PHONY: check-declare
 
 check-declare:
diff --git a/src/Makefile.in b/src/Makefile.in
index 02a1a2c4cf..44c22ef5de 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -723,7 +723,7 @@ maintainer-clean:
 versionclean:
 	-rm -f emacs$(EXEEXT) emacs-*.*.*[0-9]$(EXEEXT) ../etc/DOC*
 extraclean: distclean
-	-rm -f ./*~ \#*
+	-rm -f ./*~ \#* TAGS
 
 
 ETAGS = ../lib-src/etags${EXEEXT}

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-20 11:32                               ` Lars Ingebrigtsen
@ 2019-06-20 13:06                                 ` Eli Zaretskii
  2019-06-20 14:23                                   ` Lars Ingebrigtsen
  0 siblings, 1 reply; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-20 13:06 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Thu, 20 Jun 2019 13:32:28 +0200
> Cc: emacs-devel@gnu.org
> 
> With the patch below, the only remaining files (not in a clean
> check-out) are:
> 
> +./info
> +./src/config.in
> +./lib/sys
> +./configure
> 
> Should the ./configure file also be deleted by extraclean?

Yes, I think so.

> If I remove src/config.in, then the subsequent "make" after "make
> extraclean" fails with
> 
> config.status: error: cannot find input file: `src/config.in'
> GNUmakefile:72: recipe for target 'Makefile' failed
> 
> and I have to run autogen.sh again...

How is this different from doing the same in a fresh checkout?  is
this because the configure script wasn't removed, or for some other
reason?

> The two directories 
> 
> +./info
> +./lib/sys
> 
> perhaps don't matter, and I'd rather not do an rm -rf on a directory...

Are these directories empty?



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

* Re: A target that's even more bootstrap?
  2019-06-19 16:18                 ` Stefan Monnier
  2019-06-19 16:35                   ` Óscar Fuentes
@ 2019-06-20 13:49                   ` Phillip Lord
  1 sibling, 0 replies; 59+ messages in thread
From: Phillip Lord @ 2019-06-20 13:49 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

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

>> The reason for this practice was explained to me time ago and it is
>> related to your case (two or more out-of-tree builds, reuse .elc)
>
> No, the reason for this is that it was designed for the case where you
> build from a tarball rather than from a Git clone (AFAIK it was
> designed before I wrote the "bootstrap" code which made it possible to build
> Emacs without having all the .elc files pre-built, i.e. before we
> started using CVS).

Perhaps removing the *elc files from the source distribution needs to be
considered, given that it's possible to do without and that most peoples
machines have got faster. The build would be slower clearly; a quick try
suggests twice the time.

2min after make distclean
4min 30 after make distclean; find . -name "*elc" -delete

Or alternatively, 2 minutes more.

Phil





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

* Re: A target that's even more bootstrap?
  2019-06-20 13:06                                 ` Eli Zaretskii
@ 2019-06-20 14:23                                   ` Lars Ingebrigtsen
  2019-06-20 15:10                                     ` Lars Ingebrigtsen
  2019-06-20 16:23                                     ` Eli Zaretskii
  0 siblings, 2 replies; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-20 14:23 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> If I remove src/config.in, then the subsequent "make" after "make
>> extraclean" fails with
>> 
>> config.status: error: cannot find input file: `src/config.in'
>> GNUmakefile:72: recipe for target 'Makefile' failed
>> 
>> and I have to run autogen.sh again...
>
> How is this different from doing the same in a fresh checkout?  is
> this because the configure script wasn't removed, or for some other
> reason?

Yes, indeed.  If I remove both configure and src/config.in in
extraclean, the subsequent "make" works fine.

>> The two directories 
>> 
>> +./info
>> +./lib/sys
>> 
>> perhaps don't matter, and I'd rather not do an rm -rf on a directory...
>
> Are these directories empty?

They will normally be empty, but the user may have put a file there...

I could do check for whether they're empty, and if they are, I do an
rmdir on them?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-20 14:23                                   ` Lars Ingebrigtsen
@ 2019-06-20 15:10                                     ` Lars Ingebrigtsen
  2019-06-20 16:29                                       ` Eli Zaretskii
  2019-06-20 16:23                                     ` Eli Zaretskii
  1 sibling, 1 reply; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-20 15:10 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

I've now checked in the changes, and extraclean now removes all the
files and directories that aren't in a fresh checkout, as far as I can
tell.

But there's one confusing thing: There's an old rule in there that
deletes the src/macuvs.h file, which is a checked-out file, so until you
say "make" again, you get:

     removed             src/macuvs.h

from git.

It's re-generated by the build process, but is this how it's supposed to
be?  It's removed by extraclean in admin/unidata/Makefile.in, and it's
been like that for many years.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




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

* Re: A target that's even more bootstrap?
  2019-06-20 14:23                                   ` Lars Ingebrigtsen
  2019-06-20 15:10                                     ` Lars Ingebrigtsen
@ 2019-06-20 16:23                                     ` Eli Zaretskii
  2019-06-20 16:27                                       ` Lars Ingebrigtsen
  1 sibling, 1 reply; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-20 16:23 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: emacs-devel@gnu.org
> Date: Thu, 20 Jun 2019 16:23:14 +0200
> 
> > How is this different from doing the same in a fresh checkout?  is
> > this because the configure script wasn't removed, or for some other
> > reason?
> 
> Yes, indeed.  If I remove both configure and src/config.in in
> extraclean, the subsequent "make" works fine.

OK, so that's the solution, right?

> >> +./info
> >> +./lib/sys
> >> 
> >> perhaps don't matter, and I'd rather not do an rm -rf on a directory...
> >
> > Are these directories empty?
> 
> They will normally be empty, but the user may have put a file there...
> 
> I could do check for whether they're empty, and if they are, I do an
> rmdir on them?

I don't think you need to do that, as their mere existence shouldn't
matter for this purpose.  (If it does, someone will complain and will
describe the situation when it does matter.)

Thanks.



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

* Re: A target that's even more bootstrap?
  2019-06-20 16:23                                     ` Eli Zaretskii
@ 2019-06-20 16:27                                       ` Lars Ingebrigtsen
  2019-06-20 16:46                                         ` Eli Zaretskii
  0 siblings, 1 reply; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-20 16:27 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> Yes, indeed.  If I remove both configure and src/config.in in
>> extraclean, the subsequent "make" works fine.
>
> OK, so that's the solution, right?

Yup.

>> >> +./info
>> >> +./lib/sys
>> >> 
>> >> perhaps don't matter, and I'd rather not do an rm -rf on a directory...
>> >
>> > Are these directories empty?
>> 
>> They will normally be empty, but the user may have put a file there...
>> 
>> I could do check for whether they're empty, and if they are, I do an
>> rmdir on them?
>
> I don't think you need to do that, as their mere existence shouldn't
> matter for this purpose.  (If it does, someone will complain and will
> describe the situation when it does matter.)

I've already checked in a solution where it checks for the directory and
deletes it...  However, I'm not sure whether the solution works
everywhere.  It's:

	[ -d info ] && rmdir --ignore-fail-on-non-empty info

If that's non-supported syntax, we can just delete the line and let the
directory live on.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-20 15:10                                     ` Lars Ingebrigtsen
@ 2019-06-20 16:29                                       ` Eli Zaretskii
  2019-06-21 10:51                                         ` Lars Ingebrigtsen
  0 siblings, 1 reply; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-20 16:29 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: emacs-devel@gnu.org
> Date: Thu, 20 Jun 2019 17:10:10 +0200
> 
> I've now checked in the changes, and extraclean now removes all the
> files and directories that aren't in a fresh checkout, as far as I can
> tell.
> 
> But there's one confusing thing: There's an old rule in there that
> deletes the src/macuvs.h file, which is a checked-out file, so until you
> say "make" again, you get:
> 
>      removed             src/macuvs.h
> 
> from git.
> 
> It's re-generated by the build process, but is this how it's supposed to
> be?  It's removed by extraclean in admin/unidata/Makefile.in, and it's
> been like that for many years.

I don't see this as a catastrophe.  If the user does this inside a
repository, they can "git checkout src/macuvs.h", if they don't intend
running a full build.  And if they do run a full build, the file will
be recreated.  And in a tree that is not a repository, removing the
file is not a problem at all.

We could refrain from removing it, but then users who want to
regenerate it anew, perhaps because its dependencies changed, will
have hard time figuring out what exactly to do.

So I think this is not a problem.  Perhaps we should have a comment in
admin/unidata/Makefile.in describing the issue.



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

* Re: A target that's even more bootstrap?
  2019-06-20 16:27                                       ` Lars Ingebrigtsen
@ 2019-06-20 16:46                                         ` Eli Zaretskii
  2019-06-20 16:47                                           ` Lars Ingebrigtsen
  0 siblings, 1 reply; 59+ messages in thread
From: Eli Zaretskii @ 2019-06-20 16:46 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: emacs-devel@gnu.org
> Date: Thu, 20 Jun 2019 18:27:40 +0200
> 
> 	[ -d info ] && rmdir --ignore-fail-on-non-empty info
> 
> If that's non-supported syntax, we can just delete the line and let the
> directory live on.

I don't think it's portable enough.  AFAIK, it's specific to GNU
rmdir.



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

* Re: A target that's even more bootstrap?
  2019-06-20 16:46                                         ` Eli Zaretskii
@ 2019-06-20 16:47                                           ` Lars Ingebrigtsen
  2019-06-20 18:24                                             ` Paul Eggert
  0 siblings, 1 reply; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-20 16:47 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> I don't think it's portable enough.  AFAIK, it's specific to GNU
> rmdir.

OK; I'm removing it...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: A target that's even more bootstrap?
  2019-06-20 16:47                                           ` Lars Ingebrigtsen
@ 2019-06-20 18:24                                             ` Paul Eggert
  0 siblings, 0 replies; 59+ messages in thread
From: Paul Eggert @ 2019-06-20 18:24 UTC (permalink / raw)
  To: emacs-devel

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

>> I don't think it's portable enough.  AFAIK, it's specific to GNU
>> rmdir.
>>
Yes, and there's a simple and portable way to do it; I installed the 
attached.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Fix-extraclean-in-a-different-way-for-info-lib-sys.patch --]
[-- Type: text/x-patch; name="0001-Fix-extraclean-in-a-different-way-for-info-lib-sys.patch", Size: 1460 bytes --]

From c626e5fc76785897a6c9c9e9863838244e091e4b Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Thu, 20 Jun 2019 11:18:14 -0700
Subject: [PATCH] Fix extraclean in a different way for info+lib/sys
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

* Makefile.in (extraclean):
* lib/Makefile.in (extraclean): Use rmdir but suppress any
error indication.  That way, ‘make extraclean’ will remove the
directory if it’s empty, and successfully do nothing otherwise.
---
 Makefile.in     | 1 +
 lib/Makefile.in | 1 +
 2 files changed, 2 insertions(+)

diff --git a/Makefile.in b/Makefile.in
index c829ca29bd..aa11e6b0b7 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -942,6 +942,7 @@ extraclean: $(extraclean_dirs:
 	-rm -f config-tmp-* aclocal.m4 configure
 	-rm -f ./*~ \#* etc/refcards/emacsver.tex doc/emacs/emacsver.texi
 	-rm -f info/*.info info/dir
+	-rmdir info 2>/dev/null
 
 # The src subdir knows how to do the right thing
 # even when the build directory and source dir are different.
diff --git a/lib/Makefile.in b/lib/Makefile.in
index bf9b01f143..1973452b22 100644
--- a/lib/Makefile.in
+++ b/lib/Makefile.in
@@ -127,6 +127,7 @@ distclean bootstrap-clean:
 maintainer-clean: distclean
 	rm -f TAGS gnulib.mk
 extraclean: distclean
+	-rmdir sys 2>/dev/null
 
 .PHONY: mostlyclean clean distclean bootstrap-clean maintainer-clean
 
-- 
2.21.0


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

* Re: A target that's even more bootstrap?
  2019-06-20 16:29                                       ` Eli Zaretskii
@ 2019-06-21 10:51                                         ` Lars Ingebrigtsen
  2019-06-21 22:03                                           ` Paul Eggert
  0 siblings, 1 reply; 59+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-21 10:51 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Paul Eggert, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> I don't see this as a catastrophe.  If the user does this inside a
> repository, they can "git checkout src/macuvs.h", if they don't intend
> running a full build.  And if they do run a full build, the file will
> be recreated.  And in a tree that is not a repository, removing the
> file is not a problem at all.

I just wondered whether the inclusion of the file is a bug, or the
removal of the file was a bug...

We do include some generated files in git, like
lisp/cedet/semantic/grammar-wy.el.  But that's because we can't
(re)generate it without having it.  :-)  (wisent uses its own machinery
to parse its .wy files, from which this is generated, so it's a chicken
or egg problem.)

But Emacs does generate the macuvs.h file just fine, so it just seemed
odd to me and I wondered whether anybody could remember why it's this
way...

I had a look in both the file itself:

/* This file was automatically generated from admin/unidata/IVD_Sequences.txt
   by the script admin/unidata/uvs.el  */

and the file that generates the file, but I couldn't see any
explanation.

Here's the commit that added the generation of the file (and the removal
of the file in extraclean), but it didn't remove the file from git.
Paul, do you remember the logic behind this?

commit cf2f54c4e3d8adb26e3f4b8e9e51364165877444
Author: Paul Eggert <eggert@cs.ucla.edu>
Date:   Mon May 26 08:48:28 2014 -0700

    Include sources used to create macuvs.h.
    
    * admin/unidata/IVD_Sequences.txt: New file.
    * admin/unidata/Makefile.in (${top_srcdir}/src/macuvs.h): New rule.
    (all): Build it.
    (extraclean): Remove it.
    * admin/unidata/README: Mention BidiMirroring.txt and IVD_Sequences.txt.
    * admin/unidata/copyright.html: Update to current version from Unicode
    Consortium.
    * admin/unidata/uvs.el: Rename from admin/mac/uvs.el.
    (uvs-print-table-ivd): Output a header in the form that
    unidata-gen.el generates.
    * lisp/international/README: Refer to the Unicode Terms of Use rather
    than copying it bodily here, as that simplifies maintenance.
    * src/Makefile.in ($(srcdir)/macuvs.h): New rule.
    * src/macuvs.h: Use automatically-generated header.


-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* A target that's even more bootstrap?
  2019-06-21 10:51                                         ` Lars Ingebrigtsen
@ 2019-06-21 22:03                                           ` Paul Eggert
  2019-06-23  2:48                                             ` Richard Stallman
  0 siblings, 1 reply; 59+ messages in thread
From: Paul Eggert @ 2019-06-21 22:03 UTC (permalink / raw)
  To: Lars Ingebrigtsen, Eli Zaretskii; +Cc: emacs-devel

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

On 6/21/19 3:51 AM, Lars Ingebrigtsen wrote:
> Here's the commit that added the generation of the file (and the removal
> of the file in extraclean), but it didn't remove the file from git.
> Paul, do you remember the logic behind this?
>
> commit cf2f54c4e3d8adb26e3f4b8e9e51364165877444

The motivation for that commit was to support the GNU idea that we 
should ship source code instead of generated code; in this case macuvs.h 
was being generated from IVD_Sequences.txt, a file that was not part of 
the repository and not shipped, contrary to the GNU ideal. The email 
thread prompting that commit is rooted here:

https://lists.gnu.org/r/emacs-devel/2014-05/msg00427.html

In that commit I wasn't attempting to also follow the principle that we 
shouldn't commit sources that can be generated automatically by standard 
maintainer tools. In hindsight I should have done that as well, and 
removed src/macuvs.h from the repository while I was at it. I just now 
attempted to fix this by installing the attached patch into master.


[-- Attachment #2: 0001-Remove-src-macuvs.h-from-Git-repository.txt.tz --]
[-- Type: application/octet-stream, Size: 88444 bytes --]

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

* Re: A target that's even more bootstrap?
  2019-06-21 22:03                                           ` Paul Eggert
@ 2019-06-23  2:48                                             ` Richard Stallman
  0 siblings, 0 replies; 59+ messages in thread
From: Richard Stallman @ 2019-06-23  2:48 UTC (permalink / raw)
  To: Paul Eggert; +Cc: larsi, eliz, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

Perhaps Mac users should write some other code to generate macuvs.h,
not using Lisp, so that it can be generated at build time without
causing any hassle.

In the mean time, we don't need to be rigid about excluding that file.
Let's leave macuvs.h in the distribution.
-- 
Dr Richard Stallman
President, Free Software Foundation (https://gnu.org, https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





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

end of thread, other threads:[~2019-06-23  2:48 UTC | newest]

Thread overview: 59+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-06-18 11:22 A target that's even more bootstrap? Lars Ingebrigtsen
2019-06-18 12:16 ` Andreas Schwab
2019-06-18 12:27   ` Lars Ingebrigtsen
2019-06-18 12:53 ` Phillip Lord
2019-06-18 13:20   ` Stefan Monnier
2019-06-18 13:28     ` Lars Ingebrigtsen
2019-06-18 16:03   ` Eli Zaretskii
2019-06-19  9:29     ` Phillip Lord
2019-06-19 15:21       ` Eli Zaretskii
2019-06-19 13:15     ` Lars Ingebrigtsen
2019-06-19 14:00       ` Andreas Schwab
2019-06-19 15:28       ` Eli Zaretskii
2019-06-19 15:32         ` Lars Ingebrigtsen
2019-06-18 15:53 ` Eli Zaretskii
2019-06-18 15:58   ` Lars Ingebrigtsen
2019-06-18 16:54     ` Eli Zaretskii
2019-06-18 17:47     ` Andy Moreton
2019-06-18 19:22       ` Óscar Fuentes
2019-06-19  4:32         ` Elias Mårtenson
2019-06-19  5:29           ` Teemu Likonen
2019-06-19 15:12             ` Eli Zaretskii
2019-06-19 20:06               ` Juanma Barranquero
2019-06-19 20:19                 ` Lars Ingebrigtsen
2019-06-19 20:26                 ` Óscar Fuentes
2019-06-20  2:30                 ` Eli Zaretskii
2019-06-19 11:53           ` Lars Ingebrigtsen
2019-06-19 12:33         ` Andy Moreton
2019-06-19 12:45           ` Óscar Fuentes
2019-06-19 13:35             ` Juanma Barranquero
2019-06-19 13:46               ` Lars Ingebrigtsen
2019-06-19 15:34                 ` Eli Zaretskii
2019-06-19 15:43                   ` Lars Ingebrigtsen
2019-06-19 15:48                     ` Eli Zaretskii
2019-06-19 16:12                       ` Lars Ingebrigtsen
2019-06-19 17:03                         ` Eli Zaretskii
2019-06-19 17:29                           ` Lars Ingebrigtsen
2019-06-19 18:18                             ` Eli Zaretskii
2019-06-20 11:32                               ` Lars Ingebrigtsen
2019-06-20 13:06                                 ` Eli Zaretskii
2019-06-20 14:23                                   ` Lars Ingebrigtsen
2019-06-20 15:10                                     ` Lars Ingebrigtsen
2019-06-20 16:29                                       ` Eli Zaretskii
2019-06-21 10:51                                         ` Lars Ingebrigtsen
2019-06-21 22:03                                           ` Paul Eggert
2019-06-23  2:48                                             ` Richard Stallman
2019-06-20 16:23                                     ` Eli Zaretskii
2019-06-20 16:27                                       ` Lars Ingebrigtsen
2019-06-20 16:46                                         ` Eli Zaretskii
2019-06-20 16:47                                           ` Lars Ingebrigtsen
2019-06-20 18:24                                             ` Paul Eggert
2019-06-19 15:29             ` Phillip Lord
2019-06-19 15:59               ` Óscar Fuentes
2019-06-19 16:18                 ` Stefan Monnier
2019-06-19 16:35                   ` Óscar Fuentes
2019-06-19 17:03                     ` Out of tree builds [was Re: A target that's even more bootstrap?] Glenn Morris
2019-06-19 17:30                       ` Óscar Fuentes
2019-06-19 17:13                     ` A target that's even more bootstrap? Stefan Monnier
2019-06-19 17:43                       ` Óscar Fuentes
2019-06-20 13:49                   ` Phillip Lord

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.