diff --git a/scripts/dts/gen_defines.py b/scripts/dts/gen_defines.py index cc15ca88b80d..a6d58e89d574 100755 --- a/scripts/dts/gen_defines.py +++ b/scripts/dts/gen_defines.py @@ -74,11 +74,12 @@ def main(): write_flash(edt) - print("Devicetree configuration written to " + args.conf_out) - conf_file.close() header_file.close() + print(f"Devicetree header saved to '{args.header_out}'") + + def parse_args(): # Returns parsed command-line arguments diff --git a/scripts/kconfig/guiconfig.py b/scripts/kconfig/guiconfig.py index dbb753de75db..d4bd30812a95 100755 --- a/scripts/kconfig/guiconfig.py +++ b/scripts/kconfig/guiconfig.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2019, Nordic Semiconductor ASA and Ulf Magnusson # SPDX-License-Identifier: ISC diff --git a/scripts/kconfig/kconfig.py b/scripts/kconfig/kconfig.py index 91e3c145c4ba..e4ac8dcbda4a 100755 --- a/scripts/kconfig/kconfig.py +++ b/scripts/kconfig/kconfig.py @@ -82,7 +82,7 @@ def main(): # Write the merged configuration and the C header print(kconf.write_config(args.config_out)) - kconf.write_autoconf(args.header_out) + print(kconf.write_autoconf(args.header_out)) # Write the list of parsed Kconfig files to a file write_kconfig_filenames(kconf, args.kconfig_list_out) diff --git a/scripts/kconfig/kconfiglib.py b/scripts/kconfig/kconfiglib.py index c0a5b2ab6973..c67895ced6b3 100644 --- a/scripts/kconfig/kconfiglib.py +++ b/scripts/kconfig/kconfiglib.py @@ -554,7 +554,7 @@ def my_other_fn(kconf, name, arg_1, arg_2, ...): from os.path import dirname, exists, expandvars, islink, join, realpath -VERSION = (13, 7, 1) +VERSION = (14, 1, 0) # File layout: @@ -1444,12 +1444,18 @@ def write_autoconf(self, filename=None, header=None): KCONFIG_AUTOHEADER_HEADER had when the Kconfig instance was created will be used if it was set, and no header otherwise. See the Kconfig.header_header attribute. + + Returns a string with a message saying that the header got saved, or + that there were no changes to it. This is meant to reduce boilerplate + in tools, which can do e.g. print(kconf.write_autoconf()). """ if filename is None: filename = os.getenv("KCONFIG_AUTOHEADER", "include/generated/autoconf.h") - self._write_if_changed(filename, self._autoconf_contents(header)) + if self._write_if_changed(filename, self._autoconf_contents(header)): + return "Kconfig header saved to '{}'".format(filename) + return "No change to Kconfig header in '{}'".format(filename) def _autoconf_contents(self, header): # write_autoconf() helper. Returns the contents to write as a string, @@ -1564,7 +1570,7 @@ def write_config(self, filename=None, header=None, save_old=True, contents = self._config_contents(header) if self._contents_eq(filename, contents): - return "No change to '{}'".format(filename) + return "No change to configuration in '{}'".format(filename) if save_old: _save_old(filename) @@ -1677,18 +1683,14 @@ def write_min_config(self, filename, header=None): be used if it was set, and no header otherwise. See the Kconfig.config_header attribute. - Returns a string with a message saying which file got saved. This is - meant to reduce boilerplate in tools, which can do e.g. + Returns a string with a message saying the minimal configuration got + saved, or that there were no changes to it. This is meant to reduce + boilerplate in tools, which can do e.g. print(kconf.write_min_config()). """ - contents = self._min_config_contents(header) - if self._contents_eq(filename, contents): - return "No change to '{}'".format(filename) - - with self._open(filename, "w") as f: - f.write(contents) - - return "Minimal configuration saved to '{}'".format(filename) + if self._write_if_changed(filename, self._min_config_contents(header)): + return "Minimal configuration saved to '{}'".format(filename) + return "No change to minimal configuration in '{}'".format(filename) def _min_config_contents(self, header): # write_min_config() helper. Returns the contents to write as a string, @@ -2264,10 +2266,15 @@ def _write_if_changed(self, filename, contents): # differs, but it breaks stuff like write_config("/dev/null"), which is # used out there to force evaluation-related warnings to be generated. # This simple version is pretty failsafe and portable. + # + # Returns True if the file has changed and is updated, and False + # otherwise. - if not self._contents_eq(filename, contents): - with self._open(filename, "w") as f: - f.write(contents) + if self._contents_eq(filename, contents): + return False + with self._open(filename, "w") as f: + f.write(contents) + return True def _contents_eq(self, filename, contents): # Returns True if the contents of 'filename' is 'contents' (a string), diff --git a/scripts/kconfig/menuconfig.py b/scripts/kconfig/menuconfig.py index 38f54f14f9cf..9b159eb087c0 100755 --- a/scripts/kconfig/menuconfig.py +++ b/scripts/kconfig/menuconfig.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2018-2019, Nordic Semiconductor ASA and Ulf Magnusson # SPDX-License-Identifier: ISC