All of lore.kernel.org
 help / color / mirror / Atom feed
From: Masahiro Yamada <yamada.masahiro@socionext.com>
To: linux-kbuild@vger.kernel.org
Cc: Dirk Gouders <dirk@gouders.net>,
	Ulf Magnusson <ulfalizer@gmail.com>,
	Sam Ravnborg <sam@ravnborg.org>,
	Masahiro Yamada <yamada.masahiro@socionext.com>,
	linux-kernel@vger.kernel.org
Subject: [PATCH v4 05/11] kconfig: make syncconfig update .config regardless of sym_change_count
Date: Fri, 20 Jul 2018 16:46:30 +0900	[thread overview]
Message-ID: <1532072796-7947-6-git-send-email-yamada.masahiro@socionext.com> (raw)
In-Reply-To: <1532072796-7947-1-git-send-email-yamada.masahiro@socionext.com>

syncconfig updates the .config only when sym_change_count > 0, i.e.
any change in config symbols has been detected.

Not only symbols but also comments are contained in the .config file.
If only comments are updated, they are not fed back to the .config,
then the stale comments are left-over.  Of course, this is just a
matter of comments, but why not fix it.

I see some scenarios where this happens.

Scenario A:

 1. You have a source tree that has already been configured.

 2. Linus increments the version number in the top-level Makefile
    (i.e. he commits a new release)

 3. You pull it, and run 'make'

 4. syncconfig is invoked because the environment variable,
    KERNELVERSION is updated, but the .config is not updated since
    no config symbol is changed.

 5. The .config file contains a kernel version in the top line:

    # Automatically generated file; DO NOT EDIT.
    # Linux/arm64 4.18.0-rc2 Kernel Configuration

    ... which points to a previous version.

Scenario B:

 1. You have a source tree that has already been configured.

 2. You upgrade the compiler, but it still has the same version number.
    This may happen if you regularly build the latest compiler from
    the source code.

 3. You run 'make'

 4. syncconfig is invoked because the environment variable,
    CC_VERSION_TEXT is updated, but the .config is not updated since
    no config symbol is changed.

 5. The .config file contains the version string of the compiler:

    #
    # Compiler: aarch64-linux-gcc (GCC) 9.0.0 20180628 (experimental)
    #

    ... which carries the information of the old compiler.

If KCONFIG_NOSILENTUPDATE is set, syncconfig is not allowed to update
the .config file.  Otherwise, it is fine to update it regardless of
sym_change_count.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
---

Changes in v4: None

 scripts/kconfig/conf.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
index 671ff53..5af8991 100644
--- a/scripts/kconfig/conf.c
+++ b/scripts/kconfig/conf.c
@@ -496,6 +496,7 @@ int main(int ac, char **av)
 	int opt;
 	const char *name, *defconfig_file = NULL /* gcc uninit */;
 	struct stat tmpstat;
+	int no_conf_write = 0;
 
 	tty_stdio = isatty(0) && isatty(1);
 
@@ -633,13 +634,14 @@ int main(int ac, char **av)
 	}
 
 	if (sync_kconfig) {
-		if (conf_get_changed()) {
-			name = getenv("KCONFIG_NOSILENTUPDATE");
-			if (name && *name) {
+		name = getenv("KCONFIG_NOSILENTUPDATE");
+		if (name && *name) {
+			if (conf_get_changed()) {
 				fprintf(stderr,
 					"\n*** The configuration requires explicit update.\n\n");
 				return 1;
 			}
+			no_conf_write = 1;
 		}
 	}
 
@@ -688,7 +690,7 @@ int main(int ac, char **av)
 		/* syncconfig is used during the build so we shall update autoconf.
 		 * All other commands are only used to generate a config.
 		 */
-		if (conf_get_changed() && conf_write(NULL)) {
+		if (!no_conf_write && conf_write(NULL)) {
 			fprintf(stderr, "\n*** Error during writing of the configuration.\n\n");
 			exit(1);
 		}
-- 
2.7.4


  parent reply	other threads:[~2018-07-20  7:48 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-20  7:46 [PATCH v4 00/11] kbuild/kconfig: do not update config during installation Masahiro Yamada
2018-07-20  7:46 ` [PATCH v4 01/11] kconfig: rename file_write_dep and move it to confdata.c Masahiro Yamada
2018-07-20  7:46 ` [PATCH v4 02/11] kconfig: split out useful helpers in confdata.c Masahiro Yamada
2018-07-20  7:46 ` [PATCH v4 03/11] kconfig: remove unneeded directory generation from local*config Masahiro Yamada
2018-07-20  7:46 ` [PATCH v4 04/11] kconfig: create directories needed for syncconfig by itself Masahiro Yamada
2018-07-20  7:46 ` Masahiro Yamada [this message]
2018-07-20  7:46 ` [PATCH v4 06/11] kconfig: allow all config targets to write auto.conf if missing Masahiro Yamada
2018-07-20  7:46 ` [PATCH v4 07/11] kbuild: use 'include' directive to load auto.conf from top Makefile Masahiro Yamada
2018-09-03  9:39   ` Borislav Petkov
2018-09-03  9:54     ` Masahiro Yamada
2018-09-03 10:00       ` Borislav Petkov
2018-09-05 22:53         ` Segher Boessenkool
2018-09-06  0:46           ` Masahiro Yamada
2018-07-20  7:46 ` [PATCH v4 08/11] kbuild: add .DELETE_ON_ERROR special target Masahiro Yamada
2018-07-20  7:46 ` [PATCH v4 09/11] kbuild: do not update config when running install targets Masahiro Yamada
2018-07-20  7:46 ` [PATCH v4 10/11] kbuild: do not update config for 'make kernelrelease' Masahiro Yamada
2018-07-20  7:46 ` [PATCH v4 11/11] kbuild: remove auto.conf from prerequisite of phony targets Masahiro Yamada
2018-07-25 14:40 ` [PATCH v4 00/11] kbuild/kconfig: do not update config during installation Masahiro Yamada

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1532072796-7947-6-git-send-email-yamada.masahiro@socionext.com \
    --to=yamada.masahiro@socionext.com \
    --cc=dirk@gouders.net \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sam@ravnborg.org \
    --cc=ulfalizer@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.