From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel Subject: Re: eshell-defgroup fouls up `make bootstrap'. Date: Wed, 30 Jul 2008 22:07:21 +0000 Message-ID: <20080730220721.GA1920@muc.de> References: <20080730094830.GA3952@muc.de> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1217455630 30626 80.91.229.12 (30 Jul 2008 22:07:10 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 30 Jul 2008 22:07:10 +0000 (UTC) Cc: Glenn Morris , emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Jul 31 00:07:59 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1KOJpk-0004C6-GV for ged-emacs-devel@m.gmane.org; Thu, 31 Jul 2008 00:07:48 +0200 Original-Received: from localhost ([127.0.0.1]:54514 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KOJoq-0008AV-3n for ged-emacs-devel@m.gmane.org; Wed, 30 Jul 2008 18:06:52 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KOJom-0008AG-Tc for emacs-devel@gnu.org; Wed, 30 Jul 2008 18:06:48 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KOJom-0008A4-32 for emacs-devel@gnu.org; Wed, 30 Jul 2008 18:06:48 -0400 Original-Received: from [199.232.76.173] (port=53753 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KOJol-0008A1-Ul for emacs-devel@gnu.org; Wed, 30 Jul 2008 18:06:47 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:2259 helo=mail.muc.de) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1KOJol-0003px-AQ for emacs-devel@gnu.org; Wed, 30 Jul 2008 18:06:47 -0400 Original-Received: (qmail 57283 invoked by uid 3782); 30 Jul 2008 22:06:45 -0000 Original-Received: from acm.muc.de (pD9E5171B.dip.t-dialin.net [217.229.23.27]) by colin2.muc.de (tmda-ofmipd) with ESMTP; Thu, 31 Jul 2008 00:06:42 +0200 Original-Received: (qmail 4843 invoked by uid 1000); 30 Jul 2008 22:07:21 -0000 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.9i X-Delivery-Agent: TMDA/1.1.5 (Fettercairn) X-Primary-Address: acm@muc.de X-detected-kernel: by monty-python.gnu.org: FreeBSD 4.6-4.9 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:101771 Archived-At: Hi, 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 PARTICULAR PURPOSE. Reading makefiles... Reading makefile `Makefile'... Updating makefiles.... 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. Nothing personal. > Stefan -- Alan Mackenzie (Nuremberg, Germany).