Skip to content

kconfig/devicetree: Print path to headers when configuring #22365

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jan 31, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions scripts/dts/gen_defines.py
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down
2 changes: 1 addition & 1 deletion scripts/kconfig/guiconfig.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down
2 changes: 1 addition & 1 deletion scripts/kconfig/kconfig.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
39 changes: 23 additions & 16 deletions scripts/kconfig/kconfiglib.py
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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,
Expand Down Expand Up @@ -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),
Expand Down
2 changes: 1 addition & 1 deletion scripts/kconfig/menuconfig.py
Original file line number Diff line number Diff line change
@@ -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
Expand Down