From owner-freebsd-current@FreeBSD.ORG Thu Dec 19 09:18:42 2013 Return-Path: Delivered-To: current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EDB9AC5F; Thu, 19 Dec 2013 09:18:42 +0000 (UTC) Received: from theravensnest.org (theraven.freebsd.your.org [216.14.102.27]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 9F42F1D2F; Thu, 19 Dec 2013 09:18:42 +0000 (UTC) Received: from [192.168.0.89] (cpc27-cmbg15-2-0-cust235.5-4.cable.virginm.net [86.27.188.236]) (authenticated bits=0) by theravensnest.org (8.14.5/8.14.5) with ESMTP id rBJ9IbZi025216 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=NO); Thu, 19 Dec 2013 09:18:39 GMT (envelope-from theraven@FreeBSD.org) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 7.0 \(1822\)) Subject: Re: RFC: less chatty system builds From: David Chisnall In-Reply-To: Date: Thu, 19 Dec 2013 09:18:31 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: <33B1B06B-72F7-4E8D-BB06-40CCC34006CF@FreeBSD.org> References: <20131216184626.GA17125@onelab2.iet.unipi.it> To: Dimitry Andric X-Mailer: Apple Mail (2.1822) Cc: Luigi Rizzo , "current@freebsd.org Current" X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Dec 2013 09:18:43 -0000 On 16 Dec 2013, at 21:35, Dimitry Andric wrote: > In any case, if anything like this is implemented, I would really = prefer > something like CMake does, e.g. give you a percentage counter that > provides some information about how 'far' the build is progressing. I haven't seen this for a while, because I now use ninja exclusively for = building any projects that use CMake. The output of Ninja is pretty = close to my ideal for a build system, and so I'd recommend that anyone = hacking on this look at it. It looks something like this while = building: $ ninja [1/22] Building CXX object = lib/Target/Mips/AsmParser/CMakeFiles/LLVMMipsAsmParser.dir/MipsAsmParser.c= pp.o The [1/22] part is a counter of the number of build steps done and = updates in place. The 'Building CXX object ...' part tells you what the = current rule is and what it's being applied to. This is only = approximate, as it usually does parallel builds, but it gives you some = idea of what's happening. If a command produces warning output but exits with success, then that = command's output is dumped to stdout (explicitly serialised by Ninja so = that it's never interleaved with another command's output). =20 If a command exits with a failure condition, then Ninja dumps the exact = command line that was used, along with all of the output, and then = stops. Another side benefit is that Ninja always uses absolute paths = for invoking the commands and for arguments, and so you can always just = re-run that single failing command. Oh, and when I do a build of LLVM/Clang on my laptop using Ninja, it = takes about 3-5 minutes, whereas when I do it with our build system it = takes about 15. When I do it on a 24-core server, it takes less than = two minutes with Ninja and with ours it takes about 15 (no speedup over = my laptop). I'd therefore suggest that there might be more pressing = things that need fixing with our antiquated build infrastructure than = the prettiness of the output... David