[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: eshell-defgroup fouls up `make bootstrap'.
Re: eshell-defgroup fouls up `make bootstrap'.
Wed, 30 Jul 2008 22:07:21 +0000
On Wed, Jul 30, 2008 at 11:22:22AM -0400, Stefan Monnier wrote:
> > I cvs updated yesterday and now can't build Emacs. The problem is the
> > non-existence of eshell-defgroup.
> > eshell-defgroup is aliased to defgroup in .../lisp/eshell/eshell.el.
> > (As a matter of interest, why?)
> > I've tried putting an `(eval-and-compile ...)' round the definition of
> > eshell-defgroup, but this doesn't help. It fails as follows:
> > Loading loaddefs.el (source)...
> > Symbol's function definition is void: eshell-defgroup
> > There's a comment in eshell.el just before the defalias about "putting
> > the whole definition into the autoload file" which I don't understand,
> > so I don't really want to mess around, here.
> > Would you look at this, please. Thanks!
> For what it's worth: "make bootstrap" *SHOULD* work.
> It works for me here, so I don't know what's the problem at your end,
> but if/when you figure it out, please send it back here so we can
> address it.
OK. I still can't figure it out. In directory ~acm/emacs/emacs-300708/,
the Makefile contains hard-coded references to ~acm/emacs/emacs/..., the
wrong directory. So I need to rerun config. Why are we using absolute
paths here rather than relative paths?
However, the big problem is that Makefile regards itself as a target. Do
make -nd maintainer-clean. This should clear out the trash. However,
this is what the start of the debugging output looks like:
GNU Make 3.80
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
Reading makefile `Makefile'...
Considering target file `Makefile'.
Considering target file `config.status'.
Considering target file `/home/acm/emacs/emacs/configure'.
So "Makefile" is one of its own targets. This is garbage - it's broken
worse than the wind.
There's also a file called ..../src/Makefile.c. It isn't a valid C
source file, but seems to be some sort of intermediate product, a
clever-dick way of using the C pre-processor, or something like that.
Anybody got any idea WHO is generating this file, HOW, and more
importantly, WHY???? Sometimes, when I do a make maintainer-clean, make
first tries to build ..../src/Makefile by compiling ..../src/Makefile.c.
This is so broken that it's beyond even being a joke.
It's so broken, that I typically have to spend an entire one or two days
debugging the build process after doing a cvs update. This is so painful
that it's making me want to just give up on Emacs altogether. I've got
far better things to do with my time and energy than fighting this
garbage every time I do a cvs update. The entire build system is rotten
to the core, so rotten that I feel insulted in being expected to use it,
in being expected to pretend that it's really more or less OK, with just,
perhaps, the odd little glitch to fix. Somebody probably thought he was
being very clever in making Makefile one of its own targets, but sadly he
seems to have been too busy to get round to recording his wizardly
reasons in the comments. He probably thought he was being super slick in
letting it get built by an explicit rule, too. Our Makefiles should be
generated by ./configure, and then left severely alone. Surely?
The totality of the Makefiles is ~4500 lines. This is ludicrous. It's
4.5k lines of ghastly spaghetti coding, filled up with useless, redundant
targets with fanciful flippant names. Emacs is NOT that complicated to
build. It's a touch more complex than a bog-standard C program perhaps,
but it's really just a straightforward sequence of 6 or 7 steps, starting
off with compiling the C files, and ending up dumping an executable. 200
lines, perhaps, plus a list of files? We really don't need to expect
Makefiles to compile themselves out of syntactically-garbage
Makefile.c's, before we can clear back to a clean state.
And I haven't got anywhere near investigating why eshell-defgroup isn't
getting defined in time.
> AFAIK, normally removing lisp/loaddefs.el and lisp/eshell/esh-groups.el
> and then rebuilding loaddefs.el should do the trick, and AFAIK "make
> bootstrap" does that.
I haven't got an esh-groups.el. I've somehow got an esh-groups.el~,
though. And what generates esh-groups.el and how? Oh yes, if it's not
immediately obvious, because it's in an otherwise unused make variable
("AUTOGENEL") it's because I'm stupid, and there's no point explaining in
comments (in ..../lisp/Makefile) to somebody so dumb as me.
I'm sorry, I just can't care any more about Emacs, right at the moment.
Alan Mackenzie (Nuremberg, Germany).