Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH] infra/pkg-kconfig: do not rely on package's .config as a timestamp
@ 2019-05-30 18:09 Yann E. MORIN
  2019-05-30 22:41 ` Peter Korsgaard
  2019-06-06 15:33 ` Peter Korsgaard
  0 siblings, 2 replies; 5+ messages in thread
From: Yann E. MORIN @ 2019-05-30 18:09 UTC (permalink / raw)
  To: buildroot

Since linux-4.19, the kernel's build system internally touches its
.config file.

However, we currently used that file as a timestamp to detect whether
our kconfig fixups were to be (re)applied or not, which in turn is used
to decide whether we should (re)build the package or not.

But with latest kernel versions, this timestamp heuristic is now broken,
and we always rebuild the kernel on subsequent builds.

We fix that by introducing a spearate timestamp file of our own, which
we know the kernel (or the kconfig-based packages, for that matters)
does not use.

Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Arnout Vandecappelle <arnout@mind.be>
---
 package/pkg-kconfig.mk | 21 ++++++++++++++-------
 1 file changed, 14 insertions(+), 7 deletions(-)

diff --git a/package/pkg-kconfig.mk b/package/pkg-kconfig.mk
index 60aae387ca..d62be0fd03 100644
--- a/package/pkg-kconfig.mk
+++ b/package/pkg-kconfig.mk
@@ -24,7 +24,7 @@ define kconfig-package-update-config
 	fi
 	$(Q)mkdir -p $(dir $($(PKG)_KCONFIG_FILE))
 	cp -f $($(PKG)_DIR)/$(1) $($(PKG)_KCONFIG_FILE)
-	$(Q)touch --reference $($(PKG)_DIR)/$($(PKG)_KCONFIG_DOTCONFIG) $($(PKG)_KCONFIG_FILE)
+	$(Q)touch --reference $($(PKG)_DIR)/$($(PKG)_KCONFIG_STAMP_DOTCONFIG) $($(PKG)_KCONFIG_FILE)
 endef
 
 PKG_KCONFIG_COMMON_OPTS = \
@@ -61,6 +61,12 @@ $(2)_KCONFIG_FIXUP_CMDS ?=
 $(2)_KCONFIG_FRAGMENT_FILES ?=
 $(2)_KCONFIG_DOTCONFIG ?= .config
 
+# Do not use $(2)_KCONFIG_DOTCONFIG as stamp file, because the package
+# buildsystem (e.g. linux >= 4.19) may touch it, thus rendering our
+# timestamps out of date, thus re-trigerring the build of the package.
+# Instead, use a specific file of our own as timestamp.
+$(2)_KCONFIG_STAMP_DOTCONFIG = .stamp_dotconfig
+
 # The config file as well as the fragments could be in-tree, so before
 # depending on them the package should be extracted (and patched) first.
 #
@@ -116,23 +122,24 @@ endef
 # 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.
-$$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG): $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES)
+$$($(2)_DIR)/$$($(2)_KCONFIG_STAMP_DOTCONFIG): $$($(2)_KCONFIG_FILE) $$($(2)_KCONFIG_FRAGMENT_FILES)
 	$$(Q)$$(if $$($(2)_KCONFIG_DEFCONFIG), \
 		$$($(2)_KCONFIG_MAKE) $$($(2)_KCONFIG_DEFCONFIG), \
-		$$(INSTALL) -m 0644 -D $$($(2)_KCONFIG_FILE) $$(@))
+		$$(INSTALL) -m 0644 -D $$($(2)_KCONFIG_FILE) $$(@D)/$$($(2)_KCONFIG_DOTCONFIG))
 	$$(Q)support/kconfig/merge_config.sh -m -O $$(@D) \
-		$$(@) $$($(2)_KCONFIG_FRAGMENT_FILES)
+		$$(@D)/$$($(2)_KCONFIG_DOTCONFIG) $$($(2)_KCONFIG_FRAGMENT_FILES)
 	$$($(2)_REGEN_DOT_CONFIG)
+	$$(Q)touch $$(@D)/$$($(2)_KCONFIG_STAMP_DOTCONFIG)
 
 # 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
 # it explicitly. It doesn't hurt to always have it though.
-$$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG): | $(1)-patch
+$$($(2)_DIR)/$$($(2)_KCONFIG_STAMP_DOTCONFIG): | $(1)-patch
 
 # Some packages may need additional tools to be present by the time their
 # kconfig structure is parsed (e.g. the linux kernel may need to call to
 # the compiler to test its features).
-$$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG): | $$($(2)_KCONFIG_DEPENDENCIES)
+$$($(2)_DIR)/$$($(2)_KCONFIG_STAMP_DOTCONFIG): | $$($(2)_KCONFIG_DEPENDENCIES)
 
 # In order to get a usable, consistent configuration, some fixup may be needed.
 # The exact rules are specified by the package .mk file.
@@ -142,7 +149,7 @@ define $(2)_FIXUP_DOT_CONFIG
 	$$(Q)touch $$($(2)_DIR)/.stamp_kconfig_fixup_done
 endef
 
-$$($(2)_DIR)/.stamp_kconfig_fixup_done: $$($(2)_DIR)/$$($(2)_KCONFIG_DOTCONFIG)
+$$($(2)_DIR)/.stamp_kconfig_fixup_done: $$($(2)_DIR)/$$($(2)_KCONFIG_STAMP_DOTCONFIG)
 	$$($(2)_FIXUP_DOT_CONFIG)
 
 # Before running configure, the configuration file should be present and fixed
-- 
2.20.1

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH] infra/pkg-kconfig: do not rely on package's .config as a timestamp
  2019-05-30 18:09 [Buildroot] [PATCH] infra/pkg-kconfig: do not rely on package's .config as a timestamp Yann E. MORIN
@ 2019-05-30 22:41 ` Peter Korsgaard
  2019-05-31 18:41   ` Yann E. MORIN
  2019-06-06 15:33 ` Peter Korsgaard
  1 sibling, 1 reply; 5+ messages in thread
From: Peter Korsgaard @ 2019-05-30 22:41 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 > Since linux-4.19, the kernel's build system internally touches its
 > .config file.

 > However, we currently used that file as a timestamp to detect whether
 > our kconfig fixups were to be (re)applied or not, which in turn is used
 > to decide whether we should (re)build the package or not.

 > But with latest kernel versions, this timestamp heuristic is now broken,
 > and we always rebuild the kernel on subsequent builds.

 > We fix that by introducing a spearate timestamp file of our own, which
 > we know the kernel (or the kconfig-based packages, for that matters)
 > does not use.

 > Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
 > Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
 > Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
 > Cc: Arnout Vandecappelle <arnout@mind.be>

Committed, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH] infra/pkg-kconfig: do not rely on package's .config as a timestamp
  2019-05-30 22:41 ` Peter Korsgaard
@ 2019-05-31 18:41   ` Yann E. MORIN
  2019-05-31 20:53     ` Peter Korsgaard
  0 siblings, 1 reply; 5+ messages in thread
From: Yann E. MORIN @ 2019-05-31 18:41 UTC (permalink / raw)
  To: buildroot

Peter, All,

On 2019-05-31 00:41 +0200, Peter Korsgaard spake thusly:
> >>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:
> 
>  > Since linux-4.19, the kernel's build system internally touches its
>  > .config file.
> 
>  > However, we currently used that file as a timestamp to detect whether
>  > our kconfig fixups were to be (re)applied or not, which in turn is used
>  > to decide whether we should (re)build the package or not.
> 
>  > But with latest kernel versions, this timestamp heuristic is now broken,
>  > and we always rebuild the kernel on subsequent builds.
> 
>  > We fix that by introducing a spearate timestamp file of our own, which
>  > we know the kernel (or the kconfig-based packages, for that matters)
>  > does not use.
> 
>  > Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
>  > Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
>  > Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
>  > Cc: Arnout Vandecappelle <arnout@mind.be>
> 
> Committed, thanks.

Thanks.

This is also a candidate for 2019.02.x, on which it applies cleanly.

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 561 099 427 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH] infra/pkg-kconfig: do not rely on package's .config as a timestamp
  2019-05-31 18:41   ` Yann E. MORIN
@ 2019-05-31 20:53     ` Peter Korsgaard
  0 siblings, 0 replies; 5+ messages in thread
From: Peter Korsgaard @ 2019-05-31 20:53 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

Hi,

 >> Committed, thanks.

 > Thanks.

 > This is also a candidate for 2019.02.x, on which it applies cleanly.

Yes, I will sync 2019.02.x after I get 2019.05 out the door.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Buildroot] [PATCH] infra/pkg-kconfig: do not rely on package's .config as a timestamp
  2019-05-30 18:09 [Buildroot] [PATCH] infra/pkg-kconfig: do not rely on package's .config as a timestamp Yann E. MORIN
  2019-05-30 22:41 ` Peter Korsgaard
@ 2019-06-06 15:33 ` Peter Korsgaard
  1 sibling, 0 replies; 5+ messages in thread
From: Peter Korsgaard @ 2019-06-06 15:33 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@free.fr> writes:

 > Since linux-4.19, the kernel's build system internally touches its
 > .config file.

 > However, we currently used that file as a timestamp to detect whether
 > our kconfig fixups were to be (re)applied or not, which in turn is used
 > to decide whether we should (re)build the package or not.

 > But with latest kernel versions, this timestamp heuristic is now broken,
 > and we always rebuild the kernel on subsequent builds.

 > We fix that by introducing a spearate timestamp file of our own, which
 > we know the kernel (or the kconfig-based packages, for that matters)
 > does not use.

 > Signed-off-by: Yann E. MORIN <yann.morin.1998@free.fr>
 > Cc: Thomas De Schampheleire <patrickdepinguin@gmail.com>
 > Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
 > Cc: Arnout Vandecappelle <arnout@mind.be>

Committed to 2019.02.x, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2019-06-06 15:33 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-05-30 18:09 [Buildroot] [PATCH] infra/pkg-kconfig: do not rely on package's .config as a timestamp Yann E. MORIN
2019-05-30 22:41 ` Peter Korsgaard
2019-05-31 18:41   ` Yann E. MORIN
2019-05-31 20:53     ` Peter Korsgaard
2019-06-06 15:33 ` Peter Korsgaard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox