From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Jim Meyering Newsgroups: gmane.emacs.devel Subject: Re: A better autogen.sh Date: Tue, 29 Mar 2011 14:09:24 +0200 Message-ID: <87vcz2xh57.fsf@rho.meyering.net> References: <87y66fv2d3.fsf@stupidchicken.com> <4D388F7F.20708@swipnet.se> <87r5c7jk5m.fsf@stupidchicken.com> <4D39EF9C.1050804@cs.ucla.edu> <4D3A8666.4070609@cs.ucla.edu> <877hdvd49f.fsf@meyering.net> <83mxmrzhb6.fsf@gnu.org> <4D3C9C5B.8050303@cs.ucla.edu> <00oc4v55eb.fsf@fencepost.gnu.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1301400582 19480 80.91.229.12 (29 Mar 2011 12:09:42 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Tue, 29 Mar 2011 12:09:42 +0000 (UTC) Cc: emacs-devel@gnu.org, Stefan Monnier , chad To: Glenn Morris Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Mar 29 14:09:37 2011 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.69) (envelope-from ) id 1Q4Xjq-0007Ra-Tf for ged-emacs-devel@m.gmane.org; Tue, 29 Mar 2011 14:09:35 +0200 Original-Received: from localhost ([127.0.0.1]:34840 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q4Xjq-0000jl-8Y for ged-emacs-devel@m.gmane.org; Tue, 29 Mar 2011 08:09:34 -0400 Original-Received: from [140.186.70.92] (port=57466 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q4Xjl-0000jN-Ey for emacs-devel@gnu.org; Tue, 29 Mar 2011 08:09:30 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q4Xjk-0008QO-FY for emacs-devel@gnu.org; Tue, 29 Mar 2011 08:09:29 -0400 Original-Received: from mx.meyering.net ([82.230.74.64]:50302) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q4Xjk-0008Nz-1N; Tue, 29 Mar 2011 08:09:28 -0400 Original-Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000) id 4567A60235; Tue, 29 Mar 2011 14:09:24 +0200 (CEST) In-Reply-To: (Glenn Morris's message of "Tue, 29 Mar 2011 02:39:09 -0400") Original-Lines: 85 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 82.230.74.64 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:137842 Archived-At: Glenn Morris wrote: > Stefan Monnier wrote: > >>> configure: error: cannot find install-sh, install.sh, or shtool in "." "./.." "./../.." > >> We're miscommunicating: the original report showed the error to be the >> lack of install-sh and doesn't mention automake. So the missing rule is >> to call autogen.sh or autoreconf or something when install-sh >> is missing. > > (autogen.sh calls autoreconf which calls automake to add the files) > > Well, there's nothing to be done about it now. Any new make rule would > only take effect after running configure, and anyone who can run > configure does not need such a rule. Anyone would ran autogen.sh between > ~ Mar 20 and 25 should simply run it again if they have this issue. Hi Glenn, Actually, you *can* do something, assuming the victim has GNU make. Put something like the following in GNUmakefile, and then "make" works even before ./configure is run, even if it's just to instruct the user to run ./configure. [The following is part of gnulib's top/GNUmakefile, which is included automatically when you use its "gnumakefile" module. ] # Having a separate GNUmakefile lets me `include' the dynamically # generated rules created via cfg.mk (package-local configuration) # as well as maint.mk (generic maintainer rules). # This makefile is used only if you run GNU Make. # It is necessary if you want to build targets usually of interest # only to the maintainer. # Copyright (C) 2001, 2003, 2006-2011 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Systems where /bin/sh is not the default shell need this. The $(shell) # command below won't work with e.g. stock DOS/Windows shells. ifeq ($(wildcard /bin/s[h]),/bin/sh) SHELL = /bin/sh else # will be used only with the next shell-test line, then overwritten # by a configured-in value SHELL = sh endif # If the user runs GNU make but has not yet run ./configure, # give them a diagnostic. _have-Makefile := $(shell test -f Makefile && echo yes) ifeq ($(_have-Makefile),yes) # Allow the user to add to this in the Makefile. ALL_RECURSIVE_TARGETS = include Makefile .DEFAULT_GOAL := abort-due-to-no-makefile # The package can override .DEFAULT_GOAL to run actions like autoreconf. -include ./cfg.mk include ./maint.mk ifeq ($(.DEFAULT_GOAL),abort-due-to-no-makefile) $(MAKECMDGOALS): abort-due-to-no-makefile endif abort-due-to-no-makefile: @echo There seems to be no Makefile in this directory. 1>&2 @echo "You must run ./configure before running \`make'." 1>&2 @exit 1 endif