From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 01 00:39:47 2011 Received: (at submit) by debbugs.gnu.org; 1 Nov 2011 04:39:47 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RL68Z-0001qb-1a for submit@debbugs.gnu.org; Tue, 01 Nov 2011 00:39:47 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RL68W-0001qU-Q4 for submit@debbugs.gnu.org; Tue, 01 Nov 2011 00:39:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RL66K-0003kt-Mv for submit@debbugs.gnu.org; Tue, 01 Nov 2011 00:37:29 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:58384) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RL66K-0003kj-LH for submit@debbugs.gnu.org; Tue, 01 Nov 2011 00:37:28 -0400 Received: from eggs.gnu.org ([140.186.70.92]:41977) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RL66J-00062n-LN for bug-automake@gnu.org; Tue, 01 Nov 2011 00:37:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RL66I-0003k3-G8 for bug-automake@gnu.org; Tue, 01 Nov 2011 00:37:27 -0400 Received: from out4.smtp.messagingengine.com ([66.111.4.28]:38504) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RL66I-0003jm-1W for bug-automake@gnu.org; Tue, 01 Nov 2011 00:37:26 -0400 Received: from compute3.internal (compute3.nyi.mail.srv.osa [10.202.2.43]) by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id D437220594 for ; Tue, 1 Nov 2011 00:37:23 -0400 (EDT) Received: from web2.nyi.mail.srv.osa ([10.202.2.212]) by compute3.internal (MEProxy); Tue, 01 Nov 2011 00:37:23 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=iSKUNK.ORG; h= message-id:from:to:mime-version:content-transfer-encoding :content-type:subject:date; s=mesmtp; bh=eV0PA5cOoPPKduoMO3Goj7H KqSA=; b=fMFZhMezxvuPg9s7phJerAAvijQ8M2N1+vUjo0K5zpHqDIUaw/MDi/U LaB6TlcsX4AFo7VI6Ez7o1yEYT5D4L+2X+oYSJ3vD10kAsrzLbIF8lpU5z0Mmo9n vLPEl4o+a29tIfeYi6dqqvmIVShR/HQTVd7w/TGtjHOvdmTWkQBg= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=message-id:from:to:mime-version :content-transfer-encoding:content-type:subject:date; s=smtpout; bh=eV0PA5cOoPPKduoMO3Goj7HKqSA=; b=Uw8l5+fV44b8GS2tg7N8yEf459IU Lc4+x/ZTP8H634/gV2kFTzTd5GHJODVugphlH641i8pKyW7M1j0rjzyVGW1swjbf nGvROm9lZq3OGRJWtZr0YG/Mz3LntafX9dNfWgT7fAdUFvNPetWtl22ovQmdPDcK fXcv3UUdprAUm9o= Received: by web2.nyi.mail.srv.osa (Postfix, from userid 99) id A9DA93A8546; Tue, 1 Nov 2011 00:37:23 -0400 (EDT) Message-Id: <1320122243.29160.140660993015277@webmail.messagingengine.com> X-Sasl-Enc: UhVD4uSEYt2Fjnuyej3VDLscoJxDEDzqrXkvYqNTaQt5 1320122243 From: "Daniel Richard G." To: bug-automake@gnu.org MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii" X-Mailer: MessagingEngine.com Webmail Interface Subject: AM_SILENT_RULES breakage with old make(1) Date: Tue, 01 Nov 2011 00:37:23 -0400 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -6.2 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.2 (------) Hello list, I've recently encountered some breakage in building a package with Automake 1.11.1's new silent-rules feature enabled, on a VM install of NeXTSTEP 3.3. An example: $ make make all-am )) source='../pcre_compile.c' object='pcre_compile.lo' libtool=yes DEPDIR=.deps depmode=none /usr/local/bin/bash ../depcomp /usr/local/bin/bash ./libtool )) --tag=CC --mode=compile cc -DHAVE_CONFIG_H -I. -I.. -O2 -c -o pcre_compile.lo ../pcre_compile.c sh: syntax error at line 1: `)' unexpected *** Exit 2 Stop. *** Exit 1 Stop. I tracked this down to the variable-variable-name constructs used to implement silent rules; this old version of make(1) doesn't parse them correctly. I added the line echo "AM_V_CC = '$(AM_V_CC)'" # for automake debugging to the .c.lo rule to see what was going on: $ make make all-am echo "AM_V_CC = '))'" # for automake debugging AM_V_CC = '))' )) source='../pcre_compile.c' object='pcre_compile.lo' libtool=yes DEPDIR=.deps depmode=none /usr/local/bin/bash ../depcomp /usr/local/bin/bash ./libtool )) --tag=CC --mode=compile cc -DHAVE_CONFIG_H -I. -I.. -O2 -c -o pcre_compile.lo ../pcre_compile.c sh: syntax error at line 1: `)' unexpected *** Exit 2 Stop. *** Exit 1 Stop. $ make V=0 make all-am echo "AM_V_CC = '@echo " CC " pcre_compile.lo;)'" # for automake debugging AM_V_CC = '@echo CC pcre_compile.lo;)' sh: syntax error at line 1: `)' unexpected *** Exit 2 Stop. *** Exit 1 Stop. $ make V=1 make all-am echo "AM_V_CC = ')'" # for automake debugging AM_V_CC = ')' ) source='../pcre_compile.c' object='pcre_compile.lo' libtool=yes DEPDIR=.deps depmode=none /usr/local/bin/bash ../depcomp /usr/local/bin/bash ./libtool ) --tag=CC --mode=compile cc -DHAVE_CONFIG_H -I. -I.. -O2 -c -o pcre_compile.lo ../pcre_compile.c sh: syntax error at line 1: `)' unexpected *** Exit 2 Stop. *** Exit 1 Stop. I fiddled around with the assignments where $(AM_DEFAULT_VERBOSITY) and $(V) are used. Turns out that if you change these assignments from e.g. AM_V_CC = $(am__v_CC_$(V)) am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) to curly-braces-in-parens... AM_V_CC = $(am__v_CC_${V}) am__v_CC_ = $(am__v_CC_${AM_DEFAULT_VERBOSITY}) or parens-in-curly-braces... AM_V_CC = ${am__v_CC_$(V)} am__v_CC_ = ${am__v_CC_$(AM_DEFAULT_VERBOSITY)} ...then the variable references are processed correctly, and the silent- rules feature works as advertised. --Daniel -- Daniel Richard G. || skunk@iSKUNK.ORG My ASCII-art .sig got a bad case of Times New Roman. From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 01 06:33:49 2011 Received: (at 9928) by debbugs.gnu.org; 1 Nov 2011 10:33:49 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RLBfA-0001TJ-9t for submit@debbugs.gnu.org; Tue, 01 Nov 2011 06:33:48 -0400 Received: from mail-ww0-f46.google.com ([74.125.82.46]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RLBf6-0001TA-2F for 9928@debbugs.gnu.org; Tue, 01 Nov 2011 06:33:45 -0400 Received: by wwe5 with SMTP id 5so2356268wwe.15 for <9928@debbugs.gnu.org>; Tue, 01 Nov 2011 03:31:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:cc:references:in-reply-to :mime-version:content-type:content-transfer-encoding:message-id; bh=hjfStMQkcKERUo2bxvz4bteU9Q+JrdU4eX/xX9wfmSc=; b=Qula1v97dr09vVjI1GALdHhempILaYHCZpaTgJGhee2MofZRxa6m+1I+Gg8SETE4AI NfIXbEmdIbZZfvmCoZC0oqSDUw3q/bCVHL2WPW8D54+qEHcl0j8JTey69BdcdTE11SOE EKWt/21HMEdC+kJt35qV+jjwi0OtsUZML1lZY= Received: by 10.216.229.14 with SMTP id g14mr5687677weq.6.1320143479446; Tue, 01 Nov 2011 03:31:19 -0700 (PDT) Received: from bigio.localnet (host22-94-dynamic.4-87-r.retail.telecomitalia.it. [87.4.94.22]) by mx.google.com with ESMTPS id fy13sm37549722wbb.18.2011.11.01.03.31.18 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 01 Nov 2011 03:31:18 -0700 (PDT) From: Stefano Lattarini To: bug-automake@gnu.org Subject: Re: bug#9928: AM_SILENT_RULES breakage with old make(1) Date: Tue, 1 Nov 2011 11:31:10 +0100 User-Agent: KMail/1.13.7 (Linux/2.6.30-2-686; KDE/4.6.5; i686; ; ) References: <1320122243.29160.140660993015277@webmail.messagingengine.com> In-Reply-To: <1320122243.29160.140660993015277@webmail.messagingengine.com> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201111011131.10906.stefano.lattarini@gmail.com> X-Spam-Score: -3.9 (---) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, "Daniel Richard G." X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.9 (---) tags 9928 wontfix close 9928 thanks On Tuesday 01 November 2011, Daniel Richard wrote: > Hello list, > Hi Daniel, thanks for the report. > I've recently encountered some breakage in building a package > with Automake 1.11.1's new silent-rules feature enabled, on a > VM install of NeXTSTEP 3.3. An example: > > [SNIP] > > I fiddled around with the assignments where $(AM_DEFAULT_VERBOSITY) and > $(V) are used. Turns out that if you change these assignments [SNIP] to > curly-braces-in-parens... > > AM_V_CC = $(am__v_CC_${V}) > am__v_CC_ = $(am__v_CC_${AM_DEFAULT_VERBOSITY}) > > ...then the variable references are processed correctly, and the silent- > rules feature works as advertised. > Wikipedia tells me that NeXTSTEP is now 16 years old, so I have a quite strong opinion against the possitility of tweaking/uglifying automake in order to support such an ancient and corner case system. My advice is that, if you want to continue using NeXTSTEP, you install GNU make and use it instead of the native make. I'm thus closing this bug report as "won't fix". But if you more observations or remarks to add, feel free to continue the discussion here (we can still re-open the bug report at a later date, if the need arises). Thanks, Stefano From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 01 07:05:48 2011 Received: (at control) by debbugs.gnu.org; 1 Nov 2011 11:05:48 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RLCA5-0002Ev-Jh for submit@debbugs.gnu.org; Tue, 01 Nov 2011 07:05:47 -0400 Received: from mail-ww0-f46.google.com ([74.125.82.46]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RLCA2-0002El-PO for control@debbugs.gnu.org; Tue, 01 Nov 2011 07:05:44 -0400 Received: by wwe5 with SMTP id 5so2391915wwe.15 for ; Tue, 01 Nov 2011 04:03:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:mime-version:content-type :content-transfer-encoding:message-id; bh=B4/ZIWs8hW+L1/TdwAHrosDKJBdP7Q2e29MVA6MJgZY=; b=KefK9w319vMsZRb+XPWRIx9c9P7SZVciQ9rdDuwbnuaN+XlL5dehDxoh9U10abvcPG q1ZZL113Yn8bNX4w5lvwCuFa1BqWq/GUQ7S60Ufj4jWz7EJFIp/FdXX1bsA+VLVO+9aV riLtyhucXXL22U2/oMfE4xhsZuOBni49FlmlQ= Received: by 10.227.205.78 with SMTP id fp14mr23016825wbb.23.1320145405357; Tue, 01 Nov 2011 04:03:25 -0700 (PDT) Received: from bigio.localnet (host22-94-dynamic.4-87-r.retail.telecomitalia.it. [87.4.94.22]) by mx.google.com with ESMTPS id x40sm37695225wbn.19.2011.11.01.04.03.24 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 01 Nov 2011 04:03:24 -0700 (PDT) From: Stefano Lattarini To: control@debbugs.gnu.org Subject: 9928 Date: Tue, 1 Nov 2011 12:03:15 +0100 User-Agent: KMail/1.13.7 (Linux/2.6.30-2-686; KDE/4.6.5; i686; ; ) MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201111011203.15686.stefano.lattarini@gmail.com> X-Spam-Score: -3.9 (---) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.9 (---) tags 9928 wontfix close 9928 thanks From debbugs-submit-bounces@debbugs.gnu.org Tue Nov 01 13:31:22 2011 Received: (at submit) by debbugs.gnu.org; 1 Nov 2011 17:31:22 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RLIBF-0005e7-MC for submit@debbugs.gnu.org; Tue, 01 Nov 2011 13:31:21 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RLIBE-0005e1-JO for submit@debbugs.gnu.org; Tue, 01 Nov 2011 13:31:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RLI8z-0001dJ-4g for submit@debbugs.gnu.org; Tue, 01 Nov 2011 13:29:02 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-2.6 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_LOW, T_DKIM_INVALID autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:49371) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RLI8z-0001dF-1S for submit@debbugs.gnu.org; Tue, 01 Nov 2011 13:29:01 -0400 Received: from eggs.gnu.org ([140.186.70.92]:55969) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RLI8x-0001rT-Pv for bug-automake@gnu.org; Tue, 01 Nov 2011 13:29:01 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RLI8w-0001cN-C9 for bug-automake@gnu.org; Tue, 01 Nov 2011 13:28:59 -0400 Received: from out4.smtp.messagingengine.com ([66.111.4.28]:47751) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RLI8w-0001cJ-5k for bug-automake@gnu.org; Tue, 01 Nov 2011 13:28:58 -0400 Received: from compute5.internal (compute5.nyi.mail.srv.osa [10.202.2.45]) by gateway1.nyi.mail.srv.osa (Postfix) with ESMTP id DE21920A79; Tue, 1 Nov 2011 13:28:57 -0400 (EDT) Received: from web2.nyi.mail.srv.osa ([10.202.2.212]) by compute5.internal (MEProxy); Tue, 01 Nov 2011 13:28:57 -0400 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=iSKUNK.ORG; h= message-id:from:to:cc:mime-version:content-transfer-encoding :content-type:references:subject:in-reply-to:date; s=mesmtp; bh= rYiTP11GCpuJWaqcYtATx1U/pHg=; b=MYiI9jLf0N2yaFzsooEwSuawtwDIqyxn xWkYVs1auR2ZbB8qtdCfwwJ0esBfNoWprYCptMBzBwGz46KcnllBUuzT5x15nwCU vPTQ/G6Vr/iqvSKNxTZpMsUVINLnc5bHaQ+3SC4GXeokhHiCAVU4+NV+jirEW+pr rVKV0YAdOwI= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=message-id:from:to:cc:mime-version :content-transfer-encoding:content-type:references:subject :in-reply-to:date; s=smtpout; bh=rYiTP11GCpuJWaqcYtATx1U/pHg=; b= sUFZlbpJDq9FMKDTWAKKhIDbsKvsrPu4NxkpS0Lq820pFHNfAnVym3Og/okfGt8W 9JzOR+QIQr+gWi3YbmCBm7dqgJKQEFqY6zTk168/t8ACpU8KGJYz99ZQ9O0GlwEh NetH3GnCJewlfHvxDK1IgY2j5h2aBK1g/07F/T5neq0= Received: by web2.nyi.mail.srv.osa (Postfix, from userid 99) id AFC293A9FC1; Tue, 1 Nov 2011 13:28:57 -0400 (EDT) Message-Id: <1320168537.4839.140660993261233@webmail.messagingengine.com> X-Sasl-Enc: ATtke659tlcNBXzM9vT/vAYZC/qkwxKAfnMgOp8mLwnL 1320168537 From: "Daniel Richard G." To: "Stefano Lattarini" , bug-automake@gnu.org MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: multipart/mixed; boundary="_----------=_132016853748390" X-Mailer: MessagingEngine.com Webmail Interface References: <1320122243.29160.140660993015277@webmail.messagingengine.com> <201111011131.10906.stefano.lattarini@gmail.com> Subject: Re: bug#9928: AM_SILENT_RULES breakage with old make(1) In-Reply-To: <201111011131.10906.stefano.lattarini@gmail.com> Date: Tue, 01 Nov 2011 13:28:57 -0400 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -6.1 (------) X-Debbugs-Envelope-To: submit Cc: 9928@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.1 (------) This is a multi-part message in MIME format. --_----------=_132016853748390 MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii" Date: Tue, 1 Nov 2011 13:28:57 -0400 X-Mailer: MessagingEngine.com Webmail Interface Hi Stefano, On Tue, 2011 Nov 1 11:31+0100, Stefano Lattarini wrote: > > Wikipedia tells me that NeXTSTEP is now 16 years old, so I have a > quite strong opinion against the possitility of tweaking/uglifying > automake in order to support such an ancient and corner case system. > My advice is that, if you want to continue using NeXTSTEP, you install > GNU make and use it instead of the native make. > > I'm thus closing this bug report as "won't fix". But if you more > observations or remarks to add, feel free to continue the discussion > here (we can still re-open the bug report at a later date, if the need > arises). A few remarks: * This isn't about NeXTSTEP, but more broadly about older make(1) implementations. NeXTSTEP is built on BSD; this is an old BSD make, so the same problem is likely to crop up on other old BSD and BSD-derived systems. * All other aspects of the Automake-generated makefiles (that I've tried) are compatible with this old make. It's not like there are a number of other issues that would not be worth the effort to fix, just this one. * The incompatibility here is particularly pressing, because if a package uses AM_SILENT_RULES, there is no way of configuring it that will hide away the nested variable references, and thereby the deadly parens. --disable-silent-rules only changes AM_DEFAULT_VERBOSITY. The situation would be different if this controlled some AM_CONDITIONAL- like logic that could comment out the troublesome constructs altogether, but that's not how it's implemented. (Running "make AM_V_CC=" isn't a solution either, because this make can't override variables defined in the makefile, let alone recursed makefiles. And users wouldn't know to do this anyway.) * What is the cost/benefit to breaking compatibility here? Is avoiding uglification worth losing the ability to work with this old make? I do understand that sometimes, breaking compatibility with old systems can be a big win for flexibility. When the Autoconf folks decided that they would use shell functions in generated configure scripts instead of faking them via M4 macros, they lost the ability to run on museum-piece /bin/sh implementations (pre-dating NeXTSTEP) that don't know about functions. But they gained a useful construct for organizing and simplifying configure scripts whose value was more than worth the systems left out in the cold. I don't see what is being gained here that is worth the cost. For my part, I don't use Autotools because they are beautiful; I use them because they *work*. * The patch to address this issue touches only two lines of code. (See attached, against automake-1.11.1) --Daniel -- Daniel Richard G. || skunk@iSKUNK.ORG My ASCII-art .sig got a bad case of Times New Roman. --_----------=_132016853748390 MIME-Version: 1.0 Content-Disposition: attachment; filename="verbose-var-fix.patch" Content-Id: Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="verbose-var-fix.patch" X-Mailer: MIME::Lite 3.027 (F2.77; A2.06; B3.08; Q3.08) Date: Tue, 1 Nov 2011 13:28:57 -0400 Rml4IGZvciBodHRwOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQu Y2dpP2J1Zz05OTI4CgpkaWZmIC1ydSBhdXRvbWFrZS0xLjExLjEtb3JpZy9h dXRvbWFrZS5pbiBhdXRvbWFrZS0xLjExLjEvYXV0b21ha2UuaW4KLS0tIGF1 dG9tYWtlLTEuMTEuMS1vcmlnL2F1dG9tYWtlLmluCTIwMDktMTItMDggMTM6 MTU6NDAuMDAwMDAwMDAwIC0wNTAwCisrKyBhdXRvbWFrZS0xLjExLjEvYXV0 b21ha2UuaW4JMjAxMS0xMS0wMSAwMjoxODo0Ny4wMDAwMDAwMDAgLTA0MDAK QEAgLTExNjIsOCArMTE2Miw4IEBACiAgICAgaWYgKG9wdGlvbiAnc2lsZW50 LXJ1bGVzJykKICAgICAgIHsKIAkjIFVzaW5nIGAkVicgaW5zdGVhZCBvZiBg JChWKScgYnJlYWtzIElSSVggbWFrZS4KLQlkZWZpbmVfdmFyaWFibGUgKCR2 YXIsICckKCcgLiAkcHZhciAuICdfJChWKSknLCBJTlRFUk5BTCk7Ci0JZGVm aW5lX3ZhcmlhYmxlICgkcHZhciAuICdfJywgJyQoJyAuICRwdmFyIC4gJ18k KEFNX0RFRkFVTFRfVkVSQk9TSVRZKSknLCBJTlRFUk5BTCk7CisJZGVmaW5l X3ZhcmlhYmxlICgkdmFyLCAnJCgnIC4gJHB2YXIgLiAnXyR7Vn0pJywgSU5U RVJOQUwpOworCWRlZmluZV92YXJpYWJsZSAoJHB2YXIgLiAnXycsICckKCcg LiAkcHZhciAuICdfJHtBTV9ERUZBVUxUX1ZFUkJPU0lUWX0pJywgSU5URVJO QUwpOwogCUF1dG9tYWtlOjpWYXJpYWJsZTo6ZGVmaW5lICgkc2lsZW50X3Zh ciwgVkFSX0FVVE9NQUtFLCAnJywgVFJVRSwgJHZhbCwKIAkJCQkgICAgJycs IElOVEVSTkFMLCBWQVJfQVNJUykKIAkgIGlmICghIHZhcmRlZiAoJHNpbGVu dF92YXIsIFRSVUUpKTsK --_----------=_132016853748390-- From unknown Fri Jun 20 07:17:36 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 30 Nov 2011 12:24:02 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator From unknown Fri Jun 20 07:17:36 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: Did not alter fixed versions and reopened. Date: Wed, 07 Dec 2011 22:38:02 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # Did not alter fixed versions and reopened. thanks # This fakemail brought to you by your local debbugs # administrator From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 07 17:37:59 2011 Received: (at control) by debbugs.gnu.org; 7 Dec 2011 22:38:00 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RYQ7j-0008CI-Ph for submit@debbugs.gnu.org; Wed, 07 Dec 2011 17:37:59 -0500 Received: from mail-ey0-f172.google.com ([209.85.215.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RYQ7h-0008C5-CG; Wed, 07 Dec 2011 17:37:58 -0500 Received: by eaak10 with SMTP id k10so877898eaa.3 for ; Wed, 07 Dec 2011 14:37:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:cc:references:in-reply-to :mime-version:content-type:content-transfer-encoding:message-id; bh=KcgSWbOjMqQfjx/74gN5QDvvTJazFfuMemwNyHshHF0=; b=wl/VjuUQcz/GTjmSvQBnjRZL+tYL5RR7zAaPOXcqN9rkC424cwMlNKNwMZs6i5n+n8 AqUcAkybfYhdZ2FpDOLbqhGyyPATocrs1S7zGsI0xKEeBWY0m2jwYtK/wxw7TBstRx++ soRU7DCgwsb0IHf7RN3ybR/KrMXREtS6yNybw= Received: by 10.213.7.138 with SMTP id d10mr884549ebd.132.1323297430811; Wed, 07 Dec 2011 14:37:10 -0800 (PST) Received: from bigio.localnet (host167-102-dynamic.2-87-r.retail.telecomitalia.it. [87.2.102.167]) by mx.google.com with ESMTPS id a60sm11187887eeb.4.2011.12.07.14.37.08 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 07 Dec 2011 14:37:09 -0800 (PST) From: Stefano Lattarini To: "Daniel Richard G." Subject: Re: bug#9928: AM_SILENT_RULES breakage with old make(1) Date: Wed, 7 Dec 2011 23:36:59 +0100 User-Agent: KMail/1.13.7 (Linux/2.6.30-2-686; KDE/4.6.5; i686; ; ) References: <1320122243.29160.140660993015277@webmail.messagingengine.com> <201111011131.10906.stefano.lattarini@gmail.com> <1320168537.4839.140660993261233@webmail.messagingengine.com> In-Reply-To: <1320168537.4839.140660993261233@webmail.messagingengine.com> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201112072336.59852.stefano.lattarini@gmail.com> X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: control Cc: 9928@debbugs.gnu.org, bug-automake@gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.0 (----) reopen 9928 tags 9928 - wontfix severity 9928 minor thanks Adding cross-reference to a similar issue, JFTR: Since the solution proposed there might solve this bug as well, I'm re-opening it for the moment. Regards, Stefano From unknown Fri Jun 20 07:17:36 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: Did not alter fixed versions and reopened. Date: Wed, 07 Dec 2011 22:40:02 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # Did not alter fixed versions and reopened. thanks # This fakemail brought to you by your local debbugs # administrator From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 07 17:41:23 2011 Received: (at control) by debbugs.gnu.org; 7 Dec 2011 22:41:23 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RYQB1-0008ID-H4 for submit@debbugs.gnu.org; Wed, 07 Dec 2011 17:41:23 -0500 Received: from mail-ey0-f172.google.com ([209.85.215.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RYQAz-0008I5-8G for control@debbugs.gnu.org; Wed, 07 Dec 2011 17:41:22 -0500 Received: by eaak10 with SMTP id k10so878988eaa.3 for ; Wed, 07 Dec 2011 14:40:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:mime-version:content-type :content-transfer-encoding:message-id; bh=BpuJpll70h6/nclSvSiGrvnXxZob7IMVNLAc29dAR5Y=; b=vHop9Y9PWMntaBCVk5UdhJ2WaT8HjtvHcuZim2G7631qJrLWuUgfaBE/rAW/nJU79z +Jy7h/hJ4UXCEeO9T9LbboH4Msmr25l71dGCfQ6UJbiwDYMuLDyqa5X8P05ovrRIwm9Q LDJa4h5wJWElR0a7OdD7/4xyoTXcU2yEGEzHo= Received: by 10.213.25.197 with SMTP id a5mr897335ebc.84.1323297635011; Wed, 07 Dec 2011 14:40:35 -0800 (PST) Received: from bigio.localnet (host167-102-dynamic.2-87-r.retail.telecomitalia.it. [87.2.102.167]) by mx.google.com with ESMTPS id d6sm11179849eec.10.2011.12.07.14.40.34 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 07 Dec 2011 14:40:34 -0800 (PST) From: Stefano Lattarini To: control@debbugs.gnu.org Subject: 9928 Date: Wed, 7 Dec 2011 23:40:24 +0100 User-Agent: KMail/1.13.7 (Linux/2.6.30-2-686; KDE/4.6.5; i686; ; ) MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201112072340.24556.stefano.lattarini@gmail.com> X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.0 (----) unarchive 9928 reopen 9928 tags 9928 - wontfix severity 9928 minor thanks From unknown Fri Jun 20 07:17:36 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: Did not alter fixed versions and reopened. Date: Wed, 07 Dec 2011 22:42:02 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # Did not alter fixed versions and reopened. thanks # This fakemail brought to you by your local debbugs # administrator From debbugs-submit-bounces@debbugs.gnu.org Sat Dec 10 17:58:58 2011 Received: (at 9928) by debbugs.gnu.org; 10 Dec 2011 22:58:58 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZVsg-0002rb-5I for submit@debbugs.gnu.org; Sat, 10 Dec 2011 17:58:58 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZVsb-0002rM-8Z; Sat, 10 Dec 2011 17:58:55 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 4E9F0A60001; Sat, 10 Dec 2011 14:57:49 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BZ37WCtQa-Wr; Sat, 10 Dec 2011 14:57:47 -0800 (PST) Received: from [192.168.1.10] (pool-71-189-109-235.lsanca.fios.verizon.net [71.189.109.235]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id A8ECB39E8006; Sat, 10 Dec 2011 14:57:47 -0800 (PST) Message-ID: <4EE3E3ED.1010506@cs.ucla.edu> Date: Sat, 10 Dec 2011 14:57:49 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20111124 Thunderbird/8.0 MIME-Version: 1.0 To: Stefano Lattarini Subject: Re: bug#10237: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <4EDE61B3.4080605@cs.ucla.edu> <4EDE6379.9040003@redhat.com> <201112062002.32774.stefano.lattarini@gmail.com> In-Reply-To: <201112062002.32774.stefano.lattarini@gmail.com> Content-Type: multipart/mixed; boundary="------------090502020507090708020509" X-Spam-Score: -2.9 (--) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, Eric Blake , 10237@debbugs.gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.9 (--) This is a multi-part message in MIME format. --------------090502020507090708020509 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit On 12/06/11 11:02, Stefano Lattarini wrote: > If you are interested in accomodating this fringe situation, I will > then accept a patch on the lines Paul has proposed (with a mandatory > testcase, otherwise it would be far too easy to regress in such a > almost-never-excercised corner case). OK, a proposed patch is below. It changes the silent-rules test case to check the new behavior; hope that's what you're asking for. Comments are welcome. The patch below is just the human-edited parts. A full patch (including the autogenerated parts) is attached, as a compressed file. automake: port silent-rules option to POSIX make This fixes two problems reported for Automake (Bug#9928, Bug#10237) and is in response to a bug report for building coreutils on HP NonStop OS (Bug#10234). The basic idea is that instead of generating Makefile.in lines like "AM_V_CC = $(am__v_CC_$(V))", we generate "AM_V_CC = $(am__v_CC_@am__V@)". We then AC_SUBST $(V) for @am__V@ in the usual case where `make' supports nested variables, and substitute 1 (or 0) otherwise. Similarly for usages like $(am__v_CC_$(AM_DEFAULT_VERBOSITY)). * NEWS: Document this. * automake.in (define_verbose_var): When defining the variable, use @am__V@ rather than $(V), and likewise for @am__DEFAULT_VERBOSITY@ and $(AM_DEFAULT_VERBOSITY). (handle_options): silent-rules no longer overrides portability-recursive. * doc/automake.texi (Invoking Automake): silent-rules no longer overrides portability-recursive. (Automake silent-rules Option): Explain new system. * m4/silent.m4 (AM_SILENT_RULES): Check whether `make' supports nested variables, and substitute am__V and am__DEFAULT_VERBOSITY accordingly. * tests/silent-nowarn.test: Check that silent-rules no longer overrides portability-recursive. diff --git a/NEWS b/NEWS index da9af08..615f420 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,14 @@ +* Changes to automake: + + - The `silent-rules' option now generates working makefiles even for + the uncommon `make' implementations that do not support the + nested-variables extension to POSIX 2008. For such `make' + implementations, whether a build is silent is determined at + configure time, and cannot be overridden at make time with `make + V=0' or `make V=1'. Since the `silent-rules' option no longer + requires nested variables, it no longer disables the + nested-variables warning. + New in 1.11a: * Changes to automake: diff --git a/automake.in b/automake.in index 0b6d014..d61af86 100644 --- a/automake.in +++ b/automake.in @@ -1141,9 +1141,8 @@ sub define_verbose_var ($$) my $silent_var = $pvar . '_0'; if (option 'silent-rules') { - # Using `$V' instead of `$(V)' breaks IRIX make. - define_variable ($var, '$(' . $pvar . '_$(V))', INTERNAL); - define_variable ($pvar . '_', '$(' . $pvar . '_$(AM_DEFAULT_VERBOSITY))', INTERNAL); + define_variable ($var, '$(' . $pvar . '_@'.'am__V'.'@)', INTERNAL); + define_variable ($pvar . '_', '$(' . $pvar . '_@'.'am__DEFAULT_VERBOSITY'.'@)', INTERNAL); Automake::Variable::define ($silent_var, VAR_AUTOMAKE, '', TRUE, $val, '', INTERNAL, VAR_ASIS) if (! vardef ($silent_var, TRUE)); @@ -1236,10 +1235,6 @@ sub handle_options return 1 if process_option_list (@options); } - # Override portability-recursive warning. - switch_warning ('no-portability-recursive') - if option 'silent-rules'; - if ($strictness == GNITS) { set_option ('readme-alpha', INTERNAL); diff --git a/doc/automake.texi b/doc/automake.texi index e937715..8214787 100644 --- a/doc/automake.texi +++ b/doc/automake.texi @@ -2702,8 +2702,6 @@ variables. The categories output by default are @samp{syntax} and @samp{unsupported}. Additionally, @samp{gnu} and @samp{portability} are enabled in @option{--gnu} and @option{--gnits} strictness. -On the other hand, the @option{silent-rules} options (@pxref{Options}) -turns off portability warnings about recursive variable expansions. @c Checked by extra-portability.test Turning off @samp{portability} will also turn off @samp{extra-portability}, @@ -10141,19 +10139,14 @@ Users who prefer to have silent rules enabled by default can edit their default to @samp{yes}. This should still allow disabling silent rules at @command{configure} time and at @command{make} time. -@c FIXME: there's really a need to specify this explicitly? -For portability to different @command{make} implementations, package authors -are advised to not set the variable @code{V} inside the @file{Makefile.am} -file, to allow the user to override the value for subdirectories as well. - -The current implementation of this feature relies on a non-POSIX, but in -practice rather widely supported @file{Makefile} construct of nested -variable expansion @samp{$(@var{var1}$(V))}. Do not use the -@option{silent-rules} option if your package needs to build with -@command{make} implementations that do not support it. The -@option{silent-rules} option turns off warnings about recursive variable -expansion, which are in turn enabled by @option{-Wportability} -(@pxref{Invoking Automake}). +The current implementation of this feature normally uses nested +variable expansion @samp{$(@var{var1}$(V))}, a @file{Makefile} feature +that is not required by POSIX 2008 but is widely supported in +practice. On the rare @command{make} implementations that do not +support nested variable expansion, whether rules are silent is always +determined at configure time, and cannot be overridden at make time. +Future versions of POSIX are likely to require nested variable +expansion, so this minor limitation should go away with time. @vindex @code{AM_V_GEN} @vindex @code{AM_V_at} diff --git a/m4/silent.m4 b/m4/silent.m4 index 432dd45..2a4446c 100644 --- a/m4/silent.m4 +++ b/m4/silent.m4 @@ -5,7 +5,7 @@ # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 +# serial 3 # AM_SILENT_RULES([DEFAULT]) # -------------------------- @@ -25,6 +25,34 @@ case $enable_silent_rules in @%:@ ((( no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_nested_variables], + [am_makefile=' +TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit +' +if echo "$am_makefile" | $am_make -s -f - >/dev/null 2>&1; then + am_cv_make_nested_variables=yes +else + am_cv_make_nested_variables=no +fi]) +if test $am_cv_make_nested_variables = yes; then + am__V='$(V)' + am__DEFAULT_VERBOSITY='$(AM_DEFAULT_VERBOSITY)' +else + am__V=$AM_DEFAULT_VERBOSITY + am__DEFAULT_VERBOSITY=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([am__V])dnl +AM_SUBST_NOTMAKE([am__V])dnl +AC_SUBST([am__DEFAULT_VERBOSITY])dnl +AM_SUBST_NOTMAKE([am__DEFAULT_VERBOSITY])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl diff --git a/tests/silent-nowarn.test b/tests/silent-nowarn.test index f0f5e70..9742bc3 100755 --- a/tests/silent-nowarn.test +++ b/tests/silent-nowarn.test @@ -14,7 +14,7 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# Check that the 'silent-rules' mode suppresses the warnings for recursive +# Check that the 'silent-rules' mode does not suppress warnings for recursive # make variable expansions. This should happen regardless of whether and # where these warnings are requested. @@ -39,6 +39,5 @@ END touch AUTHORS ChangeLog COPYING INSTALL NEWS README THANKS $ACLOCAL -$AUTOMAKE --gnu -Wall -Wportability-recursive - -: +AUTOMAKE_fails --gnu -Wall -Wportability-recursive +grep 'recursive variable expansion' stderr --------------090502020507090708020509 Content-Type: application/x-gzip; name="full-patch.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="full-patch.gz" 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 i1P/Fx4pxD/T+jciIn/280kAAA== --------------090502020507090708020509-- From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 11 04:44:06 2011 Received: (at 9928) by debbugs.gnu.org; 11 Dec 2011 09:44:06 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZfwz-000299-OV for submit@debbugs.gnu.org; Sun, 11 Dec 2011 04:44:06 -0500 Received: from mail-ey0-f172.google.com ([209.85.215.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RZfww-00028s-Ei; Sun, 11 Dec 2011 04:44:04 -0500 Received: by eaad1 with SMTP id d1so1027643eaa.3 for ; Sun, 11 Dec 2011 01:42:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=from:to:subject:date:user-agent:cc:references:in-reply-to :mime-version:content-type:content-transfer-encoding:message-id; bh=bTUbNmFyxy5GeumMwrBFF/oLIjA6cG5H7tPFaVPVE+U=; b=JQ+945WS8yMjA8GAtC4K4LYZF0GLkZVPxJVLUPpOksAoKtWtbKOofVQdkiBYuKc21q TfX2ylBEJVLds+7mR5kQbuvw8VEgMYTu87cSqFFVDPaJiViqGTxibkha6pmYU/s1ryED WWdcFlWAsfs/gUBbs3gKBUKGQ0RwQsupgpQgQ= Received: by 10.213.29.202 with SMTP id r10mr2731648ebc.52.1323596575722; Sun, 11 Dec 2011 01:42:55 -0800 (PST) Received: from bigio.localnet (host76-49-dynamic.58-82-r.retail.telecomitalia.it. [82.58.49.76]) by mx.google.com with ESMTPS id f47sm25344600eea.1.2011.12.11.01.42.53 (version=TLSv1/SSLv3 cipher=OTHER); Sun, 11 Dec 2011 01:42:54 -0800 (PST) From: Stefano Lattarini To: Paul Eggert Subject: Re: bug#10237: AM_SILENT_RULES does not work with NonStop make Date: Sun, 11 Dec 2011 10:42:44 +0100 User-Agent: KMail/1.13.7 (Linux/2.6.30-2-686; KDE/4.6.5; i686; ; ) References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> In-Reply-To: <4EE3E3ED.1010506@cs.ucla.edu> MIME-Version: 1.0 Content-Type: Text/Plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <201112111042.45708.stefano.lattarini@gmail.com> X-Spam-Score: -3.9 (---) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, Eric Blake , 10237@debbugs.gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.9 (---) Hi Paul. On Saturday 10 December 2011, Paul Eggert wrote: > On 12/06/11 11:02, Stefano Lattarini wrote: > > If you are interested in accomodating this fringe situation, I will > > then accept a patch on the lines Paul has proposed (with a mandatory > > testcase, otherwise it would be far too easy to regress in such a > > almost-never-excercised corner case). > > OK, a proposed patch is below. It changes the silent-rules test case > to check the new behavior; hope that's what you're asking for. > No, I was asking for a test case that simulates the presence of a make implementation unable to grasp nested variable expansions, that checks that the new code correctly kicks in such a situation (this can be done by grepping configure output and generated Makefile), and that the build process truly works as expected both with `--enable-silent-rules' and with `--disable-silent-rules' (see test `silent.test' for inspiration about how to do so). Otherwise the new code would remain basically uncovered in our testsuite for the very fringe and thorny situation we are trying to fix, which IMO is a big no-no. > Comments are welcome. > See them inlined below. > The patch below is just the human-edited parts. A full patch > (including the autogenerated parts) is attached, as a compressed file. > First nit: since this patch is a basically a bugfix (albeit for a very corner-case bug), I think it should be applied to the maintenance line of automake. So, could you please rebase your patch on maint? Thanks. > automake: port silent-rules option to POSIX make > s/POSIX make/fringe make implementations/, maybe? > This fixes two problems reported for Automake (Bug#9928, Bug#10237) > and is in response to a bug report for building coreutils on > HP NonStop OS (Bug#10234). > A brief description of the problem here would be nice. Would you mind condensing one from the mailing list discussions? > The basic idea is that instead of > generating Makefile.in lines like "AM_V_CC = $(am__v_CC_$(V))", > we generate "AM_V_CC = $(am__v_CC_@am__V@)". We then AC_SUBST > $(V) for @am__V@ in the usual case where `make' supports > nested variables, and substitute 1 (or 0) otherwise. > Here I'd add something like: With this change, make implementations that doesn't grasp nested variable expansions will still be able to run Makefile generated using the `silent-rules' option; of course, they won't allow the user to override the make verbosity at runtime through redefintion of $(V) (as in "make V=0"); but this is still an improvement over not being able to work at all. > Similarly for usages like $(am__v_CC_$(AM_DEFAULT_VERBOSITY)). > * NEWS: Document this. > * automake.in (define_verbose_var): When defining the variable, > use @am__V@ rather than $(V), > and likewise for @am__DEFAULT_VERBOSITY@ and $(AM_DEFAULT_VERBOSITY). > Maybe substitute this with a simpler "and @am__DEFAULT_VERBOSITY@ rather than $(AM_DEFAULT_VERBOSITY)" ? > (handle_options): silent-rules no longer overrides > portability-recursive. > Bad idea, unless you also change the documentation in the manual about how to write custom "silenceable rules": You can add your own variables, so strings of your own choice are shown. The following snippet shows how you would define your own equivalent of AM_V_GEN: pkg_verbose = $(pkg_verbose_$(V)) pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_VERBOSITY)) pkg_verbose_0 = @echo GEN $@; foo: foo.in $(pkg_verbose)cp $(srcdir)/foo.in $@ > * doc/automake.texi (Invoking Automake): silent-rules no longer > overrides portability-recursive. > (Automake silent-rules Option): Explain new system. > * m4/silent.m4 (AM_SILENT_RULES): Check whether `make' supports > nested variables, and substitute am__V and am__DEFAULT_VERBOSITY > accordingly. > * tests/silent-nowarn.test: Check that silent-rules no longer > overrides portability-recursive. > diff --git a/NEWS b/NEWS > index da9af08..615f420 100644 > --- a/NEWS > +++ b/NEWS > @@ -1,3 +1,14 @@ > +* Changes to automake: > + > + - The `silent-rules' option now generates working makefiles even for > + the uncommon `make' implementations that do not support the > + nested-variables extension to POSIX 2008. For such `make' > + implementations, whether a build is silent is determined at > + configure time, and cannot be overridden at make time with `make > + V=0' or `make V=1'. Since the `silent-rules' option no longer > + requires nested variables, it no longer disables the > + nested-variables warning. > + > This NEWS entry should go in the "Bugs fixed in 1.11a" section, "Bugs introduced by 1.11" subsection. > diff --git a/automake.in b/automake.in > index 0b6d014..d61af86 100644 > --- a/automake.in > +++ b/automake.in > @@ -1141,9 +1141,8 @@ sub define_verbose_var ($$) > my $silent_var = $pvar . '_0'; > if (option 'silent-rules') > { > - # Using `$V' instead of `$(V)' breaks IRIX make. > Here, I'd add a pointer to comments in m4/silent.m4, since this code has become decidedly non-obvious enough to deserve an examplnation. > - define_variable ($var, '$(' . $pvar . '_$(V))', INTERNAL); > - define_variable ($pvar . '_', '$(' . $pvar . '_$(AM_DEFAULT_VERBOSITY))', INTERNAL); > + define_variable ($var, '$(' . $pvar . '_@'.'am__V'.'@)', INTERNAL); > + define_variable ($pvar . '_', '$(' . $pvar . '_@'.'am__DEFAULT_VERBOSITY'.'@)', INTERNAL); > Automake::Variable::define ($silent_var, VAR_AUTOMAKE, '', TRUE, $val, > '', INTERNAL, VAR_ASIS) > if (! vardef ($silent_var, TRUE)); > @@ -1236,10 +1235,6 @@ sub handle_options > return 1 if process_option_list (@options); > } > > - # Override portability-recursive warning. > - switch_warning ('no-portability-recursive') > - if option 'silent-rules'; > - > Don't do this without also updating the documentation. Thanks. > if ($strictness == GNITS) > { > set_option ('readme-alpha', INTERNAL); > diff --git a/doc/automake.texi b/doc/automake.texi > index e937715..8214787 100644 > --- a/doc/automake.texi > +++ b/doc/automake.texi > @@ -2702,8 +2702,6 @@ variables. > The categories output by default are @samp{syntax} and > @samp{unsupported}. Additionally, @samp{gnu} and @samp{portability} > are enabled in @option{--gnu} and @option{--gnits} strictness. > -On the other hand, the @option{silent-rules} options (@pxref{Options}) > -turns off portability warnings about recursive variable expansions. > > @c Checked by extra-portability.test > Turning off @samp{portability} will also turn off @samp{extra-portability}, > @@ -10141,19 +10139,14 @@ Users who prefer to have silent rules enabled by default can edit their > default to @samp{yes}. This should still allow disabling silent rules > at @command{configure} time and at @command{make} time. > > -@c FIXME: there's really a need to specify this explicitly? > -For portability to different @command{make} implementations, package authors > -are advised to not set the variable @code{V} inside the @file{Makefile.am} > -file, to allow the user to override the value for subdirectories as well. > - Whay are you removing this advice? > -The current implementation of this feature relies on a non-POSIX, but in > -practice rather widely supported @file{Makefile} construct of nested > -variable expansion @samp{$(@var{var1}$(V))}. Do not use the > -@option{silent-rules} option if your package needs to build with > -@command{make} implementations that do not support it. The > -@option{silent-rules} option turns off warnings about recursive variable > -expansion, which are in turn enabled by @option{-Wportability} > -(@pxref{Invoking Automake}). > +The current implementation of this feature normally uses nested > +variable expansion @samp{$(@var{var1}$(V))}, a @file{Makefile} feature > +that is not required by POSIX 2008 but is widely supported in > +practice. On the rare @command{make} implementations that do not > +support nested variable expansion, whether rules are silent is always > +determined at configure time, and cannot be overridden at make time. > > +Future versions of POSIX are likely to require nested variable > +expansion, so this minor limitation should go away with time. > > @vindex @code{AM_V_GEN} > @vindex @code{AM_V_at} > diff --git a/m4/silent.m4 b/m4/silent.m4 > index 432dd45..2a4446c 100644 > --- a/m4/silent.m4 > +++ b/m4/silent.m4 > @@ -5,7 +5,7 @@ > # gives unlimited permission to copy and/or distribute it, > # with or without modifications, as long as this notice is preserved. > > -# serial 2 > +# serial 3 > > # AM_SILENT_RULES([DEFAULT]) > # -------------------------- > @@ -25,6 +25,34 @@ case $enable_silent_rules in @%:@ ((( > no) AM_DEFAULT_VERBOSITY=1;; > *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; > esac > +am_make=${MAKE-make} > +AC_CACHE_CHECK([whether $am_make supports nested variables], > Here, I'd add a short comment for why this is needed, give a pointer to the bug reports this code is trying to fix. For example: # Some fringe make implementations (e.g., NonStop make and # NextStep make) don't grasp nested variable expansions. # See automake bug#10237 and bug#9928. > + [am_cv_make_nested_variables], > Hmmm... maybe a name like `am_cv_make_support_nested_variables' would be more appropriate? Or would it be just longer? > + [am_makefile=' > +TRUE=$(BAR$(V)) > +BAR0=false > +BAR1=true > +V=1 > +am__doit: > + @$(TRUE) > +.PHONY: am__doit > +' > +if echo "$am_makefile" | $am_make -s -f - >/dev/null 2>&1; then > `-s' make option shouldn't be needed here; also, I'd use AS_ECHO instead of bare echo, even if that is probably not required (call it extra safety, or cargo-cult programmming if you want :-) > + am_cv_make_nested_variables=yes > +else > + am_cv_make_nested_variables=no > +fi]) > +if test $am_cv_make_nested_variables = yes; then > + am__V='$(V)' > Please re-add here the comment you've removed from automake.in: # Using `$V' instead of `$(V)' would break IRIX make. am__V='$(V)' > + am__DEFAULT_VERBOSITY='$(AM_DEFAULT_VERBOSITY)' > +else > + am__V=$AM_DEFAULT_VERBOSITY > + am__DEFAULT_VERBOSITY=$AM_DEFAULT_VERBOSITY > +fi > +AC_SUBST([am__V])dnl > +AM_SUBST_NOTMAKE([am__V])dnl > +AC_SUBST([am__DEFAULT_VERBOSITY])dnl > +AM_SUBST_NOTMAKE([am__DEFAULT_VERBOSITY])dnl > AC_SUBST([AM_DEFAULT_VERBOSITY])dnl > AM_BACKSLASH='\' > AC_SUBST([AM_BACKSLASH])dnl > diff --git a/tests/silent-nowarn.test b/tests/silent-nowarn.test > index f0f5e70..9742bc3 100755 > --- a/tests/silent-nowarn.test > +++ b/tests/silent-nowarn.test > @@ -14,7 +14,7 @@ > # You should have received a copy of the GNU General Public License > # along with this program. If not, see . > > -# Check that the 'silent-rules' mode suppresses the warnings for recursive > +# Check that the 'silent-rules' mode does not suppress warnings for recursive > # make variable expansions. This should happen regardless of whether and > # where these warnings are requested. > > @@ -39,6 +39,5 @@ END > touch AUTHORS ChangeLog COPYING INSTALL NEWS README THANKS > > $ACLOCAL > -$AUTOMAKE --gnu -Wall -Wportability-recursive > - > -: > +AUTOMAKE_fails --gnu -Wall -Wportability-recursive > +grep 'recursive variable expansion' stderr > Please keep the trailing `:' here: AUTOMAKE_fails --gnu -Wall -Wportability-recursive grep 'recursive variable expansion' stderr : Thanks, Stefano From debbugs-submit-bounces@debbugs.gnu.org Tue Dec 20 20:32:23 2011 Received: (at 9928) by debbugs.gnu.org; 21 Dec 2011 01:32:23 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RdB2d-0004xB-8n for submit@debbugs.gnu.org; Tue, 20 Dec 2011 20:32:23 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RdB2Y-0004ww-9r; Tue, 20 Dec 2011 20:32:21 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 21E02A60002; Tue, 20 Dec 2011 17:30:16 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 87nDmT80jTnD; Tue, 20 Dec 2011 17:30:13 -0800 (PST) Received: from [192.168.1.10] (pool-71-189-109-235.lsanca.fios.verizon.net [71.189.109.235]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 19F3939E8006; Tue, 20 Dec 2011 17:30:13 -0800 (PST) Message-ID: <4EF136AC.4090307@cs.ucla.edu> Date: Tue, 20 Dec 2011 17:30:20 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20111124 Thunderbird/8.0 MIME-Version: 1.0 To: Stefano Lattarini Subject: Re: bug#10237: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> <201112111042.45708.stefano.lattarini@gmail.com> In-Reply-To: <201112111042.45708.stefano.lattarini@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.9 (--) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, Eric Blake , 10237@debbugs.gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.9 (--) On 12/11/11 01:42, Stefano Lattarini wrote: > I was asking for a test case that simulates the presence of a > make implementation unable to grasp nested variable expansions Ah, OK, revised patch enclosed below. This patch should address your other comments too. Thanks for the careful review. >From 07edd4aa81af2a8fb982427705a2009c2b7eb0bf Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 20 Dec 2011 17:29:06 -0800 Subject: [PATCH] automake: silent-rules no longer requires nested vars This fixes two problems reported for Automake (Bug#9928, Bug#10237) and is in response to a bug report for building coreutils on HP NonStop OS (Bug#10234). The problem is that HP NonStop 'make' treats a line like "AM_V_CC = $(am__v_CC_$(V))" as one that expands a macro with the funny name am__v_CC_$(V instead of the desired name am__v_CC_1 or am__v_CC_0, and since the funny macro is not defined the line is equivalent to "AM_V_CC = )"; this inserts a stray ")" when $(AM_V_CC) is used, which eventually causes 'make' to fail. The basic idea is that instead of generating Makefile.in lines like "AM_V_CC = $(am__v_CC_$(V))", we generate "AM_V_CC = $(am__v_CC_@AM_V@)". We then AC_SUBST $(V) for @AM_V@ in the usual case where `make' supports nested variables, and substitute 1 (or 0) otherwise. Similarly for usages like $(am__v_CC_$(AM_DEFAULT_VERBOSITY)). With this change, make implementations that doesn't grasp nested variable expansions will still be able to run Makefiles generated using the silent-rules option. They won't allow the user to override the make verbosity at runtime through redefinition of $(V) (as in "make V=0"); but this is still an improvement over not being able to work at all. * NEWS: Document this. * automake.in (define_verbose_var): When defining the variable, use @AM_V@ rather than $(V), and use @AM_AM_DEFAULT_VERBOSITY@ rather than $(AM_DEFAULT_VERBOSITY). * doc/automake.texi (Automake silent-rules Option): Explain new system. * m4/silent.m4 (AM_SILENT_RULES): Check whether `make' supports nested variables, and substitute AM_V and AM_AM_DEFAULT_VERBOSITY accordingly. * tests/silent-nested-vars.test: New file. * tests/Makefile.am (TESTS): Add it. * tests/Makefile.in: Regenerate. --- ChangeLog | 40 +++++++++++++++ NEWS | 7 +++ automake.in | 9 ++- doc/automake.texi | 22 +++++---- m4/silent.m4 | 33 +++++++++++- tests/Makefile.am | 1 + tests/Makefile.in | 1 + tests/silent-nested-vars.test | 111 +++++++++++++++++++++++++++++++++++++++++ 8 files changed, 209 insertions(+), 15 deletions(-) create mode 100755 tests/silent-nested-vars.test diff --git a/ChangeLog b/ChangeLog index 49b6e8b..b2d6e11 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,43 @@ +2011-12-11 Paul Eggert + + automake: silent-rules no longer requires nested vars + + This fixes two problems reported for Automake (Bug#9928, Bug#10237) + and is in response to a bug report for building coreutils on HP + NonStop OS (Bug#10234). The problem is that HP NonStop 'make' + treats a line like "AM_V_CC = $(am__v_CC_$(V))" as one that + expands a macro with the funny name am__v_CC_$(V instead of the + desired name am__v_CC_1 or am__v_CC_0, and since the funny macro + is not defined the line is equivalent to "AM_V_CC = )"; this + inserts a stray ")" when $(AM_V_CC) is used, which eventually + causes 'make' to fail. + + The basic idea is that instead of generating Makefile.in lines like + "AM_V_CC = $(am__v_CC_$(V))", we generate + "AM_V_CC = $(am__v_CC_@AM_V@)". We then AC_SUBST $(V) for @AM_V@ + in the usual case where `make' supports nested variables, + and substitute 1 (or 0) otherwise. Similarly for usages like + $(am__v_CC_$(AM_DEFAULT_VERBOSITY)). + + With this change, make implementations that doesn't grasp nested + variable expansions will still be able to run Makefiles generated + using the silent-rules option. They won't allow the user to + override the make verbosity at runtime through redefinition of + $(V) (as in "make V=0"); but this is still an improvement over not + being able to work at all. + + * NEWS: Document this. + * automake.in (define_verbose_var): When defining the variable, + use @AM_V@ rather than $(V), and use + @AM_AM_DEFAULT_VERBOSITY@ rather than $(AM_DEFAULT_VERBOSITY). + * doc/automake.texi (Automake silent-rules Option): Explain new system. + * m4/silent.m4 (AM_SILENT_RULES): Check whether `make' supports + nested variables, and substitute AM_V and AM_AM_DEFAULT_VERBOSITY + accordingly. + * tests/silent-nested-vars.test: New file. + * tests/Makefile.am (TESTS): Add it. + * tests/Makefile.in: Regenerate. + 2011-12-20 Peter Rosin tests: fix spurious failure on systems lacking unistd.h diff --git a/NEWS b/NEWS index 46803a7..58c90c9 100644 --- a/NEWS +++ b/NEWS @@ -74,6 +74,13 @@ Bugs fixed in 1.11.0a: not used, `make' output no longer contains spurious backslash-only lines, thus once again matching what Automake did before 1.11. + - The `silent-rules' option now generates working makefiles even for + the uncommon `make' implementations that do not support the + nested-variables extension to POSIX 2008. For such `make' + implementations, whether a build is silent is determined at + configure time, and cannot be overridden at make time with `make + V=0' or `make V=1'. + - The AM_COND_IF macro also works if the shell expression for the conditional is no longer valid for the condition. diff --git a/automake.in b/automake.in index db7f3c6..ae2011c 100755 --- a/automake.in +++ b/automake.in @@ -1161,9 +1161,12 @@ sub define_verbose_var ($$) my $silent_var = $pvar . '_0'; if (option 'silent-rules') { - # Using `$V' instead of `$(V)' breaks IRIX make. - define_variable ($var, '$(' . $pvar . '_$(V))', INTERNAL); - define_variable ($pvar . '_', '$(' . $pvar . '_$(AM_DEFAULT_VERBOSITY))', INTERNAL); + # For typical `make's, `configure' replaces AM_V (inside @@) with $(V) + # and AM_AM_DEFAULT_VERBOSITY (inside @@) with $(AM_DEFAULT_VERBOSITY). + # For strict POSIX 2008 `make's, it replaces them with 0 or 1 instead. + # See AM_SILENT_RULES in m4/silent.m4. + define_variable ($var, '$(' . $pvar . '_@'.'AM_V'.'@)', INTERNAL); + define_variable ($pvar . '_', '$(' . $pvar . '_@'.'AM_AM_DEFAULT_VERBOSITY'.'@)', INTERNAL); Automake::Variable::define ($silent_var, VAR_AUTOMAKE, '', TRUE, $val, '', INTERNAL, VAR_ASIS) if (! vardef ($silent_var, TRUE)); diff --git a/doc/automake.texi b/doc/automake.texi index a5f857d..1a689b6 100644 --- a/doc/automake.texi +++ b/doc/automake.texi @@ -10130,18 +10130,20 @@ For portability to different @command{make} implementations, package authors are advised to not set the variable @code{V} inside the @file{Makefile.am} file, to allow the user to override the value for subdirectories as well. -The current implementation of this feature relies on a non-POSIX, but in -practice rather widely supported @file{Makefile} construct of nested -variable expansion @samp{$(@var{var1}$(V))}. Do not use the -@option{silent-rules} option if your package needs to build with -@command{make} implementations that do not support it. The -@option{silent-rules} option turns off warnings about recursive variable -expansion, which are in turn enabled by @option{-Wportability} -(@pxref{Invoking Automake}). +The current implementation of this feature normally uses nested +variable expansion @samp{$(@var{var1}$(V))}, a @file{Makefile} feature +that is not required by POSIX 2008 but is widely supported in +practice. On the rare @command{make} implementations that do not +support nested variable expansion, whether rules are silent is always +determined at configure time, and cannot be overridden at make time. +Future versions of POSIX are likely to require nested variable +expansion, so this minor limitation should go away with time. @vindex @code{AM_V_GEN} @vindex @code{AM_V_at} @vindex @code{AM_DEFAULT_VERBOSITY} +@vindex @code{AM_V} +@vindex @code{AM_AM_DEFAULT_VERBOSITY} To extend the silent mode to your own rules, you have two choices: @itemize @bullet @@ -10157,8 +10159,8 @@ The following snippet shows how you would define your own equivalent of @code{AM_V_GEN}: @example -pkg_verbose = $(pkg_verbose_$(V)) -pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_VERBOSITY)) +pkg_verbose = $(pkg_verbose_@@AM_V@@) +pkg_verbose_ = $(pkg_verbose_@@AM_AM_DEFAULT_VERBOSITY@@) pkg_verbose_0 = @@echo PKG-GEN $@@; foo: foo.in diff --git a/m4/silent.m4 b/m4/silent.m4 index 6d2a1a2..1928feb 100644 --- a/m4/silent.m4 +++ b/m4/silent.m4 @@ -1,11 +1,11 @@ ## -*- Autoconf -*- -# Copyright (C) 2009 Free Software Foundation, Inc. +# Copyright (C) 2009, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 +# serial 2 # AM_SILENT_RULES([DEFAULT]) # -------------------------- @@ -20,6 +20,35 @@ yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac +dnl +dnl A few `make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)'dnl Using `$V' instead of `$(V)' breaks IRIX make. + AM_AM_DEFAULT_VERBOSITY='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_AM_DEFAULT_VERBOSITY=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_AM_DEFAULT_VERBOSITY])dnl +AM_SUBST_NOTMAKE([AM_AM_DEFAULT_VERBOSITY])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl diff --git a/tests/Makefile.am b/tests/Makefile.am index 831906b..920d994 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -751,6 +751,7 @@ silent-many-gcc.test \ silent-many-generic.test \ silent-lex-gcc.test \ silent-lex-generic.test \ +silent-nested-vars.test \ silent-yacc-gcc.test \ silent-yacc-generic.test \ silent-configsite.test \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 3ad0146..470ed6c 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -1035,6 +1035,7 @@ silent-many-gcc.test \ silent-many-generic.test \ silent-lex-gcc.test \ silent-lex-generic.test \ +silent-nested-vars.test \ silent-yacc-gcc.test \ silent-yacc-generic.test \ silent-configsite.test \ diff --git a/tests/silent-nested-vars.test b/tests/silent-nested-vars.test new file mode 100755 index 0000000..6716930 --- /dev/null +++ b/tests/silent-nested-vars.test @@ -0,0 +1,111 @@ +#!/bin/sh +# Copyright (C) 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 2, 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 . + +# Check silent-rules mode, on 'make' implementations that do not +# support nested variables. + +. ./defs || Exit 1 + +set -e + +mkdir sub + +cat >>configure.in <<'EOF' +AM_SILENT_RULES +AC_CONFIG_FILES([sub/Makefile]) +AC_PROG_CC +AM_PROG_CC_C_O +AC_OUTPUT +EOF + +cat > Makefile.am <<'EOF' +# Need generic and non-generic rules. +bin_PROGRAMS = foo bar +bar_CFLAGS = $(AM_CFLAGS) +SUBDIRS = sub +EOF + +cat > sub/Makefile.am <<'EOF' +AUTOMAKE_OPTIONS = subdir-objects +# Need generic and non-generic rules. +bin_PROGRAMS = baz bla +bla_CFLAGS = $(AM_CFLAGS) +EOF + +cat > foo.c <<'EOF' +int main () +{ + return 0; +} +EOF +cp foo.c bar.c +cp foo.c sub/baz.c +cp foo.c sub/bla.c + +cat >mymake <<'EOF' +#! /bin/sh +makerules= + +case $1 in + -f) + makefile=$2 + case $2 in + -) makerules=`cat` || exit ;; + esac ;; + *) + for makefile in makefile Makefile; do + test -f $makefile && break + done ;; +esac + +if printf '%s\n' "$makerules" | LC_ALL=C grep '\$([a-zA-Z0-9_]*\$' $makefile +then + echo >&2 "mymake: $makefile contains nested variables" + exit 1 +fi +exec $mymake_MAKE "$@" +EOF +chmod a+x mymake +mymake_MAKE=${MAKE-make} +export mymake_MAKE + +$ACLOCAL +$AUTOMAKE --add-missing +$AUTOCONF + +./configure --enable-silent-rules MAKE=./mymake +./mymake >stdout || { cat stdout; Exit 1; } +cat stdout +$EGREP ' (-c|-o)' stdout && Exit 1 +grep 'mv ' stdout && Exit 1 +grep 'CC .*foo\.' stdout +grep 'CC .*bar\.' stdout +grep 'CC .*baz\.' stdout +grep 'CC .*bla\.' stdout +grep 'CCLD .*foo' stdout +grep 'CCLD .*bar' stdout +grep 'CCLD .*baz' stdout +grep 'CCLD .*bla' stdout + +./mymake clean +./configure --disable-silent-rules MAKE=./mymake +./mymake >stdout || { cat stdout; Exit 1; } +cat stdout +grep ' -c' stdout +grep ' -o foo' stdout +$EGREP '(CC|LD) ' stdout && Exit 1 + +: -- 1.7.6.4 From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 21 07:23:39 2011 Received: (at 9928) by debbugs.gnu.org; 21 Dec 2011 12:23:39 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RdLCt-0003iw-4i for submit@debbugs.gnu.org; Wed, 21 Dec 2011 07:23:39 -0500 Received: from mail-vx0-f172.google.com ([209.85.220.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RdLCr-0003il-0Q; Wed, 21 Dec 2011 07:23:38 -0500 Received: by vcbfk13 with SMTP id fk13so5450309vcb.3 for ; Wed, 21 Dec 2011 04:21:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=Ng1/ANwQgFKHhRCkl6x/VEJ7N4/BYQyyn3kQlE7dxXc=; b=LgYfs3UkrOaYXIyH6KJkUKDYYeg2k0+63V4A0Tu3fp6eKXTNKMH+a49/x+BGpft+Ae NyouNxs8imzaSD28E6CTXZGbvQwIK8FcBFGD65Aafyd7Y4rpy80Pg4myxWzinka7U+Ak 9in01d7nEUn5liagyHxwxETZzhzvt5gVifRXI= Received: by 10.220.149.10 with SMTP id r10mr4108987vcv.38.1324470092179; Wed, 21 Dec 2011 04:21:32 -0800 (PST) Received: from [79.10.95.230] (host230-95-dynamic.10-79-r.retail.telecomitalia.it. [79.10.95.230]) by mx.google.com with ESMTPS id hj10sm4167227vdb.0.2011.12.21.04.21.29 (version=SSLv3 cipher=OTHER); Wed, 21 Dec 2011 04:21:30 -0800 (PST) Message-ID: <4EF1CF46.90200@gmail.com> Date: Wed, 21 Dec 2011 13:21:26 +0100 From: Stefano Lattarini User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.24) Gecko/20111114 Icedove/3.1.16 MIME-Version: 1.0 To: Paul Eggert Subject: Re: bug#9928: bug#10237: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> <201112111042.45708.stefano.lattarini@gmail.com> <4EF136AC.4090307@cs.ucla.edu> In-Reply-To: <4EF136AC.4090307@cs.ucla.edu> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -3.8 (---) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, Eric Blake , 10237@debbugs.gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.8 (---) Hi Paul, thanks for the respin. My comments and objections are inlined. On 12/21/2011 02:30 AM, Paul Eggert wrote: > On 12/11/11 01:42, Stefano Lattarini wrote: > >> I was asking for a test case that simulates the presence of a >> make implementation unable to grasp nested variable expansions > > Ah, OK, revised patch enclosed below. This patch should address > your other comments too. Thanks for the careful review. > > From 07edd4aa81af2a8fb982427705a2009c2b7eb0bf Mon Sep 17 00:00:00 2001 > From: Paul Eggert > Date: Tue, 20 Dec 2011 17:29:06 -0800 > Subject: [PATCH] automake: silent-rules no longer requires nested vars > This sounds a little misleading to me; i.e., it sounds like we have reimplemented the silent-rules feature to work completely and at its best even with make implementations not supporting nested variables, which is not true. What about this instead? silent-rules: provide fallback for makes without nested variables support > This fixes two problems reported for Automake (Bug#9928, Bug#10237) > and is in response to a bug report for building coreutils on HP > NonStop OS (Bug#10234). The problem is that HP NonStop 'make' > treats a line like "AM_V_CC = $(am__v_CC_$(V))" as one that > expands a macro with the funny name am__v_CC_$(V instead of the > desired name am__v_CC_1 or am__v_CC_0, and since the funny macro > is not defined the line is equivalent to "AM_V_CC = )"; this > inserts a stray ")" when $(AM_V_CC) is used, which eventually > causes 'make' to fail. > Very good explanation. > The basic idea is that instead of generating Makefile.in lines like > "AM_V_CC = $(am__v_CC_$(V))", we generate > "AM_V_CC = $(am__v_CC_@AM_V@)". We then AC_SUBST $(V) for @AM_V@ > in the usual case where `make' supports nested variables, > and substitute 1 (or 0) otherwise. Similarly for usages like > $(am__v_CC_$(AM_DEFAULT_VERBOSITY)). > > With this change, make implementations that doesn't grasp nested > variable expansions will still be able to run Makefiles generated > using the silent-rules option. They won't allow the user to > override the make verbosity at runtime through redefinition of > $(V) (as in "make V=0"); but this is still an improvement over not > being able to work at all. > And all this is good too. Thanks. > * NEWS: Document this. > * automake.in (define_verbose_var): When defining the variable, > use @AM_V@ rather than $(V), and use > @AM_AM_DEFAULT_VERBOSITY@ rather than $(AM_DEFAULT_VERBOSITY). > * doc/automake.texi (Automake silent-rules Option): Explain new system. > * m4/silent.m4 (AM_SILENT_RULES): Check whether `make' supports > nested variables, and substitute AM_V and AM_AM_DEFAULT_VERBOSITY > s/AM_AM_DEFAULT_VERBOSITY/AM_V_DEFAULT_VERBOSITY/ ? > accordingly. > * tests/silent-nested-vars.test: New file. > Micro-nit: I'd prefer s/file/test/ here (but this is not a requirement for an ACK!). > * tests/Makefile.am (TESTS): Add it. > * tests/Makefile.in: Regenerate. > Small nit: we don't mention changes to autogenerated-but-committed files in our ChangeLog entries and commit messages. > --- > ChangeLog | 40 +++++++++++++++ > NEWS | 7 +++ > automake.in | 9 ++- > doc/automake.texi | 22 +++++---- > m4/silent.m4 | 33 +++++++++++- > tests/Makefile.am | 1 + > tests/Makefile.in | 1 + > tests/silent-nested-vars.test | 111 +++++++++++++++++++++++++++++++++++++++++ > 8 files changed, 209 insertions(+), 15 deletions(-) > create mode 100755 tests/silent-nested-vars.test > > diff --git a/ChangeLog b/ChangeLog > index 49b6e8b..b2d6e11 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,43 @@ > +2011-12-11 Paul Eggert > + > [SNIP ChangeLog entry] [The same comments given above for the git commit message applies, obviously]. > diff --git a/NEWS b/NEWS > index 46803a7..58c90c9 100644 > --- a/NEWS > +++ b/NEWS > @@ -74,6 +74,13 @@ Bugs fixed in 1.11.0a: > not used, `make' output no longer contains spurious backslash-only > lines, thus once again matching what Automake did before 1.11. > > + - The `silent-rules' option now generates working makefiles even for > + the uncommon `make' implementations that do not support the > + nested-variables extension to POSIX 2008. For such `make' > + implementations, whether a build is silent is determined at > + configure time, and cannot be overridden at make time with `make > + V=0' or `make V=1'. > + Very clear, thanks. > - The AM_COND_IF macro also works if the shell expression for the conditional > is no longer valid for the condition. > > diff --git a/automake.in b/automake.in > index db7f3c6..ae2011c 100755 > --- a/automake.in > +++ b/automake.in > @@ -1161,9 +1161,12 @@ sub define_verbose_var ($$) > my $silent_var = $pvar . '_0'; > if (option 'silent-rules') > { > - # Using `$V' instead of `$(V)' breaks IRIX make. > - define_variable ($var, '$(' . $pvar . '_$(V))', INTERNAL); > - define_variable ($pvar . '_', '$(' . $pvar . '_$(AM_DEFAULT_VERBOSITY))', INTERNAL); > + # For typical `make's, `configure' replaces AM_V (inside @@) with $(V) > + # and AM_AM_DEFAULT_VERBOSITY (inside @@) with $(AM_DEFAULT_VERBOSITY). > AM_AM_DEFAULT_VERBOSITY ? More instances below, in this and other files. > + # For strict POSIX 2008 `make's, it replaces them with 0 or 1 instead. > + # See AM_SILENT_RULES in m4/silent.m4. > + define_variable ($var, '$(' . $pvar . '_@'.'AM_V'.'@)', INTERNAL); > + define_variable ($pvar . '_', '$(' . $pvar . '_@'.'AM_AM_DEFAULT_VERBOSITY'.'@)', INTERNAL); > Automake::Variable::define ($silent_var, VAR_AUTOMAKE, '', TRUE, $val, > '', INTERNAL, VAR_ASIS) > if (! vardef ($silent_var, TRUE)); > diff --git a/doc/automake.texi b/doc/automake.texi > index a5f857d..1a689b6 100644 > --- a/doc/automake.texi > +++ b/doc/automake.texi > @@ -10130,18 +10130,20 @@ For portability to different @command{make} implementations, package authors > are advised to not set the variable @code{V} inside the @file{Makefile.am} > file, to allow the user to override the value for subdirectories as well. > A > -The current implementation of this feature relies on a non-POSIX, but in > -practice rather widely supported @file{Makefile} construct of nested > -variable expansion @samp{$(@var{var1}$(V))}. Do not use the > -@option{silent-rules} option if your package needs to build with > -@command{make} implementations that do not support it. The > -@option{silent-rules} option turns off warnings about recursive variable > -expansion, which are in turn enabled by @option{-Wportability} > -(@pxref{Invoking Automake}). > +The current implementation of this feature normally uses nested > +variable expansion @samp{$(@var{var1}$(V))}, a @file{Makefile} feature > +that is not required by POSIX 2008 but is widely supported in > +practice. On the rare @command{make} implementations that do not > +support nested variable expansion, whether rules are silent is always > +determined at configure time, and cannot be overridden at make time. > +Future versions of POSIX are likely to require nested variable > +expansion, so this minor limitation should go away with time. > Good and clear explanation. > @vindex @code{AM_V_GEN} > @vindex @code{AM_V_at} > @vindex @code{AM_DEFAULT_VERBOSITY} > +@vindex @code{AM_V} > +@vindex @code{AM_AM_DEFAULT_VERBOSITY} > > To extend the silent mode to your own rules, you have two choices: > > @itemize @bullet > @@ -10157,8 +10159,8 @@ The following snippet shows how you would define your own equivalent of > @code{AM_V_GEN}: > > @example > -pkg_verbose = $(pkg_verbose_$(V)) > -pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_VERBOSITY)) > +pkg_verbose = $(pkg_verbose_@@AM_V@@) > +pkg_verbose_ = $(pkg_verbose_@@AM_AM_DEFAULT_VERBOSITY@@) > Do we have a test verifying that the previously documented usage: pkg_verbose = $(pkg_verbose_$(V)) pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_VERBOSITY)) still works with make implementations that support nested variable expansion, as it did before this change? More importantly, do we have a test verifying that the new documented usage: pkg_verbose = $(pkg_verbose_@AM_V@) pkg_verbose_ = $(pkg_verbose_@AM_AM_DEFAULT_VERBOSITY@) actually works as advised? > pkg_verbose_0 = @@echo PKG-GEN $@@; > > foo: foo.in > diff --git a/m4/silent.m4 b/m4/silent.m4 > index 6d2a1a2..1928feb 100644 > --- a/m4/silent.m4 > +++ b/m4/silent.m4 > @@ -1,11 +1,11 @@ > ## -*- Autoconf -*- > -# Copyright (C) 2009 Free Software Foundation, Inc. > +# Copyright (C) 2009, 2011 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, > # with or without modifications, as long as this notice is preserved. > > -# serial 1 > +# serial 2 > > # AM_SILENT_RULES([DEFAULT]) > # -------------------------- > @@ -20,6 +20,35 @@ yes) AM_DEFAULT_VERBOSITY=0;; > no) AM_DEFAULT_VERBOSITY=1;; > *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; > esac > +dnl > +dnl A few `make' implementations (e.g., NonStop OS and NextStep) > +dnl do not support nested variable expansions. > +dnl See automake bug#9928 and bug#10237. > +am_make=${MAKE-make} > +AC_CACHE_CHECK([whether $am_make supports nested variables], > + [am_cv_make_support_nested_variables], > + [if AS_ECHO([['TRUE=$(BAR$(V)) > +BAR0=false > +BAR1=true > +V=1 > +am__doit: > + @$(TRUE) > +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then > + am_cv_make_support_nested_variables=yes > +else > + am_cv_make_support_nested_variables=no > +fi]) > +if test $am_cv_make_support_nested_variables = yes; then > + AM_V='$(V)'dnl Using `$V' instead of `$(V)' breaks IRIX make. > Keep this comment on a separate line maybe? That would seem clearer to me: # Using `$V' instead of `$(V)' breaks IRIX make. AM_V='$(V)' > + AM_AM_DEFAULT_VERBOSITY='$(AM_DEFAULT_VERBOSITY)' > +else > + AM_V=$AM_DEFAULT_VERBOSITY > + AM_AM_DEFAULT_VERBOSITY=$AM_DEFAULT_VERBOSITY > +fi > +AC_SUBST([AM_V])dnl > +AM_SUBST_NOTMAKE([AM_V])dnl > +AC_SUBST([AM_AM_DEFAULT_VERBOSITY])dnl > +AM_SUBST_NOTMAKE([AM_AM_DEFAULT_VERBOSITY])dnl > AC_SUBST([AM_DEFAULT_VERBOSITY])dnl > AM_BACKSLASH='\' > AC_SUBST([AM_BACKSLASH])dnl > diff --git a/tests/Makefile.am b/tests/Makefile.am > index 831906b..920d994 100644 > --- a/tests/Makefile.am > +++ b/tests/Makefile.am > @@ -751,6 +751,7 @@ silent-many-gcc.test \ > silent-many-generic.test \ > silent-lex-gcc.test \ > silent-lex-generic.test \ > +silent-nested-vars.test \ > silent-yacc-gcc.test \ > silent-yacc-generic.test \ > silent-configsite.test \ > diff --git a/tests/Makefile.in b/tests/Makefile.in > index 3ad0146..470ed6c 100644 > --- a/tests/Makefile.in > +++ b/tests/Makefile.in > @@ -1035,6 +1035,7 @@ silent-many-gcc.test \ > silent-many-generic.test \ > silent-lex-gcc.test \ > silent-lex-generic.test \ > +silent-nested-vars.test \ > silent-yacc-gcc.test \ > silent-yacc-generic.test \ > silent-configsite.test \ > diff --git a/tests/silent-nested-vars.test b/tests/silent-nested-vars.test > new file mode 100755 > index 0000000..6716930 > --- /dev/null > +++ b/tests/silent-nested-vars.test > @@ -0,0 +1,111 @@ > +#!/bin/sh > +# Copyright (C) 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 2, 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 . > + > +# Check silent-rules mode, on 'make' implementations that do not > +# support nested variables. > Could you please add a reference to the relevant bug numbers here as well? Thanks. > + > +. ./defs || Exit 1 > + > +set -e > + > +mkdir sub > + > +cat >>configure.in <<'EOF' > +AM_SILENT_RULES > +AC_CONFIG_FILES([sub/Makefile]) > +AC_PROG_CC > +AM_PROG_CC_C_O > +AC_OUTPUT > +EOF > + > +cat > Makefile.am <<'EOF' > +# Need generic and non-generic rules. > +bin_PROGRAMS = foo bar > +bar_CFLAGS = $(AM_CFLAGS) > +SUBDIRS = sub > +EOF > + > +cat > sub/Makefile.am <<'EOF' > +AUTOMAKE_OPTIONS = subdir-objects > +# Need generic and non-generic rules. > +bin_PROGRAMS = baz bla > +bla_CFLAGS = $(AM_CFLAGS) > +EOF > + Maybe trying out also subdir-objects is an overkill in the context of this patch ... Oh well, than can be fixed by a later patch if the need arise, so let's not worry about it now. > +cat > foo.c <<'EOF' > +int main () > +{ > + return 0; > +} > +EOF > +cp foo.c bar.c > +cp foo.c sub/baz.c > +cp foo.c sub/bla.c > + > +cat >mymake <<'EOF' > +#! /bin/sh > +makerules= > + > +case $1 in > + -f) > + makefile=$2 > + case $2 in > + -) makerules=`cat` || exit ;; > + esac ;; > + *) > + for makefile in makefile Makefile; do > + test -f $makefile && break > + done ;; > +esac > + > +if printf '%s\n' "$makerules" | LC_ALL=C grep '\$([a-zA-Z0-9_]*\$' $makefile > This seems wrong, as grep will not consider its standard input when given a non-empty argument. Or am I missing something? > +then > + echo >&2 "mymake: $makefile contains nested variables" > + exit 1 > +fi > +exec $mymake_MAKE "$@" > What if we had "-f -" among the arguments? The stdin meant for make will result to be already consumed by the previous `cat`... > +EOF > +chmod a+x mymake > +mymake_MAKE=${MAKE-make} > +export mymake_MAKE > + I'd add a sanity check here to verify that the `mymake' script really rejects Makefiles using nested variables: cat > Makefile <<'END' a = $(b$(c)) all: touch bar END ./mymake && Exit 99 mv -f Makefile foo.mk ./mymake -f foo.mkr && Exit 99 cat foo.mk | ./mymake -f - && Exit 99 test -f bar && Exit 99 sed '/a =/d' foo.mk > Makefile ./mymake && test -f bar || Exit 99 rm -f foo.mk bar Makefile Ugly, I know, but similar internal checks have saved me from testsuite bugs and false negatives a few times already. > +$ACLOCAL > +$AUTOMAKE --add-missing > +$AUTOCONF > + > +./configure --enable-silent-rules MAKE=./mymake > You should also grep configure output for: checking whether ./mymake supports nested variables... no and maybe the generated Makefile for the definition: AM_V = 1 > +./mymake >stdout || { cat stdout; Exit 1; } > +cat stdout > +$EGREP ' (-c|-o)' stdout && Exit 1 > +grep 'mv ' stdout && Exit 1 > +grep 'CC .*foo\.' stdout > +grep 'CC .*bar\.' stdout > +grep 'CC .*baz\.' stdout > +grep 'CC .*bla\.' stdout > +grep 'CCLD .*foo' stdout > +grep 'CCLD .*bar' stdout > +grep 'CCLD .*baz' stdout > +grep 'CCLD .*bla' stdout > + > +./mymake clean > +./configure --disable-silent-rules MAKE=./mymake > You should also grep configure output for: checking whether ./mymake supports nested variables... no and maybe the generated Makefile for the definition: AM_V = 0 > +./mymake >stdout || { cat stdout; Exit 1; } > +cat stdout > +grep ' -c' stdout > +grep ' -o foo' stdout > +$EGREP '(CC|LD) ' stdout && Exit 1 > + > +: Thanks, Stefano From debbugs-submit-bounces@debbugs.gnu.org Thu Dec 22 16:58:46 2011 Received: (at 9928) by debbugs.gnu.org; 22 Dec 2011 21:58:46 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Rdqez-0004Op-Fd for submit@debbugs.gnu.org; Thu, 22 Dec 2011 16:58:46 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Rdqeu-0004Oa-Rk; Thu, 22 Dec 2011 16:58:43 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 147E4A60004; Thu, 22 Dec 2011 13:56:28 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id D13pMJiWwlsX; Thu, 22 Dec 2011 13:56:26 -0800 (PST) Received: from [192.168.1.10] (pool-71-189-109-235.lsanca.fios.verizon.net [71.189.109.235]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id E21F239E8006; Thu, 22 Dec 2011 13:56:25 -0800 (PST) Message-ID: <4EF3A786.7080507@cs.ucla.edu> Date: Thu, 22 Dec 2011 13:56:22 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20111124 Thunderbird/8.0 MIME-Version: 1.0 To: Stefano Lattarini Subject: Re: bug#9928: bug#10237: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> <201112111042.45708.stefano.lattarini@gmail.com> <4EF136AC.4090307@cs.ucla.edu> <4EF1CF46.90200@gmail.com> In-Reply-To: <4EF1CF46.90200@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.9 (--) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, Eric Blake , 10237@debbugs.gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.9 (--) On 12/21/11 04:21, Stefano Lattarini wrote: > Hi Paul, thanks for the respin. My comments and objections are inlined. Thanks, I have a patch updated with all those comments in mind. One followup: > AM_AM_DEFAULT_VERBOSITY ? I changed that to AM_DEFAULT_V, as that seems to fit into the naming convention better. >From 939ba315f5e3e5caea0513af20724c35ead86956 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Thu, 22 Dec 2011 13:48:54 -0800 Subject: [PATCH] silent-rules: fallback for makes without nested vars This fixes two problems reported for Automake (Bug#9928, Bug#10237) and is in response to a bug report for building coreutils on HP NonStop OS (Bug#10234). The problem is that HP NonStop 'make' treats a line like "AM_V_CC = $(am__v_CC_$(V))" as one that expands a macro with the funny name am__v_CC_$(V instead of the desired name am__v_CC_1 or am__v_CC_0, and since the funny macro is not defined the line is equivalent to "AM_V_CC = )"; this inserts a stray ")" when $(AM_V_CC) is used, which eventually causes 'make' to fail. The basic idea is that instead of generating Makefile.in lines like "AM_V_CC = $(am__v_CC_$(V))", we generate "AM_V_CC = $(am__v_CC_@AM_V@)". We then AC_SUBST $(V) for @AM_V@ in the usual case where `make' supports nested variables, and substitute 1 (or 0) otherwise. Similarly for usages like $(am__v_CC_$(AM_DEFAULT_VERBOSITY)). With this change, make implementations that doesn't grasp nested variable expansions will still be able to run Makefiles generated using the silent-rules option. They won't allow the user to override the make verbosity at runtime through redefinition of $(V) (as in "make V=0"); but this is still an improvement over not being able to work at all. * NEWS: Document this. * automake.in (define_verbose_var): When defining the variable, use @AM_V@ rather than $(V), and use @AM_DEFAULT_V@ rather than $(AM_DEFAULT_VERBOSITY). * doc/automake.texi (Automake silent-rules Option): Explain new system. * m4/silent.m4 (AM_SILENT_RULES): Check whether `make' supports nested variables, and substitute AM_V and AM_DEFAULT_V accordingly. * tests/silent-nested-vars.test: New test. * tests/Makefile.am (TESTS): Add it. --- ChangeLog | 39 ++++++++ NEWS | 7 ++ automake.in | 9 ++- doc/automake.texi | 22 +++-- m4/silent.m4 | 34 +++++++- tests/Makefile.am | 1 + tests/silent-nested-vars.test | 193 +++++++++++++++++++++++++++++++++++++++++ 7 files changed, 290 insertions(+), 15 deletions(-) create mode 100755 tests/silent-nested-vars.test diff --git a/ChangeLog b/ChangeLog index 26e4a2d..461dfac 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,42 @@ +2011-12-22 Paul Eggert + + silent-rules: fallback for makes without nested vars + + This fixes two problems reported for Automake (Bug#9928, Bug#10237) + and is in response to a bug report for building coreutils on HP + NonStop OS (Bug#10234). The problem is that HP NonStop 'make' + treats a line like "AM_V_CC = $(am__v_CC_$(V))" as one that + expands a macro with the funny name am__v_CC_$(V instead of the + desired name am__v_CC_1 or am__v_CC_0, and since the funny macro + is not defined the line is equivalent to "AM_V_CC = )"; this + inserts a stray ")" when $(AM_V_CC) is used, which eventually + causes 'make' to fail. + + The basic idea is that instead of generating Makefile.in lines like + "AM_V_CC = $(am__v_CC_$(V))", we generate + "AM_V_CC = $(am__v_CC_@AM_V@)". We then AC_SUBST $(V) for @AM_V@ + in the usual case where `make' supports nested variables, + and substitute 1 (or 0) otherwise. Similarly for usages like + $(am__v_CC_$(AM_DEFAULT_VERBOSITY)). + + With this change, make implementations that doesn't grasp nested + variable expansions will still be able to run Makefiles generated + using the silent-rules option. They won't allow the user to + override the make verbosity at runtime through redefinition of + $(V) (as in "make V=0"); but this is still an improvement over not + being able to work at all. + + * NEWS: Document this. + * automake.in (define_verbose_var): When defining the variable, + use @AM_V@ rather than $(V), and use @AM_DEFAULT_V@ rather than + $(AM_DEFAULT_VERBOSITY). + * doc/automake.texi (Automake silent-rules Option): Explain new system. + * m4/silent.m4 (AM_SILENT_RULES): Check whether `make' supports + nested variables, and substitute AM_V and AM_DEFAULT_V accordingly. + * tests/silent-nested-vars.test: New test. + * tests/Makefile.am (TESTS): Add it. + + 2011-12-22 Stefano Lattarini hacking: distribute it, and mention it in the ChangeLog diff --git a/NEWS b/NEWS index db448a9..80ed91e 100644 --- a/NEWS +++ b/NEWS @@ -84,6 +84,13 @@ Bugs fixed in 1.11.0a: not used, `make' output no longer contains spurious backslash-only lines, thus once again matching what Automake did before 1.11. + - The `silent-rules' option now generates working makefiles even for + the uncommon `make' implementations that do not support the + nested-variables extension to POSIX 2008. For such `make' + implementations, whether a build is silent is determined at + configure time, and cannot be overridden at make time with `make + V=0' or `make V=1'. + - The AM_COND_IF macro also works if the shell expression for the conditional is no longer valid for the condition. diff --git a/automake.in b/automake.in index 309eade..7efb7d5 100644 --- a/automake.in +++ b/automake.in @@ -1161,9 +1161,12 @@ sub define_verbose_var ($$) my $silent_var = $pvar . '_0'; if (option 'silent-rules') { - # Using `$V' instead of `$(V)' breaks IRIX make. - define_variable ($var, '$(' . $pvar . '_$(V))', INTERNAL); - define_variable ($pvar . '_', '$(' . $pvar . '_$(AM_DEFAULT_VERBOSITY))', INTERNAL); + # For typical `make's, `configure' replaces AM_V (inside @@) with $(V) + # and AM_DEFAULT_V (inside @@) with $(AM_DEFAULT_VERBOSITY). + # For strict POSIX 2008 `make's, it replaces them with 0 or 1 instead. + # See AM_SILENT_RULES in m4/silent.m4. + define_variable ($var, '$(' . $pvar . '_@'.'AM_V'.'@)', INTERNAL); + define_variable ($pvar . '_', '$(' . $pvar . '_@'.'AM_DEFAULT_V'.'@)', INTERNAL); Automake::Variable::define ($silent_var, VAR_AUTOMAKE, '', TRUE, $val, '', INTERNAL, VAR_ASIS) if (! vardef ($silent_var, TRUE)); diff --git a/doc/automake.texi b/doc/automake.texi index ced1b72..39884af 100644 --- a/doc/automake.texi +++ b/doc/automake.texi @@ -10132,18 +10132,20 @@ For portability to different @command{make} implementations, package authors are advised to not set the variable @code{V} inside the @file{Makefile.am} file, to allow the user to override the value for subdirectories as well. -The current implementation of this feature relies on a non-POSIX, but in -practice rather widely supported @file{Makefile} construct of nested -variable expansion @samp{$(@var{var1}$(V))}. Do not use the -@option{silent-rules} option if your package needs to build with -@command{make} implementations that do not support it. The -@option{silent-rules} option turns off warnings about recursive variable -expansion, which are in turn enabled by @option{-Wportability} -(@pxref{Invoking Automake}). +The current implementation of this feature normally uses nested +variable expansion @samp{$(@var{var1}$(V))}, a @file{Makefile} feature +that is not required by POSIX 2008 but is widely supported in +practice. On the rare @command{make} implementations that do not +support nested variable expansion, whether rules are silent is always +determined at configure time, and cannot be overridden at make time. +Future versions of POSIX are likely to require nested variable +expansion, so this minor limitation should go away with time. @vindex @code{AM_V_GEN} @vindex @code{AM_V_at} @vindex @code{AM_DEFAULT_VERBOSITY} +@vindex @code{AM_V} +@vindex @code{AM_DEFAULT_V} To extend the silent mode to your own rules, you have two choices: @itemize @bullet @@ -10159,8 +10161,8 @@ The following snippet shows how you would define your own equivalent of @code{AM_V_GEN}: @example -pkg_verbose = $(pkg_verbose_$(V)) -pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_VERBOSITY)) +pkg_verbose = $(pkg_verbose_@@AM_V@@) +pkg_verbose_ = $(pkg_verbose_@@AM_DEFAULT_V@@) pkg_verbose_0 = @@echo PKG-GEN $@@; foo: foo.in diff --git a/m4/silent.m4 b/m4/silent.m4 index 6d2a1a2..8bd931b 100644 --- a/m4/silent.m4 +++ b/m4/silent.m4 @@ -1,11 +1,11 @@ ## -*- Autoconf -*- -# Copyright (C) 2009 Free Software Foundation, Inc. +# Copyright (C) 2009, 2011 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 +# serial 2 # AM_SILENT_RULES([DEFAULT]) # -------------------------- @@ -20,6 +20,36 @@ yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac +dnl +dnl A few `make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using `$V' instead of `$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl diff --git a/tests/Makefile.am b/tests/Makefile.am index 5ac0e48..c1c0c83 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -759,6 +759,7 @@ silent-many-gcc.test \ silent-many-generic.test \ silent-lex-gcc.test \ silent-lex-generic.test \ +silent-nested-vars.test \ silent-yacc-gcc.test \ silent-yacc-generic.test \ silent-configsite.test \ diff --git a/tests/silent-nested-vars.test b/tests/silent-nested-vars.test new file mode 100755 index 0000000..4b0fa3c --- /dev/null +++ b/tests/silent-nested-vars.test @@ -0,0 +1,193 @@ +#!/bin/sh +# Copyright (C) 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 2, 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 . + +# Check silent-rules mode, on 'make' implementations that do not +# support nested variables (Bug#9928, Bug#10237). + +. ./defs || Exit 1 + +set -e + +mkdir sub + +cat >>configure.in <<'EOF' +AM_SILENT_RULES +AM_CONDITIONAL([HAVE_NESTED_VARIABLES], + [expr "x$AM_V" : '.*\$' >/dev/null]) +AC_CONFIG_FILES([sub/Makefile]) +AC_PROG_CC +AM_PROG_CC_C_O +AC_OUTPUT +EOF + +cat > Makefile.am <<'EOF' +# Need generic and non-generic rules. +bin_PROGRAMS = foo bar +bar_CFLAGS = $(AM_CFLAGS) +SUBDIRS = sub + +# Check that AM_V and AM_DEFAULT_V work as advertised. +pkg_verbose = $(pkg_verbose_@AM_V@) +pkg_verbose_ = $(pkg_verbose_@AM_DEFAULT_V@) +pkg_verbose_0 = @echo PKG-GEN $@; + +bin_SCRIPTS = oop +oop: + $(pkg_verbose)echo $@ >$@ + +mostlyclean-local: + rm -f oop + +if HAVE_NESTED_VARIABLES +# Check that the older form (documented in Automake 1.11) works. +older_pkg_verbose = $(older_pkg_verbose_$(V)) +older_pkg_verbose_ = $(older_pkg_verbose_$(AM_DEFAULT_VERBOSITY)) +older_pkg_verbose_0 = @echo OLDER-PKG-GEN $@; + +bin_SCRIPTS += older-oop +older-oop: + $(older_pkg_verbose)echo $@ >$@ +endif +EOF + +cat > sub/Makefile.am <<'EOF' +AUTOMAKE_OPTIONS = subdir-objects +# Need generic and non-generic rules. +bin_PROGRAMS = baz bla +bla_CFLAGS = $(AM_CFLAGS) +EOF + +cat > foo.c <<'EOF' +int main () +{ + return 0; +} +EOF +cp foo.c bar.c +cp foo.c sub/baz.c +cp foo.c sub/bla.c + +cat >mymake <<'EOF' +#! /bin/sh +makerules= +LC_ALL=C +export LC_ALL + +case $1 in + -f) + makefile=$2 + case $2 in + -) makerules=`cat` || exit ;; + esac ;; + *) + for makefile in makefile Makefile; do + test -f $makefile && break + done ;; +esac + +if + nested_var_pat='^[^#]*\$([a-zA-Z0-9_]*\$' + case $makefile in + -) printf '%s\n' "$makerules" | grep "$nested_var_pat";; + *) grep "$nested_var_pat" $makefile;; + esac +then + echo >&2 "mymake: $makefile contains nested variables" + exit 1 +fi + +case $makefile in + -) printf '%s\n' "$makerules" | $mymake_MAKE "$@";; + *) exec $mymake_MAKE "$@";; +esac +EOF +chmod a+x mymake +mymake_MAKE=${MAKE-make} +export mymake_MAKE + +# As a sanity check, verify that `mymake' rejects Makefiles that +# use nested variables. +cat > Makefile <<'END' +a = $(b$(c)) +all: + touch bar +END +./mymake && Exit 99 +mv -f Makefile foo.mk +./mymake -f foo.mk && Exit 99 +cat foo.mk | ./mymake -f - && Exit 99 +test -f bar && Exit 99 +sed '/a =/d' foo.mk > Makefile +./mymake && test -f bar || Exit 99 + +$ACLOCAL +$AUTOMAKE --add-missing +$AUTOCONF + +for make in ${MAKE-make} ./mymake; do + ./configure --enable-silent-rules MAKE=$make >enable.out 2>&1 || + { cat enable.out; Exit 1; } + cat enable.out + case $make in + ./mymake) + grep 'AM_V_CC = .*0' Makefile + grep 'checking whether ./mymake supports nested variables... no' \ + enable.out + ;; + esac + + $make >stdout || { cat stdout; Exit 1; } + cat stdout + $EGREP ' (-c|-o)' stdout && Exit 1 + grep 'mv ' stdout && Exit 1 + grep 'CC .*foo\.' stdout + grep 'CC .*bar\.' stdout + grep 'CC .*baz\.' stdout + grep 'CC .*bla\.' stdout + grep 'CCLD .*foo' stdout + grep 'CCLD .*bar' stdout + grep 'CCLD .*baz' stdout + grep 'CCLD .*bla' stdout + grep 'PKG-GEN .*oop' stdout + if test $am_cv_make_support_nested_variables = yes; then + grep 'OLDER-PKG-GEN .*older-oop' stdout + fi + $make clean + + ./configure --disable-silent-rules MAKE=$make >disable.out 2>&1 || + { cat disable.out; Exit 1; } + cat disable.out + case $make in + ./mymake) + grep 'AM_V_CC = .*1' Makefile + grep 'checking whether ./mymake supports nested variables... no' \ + disable.out + ;; + esac + + $make >stdout || { cat stdout; Exit 1; } + cat stdout + grep ' -c' stdout + grep ' -o foo' stdout + grep 'echo .*oop' stdout + if test $am_cv_make_support_nested_variables = yes; then + grep 'echo .*older-oop' stdout + fi + $EGREP '(CC|LD) ' stdout && Exit 1 + $make clean +done + +: -- 1.7.6.4 From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 23 03:53:18 2011 Received: (at 9928) by debbugs.gnu.org; 23 Dec 2011 08:53:18 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Re0sP-0002Df-RA for submit@debbugs.gnu.org; Fri, 23 Dec 2011 03:53:18 -0500 Received: from mail-ww0-f46.google.com ([74.125.82.46]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Re0sK-0002DQ-2v; Fri, 23 Dec 2011 03:53:15 -0500 Received: by wgbdq10 with SMTP id dq10so11542142wgb.15 for ; Fri, 23 Dec 2011 00:50:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:x-enigmail-version:content-type :content-transfer-encoding; bh=Mc0TnUem1PNVN5mJRyLHCnnbnPaw/nCcXLGJpaQzPQA=; b=HB2150P1DfSyeZXV0zQYT4Ab2Ic4NYyYABho5eyejc4jNETMMnRX/AvHbJtdRn3lMm 41cXzQG0QFtLf5iYMR5Cg0SJoYs2JGq7weUsR7a99B0eO4/TAyJto0UKtJIleFXus01v 7Aj1Bc929bE1RTdO1tUUczzSco8WX1FjhCiV4= Received: by 10.216.139.204 with SMTP id c54mr7839246wej.13.1324630255735; Fri, 23 Dec 2011 00:50:55 -0800 (PST) Received: from [87.5.99.28] (host28-99-dynamic.5-87-r.retail.telecomitalia.it. [87.5.99.28]) by mx.google.com with ESMTPS id dj9sm29582646wib.6.2011.12.23.00.50.54 (version=SSLv3 cipher=OTHER); Fri, 23 Dec 2011 00:50:54 -0800 (PST) Message-ID: <4EF440E6.8000204@gmail.com> Date: Fri, 23 Dec 2011 09:50:46 +0100 From: Stefano Lattarini User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.24) Gecko/20111114 Icedove/3.1.16 MIME-Version: 1.0 To: Paul Eggert Subject: Re: bug#9928: bug#10237: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> <201112111042.45708.stefano.lattarini@gmail.com> <4EF136AC.4090307@cs.ucla.edu> <4EF1CF46.90200@gmail.com> <4EF3A786.7080507@cs.ucla.edu> In-Reply-To: <4EF3A786.7080507@cs.ucla.edu> X-Enigmail-Version: 1.1.2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -4.1 (----) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, 10237@debbugs.gnu.org, automake-patches@gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.1 (----) [adding automake-patches -- which I should have done before] On 12/22/2011 10:56 PM, Paul Eggert wrote: > On 12/21/11 04:21, Stefano Lattarini wrote: >> Hi Paul, thanks for the respin. My comments and objections are inlined. > > Thanks, I have a patch updated with all those comments in mind. > One followup: > >> AM_AM_DEFAULT_VERBOSITY ? > > I changed that to AM_DEFAULT_V, as that seems to fit into the naming > convention better. > Thanks. A couple of typo reports and cosmetic nits that you might fix right away are inlined. Apart from that, I still have some further nits and suggestions for improvements, but I also think the patch is good enough already, and I don't want to force you to yet another respin. So here's the deal: could you apply the patch *not to maint nor to master*, but to a *new* branch (say `silent-fixes' or `silent-portability') based off of maint, and push that new branch to the public automake repo? We can then address the further nits in the next days by working on that branch, and then merge it back into maint once we're done (that will obviously happen before 1.11.3). > From 939ba315f5e3e5caea0513af20724c35ead86956 Mon Sep 17 00:00:00 2001 > From: Paul Eggert > Date: Thu, 22 Dec 2011 13:48:54 -0800 > Subject: [PATCH] silent-rules: fallback for makes without nested vars > > This fixes two problems reported for Automake (Bug#9928, Bug#10237) > and is in response to a bug report for building coreutils on HP > NonStop OS (Bug#10234). The problem is that HP NonStop 'make' > treats a line like "AM_V_CC = $(am__v_CC_$(V))" as one that > expands a macro with the funny name am__v_CC_$(V instead of the > desired name am__v_CC_1 or am__v_CC_0, and since the funny macro > is not defined the line is equivalent to "AM_V_CC = )"; this > inserts a stray ")" when $(AM_V_CC) is used, which eventually > causes 'make' to fail. > > The basic idea is that instead of generating Makefile.in lines like > "AM_V_CC = $(am__v_CC_$(V))", we generate > "AM_V_CC = $(am__v_CC_@AM_V@)". We then AC_SUBST $(V) for @AM_V@ > in the usual case where `make' supports nested variables, > and substitute 1 (or 0) otherwise. Similarly for usages like > $(am__v_CC_$(AM_DEFAULT_VERBOSITY)). > > With this change, make implementations that doesn't grasp nested > variable expansions will still be able to run Makefiles generated > using the silent-rules option. They won't allow the user to > override the make verbosity at runtime through redefinition of > $(V) (as in "make V=0"); but this is still an improvement over not > being able to work at all. > > * NEWS: Document this. > * automake.in (define_verbose_var): When defining the variable, > s/variable/variables/ > use @AM_V@ rather than $(V), and use @AM_DEFAULT_V@ rather than > $(AM_DEFAULT_VERBOSITY). > * doc/automake.texi (Automake silent-rules Option): Explain new system. > * m4/silent.m4 (AM_SILENT_RULES): Check whether `make' supports > nested variables, and substitute AM_V and AM_DEFAULT_V accordingly. > * tests/silent-nested-vars.test: New test. > * tests/Makefile.am (TESTS): Add it. > --- > ChangeLog | 39 ++++++++ > NEWS | 7 ++ > automake.in | 9 ++- > doc/automake.texi | 22 +++-- > m4/silent.m4 | 34 +++++++- > tests/Makefile.am | 1 + > tests/silent-nested-vars.test | 193 +++++++++++++++++++++++++++++++++++++++++ > 7 files changed, 290 insertions(+), 15 deletions(-) > create mode 100755 tests/silent-nested-vars.test > > diff --git a/ChangeLog b/ChangeLog > index 26e4a2d..461dfac 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,42 @@ > +2011-12-22 Paul Eggert > + > + silent-rules: fallback for makes without nested vars > + > + This fixes two problems reported for Automake (Bug#9928, Bug#10237) > + and is in response to a bug report for building coreutils on HP > + NonStop OS (Bug#10234). The problem is that HP NonStop 'make' > + treats a line like "AM_V_CC = $(am__v_CC_$(V))" as one that > + expands a macro with the funny name am__v_CC_$(V instead of the > + desired name am__v_CC_1 or am__v_CC_0, and since the funny macro > + is not defined the line is equivalent to "AM_V_CC = )"; this > + inserts a stray ")" when $(AM_V_CC) is used, which eventually > + causes 'make' to fail. > + > + The basic idea is that instead of generating Makefile.in lines like > + "AM_V_CC = $(am__v_CC_$(V))", we generate > + "AM_V_CC = $(am__v_CC_@AM_V@)". We then AC_SUBST $(V) for @AM_V@ > + in the usual case where `make' supports nested variables, > + and substitute 1 (or 0) otherwise. Similarly for usages like > + $(am__v_CC_$(AM_DEFAULT_VERBOSITY)). > + > + With this change, make implementations that doesn't grasp nested > + variable expansions will still be able to run Makefiles generated > + using the silent-rules option. They won't allow the user to > + override the make verbosity at runtime through redefinition of > + $(V) (as in "make V=0"); but this is still an improvement over not > + being able to work at all. > + > + * NEWS: Document this. > + * automake.in (define_verbose_var): When defining the variable, > s/variable/variables/ > + use @AM_V@ rather than $(V), and use @AM_DEFAULT_V@ rather than > + $(AM_DEFAULT_VERBOSITY). > + * doc/automake.texi (Automake silent-rules Option): Explain new system. > + * m4/silent.m4 (AM_SILENT_RULES): Check whether `make' supports > + nested variables, and substitute AM_V and AM_DEFAULT_V accordingly. > + * tests/silent-nested-vars.test: New test. > + * tests/Makefile.am (TESTS): Add it. > + > + > 2011-12-22 Stefano Lattarini > > hacking: distribute it, and mention it in the ChangeLog > diff --git a/NEWS b/NEWS > index db448a9..80ed91e 100644 > --- a/NEWS > +++ b/NEWS > @@ -84,6 +84,13 @@ Bugs fixed in 1.11.0a: > not used, `make' output no longer contains spurious backslash-only > lines, thus once again matching what Automake did before 1.11. > > + - The `silent-rules' option now generates working makefiles even for > + the uncommon `make' implementations that do not support the > + nested-variables extension to POSIX 2008. For such `make' > + implementations, whether a build is silent is determined at > + configure time, and cannot be overridden at make time with `make > + V=0' or `make V=1'. > + Better line wrapping for the last two lines? + configure time, and cannot be overridden at make time with + `make V=0' or `make V=1'. No more nits from now on; quoting rest of the patch for reference. > - The AM_COND_IF macro also works if the shell expression for the conditional > is no longer valid for the condition. > > diff --git a/automake.in b/automake.in > index 309eade..7efb7d5 100644 > --- a/automake.in > +++ b/automake.in > @@ -1161,9 +1161,12 @@ sub define_verbose_var ($$) > my $silent_var = $pvar . '_0'; > if (option 'silent-rules') > { > - # Using `$V' instead of `$(V)' breaks IRIX make. > - define_variable ($var, '$(' . $pvar . '_$(V))', INTERNAL); > - define_variable ($pvar . '_', '$(' . $pvar . '_$(AM_DEFAULT_VERBOSITY))', INTERNAL); > + # For typical `make's, `configure' replaces AM_V (inside @@) with $(V) > + # and AM_DEFAULT_V (inside @@) with $(AM_DEFAULT_VERBOSITY). > + # For strict POSIX 2008 `make's, it replaces them with 0 or 1 instead. > + # See AM_SILENT_RULES in m4/silent.m4. > + define_variable ($var, '$(' . $pvar . '_@'.'AM_V'.'@)', INTERNAL); > + define_variable ($pvar . '_', '$(' . $pvar . '_@'.'AM_DEFAULT_V'.'@)', INTERNAL); > Automake::Variable::define ($silent_var, VAR_AUTOMAKE, '', TRUE, $val, > '', INTERNAL, VAR_ASIS) > if (! vardef ($silent_var, TRUE)); > diff --git a/doc/automake.texi b/doc/automake.texi > index ced1b72..39884af 100644 > --- a/doc/automake.texi > +++ b/doc/automake.texi > @@ -10132,18 +10132,20 @@ For portability to different @command{make} implementations, package authors > are advised to not set the variable @code{V} inside the @file{Makefile.am} > file, to allow the user to override the value for subdirectories as well. > > -The current implementation of this feature relies on a non-POSIX, but in > -practice rather widely supported @file{Makefile} construct of nested > -variable expansion @samp{$(@var{var1}$(V))}. Do not use the > -@option{silent-rules} option if your package needs to build with > -@command{make} implementations that do not support it. The > -@option{silent-rules} option turns off warnings about recursive variable > -expansion, which are in turn enabled by @option{-Wportability} > -(@pxref{Invoking Automake}). > +The current implementation of this feature normally uses nested > +variable expansion @samp{$(@var{var1}$(V))}, a @file{Makefile} feature > +that is not required by POSIX 2008 but is widely supported in > +practice. On the rare @command{make} implementations that do not > +support nested variable expansion, whether rules are silent is always > +determined at configure time, and cannot be overridden at make time. > +Future versions of POSIX are likely to require nested variable > +expansion, so this minor limitation should go away with time. > > @vindex @code{AM_V_GEN} > @vindex @code{AM_V_at} > @vindex @code{AM_DEFAULT_VERBOSITY} > +@vindex @code{AM_V} > +@vindex @code{AM_DEFAULT_V} > To extend the silent mode to your own rules, you have two choices: > > @itemize @bullet > @@ -10159,8 +10161,8 @@ The following snippet shows how you would define your own equivalent of > @code{AM_V_GEN}: > > @example > -pkg_verbose = $(pkg_verbose_$(V)) > -pkg_verbose_ = $(pkg_verbose_$(AM_DEFAULT_VERBOSITY)) > +pkg_verbose = $(pkg_verbose_@@AM_V@@) > +pkg_verbose_ = $(pkg_verbose_@@AM_DEFAULT_V@@) > pkg_verbose_0 = @@echo PKG-GEN $@@; > > foo: foo.in > diff --git a/m4/silent.m4 b/m4/silent.m4 > index 6d2a1a2..8bd931b 100644 > --- a/m4/silent.m4 > +++ b/m4/silent.m4 > @@ -1,11 +1,11 @@ > ## -*- Autoconf -*- > -# Copyright (C) 2009 Free Software Foundation, Inc. > +# Copyright (C) 2009, 2011 Free Software Foundation, Inc. > # > # This file is free software; the Free Software Foundation > # gives unlimited permission to copy and/or distribute it, > # with or without modifications, as long as this notice is preserved. > > -# serial 1 > +# serial 2 > > # AM_SILENT_RULES([DEFAULT]) > # -------------------------- > @@ -20,6 +20,36 @@ yes) AM_DEFAULT_VERBOSITY=0;; > no) AM_DEFAULT_VERBOSITY=1;; > *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; > esac > +dnl > +dnl A few `make' implementations (e.g., NonStop OS and NextStep) > +dnl do not support nested variable expansions. > +dnl See automake bug#9928 and bug#10237. > +am_make=${MAKE-make} > +AC_CACHE_CHECK([whether $am_make supports nested variables], > + [am_cv_make_support_nested_variables], > + [if AS_ECHO([['TRUE=$(BAR$(V)) > +BAR0=false > +BAR1=true > +V=1 > +am__doit: > + @$(TRUE) > +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then > + am_cv_make_support_nested_variables=yes > +else > + am_cv_make_support_nested_variables=no > +fi]) > +if test $am_cv_make_support_nested_variables = yes; then > + dnl Using `$V' instead of `$(V)' breaks IRIX make. > + AM_V='$(V)' > + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' > +else > + AM_V=$AM_DEFAULT_VERBOSITY > + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY > +fi > +AC_SUBST([AM_V])dnl > +AM_SUBST_NOTMAKE([AM_V])dnl > +AC_SUBST([AM_DEFAULT_V])dnl > +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl > AC_SUBST([AM_DEFAULT_VERBOSITY])dnl > AM_BACKSLASH='\' > AC_SUBST([AM_BACKSLASH])dnl > diff --git a/tests/Makefile.am b/tests/Makefile.am > index 5ac0e48..c1c0c83 100644 > --- a/tests/Makefile.am > +++ b/tests/Makefile.am > @@ -759,6 +759,7 @@ silent-many-gcc.test \ > silent-many-generic.test \ > silent-lex-gcc.test \ > silent-lex-generic.test \ > +silent-nested-vars.test \ > silent-yacc-gcc.test \ > silent-yacc-generic.test \ > silent-configsite.test \ > diff --git a/tests/silent-nested-vars.test b/tests/silent-nested-vars.test > new file mode 100755 > index 0000000..4b0fa3c > --- /dev/null > +++ b/tests/silent-nested-vars.test > @@ -0,0 +1,193 @@ > +#!/bin/sh > +# Copyright (C) 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 2, 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 . > + > +# Check silent-rules mode, on 'make' implementations that do not > +# support nested variables (Bug#9928, Bug#10237). > + > +. ./defs || Exit 1 > + > +set -e > + > +mkdir sub > + > +cat >>configure.in <<'EOF' > +AM_SILENT_RULES > +AM_CONDITIONAL([HAVE_NESTED_VARIABLES], > + [expr "x$AM_V" : '.*\$' >/dev/null]) > +AC_CONFIG_FILES([sub/Makefile]) > +AC_PROG_CC > +AM_PROG_CC_C_O > +AC_OUTPUT > +EOF > + > +cat > Makefile.am <<'EOF' > +# Need generic and non-generic rules. > +bin_PROGRAMS = foo bar > +bar_CFLAGS = $(AM_CFLAGS) > +SUBDIRS = sub > + > +# Check that AM_V and AM_DEFAULT_V work as advertised. > +pkg_verbose = $(pkg_verbose_@AM_V@) > +pkg_verbose_ = $(pkg_verbose_@AM_DEFAULT_V@) > +pkg_verbose_0 = @echo PKG-GEN $@; > + > +bin_SCRIPTS = oop > +oop: > + $(pkg_verbose)echo $@ >$@ > + > +mostlyclean-local: > + rm -f oop > + > +if HAVE_NESTED_VARIABLES > +# Check that the older form (documented in Automake 1.11) works. > +older_pkg_verbose = $(older_pkg_verbose_$(V)) > +older_pkg_verbose_ = $(older_pkg_verbose_$(AM_DEFAULT_VERBOSITY)) > +older_pkg_verbose_0 = @echo OLDER-PKG-GEN $@; > + > +bin_SCRIPTS += older-oop > +older-oop: > + $(older_pkg_verbose)echo $@ >$@ > +endif > +EOF > + > +cat > sub/Makefile.am <<'EOF' > +AUTOMAKE_OPTIONS = subdir-objects > +# Need generic and non-generic rules. > +bin_PROGRAMS = baz bla > +bla_CFLAGS = $(AM_CFLAGS) > +EOF > + > +cat > foo.c <<'EOF' > +int main () > +{ > + return 0; > +} > +EOF > +cp foo.c bar.c > +cp foo.c sub/baz.c > +cp foo.c sub/bla.c > + > +cat >mymake <<'EOF' > +#! /bin/sh > +makerules= > +LC_ALL=C > +export LC_ALL > + > +case $1 in > + -f) > + makefile=$2 > + case $2 in > + -) makerules=`cat` || exit ;; > + esac ;; > + *) > + for makefile in makefile Makefile; do > + test -f $makefile && break > + done ;; > +esac > + > +if > + nested_var_pat='^[^#]*\$([a-zA-Z0-9_]*\$' > + case $makefile in > + -) printf '%s\n' "$makerules" | grep "$nested_var_pat";; > + *) grep "$nested_var_pat" $makefile;; > + esac > +then > + echo >&2 "mymake: $makefile contains nested variables" > + exit 1 > +fi > + > +case $makefile in > + -) printf '%s\n' "$makerules" | $mymake_MAKE "$@";; > + *) exec $mymake_MAKE "$@";; > +esac > +EOF > +chmod a+x mymake > +mymake_MAKE=${MAKE-make} > +export mymake_MAKE > + > +# As a sanity check, verify that `mymake' rejects Makefiles that > +# use nested variables. > +cat > Makefile <<'END' > +a = $(b$(c)) > +all: > + touch bar > +END > +./mymake && Exit 99 > +mv -f Makefile foo.mk > +./mymake -f foo.mk && Exit 99 > +cat foo.mk | ./mymake -f - && Exit 99 > +test -f bar && Exit 99 > +sed '/a =/d' foo.mk > Makefile > +./mymake && test -f bar || Exit 99 > + > +$ACLOCAL > +$AUTOMAKE --add-missing > +$AUTOCONF > + > +for make in ${MAKE-make} ./mymake; do > + ./configure --enable-silent-rules MAKE=$make >enable.out 2>&1 || > + { cat enable.out; Exit 1; } > + cat enable.out > + case $make in > + ./mymake) > + grep 'AM_V_CC = .*0' Makefile > + grep 'checking whether ./mymake supports nested variables... no' \ > + enable.out > + ;; > + esac > + > + $make >stdout || { cat stdout; Exit 1; } > + cat stdout > + $EGREP ' (-c|-o)' stdout && Exit 1 > + grep 'mv ' stdout && Exit 1 > + grep 'CC .*foo\.' stdout > + grep 'CC .*bar\.' stdout > + grep 'CC .*baz\.' stdout > + grep 'CC .*bla\.' stdout > + grep 'CCLD .*foo' stdout > + grep 'CCLD .*bar' stdout > + grep 'CCLD .*baz' stdout > + grep 'CCLD .*bla' stdout > + grep 'PKG-GEN .*oop' stdout > + if test $am_cv_make_support_nested_variables = yes; then > + grep 'OLDER-PKG-GEN .*older-oop' stdout > + fi > + $make clean > + > + ./configure --disable-silent-rules MAKE=$make >disable.out 2>&1 || > + { cat disable.out; Exit 1; } > + cat disable.out > + case $make in > + ./mymake) > + grep 'AM_V_CC = .*1' Makefile > + grep 'checking whether ./mymake supports nested variables... no' \ > + disable.out > + ;; > + esac > + > + $make >stdout || { cat stdout; Exit 1; } > + cat stdout > + grep ' -c' stdout > + grep ' -o foo' stdout > + grep 'echo .*oop' stdout > + if test $am_cv_make_support_nested_variables = yes; then > + grep 'echo .*older-oop' stdout > + fi > + $EGREP '(CC|LD) ' stdout && Exit 1 > + $make clean > +done > + > +: Thanks, Stefano From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 25 13:07:37 2011 Received: (at 9928) by debbugs.gnu.org; 25 Dec 2011 18:07:37 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ResTx-0000oY-DT for submit@debbugs.gnu.org; Sun, 25 Dec 2011 13:07:37 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ResTt-0000oK-FS; Sun, 25 Dec 2011 13:07:34 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 83572A60004; Sun, 25 Dec 2011 10:05:04 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id PGrDv9eGY2AP; Sun, 25 Dec 2011 10:05:03 -0800 (PST) Received: from [192.168.1.10] (pool-71-189-109-235.lsanca.fios.verizon.net [71.189.109.235]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 4AD4039E8007; Sun, 25 Dec 2011 10:05:03 -0800 (PST) Message-ID: <4EF765CB.70903@cs.ucla.edu> Date: Sun, 25 Dec 2011 10:04:59 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20111124 Thunderbird/8.0 MIME-Version: 1.0 To: Stefano Lattarini Subject: Re: bug#9928: bug#10237: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> <201112111042.45708.stefano.lattarini@gmail.com> <4EF136AC.4090307@cs.ucla.edu> <4EF1CF46.90200@gmail.com> <4EF3A786.7080507@cs.ucla.edu> <4EF440E6.8000204@gmail.com> In-Reply-To: <4EF440E6.8000204@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.9 (--) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, 10237@debbugs.gnu.org, automake-patches@gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.9 (--) On 12/23/11 00:50, Stefano Lattarini wrote: > could you apply the patch *not to maint nor to master*, but to a *new* > branch (say `silent-fixes' or `silent-portability') based off of maint, > and push that new branch to the public automake repo? OK, done, as 'silent-fixes', with your recent nit-fixes applied. Here's a URL for anyone else who wants to follow along: http://git.savannah.gnu.org/cgit/automake.git/log/?h=silent-fixes From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 26 12:45:25 2011 Received: (at 9928) by debbugs.gnu.org; 26 Dec 2011 17:45:25 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RfEc0-0002up-Hw for submit@debbugs.gnu.org; Mon, 26 Dec 2011 12:45:25 -0500 Received: from mail-ee0-f44.google.com ([74.125.83.44]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RfEbx-0002uZ-Pg; Mon, 26 Dec 2011 12:45:23 -0500 Received: by eekc14 with SMTP id c14so11594463eek.3 for ; Mon, 26 Dec 2011 09:42:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:date:from:mime-version:to:cc:subject:references :in-reply-to:content-type; bh=BLEmmqDaKZG7FqguNYq12kEUZ01FPTZFLLc58Yt9zxE=; b=NnEmy7MQS4kYiXNFq2nIRlPIeBY9UFBq4+a7rPD1koxdEuMd1ndrXQsq9av/IwbrW3 Mm+GtDO9Rzl0IVVvHja1l171lveX0cuTtZn3ip5R1c+zlIUK60k4dd4bLA6O8oon+77X 5wY1ZMpuXmNKJvNlXRbZaRbjuufLxhuuWlT8U= Received: by 10.213.108.203 with SMTP id g11mr2808656ebp.6.1324921365815; Mon, 26 Dec 2011 09:42:45 -0800 (PST) Received: from [87.2.103.80] (host80-103-dynamic.2-87-r.retail.telecomitalia.it. [87.2.103.80]) by mx.google.com with ESMTPS id z43sm94704866eef.7.2011.12.26.09.42.44 (version=SSLv3 cipher=OTHER); Mon, 26 Dec 2011 09:42:44 -0800 (PST) Message-ID: <4EF8B20B.8080007@gmail.com> Date: Mon, 26 Dec 2011 18:42:35 +0100 From: Stefano Lattarini MIME-Version: 1.0 To: Paul Eggert Subject: Re: bug#10237: bug#9928: bug#10237: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> <201112111042.45708.stefano.lattarini@gmail.com> <4EF136AC.4090307@cs.ucla.edu> <4EF1CF46.90200@gmail.com> <4EF3A786.7080507@cs.ucla.edu> <4EF440E6.8000204@gmail.com> <4EF765CB.70903@cs.ucla.edu> In-Reply-To: <4EF765CB.70903@cs.ucla.edu> Content-Type: multipart/mixed; boundary="------------030104060107040601010808" X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, 10237@debbugs.gnu.org, automake-patches@gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.0 (----) This is a multi-part message in MIME format. --------------030104060107040601010808 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit tags 10237 + patch tags 9928 + patch thanks On 12/25/2011 07:04 PM, Paul Eggert wrote: > On 12/23/11 00:50, Stefano Lattarini wrote: >> could you apply the patch *not to maint nor to master*, but to a *new* >> branch (say `silent-fixes' or `silent-portability') based off of maint, >> and push that new branch to the public automake repo? > > OK, done, as 'silent-fixes', with your recent nit-fixes applied. > > Here's a URL for anyone else who wants to follow along: > > http://git.savannah.gnu.org/cgit/automake.git/log/?h=silent-fixes > Thanks. And here is the follow-up tweaking for the test cases I had promised. I will push in a couple of days if there is no objection. Thanks, Stefano --------------030104060107040601010808 Content-Type: text/x-diff; name="0001-tests-tweak-tests-on-silent-rules-for-makes-without-.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0001-tests-tweak-tests-on-silent-rules-for-makes-without-.pa"; filename*1="tch" >From 7afbc96ccd8b5bde30ec0a41edbbebd919abfe0f Mon Sep 17 00:00:00 2001 Message-Id: <7afbc96ccd8b5bde30ec0a41edbbebd919abfe0f.1324920744.git.stefano.lattarini@gmail.com> From: Stefano Lattarini Date: Mon, 26 Dec 2011 18:23:24 +0100 Subject: [PATCH] tests: tweak tests on silent-rules for makes without nested vars * tests/silent-nested-vars.test: Define MAKE to `./mymake' in the environment, so that it will be automatically picked up by configure. Related tweaks and simplifications. Remove the checks verifying that silent rules are respected also when the 'subdir-objects' option set, the checks testing the old syntax for user-defined silent rules, and the tests using the default $MAKE programs: they are redundant w.r.t. other test cases. Related simplifications. Remove the temporary files used in a sanity check as soon as they are not needed anymore. Do not capture also the standard error of configure: we only want to grep its standard output. Consistently use `stdout' for the name of files where to save the standard output captured from make and configure, for consistency with other tests. Make grepping of configure output and of the generated Makefile stricter. Improve and tweak the `mymake' script a little. * tests/silent6.test: Make grepping of make stdout slightly stricter. Also try to force the use silent rules with `V=1' after having configured with silent rules disabled. --- ChangeLog | 25 ++++++++ tests/silent-nested-vars.test | 128 +++++++++++++--------------------------- tests/silent6.test | 14 +++- 3 files changed, 77 insertions(+), 90 deletions(-) diff --git a/ChangeLog b/ChangeLog index 7d6a44a..e299310 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,28 @@ +2011-12-26 Stefano Lattarini + + tests: tweak tests on silent-rules for makes without nested vars + * tests/silent-nested-vars.test: Define MAKE to `./mymake' in + the environment, so that it will be automatically picked up by + configure. Related tweaks and simplifications. + Remove the checks verifying that silent rules are respected also + when the 'subdir-objects' option set, the checks testing the + old syntax for user-defined silent rules, and the tests using + the default $MAKE programs: they are redundant w.r.t. other test + cases. Related simplifications. + Remove the temporary files used in a sanity check as soon as they + are not needed anymore. + Do not capture also the standard error of configure: we only want + to grep its standard output. + Consistently use `stdout' for the name of files where to save the + standard output captured from make and configure, for consistency + with other tests. + Make grepping of configure output and of the generated Makefile + stricter. + Improve and tweak the `mymake' script a little. + * tests/silent6.test: Make grepping of make stdout slightly + stricter. Also try to force the use silent rules with `V=1' + after having configured with silent rules disabled. + 2011-12-25 Paul Eggert silent-rules: fallback for makes without nested vars diff --git a/tests/silent-nested-vars.test b/tests/silent-nested-vars.test index 4b0fa3c..0024b5d 100755 --- a/tests/silent-nested-vars.test +++ b/tests/silent-nested-vars.test @@ -21,13 +21,8 @@ set -e -mkdir sub - cat >>configure.in <<'EOF' AM_SILENT_RULES -AM_CONDITIONAL([HAVE_NESTED_VARIABLES], - [expr "x$AM_V" : '.*\$' >/dev/null]) -AC_CONFIG_FILES([sub/Makefile]) AC_PROG_CC AM_PROG_CC_C_O AC_OUTPUT @@ -37,7 +32,6 @@ cat > Makefile.am <<'EOF' # Need generic and non-generic rules. bin_PROGRAMS = foo bar bar_CFLAGS = $(AM_CFLAGS) -SUBDIRS = sub # Check that AM_V and AM_DEFAULT_V work as advertised. pkg_verbose = $(pkg_verbose_@AM_V@) @@ -50,24 +44,6 @@ oop: mostlyclean-local: rm -f oop - -if HAVE_NESTED_VARIABLES -# Check that the older form (documented in Automake 1.11) works. -older_pkg_verbose = $(older_pkg_verbose_$(V)) -older_pkg_verbose_ = $(older_pkg_verbose_$(AM_DEFAULT_VERBOSITY)) -older_pkg_verbose_0 = @echo OLDER-PKG-GEN $@; - -bin_SCRIPTS += older-oop -older-oop: - $(older_pkg_verbose)echo $@ >$@ -endif -EOF - -cat > sub/Makefile.am <<'EOF' -AUTOMAKE_OPTIONS = subdir-objects -# Need generic and non-generic rules. -bin_PROGRAMS = baz bla -bla_CFLAGS = $(AM_CFLAGS) EOF cat > foo.c <<'EOF' @@ -77,14 +53,10 @@ int main () } EOF cp foo.c bar.c -cp foo.c sub/baz.c -cp foo.c sub/bla.c cat >mymake <<'EOF' #! /bin/sh makerules= -LC_ALL=C -export LC_ALL case $1 in -f) @@ -98,8 +70,8 @@ case $1 in done ;; esac +nested_var_pat='^[^#].*\$([^)]*\$' if - nested_var_pat='^[^#]*\$([a-zA-Z0-9_]*\$' case $makefile in -) printf '%s\n' "$makerules" | grep "$nested_var_pat";; *) grep "$nested_var_pat" $makefile;; @@ -116,7 +88,8 @@ esac EOF chmod a+x mymake mymake_MAKE=${MAKE-make} -export mymake_MAKE +MAKE=./mymake +export MAKE mymake_MAKE # As a sanity check, verify that `mymake' rejects Makefiles that # use nested variables. @@ -125,69 +98,52 @@ a = $(b$(c)) all: touch bar END -./mymake && Exit 99 +$MAKE && Exit 99 mv -f Makefile foo.mk -./mymake -f foo.mk && Exit 99 -cat foo.mk | ./mymake -f - && Exit 99 +$MAKE -f foo.mk && Exit 99 +cat foo.mk | $MAKE -f - && Exit 99 test -f bar && Exit 99 sed '/a =/d' foo.mk > Makefile -./mymake && test -f bar || Exit 99 +$MAKE && test -f bar || Exit 99 +rm -f bar Makefile foo.mk $ACLOCAL $AUTOMAKE --add-missing $AUTOCONF -for make in ${MAKE-make} ./mymake; do - ./configure --enable-silent-rules MAKE=$make >enable.out 2>&1 || - { cat enable.out; Exit 1; } - cat enable.out - case $make in - ./mymake) - grep 'AM_V_CC = .*0' Makefile - grep 'checking whether ./mymake supports nested variables... no' \ - enable.out - ;; - esac - - $make >stdout || { cat stdout; Exit 1; } - cat stdout - $EGREP ' (-c|-o)' stdout && Exit 1 - grep 'mv ' stdout && Exit 1 - grep 'CC .*foo\.' stdout - grep 'CC .*bar\.' stdout - grep 'CC .*baz\.' stdout - grep 'CC .*bla\.' stdout - grep 'CCLD .*foo' stdout - grep 'CCLD .*bar' stdout - grep 'CCLD .*baz' stdout - grep 'CCLD .*bla' stdout - grep 'PKG-GEN .*oop' stdout - if test $am_cv_make_support_nested_variables = yes; then - grep 'OLDER-PKG-GEN .*older-oop' stdout - fi - $make clean - - ./configure --disable-silent-rules MAKE=$make >disable.out 2>&1 || - { cat disable.out; Exit 1; } - cat disable.out - case $make in - ./mymake) - grep 'AM_V_CC = .*1' Makefile - grep 'checking whether ./mymake supports nested variables... no' \ - disable.out - ;; - esac - - $make >stdout || { cat stdout; Exit 1; } - cat stdout - grep ' -c' stdout - grep ' -o foo' stdout - grep 'echo .*oop' stdout - if test $am_cv_make_support_nested_variables = yes; then - grep 'echo .*older-oop' stdout - fi - $EGREP '(CC|LD) ' stdout && Exit 1 - $make clean -done +./configure --enable-silent-rules >stdout || { cat stdout; Exit 1; } +cat stdout +grep '^checking whether \./mymake supports nested variables\.\.\. no *$' \ + stdout +$EGREP 'CC|AM_V|GEN' Makefile # For debugging. +grep '^AM_V_CC = *\$(am__v_CC_0) *$' Makefile +grep '^AM_V_GEN = *\$(am__v_GEN_0) *$' Makefile +$MAKE >stdout || { cat stdout; Exit 1; } +cat stdout +$EGREP ' (-c|-o)' stdout && Exit 1 +grep 'mv ' stdout && Exit 1 +grep 'echo .*oop' stdout && Exit 1 +grep 'CC .*foo\.' stdout +grep 'CC .*bar\.' stdout +grep 'CCLD .*foo' stdout +grep 'CCLD .*bar' stdout +grep 'PKG-GEN .*oop' stdout +$MAKE distclean + +./configure --disable-silent-rules > stdout || { cat stdout; Exit 1; } +cat stdout +grep '^checking whether \./mymake supports nested variables\.\.\. no *$' \ + stdout +$EGREP 'CC|AM_V|GEN' Makefile # For debugging. +grep '^AM_V_CC = *\$(am__v_CC_1) *$' Makefile +grep '^AM_V_GEN = *\$(am__v_GEN_1) *$' Makefile + +$MAKE >stdout || { cat stdout; Exit 1; } +cat stdout +grep ' -c' stdout +grep ' -o foo' stdout +grep ' -o bar' stdout +grep 'echo .*>oop' stdout +$EGREP '(CC|LD) ' stdout && Exit 1 : diff --git a/tests/silent6.test b/tests/silent6.test index acd9cea..0e474af 100755 --- a/tests/silent6.test +++ b/tests/silent6.test @@ -1,5 +1,5 @@ #!/bin/sh -# Copyright (C) 2009, 2010 Free Software Foundation, Inc. +# Copyright (C) 2009, 2010, 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 @@ -47,14 +47,14 @@ $AUTOCONF ./configure --enable-silent-rules $MAKE >stdout || { cat stdout; Exit 1; } cat stdout -grep 'GEN foo' stdout +grep '^ *GEN foo *$' stdout grep 'cp ' stdout && Exit 1 $MAKE clean $MAKE V=1 >stdout || { cat stdout; Exit 1; } cat stdout grep 'GEN ' stdout && Exit 1 -grep 'cp ' stdout +grep 'cp \.*/foo\.in foo' stdout $MAKE distclean @@ -62,7 +62,13 @@ $MAKE distclean $MAKE >stdout || { cat stdout; Exit 1; } cat stdout grep 'GEN ' stdout && Exit 1 -grep 'cp ' stdout +grep 'cp \.*/foo\.in foo' stdout + +$MAKE clean +$MAKE V=0 >stdout || { cat stdout; Exit 1; } +cat stdout +grep '^ *GEN foo *$' stdout +grep 'cp ' stdout && Exit 1 $MAKE distclean -- 1.7.7.3 --------------030104060107040601010808-- From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 26 13:11:53 2011 Received: (at 9928) by debbugs.gnu.org; 26 Dec 2011 18:11:53 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RfF1d-0004GC-5Y for submit@debbugs.gnu.org; Mon, 26 Dec 2011 13:11:53 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RfF1a-0004Fz-OD; Mon, 26 Dec 2011 13:11:51 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 02A2AA60007; Mon, 26 Dec 2011 10:09:16 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id tGsmn70-NT8U; Mon, 26 Dec 2011 10:09:15 -0800 (PST) Received: from [192.168.1.10] (pool-71-189-109-235.lsanca.fios.verizon.net [71.189.109.235]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 8EA13A60004; Mon, 26 Dec 2011 10:09:15 -0800 (PST) Message-ID: <4EF8B84B.5020708@cs.ucla.edu> Date: Mon, 26 Dec 2011 10:09:15 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20111124 Thunderbird/8.0 MIME-Version: 1.0 To: Stefano Lattarini Subject: Re: bug#10237: bug#9928: bug#10237: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> <201112111042.45708.stefano.lattarini@gmail.com> <4EF136AC.4090307@cs.ucla.edu> <4EF1CF46.90200@gmail.com> <4EF3A786.7080507@cs.ucla.edu> <4EF440E6.8000204@gmail.com> <4EF765CB.70903@cs.ucla.edu> <4EF8B20B.8080007@gmail.com> In-Reply-To: <4EF8B20B.8080007@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.9 (--) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, 10237@debbugs.gnu.org, automake-patches@gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.9 (--) On 12/26/11 09:42, Stefano Lattarini wrote: > And here is the follow-up tweaking for the test cases I had > promised. I will push in a couple of days if there is no objection. Thanks, that looks good to me; please push it as soon as you like. From debbugs-submit-bounces@debbugs.gnu.org Mon Dec 26 16:38:09 2011 Received: (at 9928) by debbugs.gnu.org; 26 Dec 2011 21:38:09 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RfIFE-0004JB-UB for submit@debbugs.gnu.org; Mon, 26 Dec 2011 16:38:09 -0500 Received: from mail-ee0-f44.google.com ([74.125.83.44]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RfIFC-0004J0-LR; Mon, 26 Dec 2011 16:38:07 -0500 Received: by eekc14 with SMTP id c14so11736615eek.3 for ; Mon, 26 Dec 2011 13:35:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:date:from:mime-version:to:cc:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=T4JDpXHygy6N6/LjRFEtVtOOFUcLo9WJ0VTKg82H7xA=; b=Ry7RLyYa+vySxDvYKMmENkbBnCiulAKiT6AyAht4RmAkQOX9rzLK7HlmfT8Zgt6P2f hQtGOS2hjapy38oOW3TpWXxo7nXDGPKune7kbcC3k4AWPigZpPpSiVz1Y6ZVU1sPaLxl JKYis4RpqjKZD+c/BQ2hIMefEPu07r1o4WRuc= Received: by 10.213.35.65 with SMTP id o1mr5273265ebd.47.1324935331163; Mon, 26 Dec 2011 13:35:31 -0800 (PST) Received: from [87.2.103.80] (host80-103-dynamic.2-87-r.retail.telecomitalia.it. [87.2.103.80]) by mx.google.com with ESMTPS id 13sm97330410eeu.1.2011.12.26.13.35.29 (version=SSLv3 cipher=OTHER); Mon, 26 Dec 2011 13:35:30 -0800 (PST) Message-ID: <4EF8E89F.9080302@gmail.com> Date: Mon, 26 Dec 2011 22:35:27 +0100 From: Stefano Lattarini MIME-Version: 1.0 To: Paul Eggert Subject: Re: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> <201112111042.45708.stefano.lattarini@gmail.com> <4EF136AC.4090307@cs.ucla.edu> <4EF1CF46.90200@gmail.com> <4EF3A786.7080507@cs.ucla.edu> <4EF440E6.8000204@gmail.com> <4EF765CB.70903@cs.ucla.edu> <4EF8B20B.8080007@gmail.com> <4EF8B84B.5020708@cs.ucla.edu> In-Reply-To: <4EF8B84B.5020708@cs.ucla.edu> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, 10237@debbugs.gnu.org, automake-patches@gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.0 (----) On 12/26/2011 07:09 PM, Paul Eggert wrote: > On 12/26/11 09:42, Stefano Lattarini wrote: >> And here is the follow-up tweaking for the test cases I had >> promised. I will push in a couple of days if there is no objection. > > Thanks, that looks good to me; please push it as soon as you like. > Done. I plan to merge the 'silent-fixes' branch back into maint as soon as I (or someone else ;-) have done more extensive testsuite runs and/or on-field testing on non-Linux systems (*BSD and Solaris at least, hopefully also Cygwin or MinGW). If someone could also test the patches on a NonStop and/or NextStep system, that would be great. Thanks, Stefano From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 28 15:11:45 2011 Received: (at 9928) by debbugs.gnu.org; 28 Dec 2011 20:11:45 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Rfzqj-0007DU-GB for submit@debbugs.gnu.org; Wed, 28 Dec 2011 15:11:45 -0500 Received: from smtp.cs.ucla.edu ([131.179.128.62]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RfzqU-0007D0-Sd; Wed, 28 Dec 2011 15:11:32 -0500 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id C044339E800D; Wed, 28 Dec 2011 12:08:43 -0800 (PST) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ewe+ynS5BJfl; Wed, 28 Dec 2011 12:08:43 -0800 (PST) Received: from [192.168.1.10] (pool-71-189-109-235.lsanca.fios.verizon.net [71.189.109.235]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 581D739E8006; Wed, 28 Dec 2011 12:08:43 -0800 (PST) Message-ID: <4EFB774C.8080304@cs.ucla.edu> Date: Wed, 28 Dec 2011 12:08:44 -0800 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux i686; rv:8.0) Gecko/20111124 Thunderbird/8.0 MIME-Version: 1.0 To: Stefano Lattarini Subject: Re: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> <201112111042.45708.stefano.lattarini@gmail.com> <4EF136AC.4090307@cs.ucla.edu> <4EF1CF46.90200@gmail.com> <4EF3A786.7080507@cs.ucla.edu> <4EF440E6.8000204@gmail.com> <4EF765CB.70903@cs.ucla.edu> <4EF8B20B.8080007@gmail.com> <4EF8B84B.5020708@cs.ucla.edu> <4EF8E89F.9080302@gmail.com> In-Reply-To: <4EF8E89F.9080302@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -2.9 (--) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, 10237@debbugs.gnu.org, automake-patches@gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.9 (--) On 12/26/11 13:35, Stefano Lattarini wrote: > testing on non-Linux systems (*BSD and Solaris at least, hopefully also > Cygwin or MinGW). I tested it on Solaris 8 and that test worked fine. I used Autoconf 2.63, GNU m4 1.4.13, and the system-supplied 'make'. Some of the other tests failed, e.g., because I didn't have Fortran installed, but I didn't investigate them; it hardly seems worth the trouble for such an old system. From debbugs-submit-bounces@debbugs.gnu.org Wed Dec 28 15:22:16 2011 Received: (at 9928) by debbugs.gnu.org; 28 Dec 2011 20:22:16 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Rg00t-0007Sf-Et for submit@debbugs.gnu.org; Wed, 28 Dec 2011 15:22:16 -0500 Received: from mail-ee0-f44.google.com ([74.125.83.44]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Rg00r-0007SU-Gq; Wed, 28 Dec 2011 15:22:14 -0500 Received: by eekc14 with SMTP id c14so13284632eek.3 for ; Wed, 28 Dec 2011 12:19:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:date:from:mime-version:to:cc:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=JUKuOToHoQsmWqBZjLZaAm6CLwLdkkR6yg5SqzXa0Qo=; b=RpyQ66cw+K2tXQCIjLZlCVbNVm1moiNcd9+gBhbMMeDz27ePJdbRgHqHOhB2R2IIRM K+lV5iFeswshqZyixzyckFiSQjDr6zq1dmhkJMX/o6NIHcZA8l+J2Y/cB5FxJqxbhuL3 cHd6ltGpEDRk3zKfa+synAvLhFjau0UZ73f44= Received: by 10.213.25.219 with SMTP id a27mr2712845ebc.1.1325103566912; Wed, 28 Dec 2011 12:19:26 -0800 (PST) Received: from [87.2.102.244] (host244-102-dynamic.2-87-r.retail.telecomitalia.it. [87.2.102.244]) by mx.google.com with ESMTPS id q67sm62895393eea.8.2011.12.28.12.19.25 (version=SSLv3 cipher=OTHER); Wed, 28 Dec 2011 12:19:26 -0800 (PST) Message-ID: <4EFB79CB.9010900@gmail.com> Date: Wed, 28 Dec 2011 21:19:23 +0100 From: Stefano Lattarini MIME-Version: 1.0 To: Paul Eggert Subject: Re: bug#9928: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> <201112111042.45708.stefano.lattarini@gmail.com> <4EF136AC.4090307@cs.ucla.edu> <4EF1CF46.90200@gmail.com> <4EF3A786.7080507@cs.ucla.edu> <4EF440E6.8000204@gmail.com> <4EF765CB.70903@cs.ucla.edu> <4EF8B20B.8080007@gmail.com> <4EF8B84B.5020708@cs.ucla.edu> <4EF8E89F.9080302@gmail.com> <4EFB774C.8080304@cs.ucla.edu> In-Reply-To: <4EFB774C.8080304@cs.ucla.edu> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -3.9 (---) X-Debbugs-Envelope-To: 9928 Cc: 9928@debbugs.gnu.org, 10237@debbugs.gnu.org, automake-patches@gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.9 (---) Hi Paul. On 12/28/2011 09:08 PM, Paul Eggert wrote: > On 12/26/11 13:35, Stefano Lattarini wrote: >> testing on non-Linux systems (*BSD and Solaris at least, hopefully also >> Cygwin or MinGW). > > I tested it on Solaris 8 and that test worked fine. > I used Autoconf 2.63, GNU m4 1.4.13, and the system-supplied 'make'. > > Some of the other tests failed, e.g., because I didn't have > Fortran installed, but I didn't investigate them; it hardly > seems worth the trouble for such an old system. > > I did some testing on Debian unstable, Solaris 10, NetBSD 5.1 and Cygwin 1.5 (in part by running the relevant test cases from the automake testsuite, in part trying out the build system of GNU coreutils). Everything seems fine so far. I want to do some small improvements to the documentation, then I say we are ready to merge the 'silent-fixes' branch into maint. Regards, Stefano From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 30 07:53:06 2011 Received: (at 9928-done) by debbugs.gnu.org; 30 Dec 2011 12:53:06 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RgbxK-0003VG-9r for submit@debbugs.gnu.org; Fri, 30 Dec 2011 07:53:06 -0500 Received: from mail-wi0-f172.google.com ([209.85.212.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RgbxH-0003V5-NE; Fri, 30 Dec 2011 07:53:04 -0500 Received: by wibhj6 with SMTP id hj6so7509925wib.3 for ; Fri, 30 Dec 2011 04:50:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=message-id:date:from:mime-version:to:cc:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=GhqS/aAlgpqzzbYnjLCYqapgd3BmyQjcJ2uRXYDYxa4=; b=tXfJ4sW+pwhOMHDSMfZj+CkGHKUD76Palw5yqZoewvA+uEaDGkSgSTcm+BUn3KASWV KfoAqPM5BmmDKyS2b5CQeL6Z74xCUSOyLF99MUPB9tlRRak5tvQSHzEI6sRQns8doj3u 8NRs0xlnEt4SDx6jmxcyzb3FX8M2iui+XF3lI= Received: by 10.180.94.97 with SMTP id db1mr85955666wib.16.1325249407553; Fri, 30 Dec 2011 04:50:07 -0800 (PST) Received: from [87.2.95.175] (host175-95-dynamic.2-87-r.retail.telecomitalia.it. [87.2.95.175]) by mx.google.com with ESMTPS id em4sm39442838wbb.20.2011.12.30.04.50.06 (version=SSLv3 cipher=OTHER); Fri, 30 Dec 2011 04:50:06 -0800 (PST) Message-ID: <4EFDB37C.80106@gmail.com> Date: Fri, 30 Dec 2011 13:50:04 +0100 From: Stefano Lattarini MIME-Version: 1.0 To: Paul Eggert Subject: Re: bug#10237: bug#9928: AM_SILENT_RULES does not work with NonStop make References: <4EDE5624.6020209@cs.ucla.edu> <201112062002.32774.stefano.lattarini@gmail.com> <4EE3E3ED.1010506@cs.ucla.edu> <201112111042.45708.stefano.lattarini@gmail.com> <4EF136AC.4090307@cs.ucla.edu> <4EF1CF46.90200@gmail.com> <4EF3A786.7080507@cs.ucla.edu> <4EF440E6.8000204@gmail.com> <4EF765CB.70903@cs.ucla.edu> <4EF8B20B.8080007@gmail.com> <4EF8B84B.5020708@cs.ucla.edu> <4EF8E89F.9080302@gmail.com> <4EFB774C.8080304@cs.ucla.edu> <4EFB79CB.9010900@gmail.com> In-Reply-To: <4EFB79CB.9010900@gmail.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Score: -3.9 (---) X-Debbugs-Envelope-To: 9928-done Cc: 10237-done@debbugs.gnu.org, automake-patches@gnu.org, 9928-done@debbugs.gnu.org, skunk@iskunk.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.9 (---) On 12/28/2011 09:19 PM, Stefano Lattarini wrote: > > I did some testing on Debian unstable, Solaris 10, NetBSD 5.1 and Cygwin 1.5 (in > part by running the relevant test cases from the automake testsuite, in part > trying out the build system of GNU coreutils). Everything seems fine so far. > I want to do some small improvements to the documentation, then I say we are > ready to merge the 'silent-fixes' branch into maint. > I've just re-read Paul's changes to the manual, and on a second thought, I think they are definitely good enough as they are. I've thus merged the 'silent-fixes' branch into maint, and pushed. I'm thus closing the bugs #9928 and #10237. Thanks, Stefano From unknown Fri Jun 20 07:17:36 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sat, 28 Jan 2012 12:24:02 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator