From patchwork Wed Apr 20 09:54:12 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Romain Izard X-Patchwork-Id: 612599 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ozlabs.org (Postfix) with ESMTP id 3qqcfq14hXz9t3c for ; Wed, 20 Apr 2016 19:54:27 +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=d9OHogcM; dkim-atps=neutral Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id EC4C99125F; Wed, 20 Apr 2016 09:54:25 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3GEchORgn+3X; Wed, 20 Apr 2016 09:54:24 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by whitealder.osuosl.org (Postfix) with ESMTP id 06E768C580; Wed, 20 Apr 2016 09:54:24 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138]) by ash.osuosl.org (Postfix) with ESMTP id 240FA1C1EDD for ; Wed, 20 Apr 2016 09:54:23 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by whitealder.osuosl.org (Postfix) with ESMTP id C48BD8BE67 for ; Wed, 20 Apr 2016 09:54:22 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from whitealder.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hjISU3Zl8y-3 for ; Wed, 20 Apr 2016 09:54:22 +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 whitealder.osuosl.org (Postfix) with ESMTPS id DBE438B6B2 for ; Wed, 20 Apr 2016 09:54:21 +0000 (UTC) Received: by mail-wm0-f68.google.com with SMTP id e201so9190359wme.2 for ; Wed, 20 Apr 2016 02:54:21 -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=D6bu09zJErfTXcR9RXC3Nsz1N93yg3YWZc3TmWvO3tk=; b=d9OHogcMevS7SIV1tsAQD3881Js9wRO/JUWB8FJJYWznzKiUSk/aMblDUE9WNKEuyM hw3WHvslHy2j3CS3qXbWMJ04a2R1d/D6nD7Np/KtNyYBguD3IVfegrmTmDDP+zoj2U39 +BARM56qRVvgTO6xxOw8BrVPPmpQ0+EUQbhdGCmjPIFLuizibQRkdcyeOmKtQyaKX9LH 0v0fhArMEYfai68k/IFZam6jZPlC3EvsjpyE+FllFqtwLMVOt4n0k1NBTofEoFhMOC08 SSEOpNmjPYeQdwGZTMBiSLttdZyQXTh966aPtdQA/9RyBuTpUmckAOst52Tfhk2VvxAS 9grg== 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=D6bu09zJErfTXcR9RXC3Nsz1N93yg3YWZc3TmWvO3tk=; b=DFmdtT2ffM/Xq++1xSn5FxWic2Ui+z+1zsrPlsD20wAU75F7rTx/AWfS37oEwnTaXU 2zCug3waUl8KeHPlIw8AweMA9aT75/Ne9y4rfEzLgRf24dR9/Sm5l+DlUkvIMw7RnjmA wgq+cWDgFIlVxurSYw4KK9QYcgAnumqauUnVsbbPcqkv75ZCzRb0OPk+05pU7G8w70hM w3K8QnZjEx17P8Wv75XRNMKgVbbsFqRJ+aAxSo1PUn+9w3OxuL70P0sA8/cN5U6XXJrw lmqqZFqlP1kkxrMEm40e0x2PKIUrWOISRUPQkTYgpDTXfM2VE3BNUj9pMZkhs7K1z02s WkiQ== X-Gm-Message-State: AOPr4FXv+pW7BL/lcQXG7vc/KjRbqbpU0Gb28lr+NgRZu/YqJ3E6MX4ZhcO2usDTHDOx4A== X-Received: by 10.194.86.200 with SMTP id r8mr7466720wjz.158.1461146060463; Wed, 20 Apr 2016 02:54:20 -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 o73sm6380954wme.16.2016.04.20.02.54.19 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 20 Apr 2016 02:54:19 -0700 (PDT) From: Romain Izard To: buildroot@buildroot.org Date: Wed, 20 Apr 2016 11:54:12 +0200 Message-Id: <1461146052-13261-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 v6] 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: "Yann E. MORIN" --- 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 v6: Remove colon from matched rule names package/pkg-kconfig.mk | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/package/pkg-kconfig.mk b/package/pkg-kconfig.mk index 4033915..478f5bb 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