From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 58977 invoked by alias); 17 Nov 2016 12:39:31 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 58961 invoked by uid 89); 17 Nov 2016 12:39:30 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-4.8 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy=Network, gmake, hostname, tweaking X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 17 Nov 2016 12:39:20 +0000 Received: from int-mx10.intmail.prod.int.phx2.redhat.com (int-mx10.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 750F513A5D; Thu, 17 Nov 2016 12:39:19 +0000 (UTC) Received: from [127.0.0.1] (ovpn03.gateway.prod.ext.phx2.redhat.com [10.5.9.3]) by int-mx10.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id uAHCdHE0027931; Thu, 17 Nov 2016 07:39:18 -0500 Subject: Re: [PATCH 1/4] Document new hard requirement on GNU make To: Simon Marchi , Eli Zaretskii References: <20161116160808.12830-1-simon.marchi@ericsson.com> <20161116160808.12830-2-simon.marchi@ericsson.com> <83oa1ffkwa.fsf@gnu.org> <814e16be74a92751d1a2e47ba88b6ad9@polymtl.ca> <83inrnfier.fsf@gnu.org> <9836fdc1e7775a7afdada97654d044ef@polymtl.ca> Cc: gdb-patches@sourceware.org From: Pedro Alves Message-ID: <98fd2002-3c4a-504d-2dab-e1590005b6e0@redhat.com> Date: Thu, 17 Nov 2016 12:39:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: Content-Type: multipart/mixed; boundary="------------AD59CD4036C4ED85C64914BF" X-SW-Source: 2016-11/txt/msg00475.txt.bz2 This is a multi-part message in MIME format. --------------AD59CD4036C4ED85C64914BF Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit Content-length: 2705 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 --------------AD59CD4036C4ED85C64914BF Content-Type: text/plain; charset=UTF-8; name="check-make-ver" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="check-make-ver" Content-length: 2064 #!/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 --------------AD59CD4036C4ED85C64914BF--