From patchwork Tue Apr 19 15:07:14 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Romain Izard X-Patchwork-Id: 612202 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ozlabs.org (Postfix) with ESMTP id 3qq7gj3tTvz9sCj for ; Wed, 20 Apr 2016 01:08:33 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=XCTboqrn; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 95D53313F5; Tue, 19 Apr 2016 15:08:32 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id W0AhM6mqdVPj; Tue, 19 Apr 2016 15:08:29 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id 03B54303CE; Tue, 19 Apr 2016 15:08:29 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ash.osuosl.org (Postfix) with ESMTP id B61F41C16AD for ; Tue, 19 Apr 2016 15:08:27 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id B26D530324 for ; Tue, 19 Apr 2016 15:08:27 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Y3v8LcqI4540 for ; Tue, 19 Apr 2016 15:08:26 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.6 Received: from mail-wm0-f68.google.com (mail-wm0-f68.google.com [74.125.82.68]) by silver.osuosl.org (Postfix) with ESMTPS id 8936730126 for ; Tue, 19 Apr 2016 15:08:26 +0000 (UTC) Received: by mail-wm0-f68.google.com with SMTP id n3so5997420wmn.1 for ; Tue, 19 Apr 2016 08:08:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=EmBfgDCjITgAuFolp2tPVlTE54VMRRwGEGGJg/NkuP0=; b=XCTboqrnR3Ut7ANxmB/p791Pvv+kQBPp5x9BtgXOsNg7mbRkdJGYDIwJUVc4upmVon sryxG+u1GvihUH1Y1WoWsntWbgzgahsxZrfA2PcPcagvpUBny1gekKWUrCynw4ruvSkx M3toluXS13y8/dms2tDfp6rkjWjlnDaVH8VPXDWiEk+3wkT+eAbK7y2gpTr9p70K4LFk q99MaLN2WFxpmm4gg2effGpWXvjdG9iuHfzu7hJcxzVL98fYJEk9ZesLICzVs8R4qbfG SLXnyZUPm/cA5SeieQqRKIYh0yPX4nJ5VJ8qVtMhWpm9Qic8LlP2vnFJte6F7WuKdq1U uszg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=EmBfgDCjITgAuFolp2tPVlTE54VMRRwGEGGJg/NkuP0=; b=hupXYZqCBZ0MON2/IU3dr2EhgoUvZQBm9rOCEnSTMCr04ZSxY6xwDo1SBqjIqAexW3 Z3mdiDWEMzhwdVKOsIAB7q6+LyA4SFk4XXw0KOd7mlBww8XWnwN0lOdhdMxP2zfFtOcN w3NTojDVsMtF5X/txVJokHA/rhFkGZ5LYwt5z4sGmyOdg8iU9U4L2my1n448weZiYbGa WVaksilsvzOWciAgVoLh7sUK/agNb5TUIDLoB20ZTjoa/ix6h4x1DvQhOJRZOhOHgJSy AoE5JI0ALPXPPn9jO/l1VNMMZYUC6ZHvx0diDInlShQ8eLtDO2EGNRRcr2M/25PnXK1Z Rjmg== X-Gm-Message-State: AOPr4FXxFNoG1f2+xt0wdkBMDTIpXtUJ4BAcx0XtRuznml32mJlknMKwucDUrZF34nkK4A== X-Received: by 10.194.115.196 with SMTP id jq4mr3649357wjb.101.1461078452865; Tue, 19 Apr 2016 08:07:32 -0700 (PDT) Received: from localhost.localdomain (ram94-11-88-187-113-157.fbx.proxad.net. [88.187.113.157]) by smtp.gmail.com with ESMTPSA id iv1sm709767wjb.34.2016.04.19.08.07.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 19 Apr 2016 08:07:32 -0700 (PDT) From: Romain Izard To: buildroot@buildroot.org Date: Tue, 19 Apr 2016 17:07:14 +0200 Message-Id: <1461078434-29991-1-git-send-email-romain.izard.pro@gmail.com> X-Mailer: git-send-email 2.5.0 Cc: Thomas Petazzoni , Romain Izard , "Yann E. MORIN" Subject: [Buildroot] [PATCH v5] core/pkg-kconfig: Use olddefconfig when available X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" Using 'yes "" | make oldconfig' to regenerate a .config file from an existing defconfig does not work reliably in all cases. Specifically, it does not work well with tristate choice entries. The correct way to do it is to use 'make olddefconfig', but this target is not supported in projects that use an old version of kconfig. As most projects do not use tristate entries, there is no need for them to upgrade. 'oldnoconfig' is an alias for 'olddefconfig', but it also is the only name for this target between Linux versions 2.6.36 and 3.6. Check which targets are supported by the current project, and use the appropriate method to regenerate the .config file. Signed-off-by: Romain Izard Reviewed-by: Arnout Vandecappelle (Essensium/Mind) --- Changelog: v1: New patch v2: Use oldnoconfig instead of olddefconfig Fix silent mode Change the pattern in both places where it is used Use a macro to avoid redundancy v3: Do not use $(call ...) Use the $(2)_KCONFIG_MAKE variable v4: No change v5: Detect available methods and use the most recent one package/pkg-kconfig.mk | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/package/pkg-kconfig.mk b/package/pkg-kconfig.mk index 4033915..e14b33f 100644 --- a/package/pkg-kconfig.mk +++ b/package/pkg-kconfig.mk @@ -60,18 +60,35 @@ $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES): | $(1)-patch $(2)_KCONFIG_MAKE = \ $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) $$($(2)_KCONFIG_OPTS) +$(2)_KCONFIG_RULES = \ + $$(shell $$($(2)_KCONFIG_MAKE) -pn config 2>/dev/null | \ + sed 's/^\([_0-9a-zA-Z]*config:\).*/\1/ p; d') + +# The correct way to regenerate a .config file is to use 'make olddefconfig'. +# For historical reasons, the target name is 'oldnoconfig' between Linux kernel +# versions 2.6.36 and 3.6, and remains as an alias in later versions. +# In older versions, and in some other projects that use kconfig, the target is +# not supported at all, and we use 'yes "" | make oldconfig' as a fallback +# only, as this can fail in complex cases. +define $(2)_REGEN_DOT_CONFIG + $$(if $$(filter olddefconfig:,$$($(2)_KCONFIG_RULES)), + $$(Q)$$($(2)_KCONFIG_MAKE) olddefconfig, + $$(if $$(filter oldnoconfig:,$$($(2)_KCONFIG_RULES)), + $$(Q)$$($(2)_KCONFIG_MAKE) oldnoconfig, + $$(Q)(yes "" | $$($(2)_KCONFIG_MAKE) oldconfig))) +endef + # The specified source configuration file and any additional configuration file # fragments are merged together to .config, after the package has been patched. # Since the file could be a defconfig file it needs to be expanded to a -# full .config first. We use 'make oldconfig' because this can be safely -# done even when the package does not support defconfigs. +# full .config first. $$($(2)_DIR)/.config: $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES) $$(Q)$$(if $$($(2)_KCONFIG_DEFCONFIG), \ $$($(2)_KCONFIG_MAKE) $$($(2)_KCONFIG_DEFCONFIG), \ cp $$($(2)_KCONFIG_FILE) $$(@)) $$(Q)support/kconfig/merge_config.sh -m -O $$(@D) \ $$(@) $$($(2)_KCONFIG_FRAGMENT_FILES) - $$(Q)yes "" | $$($(2)_KCONFIG_MAKE) oldconfig + $$($(2)_REGEN_DOT_CONFIG) # If _KCONFIG_FILE or _KCONFIG_FRAGMENT_FILES exists, this dependency is # already implied, but if we only have a _KCONFIG_DEFCONFIG we have to add @@ -82,7 +99,7 @@ $$($(2)_DIR)/.config: | $(1)-patch # The exact rules are specified by the package .mk file. define $(2)_FIXUP_DOT_CONFIG $$($(2)_KCONFIG_FIXUP_CMDS) - $$(Q)yes "" | $$($(2)_KCONFIG_MAKE) oldconfig + $$($(2)_REGEN_DOT_CONFIG) $$(Q)touch $$($(2)_DIR)/.stamp_kconfig_fixup_done endef