Message ID | 20161116160808.12830-2-simon.marchi@ericsson.com |
---|---|
State | New, archived |
Headers |
Received: (qmail 125909 invoked by alias); 16 Nov 2016 16:12:06 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: <gdb-patches.sourceware.org> List-Unsubscribe: <mailto:gdb-patches-unsubscribe-##L=##H@sourceware.org> List-Subscribe: <mailto:gdb-patches-subscribe@sourceware.org> List-Archive: <http://sourceware.org/ml/gdb-patches/> List-Post: <mailto:gdb-patches@sourceware.org> List-Help: <mailto:gdb-patches-help@sourceware.org>, <http://sourceware.org/ml/#faqs> Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 125892 invoked by uid 89); 16 Nov 2016 16:12:05 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL, BAYES_00, SPF_PASS autolearn=ham version=3.3.2 spammy=guarded, Hx-languages-length:1109 X-HELO: sessmg23.ericsson.net Received: from sessmg23.ericsson.net (HELO sessmg23.ericsson.net) (193.180.251.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 16 Nov 2016 16:11:55 +0000 Received: from ESESSHC015.ericsson.se (Unknown_Domain [153.88.183.63]) by (Symantec Mail Security) with SMTP id 09.C8.02551.9458C285; Wed, 16 Nov 2016 17:11:53 +0100 (CET) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (153.88.183.145) by oa.msg.ericsson.com (153.88.183.63) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 16 Nov 2016 17:08:28 +0100 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=simon.marchi@ericsson.com; Received: from elxcz23q12-y4.dyn.mo.ca.am.ericsson.se (192.75.88.130) by AMSPR07MB389.eurprd07.prod.outlook.com (10.242.22.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.734.2; Wed, 16 Nov 2016 16:08:26 +0000 From: Simon Marchi <simon.marchi@ericsson.com> To: <gdb-patches@sourceware.org> CC: Simon Marchi <simon.marchi@polymtl.ca> Subject: [PATCH 1/4] Document new hard requirement on GNU make Date: Wed, 16 Nov 2016 11:08:05 -0500 Message-ID: <20161116160808.12830-2-simon.marchi@ericsson.com> In-Reply-To: <20161116160808.12830-1-simon.marchi@ericsson.com> References: <20161116160808.12830-1-simon.marchi@ericsson.com> MIME-Version: 1.0 Content-Type: text/plain X-ClientProxiedBy: SN1PR02CA0035.namprd02.prod.outlook.com (10.165.224.173) To AMSPR07MB389.eurprd07.prod.outlook.com (10.242.22.11) X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB389; 2:EMjqh3u00oH0uPcY2z+KLJx75GLuYTt4OuxRGzOfzUNKMbUrwTlFlWP3pvyIeGPxL21QNSDHRvRBsQnZ3Gq7d3rZesIu/RfSA2yUmbSW9bG4tRX98svXPbylFtwiwNXVYi7owlce8N2vre0+lfcyX2/PnAFpKS1xJmorA1Fa1eA=; 3:ULzN+sZh9Vp6z63VYF14MQzhd9XoWnGlM40310iZzPhld94OsIKbRaTFOuw0KvqW9TLaPTydhzgg06/IHH6rbtCNlZrrQYJU1oq3ANDWnu1GbxfjOFuvTDZJZpl7QUfIRv4ChEoQN7YAo1miovIdLgcJuF+VX0x1KL6UU5gGoMc= X-MS-Office365-Filtering-Correlation-Id: 7dec6da9-e070-4ef4-6b61-08d40e3acd0f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:AMSPR07MB389; X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB389; 25:U0e7jXneP0QWWn3L1KnhvGIHOC1V3uA2snD6+sLrK6OvH+eMF0t1Haf7Bc6UlojDUCfet/X2u4ylQBkBdZhUVJp3gLGM4kW4AN+cvzfz2Dw9EKrMsuK2L36NKHSk0S1YKRdTyI6G3ba0iXYAX49Dg9f3PIKFRaf/v4qiibEsWrWZzf7OsVLEIR/k/9acWYbCE4tqegp1Z+l8NhobLHRo9BKgBIA0Oll68MhQ8y4K6/wqN+2OeM4jpkT7ShZlGH2wtJU7vdSs9T4ifwB5pfyUNjuTXPkfZgj9Neo6jMos/w3ZFedlIAXr45DUZsnkt5JXN64ZkAHmwYcTul7okC2Yeky89dGz/xu3LFE/QpCvf3RcvbSY99qIR5sNZQIlNNeXvHiHGW8WXuiL5Cb6f0Yek4cGLNMaoQLiJ+NYiSsFXblh2M5hcGYC9k2halE8ELe4LFtMgZqTpLgOjR4ES+5Vd9SyrpQ3Nhd9R0BIeYtN3j6xGVVu/SkOUXHqVPz8UUpbm33lQ8qVQczhUbZ7GFdADVUZlQWV8L+6Zcv6MnA0VdXNFqI7Oz+X0Hzh5G6ygmmK5qhfvYVs5QcGFxZcBESqCwaZHdwZ7GyXATXkESPpl6kLpt0RryMAJmeAQ4HQgky5ZK7kwsteOTyZnt9LMAuxatFcOZB57bspvJcj6bS/X8Jh0zgVuBMe12kqTihcpKbdxQ1CvJIylCu8gXyS+EFMSmTXF7E75sSc3yK+W6IUguJArU/sMXDvXorMSaE7+/Hgv0Ozo8kbxhxzm4RoSGuVye2A7ybgTpN3qQI/ak05IpnfIgau06668xzeWI4M/uk7p/jAfDVMHMiKHs3oER4ENElu294vrP6Ufr3FrYm/fJc= X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB389; 31:RFq90j4Xa3CO7UGTCEofvv6k75pykaDrJhVWLrlovvxyKirkDtJwdNwA9ulxHupOAzab0BNKtWkY4XFBqetMi233izeP8abrSPCGQuP2xF79waoewh8ncJ/O5eao+Mk4uT83U90qhAlH1lu96CxEAVVlU96HDPzrKnR3EEz5pf/lNbCCxFkw/IUi6kKuwgHPvrKi5vKyZdN5TgkwpCKjLvQw44cuu7CkHaUmDs8m1lS0dUS9lKXuYN84sc8BFw7WRPN4yGr8thSuRj1pM9SuSA==; 20:8ymasM4vwsKTSEubyxYgVzeYcANxbyOZoxxU4m2KKF2QQjBy994VAD+jLd3SBM4QTdRShxZoTO3wMHjdlclvHGu6icFNt1HSQxkTkfMCOHVzdzeWApJRuwkewKMqDBIEk8whg8T0fdgwW2V87injVD7j3ogxPeKVKu9skDqxi11LZU5+9tBYyTxAU0UEbgcxzU3d/TYpZW/wtXPpnRdHeggDU6uOrj2ZpzDRpWXjO7WfQ/cOwrNTWW/lW3pm+iZL2KGVGiSJ0cGHGSza4W9a0P58BgGMSSveMOJPUjs/mt0l/xMRrmHQJ3I1PiHayXzOkV/4Sz60kMJkKfs/vnJqK2ILuGvbfZCu4Y7AThyKdxe4QCjPvJd8J4KTJ4Lf5XuEX0Tdtk4g6d3cPpHJ/SI2vNCZbpDRGbrvwzmi5lvjAPRQEzLqxEUarXPXXPW2Er11cVSAxeZVzF1WyaJECQqBTX7llpaRcxGYFKjjk5T0rhGdzi00suBLfH7PTXBB7s8m X-Microsoft-Antispam-PRVS: <AMSPR07MB389BEAD771B8D002095454EEDBE0@AMSPR07MB389.eurprd07.prod.outlook.com> X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6060326)(6040281)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041223)(6061324); SRVR:AMSPR07MB389; BCL:0; PCL:0; RULEID:; SRVR:AMSPR07MB389; X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB389; 4:cicNnhffI2D+h8FRWmnqlBPT3l27rsNiqvcAGYPF66iDx1q4ZfgkdnHMjOBv5gMf1DRxs8t0LUQ7Nflj0ui+URAVjId3BYE30wCpVtn6Rc4CHo49DziN8acymMjae9+eddXhVXKIAzBkCQGW9VKHKk23hGN/7CwhvriuqosrMYBCyC23sOCoTktEsKsIg6qv/X6IPIdtQu2pDc2EIyUjnkD149xqL9d290I0FQVXsLVn+1gQ3sdAZI9dZ62/z73yj2MxVSMaWPvyC/NABa5RywBB8DH4cD19cNxSqWJz96FQRGKrBSvKWE1UjSDRwKwa4hooET3c59KQR6JxHZjcnfwTlvZXfz3r64Av2KUzp7Xf9AbTaGxoul6viTS0ofU1Si9Pr9DA+JjPv9H/dJQrQYyQdyi3un3pOQvJ2cyDChm61EvgveiSwmewCFq2WTpgbLcI4f3/caqmyL00hmPgxw== X-Forefront-PRVS: 01283822F8 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(189002)(199003)(54534003)(66066001)(81156014)(81166006)(50466002)(68736007)(2950100002)(5003940100001)(6666003)(8676002)(47776003)(189998001)(6916009)(5660300001)(4326007)(50226002)(105586002)(305945005)(50986999)(36756003)(106356001)(7846002)(92566002)(7736002)(76176999)(2351001)(48376002)(1076002)(42186005)(77096005)(101416001)(110136003)(6116002)(86362001)(3846002)(33646002)(2906002)(97736004); DIR:OUT; SFP:1101; SCL:1; SRVR:AMSPR07MB389; H:elxcz23q12-y4.dyn.mo.ca.am.ericsson.se; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: ericsson.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AMSPR07MB389; 23:Emtt/FITWQhzkvKAhBLaT+Y5OX6T7zGyxtCqQ977k6?= =?us-ascii?Q?7A4GlplFLklXmRR6/hv1yl2oshMrvAxO92oELI9PDJn1AD56YLKe5jilx6Jd?= =?us-ascii?Q?T3jM5p7T1JqFQbkidCHBPRMfO/sjocuhe3pS518gQwNdzTEbDaAVia5bLs7g?= =?us-ascii?Q?Pd9/OH3sNGAzp9l5f4uPQfgsXVF2VMCK6zZVTPTtocTjDNZYdvITSGpnxd/X?= =?us-ascii?Q?ErTSmFXw4b6aZdIXWT7KW9K5bILqdr6KHPumq9kY1rgNWvVt64tLtsCpzLZ0?= =?us-ascii?Q?kFL+qZ8NReDSkftl+I3PUmH0NtrXh6bCGxA1EkRTrDmCR8yRLfqywPLrLgb6?= =?us-ascii?Q?3t6VHdQlaPNP+p6pI6HKb1mo5J8KuiDDvjUjLSW7Yw1CwPZtVgvUXqZtWjQo?= =?us-ascii?Q?0PY591glpVyWA+j7xTdOwNYYzGncbSRe5IyQNgRUZQlXA2AA393zHxlZ1BfY?= =?us-ascii?Q?NnSmn38LNlzjKEPL3rGEIcK6TN/7b/0hUk9b/wgXofy+U6DCmR/Okz2qxJo0?= =?us-ascii?Q?CxQp808XTZOWrGm+bcWtualVerx3brOht+7AiWKkzepsp3WSQpPUaG3LP3fg?= =?us-ascii?Q?I3NBFXEPMl4e4N+gLxHfp9PJHbR8AW+7OCiy/S6ubhitNxgyiKeCe/Kt3qtC?= =?us-ascii?Q?IYi8jcuNQA9tKAMM7tT3T0/HMtD4zR1qBURKYiWe+Ea+LAlIij+9oCnHGwAI?= =?us-ascii?Q?aok9OilkrQwGSWcTILnf1lqzaDkP0jLCqL/BLWwGE6OndxXse4Qk93OZs04K?= =?us-ascii?Q?shaWIjT5zOm91q/Khh1HiYfhRwQEhtGNrT3OGiLNUOvjxGcQjQtodMQWhRis?= =?us-ascii?Q?elfib90jTY+MVnLVIAmVnS7ngTpZkBs0G76KEjEd5Gd6IH2Vv/jwEOWnq3A1?= =?us-ascii?Q?QIK0RZQnBmNih8ZNHotHqKjCi1PeIBcqgstMx0uK+RR2zPlRncNJycovLlcH?= =?us-ascii?Q?V5EfkrZ8ZpzODX8JGqSM/KOe58W8i8s33A03Io2jW7863R0Dk49OBgvcMS6U?= =?us-ascii?Q?1ZVbz+CA7tdWXTB1lWz2i+1ieyASh8gGUO4tmI7KF+Hw4nDj5J2/K+7bCBcP?= =?us-ascii?Q?Tw+j4Pcr4KRTwXXEIBAi0QE9k5?= X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB389; 6:yB3P7oVoUWFLTxOJ2UZqmxzPLA6iswOf3MZDgExwdkRgu9ocLt8h73a58qXUjQNdHLYczdp/LuOqxwqU/FGPMvZU4Aw0JF9Ypobwh/G6gTl+MhrxsSo7zWpn6nfya6/WClZMrYAtEQduAioOyASGhZ6rrKjRqtD/CnZ7jwQfNq+nQd9lMTFUoX3iPjxNuSa9EKusSMT+G0KCqRRBw7vGKf+wlRFXbfJSbWktvmx13F7oZHCTu+pOv2/i3wISsUeZGUMDw0qY0w+zwOeySWbYK7Cq4zkd+OAC+84SY/+xx+94X/ZIrjVokLz+95arvPL6hGv66+gmXHAiWzFu94+v2/A5Dk9+DKWXU6x1QLeC65U=; 5:aFVKq3hffecjXOAQsBMZH/eXerrznKUOOHY1CrKpAWVPKw740BURTI1yIirUZ/grUJzoBYpoFAA7jtI8X+OdGaa6hnvxnkL7vgf/ppLviAO3km2du5scWZS2hCEARzcvd1/Xx0PdD+MD1FqbZsYUCg==; 24:xQ3D2UTL+ABbFa4WZSS6FinFm5AJClR2TRqvmEORv7qjU6p+I6vDg4VR4xm62FZ/TLEHEdjD3PShRlzPSxKpicC4yzTzmLbyYt5aiXUY9vk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AMSPR07MB389; 7:22OjMnMLpdcDUdM2q0Q8KgAaH2Y6agMOJtYiBPojvLitbolIKWndh89DtrXnE32ijMg+32M/h7nsOQ9pnmH9RuJn6TgZ2Y6wiwNtMrJtm+1k8yhjQrJOYWZDqXD8/qJa/eRB3NJqRYKUYKm5kBsFkTL2JFIHA48bKUoFbPFVWeVADAgTOPfmfzTS0gpJY0vJamGI4X/bfgZ5qFfeNfCl3IPzB3IQ011zR2VJ17kj7EpsB9fuksbCEOScmEESUjRZSnB2ZdpEH5brYKwDpdxhtqaFx0L9XrQnB77csnI0Ljtir9pPzTkO+cXWgqgpkwbK2hKdcUzDblwAloDSoKUndkekso9fsWXCarVHzdvQQGk= X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Nov 2016 16:08:26.9988 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR07MB389 X-OriginatorOrg: ericsson.com X-IsSubscribed: yes |
Commit Message
Simon Marchi
Nov. 16, 2016, 4:08 p.m. UTC
From: Simon Marchi <simon.marchi@polymtl.ca>
As discussed in [1], it would be benificial for the GDB project to start
requiring GNU make to build its software. It would allow using useful
GNU-specific constructs, such as pattern rules. It would also allow
removing the alternative code paths in the Makefiles (guarded by
GMAKE_TRUE/GMAKE_FALSE), simplifying the Makefile code.
[1] https://sourceware.org/ml/gdb-patches/2016-11/msg00331.html
gdb/ChangeLog:
* NEWS: Mention requirement of GNU make.
---
gdb/NEWS | 5 +++++
1 file changed, 5 insertions(+)
Comments
> From: Simon Marchi <simon.marchi@ericsson.com> > CC: Simon Marchi <simon.marchi@polymtl.ca> > Date: Wed, 16 Nov 2016 11:08:05 -0500 > > As discussed in [1], it would be benificial for the GDB project to start > requiring GNU make to build its software. It would allow using useful > GNU-specific constructs, such as pattern rules. It would also allow > removing the alternative code paths in the Makefiles (guarded by > GMAKE_TRUE/GMAKE_FALSE), simplifying the Makefile code. > > [1] https://sourceware.org/ml/gdb-patches/2016-11/msg00331.html > > gdb/ChangeLog: > > * NEWS: Mention requirement of GNU make. > --- > gdb/NEWS | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/gdb/NEWS b/gdb/NEWS > index a6b1282..d76ea81 100644 > --- a/gdb/NEWS > +++ b/gdb/NEWS > @@ -11,6 +11,11 @@ > compiler. The --disable-build-with-cxx configure option has been > removed. > > +* Building GDB and GDBserver now requires GNU make. > + > + It is no longer supported to build GDB or GDBserver with another > + implementation of the make program. > + OK. Should we decide which oldest version of GNU Make we are willing to support? IOW, which features do we need for the build? Thanks.
On 2016-11-16 11:29, Eli Zaretskii wrote: > OK. > > Should we decide which oldest version of GNU Make we are willing to > support? IOW, which features do we need for the build? > > Thanks. Probably, yes, but I'm not aware of the exact features/bugfix we have to rely on. From what I can see, pattern rules have been around since forever (I checked out a commit of make from 1993, and it was already in the doc). However, if there is a particular bug about pattern rules in some versions of make we want to avoid, I am not aware of it. While trying to make GDBserver use pattern rules as well, I was reading this: http://stackoverflow.com/questions/11455182/when-multiple-pattern-rules-match-a-target I wanted to know which rule would get chosen if you wanted to build foo-ipa.o from foo-ipa.c, and you had the two rules: %.o: %.c <generic compilation commands> %-ipa.o: %-ipa.c <ipa-specific compilation commands> With make >= 3.82, it would do the right thing (choose the second one), by choosing the rule with the shorter stem. Before that, it used the order of definition (the first that matches wins). So it would be nice for that reason to require >= 3.82, but it's also possible to work around if that's too recent.
> Date: Wed, 16 Nov 2016 12:05:02 -0500 > From: Simon Marchi <simon.marchi@polymtl.ca> > Cc: Simon Marchi <simon.marchi@ericsson.com>, gdb-patches@sourceware.org > > > Should we decide which oldest version of GNU Make we are willing to > > support? IOW, which features do we need for the build? > > > > Thanks. > > Probably, yes, but I'm not aware of the exact features/bugfix we have to > rely on. From what I can see, pattern rules have been around since > forever (I checked out a commit of make from 1993, and it was already in > the doc). However, if there is a particular bug about pattern rules in > some versions of make we want to avoid, I am not aware of it. If all we want to use is pattern rules, then there's no problem. But I envision that soon enough we'd want to use more, like target-specific variables, functions like $(eval) and $(file), variables like $(MAKE_HOST), etc. > %.o: %.c > <generic compilation commands> > > %-ipa.o: %-ipa.c > <ipa-specific compilation commands> > > With make >= 3.82, it would do the right thing (choose the second one), > by choosing the rule with the shorter stem. Before that, it used the > order of definition (the first that matches wins). So it would be nice > for that reason to require >= 3.82, but it's also possible to work > around if that's too recent. 3.82 shouldn't be a problem, I think.
On 2016-11-16 12:23, Eli Zaretskii wrote: >> With make >= 3.82, it would do the right thing (choose the second >> one), >> by choosing the rule with the shorter stem. Before that, it used the >> order of definition (the first that matches wins). So it would be >> nice >> for that reason to require >= 3.82, but it's also possible to work >> around if that's too recent. > > 3.82 shouldn't be a problem, I think. Oops, I said that without even checking the version I have on my system. Ubuntu 14.04, strangely, has make 3.81. Apparently that was because of a critical bug on Debian with 3.82, which stayed open for a long time, preventing the upgrade. Debian and its derivatives, including Ubuntu, were stuck with that for a long time. Refs: http://stackoverflow.com/questions/31912233/how-to-update-make-3-81-linux https://lwn.net/Articles/569920/ I don't think it's worth complicating the lives of those users just to get the benefit of the behaviour change I mentioned. So I'm back at having no idea what version we should require.
On 11/16/2016 10:04 PM, Simon Marchi wrote: > On 2016-11-16 12:23, Eli Zaretskii wrote: >>> With make >= 3.82, it would do the right thing (choose the second one), >>> by choosing the rule with the shorter stem. Before that, it used the >>> order of definition (the first that matches wins). So it would be nice >>> for that reason to require >= 3.82, but it's also possible to work >>> around if that's too recent. >> >> 3.82 shouldn't be a problem, I think. > > Oops, I said that without even checking the version I have on my system. > Ubuntu 14.04, strangely, has make 3.81. Apparently that was because of > a critical bug on Debian with 3.82, which stayed open for a long time, > preventing the upgrade. Debian and its derivatives, including Ubuntu, > were stuck with that for a long time. > > Refs: > http://stackoverflow.com/questions/31912233/how-to-update-make-3-81-linux > https://lwn.net/Articles/569920/ > > I don't think it's worth complicating the lives of those users just to > get the benefit of the behaviour change I mentioned. > > So I'm back at having no idea what version we should require. I think we should go with the same requirement as gcc (3.80), as seen on the top level Makefile.in: @if gcc ifeq (,$(.VARIABLES)) # The variable .VARIABLES, new with 3.80, is never empty. $(error GNU make version 3.80 or newer is required.) endif @endif gcc ... and listed on their prerequisites page: https://gcc.gnu.org/install/prerequisites.html (I'd be very nice to have a page like that for gdb. Currently we're not very organized wrt to prerequisite tracking.) Thanks, Pedro Alves
> Date: Wed, 16 Nov 2016 17:04:59 -0500 > From: Simon Marchi <simon.marchi@polymtl.ca> > Cc: gdb-patches@sourceware.org > > > 3.82 shouldn't be a problem, I think. > > Oops, I said that without even checking the version I have on my system. > Ubuntu 14.04, strangely, has make 3.81. Apparently that was because of > a critical bug on Debian with 3.82, which stayed open for a long time, > preventing the upgrade. Debian and its derivatives, including Ubuntu, > were stuck with that for a long time. > > Refs: > > http://stackoverflow.com/questions/31912233/how-to-update-make-3-81-linux > https://lwn.net/Articles/569920/ > > I don't think it's worth complicating the lives of those users just to > get the benefit of the behaviour change I mentioned. > > So I'm back at having no idea what version we should require. I guess that'd be 3.81, then.
Eli Zaretskii wrote on Thu, 17 Nov 2016: >> Date: Wed, 16 Nov 2016 17:04:59 -0500 >> From: Simon Marchi <simon.marchi@polymtl.ca> >> Cc: gdb-patches@sourceware.org >> >> So I'm back at having no idea what version we should require. > > I guess that'd be 3.81, then. (Mac) OS X/macOS also ships with 3.81. Although that one will presumably never be updated to anything newer due to the switch to GPLv3, so it may not make sense to limit yourself based on that. Jonas
On 11/16/2016 11:34 PM, Pedro Alves wrote: > On 11/16/2016 10:04 PM, Simon Marchi wrote: >> On 2016-11-16 12:23, Eli Zaretskii wrote: >>>> With make >= 3.82, it would do the right thing (choose the second one), >>>> by choosing the rule with the shorter stem. Before that, it used the >>>> order of definition (the first that matches wins). So it would be nice >>>> for that reason to require >= 3.82, but it's also possible to work >>>> around if that's too recent. >>> >>> 3.82 shouldn't be a problem, I think. >> >> Oops, I said that without even checking the version I have on my system. >> Ubuntu 14.04, strangely, has make 3.81. Apparently that was because of >> a critical bug on Debian with 3.82, which stayed open for a long time, >> preventing the upgrade. Debian and its derivatives, including Ubuntu, >> were stuck with that for a long time. >> >> Refs: >> http://stackoverflow.com/questions/31912233/how-to-update-make-3-81-linux >> https://lwn.net/Articles/569920/ >> >> I don't think it's worth complicating the lives of those users just to >> get the benefit of the behaviour change I mentioned. >> >> So I'm back at having no idea what version we should require. > > I think we should go with the same requirement as gcc (3.80), as > seen on the top level Makefile.in: > > @if gcc > ifeq (,$(.VARIABLES)) # The variable .VARIABLES, new with 3.80, is never > empty. > $(error GNU make version 3.80 or newer is required.) > endif > @endif gcc Actually, I take that back. I was just using "makes it easier to have a single top level check", but that's not really a good rationale. I wouldn't want to be stuck if gcc decides to move at a glacial pace. Probably a policy similar to the C++NN one makes more sense. I see now that 3.81 was released in 2006, so should not be a problem to require it. OOC, I wrote a quick&dirty script (attached) to check for GNU Make availability in the GCC compile farm. It tries all gcc*.fsffrance.org from 1 to 250. I don't have access to all machines setup, as some are multiplexed on a single IP with different ports, requiring tweaking the local ssh config. However, what I found was already interesting, I believe. Here's the result: Number of accessible hostnames: 66 Number of inaccessible hostnames: 184 Hostnames with GNU Make: 66 Hostnames without GNU Make: 0 Distribution: 56 GNU Make 3.81 2 GNU Make 3.82 7 GNU Make 4.0 1 GNU Make 4.1 Unique hosts with GNU Make: 20 Unique hosts without GNU Make: 0 Distribution: 10 GNU Make 3.81 2 GNU Make 3.82 7 GNU Make 4.0 1 GNU Make 4.1 I.e., I didn't find a single machine still stuck with GNU Make 3.80. Thanks, Pedro Alves #!/bin/bash rm -f make-ver.gcc*.fsffrance.org function kill_ssh() { ps | grep ssh | awk '{print $1}' | xargs kill } function ctrl_c() { kill_ssh } trap ctrl_c INT function do_ssh() { cmd="sh -c '[ -f /etc/os-release ] && cat /etc/os-release; printf \"hostname: \"; hostname; printf \"uname: \"; uname -a; ((make -v 2>&1 | grep -q GNU) && make -v) || ((gmake -v 2>&1 | grep -q GNU) && gmake -v)' 2>&1" # Retry 5 times, wait 5 seconds between attempts. for i in {1..5} do ssh -q -o UserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no -oBatchMode=yes gcc$h.fsffrance.org "$cmd" >make-ver.gcc$h.fsffrance.org 2>&1 && break || sleep 5; done } for h in `seq 1 250` do do_ssh & done echo "waiting 30s..." sleep 30 kill_ssh # Move inaccessible hosts out of the way. mkdir -p nohost find . -maxdepth 1 -size 0 | while read line; do mv $line nohost/; done grep -l "Network is unreachable" make-ver.gcc* | while read line; do mv $line nohost/; done grep -l "Connection timed out" make-ver.gcc* | while read line; do mv $line nohost/; done grep -l "Permission denied" make-ver.gcc* | while read line; do mv $line nohost/; done grep -l "Could not resolve hostname" make-ver.gcc* | while read line; do mv $line nohost/; done grep -l "Connection refused" make-ver.gcc* | while read line; do mv $line nohost/; done printf "Number of accessible hostnames: " ls make-ver.gcc* | wc -l printf "Number of inaccessible hostnames: " ls nohost/make-ver.gcc* | wc -l printf "Hostnames with GNU Make: " grep -l "GNU Make" make-ver.gcc* | wc -l printf "Hostnames without GNU Make: " grep -L "GNU Make" make-ver.gcc* | wc -l echo "Distribution: " grep -h "GNU Make" make-ver.gcc* | sort | uniq -c # Kill dups (found via uname in the ssh command) (fdupes -f . | grep -v '^$' | xargs rm -v)2>&1 >/dev/null printf "Unique hosts with GNU Make: " grep -l "GNU Make" make-ver.gcc* | wc -l printf "Unique hosts without GNU Make: " grep -L "GNU Make" make-ver.gcc* | wc -l echo "Distribution: " grep -h "GNU Make" make-ver.gcc* | sort | uniq -c
On 11/17/2016 10:05 AM, Jonas Maebe wrote: > > Eli Zaretskii wrote on Thu, 17 Nov 2016: > >>> Date: Wed, 16 Nov 2016 17:04:59 -0500 >>> From: Simon Marchi <simon.marchi@polymtl.ca> >>> Cc: gdb-patches@sourceware.org >>> >>> So I'm back at having no idea what version we should require. >> >> I guess that'd be 3.81, then. > > (Mac) OS X/macOS also ships with 3.81. Although that one will presumably > never be updated to anything newer due to the switch to GPLv3, so it may > not make sense to limit yourself based on that. I believe https://www.macports.org/ should make it easy to install whatever newer dependency than what ships built in with the OS. (I don't use MacOS, though.) According to: https://trac.macports.org/browser/trunk/dports/devel/gmake/Portfile they have 4.1 available. So I think macOS wouldn't be a problem if we wanted to require something newer. Thanks, Pedro Alves
On 2016-11-17 07:39, Pedro Alves wrote: > Actually, I take that back. I was just using "makes it easier > to have a single top level check", but that's not really a good > rationale. I wouldn't want to be stuck if gcc decides to > move at a glacial pace. > > Probably a policy similar to the C++NN one makes more sense. > > I see now that 3.81 was released in 2006, so should not be > a problem to require it. > > OOC, I wrote a quick&dirty script (attached) to check for GNU Make > availability in the GCC compile farm. It tries all gcc*.fsffrance.org > from 1 to 250. I don't have access to all machines setup, as some are > multiplexed on a single IP with different ports, requiring tweaking > the local ssh config. However, what I found was already interesting, > I believe. Here's the result: > > Number of accessible hostnames: 66 > Number of inaccessible hostnames: 184 > Hostnames with GNU Make: 66 > Hostnames without GNU Make: 0 > Distribution: > 56 GNU Make 3.81 > 2 GNU Make 3.82 > 7 GNU Make 4.0 > 1 GNU Make 4.1 > Unique hosts with GNU Make: 20 > Unique hosts without GNU Make: 0 > Distribution: > 10 GNU Make 3.81 > 2 GNU Make 3.82 > 7 GNU Make 4.0 > 1 GNU Make 4.1 > > I.e., I didn't find a single machine still stuck with GNU Make 3.80. > > Thanks, > Pedro Alves Thanks for doing this! That, gives us some data on which to base ourselves to require make 3.81. Eli, I would update the NEWS entry to: * Building GDB and GDBserver now requires GNU make >= 3.81. It is no longer supported to build GDB or GDBserver with another implementation of the make program or en earlier GNU make version. Does it look good to you? Where else should that dependency be documented?
> Date: Thu, 17 Nov 2016 08:38:47 -0500 > From: Simon Marchi <simon.marchi@polymtl.ca> > Cc: Eli Zaretskii <eliz@gnu.org>, gdb-patches@sourceware.org > > Eli, I would update the NEWS entry to: > > * Building GDB and GDBserver now requires GNU make >= 3.81. > > It is no longer supported to build GDB or GDBserver with another > implementation of the make program or en earlier GNU make version. > > Does it look good to you? Yes, thanks. > Where else should that dependency be documented? On the wiki, perhaps?
diff --git a/gdb/NEWS b/gdb/NEWS index a6b1282..d76ea81 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -11,6 +11,11 @@ compiler. The --disable-build-with-cxx configure option has been removed. +* Building GDB and GDBserver now requires GNU make. + + It is no longer supported to build GDB or GDBserver with another + implementation of the make program. + * Native debugging on MS-Windows supports command-line redirection Command-line arguments used for starting programs on MS-Windows can