Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp996531yba; Thu, 4 Apr 2019 02:02:54 -0700 (PDT) X-Google-Smtp-Source: APXvYqy1XSWvk5XIQ9am2w1g8vN47r4z67OUEBOhdFqEWgQpdK9nIH/kAzcf/119iIXnZRT1Ce+U X-Received: by 2002:a62:5582:: with SMTP id j124mr4677256pfb.53.1554368574024; Thu, 04 Apr 2019 02:02:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554368574; cv=none; d=google.com; s=arc-20160816; b=QyHkoWa4EtKkEqfHR0+MXfzQq6332ud9PIKwx0/JzdCCTA6O6vZn6r/SMcxrIUAqmK jxY25/YtKAT1lUTcheYlN+Nqn/4e5jFZIiV1XA79XsRg7BGSFjDINsdS6sMcXJE40ht8 8XfX2Voc2Af3vsC37cmcBYI7SG8cbnaARW6AMAG1ZcGCG1VoSFGfdRBdJ0zKgs+jpn/J 7GcDBD3QM056NRCEHUfwxUzgSQg6+eT8MFcbo/vVwVY7yUoIKRrtEvOPmN2jK8ejmtXg rSaMowZ6TvHnIGzvOXiEILwgWeiYp3nLSutN/NffbkBpOizhfaMF2+QJI2/OX9Ipy8lX QM8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=hn/A9y7Z47pwkFRiwiOgV3Jn/gl/lFHbSspX8Lv4Tsg=; b=vxX9uSqfQDcUYjNR4FqT6tGR3eKJTJBTbMOj7qIgK431cM3fALqEgE2uhcHKaOEQg3 Ur0lkD8gAALW1c3dNb1HdPjSWbQhXRrFvWTim9KVEE1PixCNHICgBRqPjBjihx0T/xj/ WZ6kQJZKNxBvSq50hoQGuU7y1/KSCdKBS9HAn5IipTRWbjNwHhYwBvWxlm7Sjs7gtmdl DaAgRQTAAuFs9M9xDPcELg5NQiWHe6K51tdel9jGOj+WEQnFF2Uw4uzACy6Ved+qaPeT L7ATL0hTMtstDzoVKtGWLLmAmTJYRqDllB8JNSvhoWPaXIcmNIg2VjcLrHuA54e8byac aGsg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=Up+O2ZMM; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m2si15499796pgp.463.2019.04.04.02.02.39; Thu, 04 Apr 2019 02:02:54 -0700 (PDT) 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=@kernel.org header.s=default header.b=Up+O2ZMM; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731303AbfDDJCH (ORCPT + 99 others); Thu, 4 Apr 2019 05:02:07 -0400 Received: from mail.kernel.org ([198.145.29.99]:39384 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731543AbfDDJCF (ORCPT ); Thu, 4 Apr 2019 05:02:05 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 3250921741; Thu, 4 Apr 2019 09:02:03 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554368523; bh=Lb/09WLMkm8hXsn/XC1v8cxaeG4t1iNgIvHqeTG2oVk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Up+O2ZMMLgGIHE4cB8U3Dd0qmEbIO702NcOva1Xt7/6AxN0lCn8DYaIHnsTd9UbYz XuH+lbXrnLbatL6LiTysKSqXTwtT5MTOkRZU+d5oTQpE5V91pdue8n7B/QYHgcqzyo hc8DSGF7Nyf0UgdP7+3e+rC4ZISKY0ZyU5cOfy/Q= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Masahiro Yamada , Sasha Levin Subject: [PATCH 4.19 055/187] kbuild: invoke syncconfig if include/config/auto.conf.cmd is missing Date: Thu, 4 Apr 2019 10:46:32 +0200 Message-Id: <20190404084605.679987126@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190404084603.119654039@linuxfoundation.org> References: <20190404084603.119654039@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 9390dff66a52d1a60c6e517d8fa6cdbdffc83cb1 ] If include/config/auto.conf.cmd is lost for some reasons, it is not self-healing, so the top Makefile misses to run syncconfig. Move include/config/auto.conf.cmd to the target side. I used a pattern rule instead of a normal rule here although it is a bit gross. If the rule were written with a normal rule like this, include/config/auto.conf \ include/config/auto.conf.cmd \ include/config/tristate.conf: $(KCONFIG_CONFIG) $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig ... syncconfig would be executed per target. Using a pattern rule makes sure that syncconfig is executed just once because Make assumes the recipe will create all of the targets. Here is a quote from the GNU Make manual [1]: "Pattern rules may have more than one target. Unlike normal rules, this does not act as many different rules with the same prerequisites and recipe. If a pattern rule has multiple targets, make knows that the rule's recipe is responsible for making all of the targets. The recipe is executed only once to make all the targets. When searching for a pattern rule to match a target, the target patterns of a rule other than the one that matches the target in need of a rule are incidental: make worries only about giving a recipe and prerequisites to the file presently in question. However, when this file's recipe is run, the other targets are marked as having been updated themselves." [1]: https://www.gnu.org/software/make/manual/html_node/Pattern-Intro.html Signed-off-by: Masahiro Yamada Signed-off-by: Sasha Levin --- Makefile | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 8de5fab711d8..f1a5d7deaf5f 100644 --- a/Makefile +++ b/Makefile @@ -626,12 +626,15 @@ ifeq ($(may-sync-config),1) -include include/config/auto.conf.cmd # To avoid any implicit rule to kick in, define an empty command -$(KCONFIG_CONFIG) include/config/auto.conf.cmd: ; +$(KCONFIG_CONFIG): ; # The actual configuration files used during the build are stored in # include/generated/ and include/config/. Update them if .config is newer than # include/config/auto.conf (which mirrors .config). -include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd +# +# This exploits the 'multi-target pattern rule' trick. +# The syncconfig should be executed only once to make all the targets. +%/auto.conf %/auto.conf.cmd %/tristate.conf: $(KCONFIG_CONFIG) $(Q)$(MAKE) -f $(srctree)/Makefile syncconfig else # External modules and some install targets need include/generated/autoconf.h -- 2.19.1