Received: by 10.223.185.116 with SMTP id b49csp2267635wrg; Mon, 12 Feb 2018 07:06:33 -0800 (PST) X-Google-Smtp-Source: AH8x227juovlOhsE1fDZ/Gourqu3zWlHWmb2GSMHvQKZ+z+7YCnjNF+bVJ0LTjmvc8y99aQXgiYE X-Received: by 2002:a17:902:b604:: with SMTP id b4-v6mr11212227pls.32.1518447993019; Mon, 12 Feb 2018 07:06:33 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1518447993; cv=none; d=google.com; s=arc-20160816; b=H69FtO0Qm9/8jVE8tyfDlrMu5B9kKb0JvZTfkRBmCO6RcFAAbqHv0kIZALW28YB1vv cD6ocNxB7Lxkgg5RWLrbxomVrenlkiNljnHCOj7KX3AqLeEa2ymX0tF4A/8Rr+/uwFkT 5oeoNwEB6SqW+iO0t5N9/uMmIOL+bcs0tfFgxAED1AHi7cc7XG1ChDBMfqFZoNDPFOe4 KMvMBDxRl7dmnc7ANgFGRCs0/XeJtKBhVXrkAKD+mKx+HnMMN0qR3VsPcB+eZCS0KO4c 5zE+sIRqd3tg56/xDSwAmsRdpB1aclNZJKL8dombcrNfVdiLOGHkbsrohcorv46qbvmR l8Lw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=s3xq7BFrXe2TEO1oncj/DUtv3KryNUjVcFeVHTc1YsI=; b=Vkz8g2EbokCo/QNRR8rlI1WC/bNByZRKfEp22ivy9drche2xfZvL11W8zlYIgMQLM/ J+GUlZ3COYQH6GZnFMPSh5pp17DLrHoI4asYjQGAd6Wmfl2G3iIe7ht4OTb0aUgX4kfc JWx32oXMpUmm5uwo2mg2ceVe0TJZD8My7WAfffFvXhNyWTifAGx6mK+E8hIYTq7/jfLU gTE0/HodskknL74E40V0BADbwkHI4fCca3obgFw8FFdgt0AH3YlSWivu/qj3/nbMnzUP nDPYosK3sCReGh6Rf1Hf68r34xM8k4rLrRHC5iF0VK7YHq0y3dTt4XbaZeUR/Z5p98ai VWVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ABG0jc+R; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id s16-v6si518139plp.326.2018.02.12.07.06.09; Mon, 12 Feb 2018 07:06:33 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=ABG0jc+R; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754511AbeBLOxS (ORCPT + 99 others); Mon, 12 Feb 2018 09:53:18 -0500 Received: from mail-vk0-f54.google.com ([209.85.213.54]:38871 "EHLO mail-vk0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751385AbeBLOxP (ORCPT ); Mon, 12 Feb 2018 09:53:15 -0500 Received: by mail-vk0-f54.google.com with SMTP id z9so8916752vkd.5; Mon, 12 Feb 2018 06:53:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=s3xq7BFrXe2TEO1oncj/DUtv3KryNUjVcFeVHTc1YsI=; b=ABG0jc+R+z6L0wtX3yVgBQ+Z7vM6n1wTSUtDrr6XXAYQBoQIDOgcBH6hfiVpI7AUJ9 SFLSLv8awtwuCwIeYIWL2So6YHJl8FBZVxRy5lJvJhwdaVgWLRoQTZDD5gYM9CFjpPxk yIj7Yv6vbB6Ty7LBY5yZIwmfYafIaM+t3TkmG1LnzUf4qCDdesAl+hpLjIOGSaPHuxwE TVAMMOnBc5SUnfWvTSUzdGUAAM1tXz7U6FgbtTIKOSd8j8sKqvHyXTtYwMo+Ylv3o9Of Y8eWE2AQ4PGZZAMJEg3uh3r/wYTQEiE4caWasL3/5i9QxywArsHz+L0kMtE5pkS/DEFi N03g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=s3xq7BFrXe2TEO1oncj/DUtv3KryNUjVcFeVHTc1YsI=; b=SANCHxJZtWuDji2b/fsuJURozvznXw/9NS2LhjKEdo/sLz9WHasvOhWXATjEfZY6op fD6EXIxjQwpQbk/0WQyQsXoGn7Qm7RnmnsuZj2JGIe4R2pd2LN+Apsqb2bM1aokq91aV Z2d53DH4M70t3XPZBdSDncx5aRwWaXIzITHvlg7vi85mTA6VZzrflLKQZzdoC75e30SM Wm708vej0mwDZcTt//hUZVEHlrzIUmsY9zYQdeHohHaH+R1434O5Uvb1YfBuqxa7VSMa SKHT7lvOk/EafuMkmiOIl0ILEVwmAkttB1koA+wHQzyD464GAVbVV/EC9exr9hvTOXDL 1KdA== X-Gm-Message-State: APf1xPBSKvlEHLtrM1zsK/wIdnBOBuU4BL3DmQ/V9njFAGfLDlRaieYx YLz9QkqUagUOGSkXyw9BM8GXnziSbqyxudNgrxE= X-Received: by 10.31.50.69 with SMTP id y66mr11061772vky.1.1518447194499; Mon, 12 Feb 2018 06:53:14 -0800 (PST) MIME-Version: 1.0 Received: by 10.103.70.21 with HTTP; Mon, 12 Feb 2018 06:53:14 -0800 (PST) In-Reply-To: References: <20180210085519.737ckf4bcl57h4g2@huvuddator> <20180211103432.pf2ot6nd7nbhdhsy@huvuddator> <20180212125458.vb4ve3ieejvuvo65@huvuddator> From: Ulf Magnusson Date: Mon, 12 Feb 2018 15:53:14 +0100 Message-ID: Subject: Re: [RFC PATCH 4/7] kconfig: support new special property shell= To: Masahiro Yamada Cc: Kees Cook , Linus Torvalds , Linux Kbuild mailing list , Greg Kroah-Hartman , Andrew Morton , Nicolas Pitre , "Luis R . Rodriguez" , Randy Dunlap , Sam Ravnborg , Michal Marek , Martin Schwidefsky , Pavel Machek , linux-s390 , Jiri Kosina , Linux Kernel Mailing List , Tejun Heo , Ingo Molnar , "Van De Ven, Arjan" , Arnd Bergmann Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Feb 12, 2018 at 3:21 PM, Masahiro Yamada wrote: > 'syncconfig' in a more proper name Wonder if --update-config-files-for-build or something would be an even better name. Kinda tough to compress it into something that adheres to *nix terseness while making it somewhat clear what kind of stuff it deals with. :P Cheers, Ulf On Mon, Feb 12, 2018 at 3:21 PM, Masahiro Yamada wrote: > 2018-02-12 21:54 GMT+09:00 Ulf Magnusson : >> On Sun, Feb 11, 2018 at 09:42:09PM +0100, Ulf Magnusson wrote: >>> On Sun, Feb 11, 2018 at 9:29 PM, Ulf Magnusson wrote: >>> > On Sun, Feb 11, 2018 at 6:56 PM, Kees Cook wrote: >>> >> Another case I mentioned before that I just want to make sure we don't >>> >> reintroduce the problem of getting "stuck" with a bad .config file. >>> >> While adding _STRONG support, I discovered the two-phase Kconfig >>> >> resolution that happens during the build. If you selected _STRONG with >>> >> a strong-capable compiler, everything was fine. If you then tried to >>> >> build with an older compiler, you'd get stuck since _STRONG wasn't >>> >> support (as detected during the first Kconfig phase) so the >>> >> generated/autoconf.h would never get updated with the newly selected >>> >> _REGULAR). I moved the Makefile analysis of available stack-protector >>> >> options into the second phase (i.e. after all the Kconfig runs), and >>> >> that worked to both unstick such configs and provide a clear message >>> >> early in the build about what wasn't available. >>> >> >>> >> If all this detection is getting moved up into Kconfig, I'm worried >>> >> we'll end up in this state again. If the answer is "you have to delete >>> >> autoconf.h if you change compilers", then that's fine, but it sure >>> >> seems unfriendly. :) >>> > >>> > Did you mean include/config/auto.conf? That's the one that gets >>> > included by the Makefiles. >>> > >>> > If the feature detection is moved into Kconfig, you should only need >>> > to rerun the configuration (make menuconfig/oldconfig/olddefconfig) if >>> > you change the compiler. That will update .config while taking the new >>> > features into account, and then the second phase during 'make' will >>> > update include/config/auto.conf from .config. >>> > >>> > That second Kconfig phase generates include/generated/autoconf.h and >>> > include/config/. The include/config/ directory implements dependencies >>> > between source files and Kconfig symbols by turning the symbols into >>> > (empty) files. When building (during the "second phase"), Kconfig >>> > compares .config with include/config/auto.conf to see what changed, >>> > and signals the changes to 'make' by touch'ing the files corresponding >>> > to the changed symbols. The idea is to avoid having to do a full >>> > rebuild whenever the configuration is changed. >>> > >>> > Check out scripts/basic/fixdep.c as well if you want to understand how it works. >>> > >>> > Cheers, >>> > Ulf >>> >>> By the way: >>> >>> That second phase is also a "normal" Kconfig run in the sense that it >>> does all the usual dependency checking stuff. Even if .config doesn't >>> respect dependencies, include/config/auto.conf will. So I think you >>> might not even need to rerun the configuration (though .config will be >>> out-of-date until you do). >>> >>> Cheers, >>> Ulf >> >> Seems you'd have to rerun the configuration, because >> include/config/auto.conf is only regenerated if it's older than .config. >> >> Here's the bit in the root Makefile that does it (KCONFIG_CONFIG is >> .config). >> >> # If .config is newer than include/config/auto.conf, someone tinkered >> # with it and forgot to run make oldconfig. >> # if auto.conf.cmd is missing then we are probably in a cleaned tree so >> # we execute the config step to be sure to catch updated Kconfig files >> include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd >> $(Q)$(MAKE) -f $(srctree)/Makefile silentoldconfig >> >> silentoldconfig is a terrible name. What it actually does is run that >> "second phase" stuff. > > Right. This is a historical misnomer. > > My plan is, as already posted below, to rename 'silentoldconfig' to 'synconfig' > https://lkml.org/lkml/2018/1/17/1359 > > > >> Pretty sure that comment lies by the way. 'make oldconfig' doesn't >> update include/config/auto.conf. It's probably outdated. > > Good catch. > > >> >> I wonder if it would be simpler to just always run silentoldconfig when >> building. It's not that slow on my system: >> >> $ export ARCH=x86 SRCARCH=x86 KERNELVERSION=`make kernelversion` >> $ time scripts/kconfig/conf --silentoldconfig Kconfig >> >> real 0m0.167s >> user 0m0.162s >> sys 0m0.004s >> >> That'd both simplify the Makefiles, and make sure that the latest >> features are always used if you do feature testing in Kconfig. >> >> I don't know how strongly people feel about a few tenths of a second >> though. > > > No. NACK. > > silentoldconfig touches include/generated/autoconf.h > so, files that depend on it will be re-compiled, unnecessarily. > > > silentoldconfig ( 'syncconfig' in a more proper name) > should be run only when necessary. > > > > > -- > Best Regards > Masahiro Yamada