From e1452f5d6c6fd324249e9ec2614dbf780d5eb8e1 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 18 Oct 2019 17:01:49 +0200 Subject: [PATCH 01/11] lw-ip: silence a warning related to CONFIG_LWIP_TCP_WND_DEFAULT value --- components/lwip/CMakeLists.txt | 7 +++++++ components/lwip/component.mk | 1 + 2 files changed, 8 insertions(+) diff --git a/components/lwip/CMakeLists.txt b/components/lwip/CMakeLists.txt index 05623faeb..c62fa3aaa 100644 --- a/components/lwip/CMakeLists.txt +++ b/components/lwip/CMakeLists.txt @@ -148,3 +148,10 @@ set_source_files_properties( PROPERTIES COMPILE_FLAGS -Wno-implicit-fallthrough ) +# "comparison is always false due to limited range of data type" warning +# when setting CONFIG_LWIP_TCP_WND_DEFAULT to 65535 +set_source_files_properties( + lwip/src/core/tcp.c + PROPERTIES COMPILE_FLAGS + -Wno-type-limits +) diff --git a/components/lwip/component.mk b/components/lwip/component.mk index 84f4ed599..3e57b7504 100644 --- a/components/lwip/component.mk +++ b/components/lwip/component.mk @@ -38,5 +38,6 @@ CFLAGS += -Wno-address # lots of LWIP source files evaluate macros that check a lwip/src/netif/ppp/ppp.o: CFLAGS += -Wno-uninitialized lwip/src/netif/ppp/pppos.o: CFLAGS += -Wno-implicit-fallthrough +lwip/src/core/tcp.o: CFLAGS += -Wno-type-limits COMPONENT_ADD_LDFRAGMENTS += linker.lf From 9d15c1fd40344b0dd5d2d381fe8354f00e77f49b Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Wed, 11 Sep 2019 11:23:10 +0200 Subject: [PATCH 02/11] tools: add {find,build}_apps.py, scripts to build multiple apps This commit adds a pair of scripts, find_apps.py and build_apps.py. These scripts are intended to be used in various CI jobs, building multiple applications with different configurations and targets. The first script, find_apps.py, is used to prepare the list of builds: 1. It finds apps for the given build system. 2. For each app, it finds configurations (sdkconfig files) which need to be built. 3. It filters out the apps and configurations which are not compatible with the given target. 4. It outputs the list of builds into stdout or a file. Currently the format is a list of lines, each line a JSON string. In the future, the tool can be updated to output YAML files. The lists of builds can be concatenated and processed with standard command line tools, like sed. The second script, build_apps.py, executes the builds from the list. It can execute a subset of builds based on --parallel-count and --parallel-index arguments. These two scripts are intended to replace build_examples_make, build_examples_cmake, and the custom unit-test-app logic (in the Makefile and idf_ext.py). Closes IDF-641 --- tools/build_apps.py | 129 ++++++++++++++ tools/ci/executable-list.txt | 2 + tools/find_apps.py | 283 ++++++++++++++++++++++++++++++ tools/find_build_apps/__init__.py | 31 ++++ tools/find_build_apps/cmake.py | 158 +++++++++++++++++ tools/find_build_apps/common.py | 231 ++++++++++++++++++++++++ tools/find_build_apps/make.py | 30 ++++ 7 files changed, 864 insertions(+) create mode 100755 tools/build_apps.py create mode 100755 tools/find_apps.py create mode 100644 tools/find_build_apps/__init__.py create mode 100644 tools/find_build_apps/cmake.py create mode 100644 tools/find_build_apps/common.py create mode 100644 tools/find_build_apps/make.py diff --git a/tools/build_apps.py b/tools/build_apps.py new file mode 100755 index 000000000..d25a8e279 --- /dev/null +++ b/tools/build_apps.py @@ -0,0 +1,129 @@ +#!/usr/bin/env python +# coding=utf-8 +# +# ESP-IDF helper script to build multiple applications. Consumes the input of find_apps.py. +# + +import argparse +import sys +import logging +from find_build_apps import BuildItem, BuildError, setup_logging, BUILD_SYSTEMS + + +def main(): + parser = argparse.ArgumentParser(description="ESP-IDF app builder") + parser.add_argument( + "-v", + "--verbose", + action="count", + help="Increase the logging level of the script. Can be specified multiple times.", + ) + parser.add_argument( + "--build-verbose", + action="store_true", + help="Enable verbose output from build system.", + ) + parser.add_argument( + "--log-file", + type=argparse.FileType("w"), + help="Write the script log to the specified file, instead of stderr", + ) + parser.add_argument( + "--parallel-count", + default=1, + type=int, + help="Number of parallel build jobs. Note that this script doesn't start the jobs, " + + "it needs to be executed multiple times with same value of --parallel-count and " + + "different values of --parallel-index.", + ) + parser.add_argument( + "--parallel-index", + default=1, + type=int, + help="Index (1-based) of the job, out of the number specified by --parallel-count.", + ) + parser.add_argument( + "--format", + default="json", + choices=["json"], + help="Format to read the list of builds", + ) + parser.add_argument( + "--dry-run", + action="store_true", + help="Don't actually build, only print the build commands", + ) + parser.add_argument( + "--keep-going", + action="store_true", + help="Don't exit immediately when a build fails.", + ) + parser.add_argument( + "--output-build-list", + type=argparse.FileType("w"), + help="If specified, the list of builds (with all the placeholders expanded) will be written to this file.", + ) + parser.add_argument( + "build_list", + type=argparse.FileType("r"), + nargs="?", + default=sys.stdin, + help="Name of the file to read the list of builds from. If not specified, read from stdin.", + ) + args = parser.parse_args() + + setup_logging(args) + + build_items = [BuildItem.from_json(line) for line in args.build_list] + + if not build_items: + logging.error("Empty build list!") + raise SystemExit(1) + + num_builds = len(build_items) + num_jobs = args.parallel_count + job_index = args.parallel_index - 1 # convert to 0-based index + num_builds_per_job = (num_builds + num_jobs - 1) // num_jobs + min_job_index = num_builds_per_job * job_index + if min_job_index >= num_builds: + logging.warn("Nothing to do for job {} (build total: {}, per job: {})".format( + job_index + 1, num_builds, num_builds_per_job)) + raise SystemExit(0) + + max_job_index = min(num_builds_per_job * (job_index + 1) - 1, num_builds - 1) + logging.info("Total {} builds, max. {} builds per job, running builds {}-{}".format( + num_builds, num_builds_per_job, min_job_index + 1, max_job_index + 1)) + + builds_for_current_job = build_items[min_job_index:max_job_index + 1] + for i, build_info in enumerate(builds_for_current_job): + index = i + min_job_index + 1 + build_info.index = index + build_info.dry_run = args.dry_run + build_info.verbose = args.build_verbose + build_info.keep_going = args.keep_going + logging.debug(" Build {}: {}".format(index, repr(build_info))) + if args.output_build_list: + args.output_build_list.write(build_info.to_json_expanded() + "\n") + + failed_builds = [] + for build_info in builds_for_current_job: + logging.info("Running build {}: {}".format(build_info.index, repr(build_info))) + build_system_class = BUILD_SYSTEMS[build_info.build_system] + try: + build_system_class.build(build_info) + except BuildError as e: + logging.error(e.message) + if args.keep_going: + failed_builds.append(build_info) + else: + raise SystemExit(1) + + if failed_builds: + logging.error("The following build have failed:") + for build in failed_builds: + logging.error(" {}".format(build)) + raise SystemExit(1) + + +if __name__ == "__main__": + main() diff --git a/tools/ci/executable-list.txt b/tools/ci/executable-list.txt index cd83d9aa2..f5682b98e 100644 --- a/tools/ci/executable-list.txt +++ b/tools/ci/executable-list.txt @@ -27,6 +27,7 @@ examples/system/ota/otatool/get_running_partition.py examples/system/ota/otatool/otatool_example.py examples/system/ota/otatool/otatool_example.sh install.sh +tools/build_apps.py tools/check_kconfigs.py tools/check_python_dependencies.py tools/ci/apply_bot_filter.py @@ -59,6 +60,7 @@ tools/esp_app_trace/logtrace_proc.py tools/esp_app_trace/sysviewtrace_proc.py tools/esp_app_trace/test/logtrace/test.sh tools/esp_app_trace/test/sysview/test.sh +tools/find_apps.py tools/format.sh tools/gen_esp_err_to_name.py tools/idf.py diff --git a/tools/find_apps.py b/tools/find_apps.py new file mode 100755 index 000000000..e3dd48c4c --- /dev/null +++ b/tools/find_apps.py @@ -0,0 +1,283 @@ +#!/usr/bin/env python +# coding=utf-8 +# +# ESP-IDF helper script to enumerate the builds of multiple configurations of multiple apps. +# Produces the list of builds. The list can be consumed by build_apps.py, which performs the actual builds. + +import argparse +import os +import sys +import re +import glob +import logging +import typing +from find_build_apps import ( + BUILD_SYSTEMS, + BUILD_SYSTEM_CMAKE, + BuildSystem, + BuildItem, + setup_logging, + ConfigRule, + config_rules_from_str, + DEFAULT_TARGET, +) + +# Helper functions + + +def dict_from_sdkconfig(path): + """ + Parse the sdkconfig file at 'path', return name:value pairs as a dict + """ + regex = re.compile(r"^([^#=]+)=(.+)$") + result = {} + with open(path) as f: + for line in f: + m = regex.match(line) + if m: + result[m.group(1)] = m.group(2) + return result + + +# Main logic: enumerating apps and builds + + +def find_builds_for_app( + app_path, work_dir, build_dir, build_log, target_arg, build_system, + config_rules): # type: (str, str, str, str, str, str, typing.List[ConfigRule]) -> typing.List[BuildItem] + """ + Find configurations (sdkconfig file fragments) for the given app, return them as BuildItem objects + :param app_path: app directory (can be / usually will be a relative path) + :param work_dir: directory where the app should be copied before building. + May contain env. variables and placeholders. + :param build_dir: directory where the build will be done, relative to the work_dir. May contain placeholders. + :param build_log: path of the build log. May contain placeholders. May be None, in which case the log should go + into stdout/stderr. + :param target_arg: the value of IDF_TARGET passed to the script. Used to filter out configurations with + a different CONFIG_IDF_TARGET value. + :param build_system: name of the build system, index into BUILD_SYSTEMS dictionary + :param config_rules: mapping of sdkconfig file name patterns to configuration names + :return: list of BuildItems representing build configuration of the app + """ + build_items = [] # type: typing.List[BuildItem] + default_config_name = "" + + for rule in config_rules: + if not rule.file_name: + default_config_name = rule.config_name + continue + + sdkconfig_paths = glob.glob(os.path.join(app_path, rule.file_name)) + sdkconfig_paths = sorted(sdkconfig_paths) + for sdkconfig_path in sdkconfig_paths: + + # Check if the sdkconfig file specifies IDF_TARGET, and if it is matches the --target argument. + sdkconfig_dict = dict_from_sdkconfig(sdkconfig_path) + target_from_config = sdkconfig_dict.get("CONFIG_IDF_TARGET") + if target_from_config is not None and target_from_config != target_arg: + logging.debug("Skipping sdkconfig {} which requires target {}".format( + sdkconfig_path, target_from_config)) + continue + + # Figure out the config name + config_name = rule.config_name or "" + if "*" in rule.file_name: + # convert glob pattern into a regex + regex_str = r".*" + rule.file_name.replace(".", r"\.").replace("*", r"(.*)") + groups = re.match(regex_str, sdkconfig_path) + assert groups + config_name = groups.group(1) + + sdkconfig_path = os.path.relpath(sdkconfig_path, app_path) + logging.debug('Adding build: app {}, sdkconfig {}, config name "{}"'.format( + app_path, sdkconfig_path, config_name)) + build_items.append( + BuildItem( + app_path, + work_dir, + build_dir, + build_log, + target_arg, + sdkconfig_path, + config_name, + build_system, + )) + + if not build_items: + logging.debug('Adding build: app {}, default sdkconfig, config name "{}"'.format(app_path, default_config_name)) + return [ + BuildItem( + app_path, + work_dir, + build_dir, + build_log, + target_arg, + None, + default_config_name, + build_system, + ) + ] + + return build_items + + +def find_apps(build_system_class, path, recursive, exclude_list, + target): # type: (typing.Type[BuildSystem], str, bool, typing.List[str], str) -> typing.List[str] + """ + Find app directories in path (possibly recursively), which contain apps for the given build system, compatible + with the given target. + :param build_system_class: class derived from BuildSystem, representing the build system in use + :param path: path where to look for apps + :param recursive: whether to recursively descend into nested directories if no app is found + :param exclude_list: list of paths to be excluded from the recursive search + :param target: desired value of IDF_TARGET; apps incompatible with the given target are skipped. + :return: list of paths of the apps found + """ + build_system_name = build_system_class.NAME + logging.debug("Looking for {} apps in {}{}".format(build_system_name, path, " recursively" if recursive else "")) + if not recursive: + if exclude_list: + logging.warn("--exclude option is ignored when used without --recursive") + if not build_system_class.is_app(path): + logging.warn("Path {} specified without --recursive flag, but no {} app found there".format( + path, build_system_name)) + return [] + return [path] + + # The remaining part is for recursive == True + apps_found = [] # type: typing.List[str] + for root, dirs, _ in os.walk(path, topdown=True): + logging.debug("Entering {}".format(root)) + if root in exclude_list: + logging.debug("Skipping {} (excluded)".format(root)) + del dirs[:] + continue + + if build_system_class.is_app(root): + logging.debug("Found {} app in {}".format(build_system_name, root)) + # Don't recurse into app subdirectories + del dirs[:] + + supported_targets = build_system_class.supported_targets(root) + if supported_targets and target not in supported_targets: + logging.debug("Skipping, app only supports targets: " + ", ".join(supported_targets)) + continue + + apps_found.append(root) + + return apps_found + + +def main(): + parser = argparse.ArgumentParser(description="Tool to generate build steps for IDF apps") + parser.add_argument( + "-v", + "--verbose", + action="count", + help="Increase the logging level of the script. Can be specified multiple times.", + ) + parser.add_argument( + "--log-file", + type=argparse.FileType("w"), + help="Write the script log to the specified file, instead of stderr", + ) + parser.add_argument( + "--recursive", + action="store_true", + help="Look for apps in the specified directories recursively.", + ) + parser.add_argument("--build-system", choices=BUILD_SYSTEMS.keys(), default=BUILD_SYSTEM_CMAKE) + parser.add_argument( + "--work-dir", + help="If set, the app is first copied into the specified directory, and then built." + + "If not set, the work directory is the directory of the app.", + ) + parser.add_argument( + "--config", + action="append", + help="Adds configurations (sdkconfig file names) to build. This can either be " + + "FILENAME[=NAME] or FILEPATTERN. FILENAME is the name of the sdkconfig file, " + + "relative to the project directory, to be used. Optional NAME can be specified, " + + "which can be used as a name of this configuration. FILEPATTERN is the name of " + + "the sdkconfig file, relative to the project directory, with at most one wildcard. " + + "The part captured by the wildcard is used as the name of the configuration.", + ) + parser.add_argument( + "--build-dir", + help="If set, specifies the build directory name. Can expand placeholders. Can be either a " + + "name relative to the work directory, or an absolute path.", + ) + parser.add_argument( + "--build-log", + help="If specified, the build log will be written to this file. Can expand placeholders.", + ) + parser.add_argument("--target", help="Build apps for given target.") + parser.add_argument( + "--format", + default="json", + choices=["json"], + help="Format to write the list of builds as", + ) + parser.add_argument( + "--exclude", + action="append", + help="Ignore specified directory (if --recursive is given). Can be used multiple times.", + ) + parser.add_argument( + "-o", + "--output", + type=argparse.FileType("w"), + help="Output the list of builds to the specified file", + ) + parser.add_argument("paths", nargs="+", help="One or more app paths.") + args = parser.parse_args() + setup_logging(args) + + build_system_class = BUILD_SYSTEMS[args.build_system] + + # If the build target is not set explicitly, get it from the environment or use the default one (esp32) + if not args.target: + env_target = os.environ.get("IDF_TARGET") + if env_target: + logging.info("--target argument not set, using IDF_TARGET={} from the environment".format(env_target)) + args.target = env_target + else: + logging.info("--target argument not set, using IDF_TARGET={} as the default".format(DEFAULT_TARGET)) + args.target = DEFAULT_TARGET + + # Prepare the list of app paths + app_paths = [] # type: typing.List[str] + for path in args.paths: + app_paths += find_apps(build_system_class, path, args.recursive, args.exclude or [], args.target) + + if not app_paths: + logging.critical("No {} apps found".format(build_system_class.NAME)) + raise SystemExit(1) + logging.info("Found {} apps".format(len(app_paths))) + + app_paths = sorted(app_paths) + + # Find compatible configurations of each app, collect them as BuildItems + build_items = [] # type: typing.List[BuildItem] + config_rules = config_rules_from_str(args.config or []) + for app_path in app_paths: + build_items += find_builds_for_app( + app_path, + args.work_dir, + args.build_dir, + args.build_log, + args.target, + args.build_system, + config_rules, + ) + logging.info("Found {} builds".format(len(build_items))) + + # Write out the BuildItems. Only JSON supported now (will add YAML later). + if args.format != "json": + raise NotImplementedError() + out = args.output or sys.stdout + out.writelines([item.to_json() + "\n" for item in build_items]) + + +if __name__ == "__main__": + main() diff --git a/tools/find_build_apps/__init__.py b/tools/find_build_apps/__init__.py new file mode 100644 index 000000000..c87ceebda --- /dev/null +++ b/tools/find_build_apps/__init__.py @@ -0,0 +1,31 @@ +from .common import ( + BuildItem, + BuildSystem, + BuildError, + ConfigRule, + config_rules_from_str, + setup_logging, + DEFAULT_TARGET, +) +from .cmake import CMakeBuildSystem, BUILD_SYSTEM_CMAKE +from .make import MakeBuildSystem, BUILD_SYSTEM_MAKE + +BUILD_SYSTEMS = { + BUILD_SYSTEM_MAKE: MakeBuildSystem, + BUILD_SYSTEM_CMAKE: CMakeBuildSystem, +} + +__all__ = [ + "BuildItem", + "BuildSystem", + "BuildError", + "ConfigRule", + "config_rules_from_str", + "setup_logging", + "DEFAULT_TARGET", + "CMakeBuildSystem", + "BUILD_SYSTEM_CMAKE", + "MakeBuildSystem", + "BUILD_SYSTEM_MAKE", + "BUILD_SYSTEMS", +] diff --git a/tools/find_build_apps/cmake.py b/tools/find_build_apps/cmake.py new file mode 100644 index 000000000..8668eb218 --- /dev/null +++ b/tools/find_build_apps/cmake.py @@ -0,0 +1,158 @@ +import os +import sys +import subprocess +import logging +import shutil +import re +from .common import BuildSystem, BuildItem, BuildError + +BUILD_SYSTEM_CMAKE = "cmake" +IDF_PY = "idf.py" + +# While ESP-IDF component CMakeLists files can be identified by the presence of 'idf_component_register' string, +# there is no equivalent for the project CMakeLists files. This seems to be the best option... +CMAKE_PROJECT_LINE = r"include($ENV{IDF_PATH}/tools/cmake/project.cmake)" + +SUPPORTED_TARGETS_REGEX = re.compile(r"set\(\s*SUPPORTED_TARGETS\s+([a-z_0-9\- ]+)\s*\)") + + +class CMakeBuildSystem(BuildSystem): + NAME = BUILD_SYSTEM_CMAKE + + @staticmethod + def build(build_item): # type: (BuildItem) -> None + app_path = build_item.app_dir + work_path = build_item.work_dir or app_path + if not build_item.build_dir: + build_path = os.path.join(work_path, "build") + elif os.path.isabs(build_item.build_dir): + build_path = build_item.build_dir + else: + build_path = os.path.join(work_path, build_item.build_dir) + + if work_path != app_path: + if os.path.exists(work_path): + logging.debug("Work directory {} exists, removing".format(work_path)) + if not build_item.dry_run: + shutil.rmtree(work_path) + logging.debug("Copying app from {} to {}".format(app_path, work_path)) + if not build_item.dry_run: + shutil.copytree(app_path, work_path) + + if os.path.exists(build_path): + logging.debug("Build directory {} exists, removing".format(build_path)) + if not build_item.dry_run: + shutil.rmtree(build_path) + + if not build_item.dry_run: + os.makedirs(build_path) + + # Prepare the sdkconfig file, from the contents of sdkconfig.defaults (if exists) and the contents of + # build_info.sdkconfig_path, i.e. the config-specific sdkconfig file. + # + # Note: the build system supports taking multiple sdkconfig.defaults files via SDKCONFIG_DEFAULTS + # CMake variable. However here we do this manually to perform environment variable expansion in the + # sdkconfig files. + sdkconfig_defaults_list = ["sdkconfig.defaults"] + if build_item.sdkconfig_path: + sdkconfig_defaults_list.append(build_item.sdkconfig_path) + + sdkconfig_file = os.path.join(work_path, "sdkconfig") + if os.path.exists(sdkconfig_file): + logging.debug("Removing sdkconfig file: {}".format(sdkconfig_file)) + if not build_item.dry_run: + os.unlink(sdkconfig_file) + + logging.debug("Creating sdkconfig file: {}".format(sdkconfig_file)) + if not build_item.dry_run: + with open(sdkconfig_file, "w") as f_out: + for sdkconfig_name in sdkconfig_defaults_list: + sdkconfig_path = os.path.join(work_path, sdkconfig_name) + if not sdkconfig_path or not os.path.exists(sdkconfig_path): + continue + logging.debug("Appending {} to sdkconfig".format(sdkconfig_name)) + with open(sdkconfig_path, "r") as f_in: + for line in f_in: + f_out.write(os.path.expandvars(line)) + # Also save the sdkconfig file in the build directory + shutil.copyfile( + os.path.join(work_path, "sdkconfig"), + os.path.join(build_path, "sdkconfig"), + ) + + else: + for sdkconfig_name in sdkconfig_defaults_list: + sdkconfig_path = os.path.join(app_path, sdkconfig_name) + if not sdkconfig_path: + continue + logging.debug("Considering sdkconfig {}".format(sdkconfig_path)) + if not os.path.exists(sdkconfig_path): + continue + logging.debug("Appending {} to sdkconfig".format(sdkconfig_name)) + + # Prepare the build arguments + args = [ + # Assume it is the responsibility of the caller to + # set up the environment (run . ./export.sh) + IDF_PY, + "-B", + build_path, + "-C", + work_path, + "-DIDF_TARGET=" + build_item.target, + ] + if build_item.verbose: + args.append("-v") + args.append("build") + cmdline = format(" ".join(args)) + logging.info("Running {}".format(cmdline)) + + if build_item.dry_run: + return + + log_file = None + build_stdout = sys.stdout + build_stderr = sys.stderr + if build_item.build_log_path: + logging.info("Writing build log to {}".format(build_item.build_log_path)) + log_file = open(build_item.build_log_path, "w") + build_stdout = log_file + build_stderr = log_file + + try: + subprocess.check_call(args, stdout=build_stdout, stderr=build_stderr) + except subprocess.CalledProcessError as e: + raise BuildError("Build failed with exit code {}".format(e.returncode)) + finally: + if log_file: + log_file.close() + + @staticmethod + def _read_cmakelists(app_path): + cmakelists_path = os.path.join(app_path, "CMakeLists.txt") + if not os.path.exists(cmakelists_path): + return None + with open(cmakelists_path, "r") as cmakelists_file: + return cmakelists_file.read() + + @staticmethod + def is_app(path): + cmakelists_file_content = CMakeBuildSystem._read_cmakelists(path) + if not cmakelists_file_content: + return False + if CMAKE_PROJECT_LINE not in cmakelists_file_content: + return False + return True + + @staticmethod + def supported_targets(app_path): + cmakelists_file_content = CMakeBuildSystem._read_cmakelists(app_path) + if not cmakelists_file_content: + return None + match = re.findall(SUPPORTED_TARGETS_REGEX, cmakelists_file_content) + if not match: + return None + if len(match) > 1: + raise NotImplementedError("Can't determine the value of SUPPORTED_TARGETS in {}".format(app_path)) + targets = match[0].split(" ") + return targets diff --git a/tools/find_build_apps/common.py b/tools/find_build_apps/common.py new file mode 100644 index 000000000..fc4013d56 --- /dev/null +++ b/tools/find_build_apps/common.py @@ -0,0 +1,231 @@ +# coding=utf-8 + +import sys +import os +from collections import namedtuple +import logging +import json +import typing + +DEFAULT_TARGET = "esp32" + +TARGET_PLACEHOLDER = "@t" +WILDCARD_PLACEHOLDER = "@w" +NAME_PLACEHOLDER = "@n" +FULL_NAME_PLACEHOLDER = "@f" +INDEX_PLACEHOLDER = "@i" + +# ConfigRule represents one --config argument of find_apps.py. +# file_name is the name of the sdkconfig file fragment, optionally with a single wildcard ('*' character). +# file_name can also be empty to indicate that the default configuration of the app should be used. +# config_name is the name of the corresponding build configuration, or None if the value of wildcard is to be used. +# For example: +# filename='', config_name='default' — represents the default app configuration, and gives it a name 'default' +# filename='sdkconfig.*', config_name=None - represents the set of configurations, names match the wildcard value +ConfigRule = namedtuple("ConfigRule", ["file_name", "config_name"]) + + +def config_rules_from_str(rule_strings): # type: (typing.List[str]) -> typing.List[ConfigRule] + """ + Helper function to convert strings like 'file_name=config_name' into ConfigRule objects + :param rule_strings: list of rules as strings + :return: list of ConfigRules + """ + rules = [] # type: typing.List[ConfigRule] + for rule_str in rule_strings: + items = rule_str.split("=", 2) + rules.append(ConfigRule(items[0], items[1] if len(items) == 2 else None)) + return rules + + +class BuildItem(object): + """ + Instance of this class represents one build of an application. + The parameters which distinguish the build are passed to the constructor. + """ + def __init__( + self, + app_path, + work_dir, + build_path, + build_log_path, + target, + sdkconfig_path, + config_name, + build_system, + ): + # These internal variables store the paths with environment variables and placeholders; + # Public properties with similar names use the _expand method to get the actual paths. + self._app_dir = app_path + self._work_dir = work_dir + self._build_dir = build_path + self._build_log_path = build_log_path + + self.sdkconfig_path = sdkconfig_path + self.config_name = config_name + self.target = target + self.build_system = build_system + + self._app_name = os.path.basename(os.path.normpath(app_path)) + + # Some miscellaneous build properties which are set later, at the build stage + self.index = None + self.verbose = False + self.dry_run = False + self.keep_going = False + + @property + def app_dir(self): + """ + :return: directory of the app + """ + return self._expand(self._app_dir) + + @property + def work_dir(self): + """ + :return: directory where the app should be copied to, prior to the build. Can be None, which means that the app + directory should be used. + """ + return self._expand(self._work_dir) + + @property + def build_dir(self): + """ + :return: build directory, either relative to the work directory (if relative path is used) or absolute path. + """ + return self._expand(self._build_dir) + + @property + def build_log_path(self): + """ + :return: path of the build log file + """ + return self._expand(self._build_log_path) + + def __repr__(self): + return "Build app {} for target {}, sdkconfig {} in {}".format( + self.app_dir, + self.target, + self.sdkconfig_path or "(default)", + self.build_dir, + ) + + def to_json(self): # type: () -> str + """ + :return: JSON string representing this object + """ + return self._to_json(self._app_dir, self._work_dir, self._build_dir, self._build_log_path) + + def to_json_expanded(self): # type: () -> str + """ + :return: JSON string representing this object, with all placeholders in paths expanded + """ + return self._to_json(self.app_dir, self.work_dir, self.build_dir, self.build_log_path) + + def _to_json(self, app_dir, work_dir, build_dir, build_log_path): # type: (str, str, str, str) -> str + """ + Internal function, called by to_json and to_json_expanded + """ + return json.dumps({ + "build_system": self.build_system, + "app_dir": app_dir, + "work_dir": work_dir, + "build_dir": build_dir, + "build_log_path": build_log_path, + "sdkconfig": self.sdkconfig_path, + "config": self.config_name, + "target": self.target, + "verbose": self.verbose, + }) + + @staticmethod + def from_json(json_str): # type: (typing.Text) -> BuildItem + """ + :return: Get the BuildItem from a JSON string + """ + d = json.loads(str(json_str)) + result = BuildItem( + app_path=d["app_dir"], + work_dir=d["work_dir"], + build_path=d["build_dir"], + build_log_path=d["build_log_path"], + sdkconfig_path=d["sdkconfig"], + config_name=d["config"], + target=d["target"], + build_system=d["build_system"], + ) + result.verbose = d["verbose"] + return result + + def _expand(self, path): # type: (str) -> str + """ + Internal method, expands any of the placeholders in {app,work,build} paths. + """ + if not path: + return path + + if self.index is not None: + path = path.replace(INDEX_PLACEHOLDER, str(self.index)) + path = path.replace(TARGET_PLACEHOLDER, self.target) + path = path.replace(NAME_PLACEHOLDER, self._app_name) + if (FULL_NAME_PLACEHOLDER in path): # to avoid recursion to the call to app_dir in the next line: + path = path.replace(FULL_NAME_PLACEHOLDER, self.app_dir.replace(os.path.sep, "_")) + wildcard_pos = path.find(WILDCARD_PLACEHOLDER) + if wildcard_pos != -1: + if self.config_name: + # if config name is defined, put it in place of the placeholder + path = path.replace(WILDCARD_PLACEHOLDER, self.config_name) + else: + # otherwise, remove the placeholder and one character on the left + # (which is usually an underscore, dash, or other delimiter) + left_of_wildcard = max(0, wildcard_pos - 1) + right_of_wildcard = wildcard_pos + len(WILDCARD_PLACEHOLDER) + path = path[0:left_of_wildcard] + path[right_of_wildcard:] + path = os.path.expandvars(path) + return path + + +class BuildSystem(object): + """ + Class representing a build system. + Derived classes implement the methods below. + Objects of these classes aren't instantiated, instead the class (type object) is used. + """ + + NAME = "undefined" + + @staticmethod + def build(self): + raise NotImplementedError() + + @staticmethod + def is_app(path): + raise NotImplementedError() + + @staticmethod + def supported_targets(app_path): + raise NotImplementedError() + + +class BuildError(RuntimeError): + pass + + +def setup_logging(args): + """ + Configure logging module according to the number of '--verbose'/'-v' arguments and the --log-file argument. + :param args: namespace obtained from argparse + """ + if not args.verbose: + log_level = logging.WARNING + elif args.verbose == 1: + log_level = logging.INFO + else: + log_level = logging.DEBUG + + logging.basicConfig( + format="%(levelname)s: %(message)s", + stream=args.log_file or sys.stderr, + level=log_level, + ) diff --git a/tools/find_build_apps/make.py b/tools/find_build_apps/make.py new file mode 100644 index 000000000..d296817ba --- /dev/null +++ b/tools/find_build_apps/make.py @@ -0,0 +1,30 @@ +import os +from .common import BuildSystem + +# Same for the Makefile projects: +MAKE_PROJECT_LINE = r"include $(IDF_PATH)/make/project.mk" + +BUILD_SYSTEM_MAKE = "make" + + +class MakeBuildSystem(BuildSystem): + NAME = BUILD_SYSTEM_MAKE + + @staticmethod + def build(build_item): + raise NotImplementedError() + + @staticmethod + def is_app(path): + makefile_path = os.path.join(path, "Makefile") + if not os.path.exists(makefile_path): + return False + with open(makefile_path, "r") as makefile: + makefile_content = makefile.read() + if MAKE_PROJECT_LINE not in makefile_content: + return False + return True + + @staticmethod + def supported_targets(app_path): + return ["esp32"] From 7ac8f28ddacc2a2bd08f573ba93c7c9f6e0d0e2c Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 29 Oct 2019 17:01:39 +0100 Subject: [PATCH 03/11] tools: add build warnings checking script --- tools/ci/check_build_warnings.py | 101 +++++++++++++++++++++++++++++++ tools/ci/executable-list.txt | 1 + 2 files changed, 102 insertions(+) create mode 100755 tools/ci/check_build_warnings.py diff --git a/tools/ci/check_build_warnings.py b/tools/ci/check_build_warnings.py new file mode 100755 index 000000000..285492d59 --- /dev/null +++ b/tools/ci/check_build_warnings.py @@ -0,0 +1,101 @@ +#!/usr/bin/env python +# coding=utf-8 +# +# CI script to check build logs for warnings. +# Reads the list of builds, in the format produced by find_apps.py or build_apps.py, and finds warnings in the +# log files for every build. +# Exits with a non-zero exit code if any warning is found. + +import os +import sys +import argparse +import logging +import re + +try: + from find_build_apps import BuildItem, setup_logging +except ImportError: + sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..")) + from find_build_apps import BuildItem, setup_logging + +WARNING_REGEX = r"error|warning" + +IGNORE_WARNS = [ + re.compile(r_str) for r_str in [ + r"library/error\.o", + r".*error.*\.c\.obj", + r"-Werror", + r"error\.d", + r"reassigning to symbol", + r"changes choice state", + r"crosstool_version_check\.cmake", + ] +] + + +def line_has_warnings(line): # type: (str) -> bool + if not re.search(WARNING_REGEX, line): + return False + + has_warnings = True + for ignored in IGNORE_WARNS: + if re.search(ignored, line): + has_warnings = False + break + + return has_warnings + + +def main(): + parser = argparse.ArgumentParser(description="ESP-IDF app builder") + parser.add_argument( + "-v", + "--verbose", + action="count", + help="Increase the logging level of the script. Can be specified multiple times.", + ) + parser.add_argument( + "--log-file", + type=argparse.FileType("w"), + help="Write the script log to the specified file, instead of stderr", + ) + parser.add_argument( + "build_list", + type=argparse.FileType("r"), + nargs="?", + default=sys.stdin, + help="Name of the file to read the list of builds from. If not specified, read from stdin.", + ) + args = parser.parse_args() + setup_logging(args) + + build_items = [BuildItem.from_json(line) for line in args.build_list] + + if not build_items: + logging.error("Empty build list!") + raise SystemExit(1) + + found_warnings = 0 + for build_item in build_items: + if not build_item.build_log_path: + logging.debug("No log file for {}".format(build_item.work_dir)) + continue + with open(build_item.build_log_path, "r") as log_file: + for line_no, line in enumerate(log_file): + if line_has_warnings(line): + logging.error("Issue in app {}, config {}:".format(build_item.app_dir, build_item.config_name)) + logging.error(line.rstrip("\n")) + logging.error("See {}:{} for details".format(os.path.basename(build_item.build_log_path), + line_no + 1)) + found_warnings += 1 + break + + if found_warnings: + logging.error("Checked {} builds, found {} warnings".format(len(build_items), found_warnings)) + raise SystemExit(1) + + logging.info("No warnings found") + + +if __name__ == "__main__": + main() diff --git a/tools/ci/executable-list.txt b/tools/ci/executable-list.txt index f5682b98e..8c7f1f587 100644 --- a/tools/ci/executable-list.txt +++ b/tools/ci/executable-list.txt @@ -35,6 +35,7 @@ tools/ci/build_examples.sh tools/ci/build_examples_cmake.sh tools/ci/check-executable.sh tools/ci/check-line-endings.sh +tools/ci/check_build_warnings.py tools/ci/check_deprecated_kconfigs.py tools/ci/check_examples_cmake_make.sh tools/ci/check_examples_rom_header.sh From 0e6e7f49be43b96fd3bd3c8ca2cdb18dca81f21b Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 15 Oct 2019 14:15:06 +0200 Subject: [PATCH 04/11] tiny-test-fw: add build config and target options --- tools/tiny-test-fw/App.py | 4 +- tools/tiny-test-fw/DUT.py | 6 +-- tools/tiny-test-fw/Env.py | 16 ++++-- tools/tiny-test-fw/IDF/IDFApp.py | 87 ++++++++++++++++-------------- tools/tiny-test-fw/IDF/IDFDUT.py | 28 +++++++--- tools/tiny-test-fw/IDF/__init__.py | 3 +- tools/unit-test-app/unit_test.py | 9 ++-- 7 files changed, 95 insertions(+), 58 deletions(-) diff --git a/tools/tiny-test-fw/App.py b/tools/tiny-test-fw/App.py index 1dbadf85a..77053bf8f 100644 --- a/tools/tiny-test-fw/App.py +++ b/tools/tiny-test-fw/App.py @@ -38,9 +38,11 @@ class BaseApp(object): Also implements some common methods. :param app_path: the path for app. + :param config_name: app configuration to be tested + :param target: build target """ - def __init__(self, app_path): + def __init__(self, app_path, config_name=None, target=None): pass @classmethod diff --git a/tools/tiny-test-fw/DUT.py b/tools/tiny-test-fw/DUT.py index 4ecf76cb6..71007d85b 100644 --- a/tools/tiny-test-fw/DUT.py +++ b/tools/tiny-test-fw/DUT.py @@ -275,6 +275,7 @@ class BaseDUT(object): DEFAULT_EXPECT_TIMEOUT = 10 MAX_EXPECT_FAILURES_TO_SAVED = 10 RECV_THREAD_CLS = RecvThread + TARGET = None """ DUT subclass can specify RECV_THREAD_CLS to do add some extra stuff when receive data. For example, DUT can implement exception detect & analysis logic in receive thread subclass. """ LOG_THREAD = _LogThread() @@ -377,15 +378,14 @@ class BaseDUT(object): # methods that need to be overwritten by Tool @classmethod - def confirm_dut(cls, port, app, **kwargs): + def confirm_dut(cls, port, **kwargs): """ confirm if it's a DUT, usually used by auto detecting DUT in by Env config. subclass (tool) must overwrite this method. :param port: comport - :param app: app instance - :return: True or False + :return: tuple of result (bool), and target (str) """ pass diff --git a/tools/tiny-test-fw/Env.py b/tools/tiny-test-fw/Env.py index 389e87b33..3f99c9aac 100644 --- a/tools/tiny-test-fw/Env.py +++ b/tools/tiny-test-fw/Env.py @@ -62,7 +62,7 @@ class Env(object): self.lock = threading.RLock() @_synced - def get_dut(self, dut_name, app_path, dut_class=None, app_class=None, **dut_init_args): + def get_dut(self, dut_name, app_path, dut_class=None, app_class=None, app_config_name=None, **dut_init_args): """ get_dut(dut_name, app_path, dut_class=None, app_class=None) @@ -70,6 +70,7 @@ class Env(object): :param app_path: application path, app instance will use this path to process application info :param dut_class: dut class, if not specified will use default dut class of env :param app_class: app class, if not specified will use default app of env + :param app_config_name: app build config :keyword dut_init_args: extra kwargs used when creating DUT instance :return: dut instance """ @@ -80,7 +81,7 @@ class Env(object): dut_class = self.default_dut_cls if app_class is None: app_class = self.app_cls - app_inst = app_class(app_path) + detected_target = None try: port = self.config.get_variable(dut_name) except ValueError: @@ -89,10 +90,19 @@ class Env(object): available_ports = dut_class.list_available_ports() for port in available_ports: if port not in allocated_ports: - if dut_class.confirm_dut(port, app_inst): + result, detected_target = dut_class.confirm_dut(port) + if result: break else: port = None + + app_target = dut_class.TARGET + if not app_target: + app_target = detected_target + if not app_target: + raise ValueError("DUT class doesn't specify the target, and autodetection failed") + app_inst = app_class(app_path, app_config_name, app_target) + if port: try: dut_config = self.get_variable(dut_name + "_port_config") diff --git a/tools/tiny-test-fw/IDF/IDFApp.py b/tools/tiny-test-fw/IDF/IDFApp.py index 5e0321af1..0018f7bef 100644 --- a/tools/tiny-test-fw/IDF/IDFApp.py +++ b/tools/tiny-test-fw/IDF/IDFApp.py @@ -29,10 +29,12 @@ class IDFApp(App.BaseApp): IDF_DOWNLOAD_CONFIG_FILE = "download.config" IDF_FLASH_ARGS_FILE = "flasher_args.json" - def __init__(self, app_path): + def __init__(self, app_path, config_name=None, target=None): super(IDFApp, self).__init__(app_path) + self.config_name = config_name + self.target = target self.idf_path = self.get_sdk_path() - self.binary_path = self.get_binary_path(app_path) + self.binary_path = self.get_binary_path(app_path, config_name) self.elf_file = self._get_elf_file_path(self.binary_path) assert os.path.exists(self.binary_path) sdkconfig_dict = self.get_sdkconfig() @@ -87,13 +89,14 @@ class IDFApp(App.BaseApp): d[configs[0]] = configs[1].rstrip() return d - def get_binary_path(self, app_path): + def get_binary_path(self, app_path, config_name=None): """ get binary path according to input app_path. subclass must overwrite this method. :param app_path: path of application + :param config_name: name of the application build config :return: abs app binary path """ pass @@ -206,59 +209,65 @@ class Example(IDFApp): """ return [os.path.join(self.binary_path, "..", "sdkconfig")] - def get_binary_path(self, app_path): + def get_binary_path(self, app_path, config_name=None): # build folder of example path path = os.path.join(self.idf_path, app_path, "build") - if not os.path.exists(path): - # search for CI build folders - app = os.path.basename(app_path) - example_path = os.path.join(self.idf_path, "build_examples", "example_builds") - # example_path has subdirectories named after targets. So we need to look into only the right - # subdirectory. Currently, the target is not known at this moment. - for dirpath, dirnames, files in os.walk(example_path): - if dirnames: - if dirnames[0] == app: - path = os.path.join(example_path, dirpath, dirnames[0], "build") - break - else: - raise OSError("Failed to find example binary") - return path + if os.path.exists(path): + return path + + if not config_name: + config_name = "default" + + # Search for CI build folders. + # Path format: $IDF_PATH/build_examples/app_path_with_underscores/config/target + # (see tools/ci/build_examples_cmake.sh) + # For example: $IDF_PATH/build_examples/examples_get-started_blink/default/esp32 + app_path_underscored = app_path.replace(os.path.sep, "_") + example_path = os.path.join(self.idf_path, "build_examples") + for dirpath in os.listdir(example_path): + if os.path.basename(dirpath) == app_path_underscored: + path = os.path.join(example_path, dirpath, config_name, self.target, "build") + return path + + raise OSError("Failed to find example binary") class UT(IDFApp): - def get_binary_path(self, app_path): + def get_binary_path(self, app_path, config_name=None): """ - :param app_path: app path or app config + :param app_path: app path + :param config_name: config name :return: binary path """ - if not app_path: - app_path = "default" + if not config_name: + config_name = "default" path = os.path.join(self.idf_path, app_path) - if not os.path.exists(path): - while True: - # try to get by config - if app_path == "default": - # it's default config, we first try to get form build folder of unit-test-app - path = os.path.join(self.idf_path, "tools", "unit-test-app", "build") - if os.path.exists(path): - # found, use bin in build path - break - # ``make ut-build-all-configs`` or ``make ut-build-CONFIG`` will copy binary to output folder - path = os.path.join(self.idf_path, "tools", "unit-test-app", "output", app_path) - if os.path.exists(path): - break - raise OSError("Failed to get unit-test-app binary path") - return path + default_build_path = os.path.join(path, "build") + if os.path.exists(default_build_path): + return path + + # first try to get from build folder of unit-test-app + path = os.path.join(self.idf_path, "tools", "unit-test-app", "build") + if os.path.exists(path): + # found, use bin in build path + return path + + # ``make ut-build-all-configs`` or ``make ut-build-CONFIG`` will copy binary to output folder + path = os.path.join(self.idf_path, "tools", "unit-test-app", "output", config_name) + if os.path.exists(path): + return path + + raise OSError("Failed to get unit-test-app binary path") class SSC(IDFApp): - def get_binary_path(self, app_path): + def get_binary_path(self, app_path, config_name=None): # TODO: to implement SSC get binary path return app_path class AT(IDFApp): - def get_binary_path(self, app_path): + def get_binary_path(self, app_path, config_name=None): # TODO: to implement AT get binary path return app_path diff --git a/tools/tiny-test-fw/IDF/IDFDUT.py b/tools/tiny-test-fw/IDF/IDFDUT.py index aa9c6ba6c..13838153f 100644 --- a/tools/tiny-test-fw/IDF/IDFDUT.py +++ b/tools/tiny-test-fw/IDF/IDFDUT.py @@ -152,7 +152,6 @@ class IDFDUT(DUT.SerialDUT): # if need to erase NVS partition in start app ERASE_NVS = True RECV_THREAD_CLS = IDFRecvThread - TOOLCHAIN_PREFIX = "xtensa-esp32-elf-" def __init__(self, name, port, log_file, app, allow_dut_exception=False, **kwargs): super(IDFDUT, self).__init__(name, port, log_file, app, **kwargs) @@ -174,6 +173,7 @@ class IDFDUT(DUT.SerialDUT): :param port: serial port as string :return: MAC address or None """ + esp = None try: esp = cls._get_rom()(port) esp.connect() @@ -181,12 +181,13 @@ class IDFDUT(DUT.SerialDUT): except RuntimeError: return None finally: - # do hard reset after use esptool - esp.hard_reset() - esp._port.close() + if esp: + # do hard reset after use esptool + esp.hard_reset() + esp._port.close() @classmethod - def confirm_dut(cls, port, app, **kwargs): + def confirm_dut(cls, port, **kwargs): inst = None try: expected_rom_class = cls._get_rom() @@ -199,9 +200,9 @@ class IDFDUT(DUT.SerialDUT): inst = esptool.ESPLoader.detect_chip(port) if expected_rom_class and type(inst) != expected_rom_class: raise RuntimeError("Target not expected") - return inst.read_mac() is not None + return inst.read_mac() is not None, get_target_by_rom_class(type(inst)) except(esptool.FatalError, RuntimeError): - return False + return False, None finally: if inst is not None: inst._port.close() @@ -415,18 +416,31 @@ class IDFDUT(DUT.SerialDUT): class ESP32DUT(IDFDUT): + TARGET = "esp32" + TOOLCHAIN_PREFIX = "xtensa-esp32-elf-" @classmethod def _get_rom(cls): return esptool.ESP32ROM class ESP32S2DUT(IDFDUT): + TARGET = "esp32s2beta" + TOOLCHAIN_PREFIX = "xtensa-esp32s2-elf-" @classmethod def _get_rom(cls): return esptool.ESP32S2ROM class ESP8266DUT(IDFDUT): + TARGET = "esp8266" + TOOLCHAIN_PREFIX = "xtensa-lx106-elf-" @classmethod def _get_rom(cls): return esptool.ESP8266ROM + + +def get_target_by_rom_class(cls): + for c in [ESP32DUT, ESP32S2DUT, ESP8266DUT]: + if c._get_rom() == cls: + return c.TARGET + return None diff --git a/tools/tiny-test-fw/IDF/__init__.py b/tools/tiny-test-fw/IDF/__init__.py index 688794723..56db1b287 100644 --- a/tools/tiny-test-fw/IDF/__init__.py +++ b/tools/tiny-test-fw/IDF/__init__.py @@ -25,7 +25,7 @@ def format_case_id(chip, case_name): def idf_example_test(app=Example, dut=IDFDUT, chip="ESP32", module="examples", execution_time=1, - level="example", erase_nvs=True, **kwargs): + level="example", erase_nvs=True, config_name=None, **kwargs): """ decorator for testing idf examples (with default values for some keyword args). @@ -36,6 +36,7 @@ def idf_example_test(app=Example, dut=IDFDUT, chip="ESP32", module="examples", e :param execution_time: execution time in minutes, int :param level: test level, could be used to filter test cases, string :param erase_nvs: if need to erase_nvs in DUT.start_app() + :param config_name: if specified, name of the app configuration :param kwargs: other keyword args :return: test method """ diff --git a/tools/unit-test-app/unit_test.py b/tools/unit-test-app/unit_test.py index 2f80db6f5..c82cd37cd 100755 --- a/tools/unit-test-app/unit_test.py +++ b/tools/unit-test-app/unit_test.py @@ -56,6 +56,7 @@ FINISH_PATTERN = re.compile(r"1 Tests (\d) Failures (\d) Ignored") END_LIST_STR = r'\r?\nEnter test for running' TEST_PATTERN = re.compile(r'\((\d+)\)\s+"([^"]+)" ([^\r\n]+)\r?\n(' + END_LIST_STR + r')?') TEST_SUBMENU_PATTERN = re.compile(r'\s+\((\d+)\)\s+"[^"]+"\r?\n(?=(?=\()|(' + END_LIST_STR + r'))') +UT_APP_PATH = "tools/unit-test-app" SIMPLE_TEST_ID = 0 MULTI_STAGE_ID = 1 @@ -284,7 +285,7 @@ def run_unit_test_cases(env, extra_data): for ut_config in case_config: Utility.console_log("Running unit test for config: " + ut_config, "O") - dut = env.get_dut("unit-test-app", app_path=ut_config, allow_dut_exception=True) + dut = env.get_dut("unit-test-app", app_path=UT_APP_PATH, app_config_name=ut_config, allow_dut_exception=True) if len(case_config[ut_config]) > 0: replace_app_bin(dut, "unit-test-app", case_config[ut_config][0].get('app_bin')) dut.start_app() @@ -423,7 +424,7 @@ def get_dut(duts, env, name, ut_config, app_bin=None): if name in duts: dut = duts[name] else: - dut = env.get_dut(name, app_path=ut_config, allow_dut_exception=True) + dut = env.get_dut(name, app_path=UT_APP_PATH, app_config_name=ut_config, allow_dut_exception=True) duts[name] = dut replace_app_bin(dut, "unit-test-app", app_bin) dut.start_app() # download bin to board @@ -638,7 +639,7 @@ def run_multiple_stage_cases(env, extra_data): for ut_config in case_config: Utility.console_log("Running unit test for config: " + ut_config, "O") - dut = env.get_dut("unit-test-app", app_path=ut_config, allow_dut_exception=True) + dut = env.get_dut("unit-test-app", app_path=UT_APP_PATH, app_config_name=ut_config, allow_dut_exception=True) if len(case_config[ut_config]) > 0: replace_app_bin(dut, "unit-test-app", case_config[ut_config][0].get('app_bin')) dut.start_app() @@ -671,7 +672,7 @@ def detect_update_unit_test_info(env, extra_data, app_bin): case_config = format_test_case_config(extra_data) for ut_config in case_config: - dut = env.get_dut("unit-test-app", app_path=ut_config) + dut = env.get_dut("unit-test-app", app_path=UT_APP_PATH, app_config_name=ut_config) replace_app_bin(dut, "unit-test-app", app_bin) dut.start_app() From e1aee5ad095e4cbe967a71c9c25442ac44cfcc06 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 17 Oct 2019 16:23:39 +0200 Subject: [PATCH 05/11] ci: reimplement build_examples_cmake using {find,build}_apps.py --- tools/ci/build_examples_cmake.sh | 207 +++++++++---------------------- tools/ci/config/build.yml | 24 ++-- 2 files changed, 70 insertions(+), 161 deletions(-) diff --git a/tools/ci/build_examples_cmake.sh b/tools/ci/build_examples_cmake.sh index 37a1f922c..b1eecf287 100755 --- a/tools/ci/build_examples_cmake.sh +++ b/tools/ci/build_examples_cmake.sh @@ -1,24 +1,10 @@ #!/bin/bash # -# Build all examples from the examples directory, out of tree to +# Build all examples from the examples directory, in BUILD_PATH to # ensure they can run when copied to a new directory. # # Runs as part of CI process. # -# Assumes PWD is an out-of-tree build directory, and will copy examples -# to individual subdirectories, one by one. -# -# -# Without arguments it just builds all examples -# -# With one argument it builds part of the examples. This is a useful for -# parallel execution in CI. -# must look like this: -# _ -# It scans .gitlab-ci.yaml to count number of jobs which have name "_" -# It scans the filesystem to count all examples -# Based on this, it decides to run qa set of examples. -# # ----------------------------------------------------------------------------- # Safety settings (see https://gist.github.com/ilg-ul/383869cbb01f61a51c4d). @@ -31,9 +17,6 @@ fi set -o errexit # Exit if command failed. set -o pipefail # Exit if pipe failed. -# Remove the initial space and instead use '\n'. -IFS=$'\n\t' - export PATH="$IDF_PATH/tools/ci:$IDF_PATH/tools:$PATH" # ----------------------------------------------------------------------------- @@ -45,151 +28,77 @@ die() { [ -z ${IDF_PATH} ] && die "IDF_PATH is not set" [ -z ${LOG_PATH} ] && die "LOG_PATH is not set" +[ -z ${BUILD_PATH} ] && die "BUILD_PATH is not set" +[ -z ${IDF_TARGET} ] && die "IDF_TARGET is not set" [ -d ${LOG_PATH} ] || mkdir -p ${LOG_PATH} +[ -d ${BUILD_PATH} ] || mkdir -p ${BUILD_PATH} + +if [ -z ${CI_NODE_TOTAL} ]; then + CI_NODE_TOTAL=1 + echo "Assuming CI_NODE_TOTAL=${CI_NODE_TOTAL}" +fi +if [ -z ${CI_NODE_INDEX} ]; then + # Gitlab uses a 1-based index + CI_NODE_INDEX=1 + echo "Assuming CI_NODE_INDEX=${CI_NODE_INDEX}" +fi + set -o nounset # Exit if variable not set. -echo "build_examples running in ${PWD} for target $IDF_TARGET" - -# only 0 or 1 arguments -[ $# -le 1 ] || die "Have to run as $(basename $0) []" - -export BATCH_BUILD=1 -export V=0 # only build verbose if there's an error - -shopt -s lastpipe # Workaround for Bash to use variables in loops (http://mywiki.wooledge.org/BashFAQ/024) - -RESULT=0 -FAILED_EXAMPLES="" -RESULT_ISSUES=22 # magic number result code for issues found -LOG_SUSPECTED=${LOG_PATH}/common_log.txt -touch ${LOG_SUSPECTED} -SDKCONFIG_DEFAULTS_CI=sdkconfig.ci - -EXAMPLE_PATHS=$( get_supported_examples.sh $IDF_TARGET | sed "s#^#${IDF_PATH}\/examples\/#g" | awk '{print $0"/CmakeLists.txt"}' ) -NUM_OF_EXAMPLES=$( echo "${EXAMPLE_PATHS}" | wc -l ) -# just a plausibility check -[ ${NUM_OF_EXAMPLES} -lt 50 ] && die "NUM_OF_EXAMPLES is bad" - -echo "All examples found for target $IDF_TARGET:" -echo $EXAMPLE_PATHS -echo "Number of examples: $NUM_OF_EXAMPLES" - -if [ -z "${CI_NODE_TOTAL:-}" ] -then - START_NUM=0 - if [ "${1:-}" ]; then - START_NUM=$1 - fi - END_NUM=${NUM_OF_EXAMPLES} -else - JOB_NUM=${CI_NODE_INDEX} - # count number of the jobs - NUM_OF_JOBS=${CI_NODE_TOTAL} - - # separate intervals - #57 / 5 == 12 - NUM_OF_EX_PER_JOB=$(( (${NUM_OF_EXAMPLES} + ${NUM_OF_JOBS} - 1) / ${NUM_OF_JOBS} )) - [ -z ${NUM_OF_EX_PER_JOB} ] && die "NUM_OF_EX_PER_JOB is bad" - - # ex.: [0; 12); [12; 24); [24; 36); [36; 48); [48; 60) - START_NUM=$(( (${JOB_NUM} - 1) * ${NUM_OF_EX_PER_JOB} )) - [ -z ${START_NUM} ] && die "START_NUM is bad" - - END_NUM=$(( ${JOB_NUM} * ${NUM_OF_EX_PER_JOB} )) - [ -z ${END_NUM} ] && die "END_NUM is bad" +export REALPATH=realpath +if [ "$(uname -s)" = "Darwin" ]; then + export REALPATH=grealpath fi -build_example () { - local ID=$1 - shift - local CMAKELISTS=$1 - shift +# Convert LOG_PATH and BUILD_PATH to relative, to make the json file less verbose. +LOG_PATH=$(${REALPATH} --relative-to ${IDF_PATH} ${LOG_PATH}) +BUILD_PATH=$(${REALPATH} --relative-to ${IDF_PATH} ${BUILD_PATH}) - local EXAMPLE_DIR=$(dirname "${CMAKELISTS}") - local EXAMPLE_NAME=$(basename "${EXAMPLE_DIR}") +ALL_BUILD_LIST_JSON="${BUILD_PATH}/list.json" +JOB_BUILD_LIST_JSON="${BUILD_PATH}/list_job_${CI_NODE_INDEX}.json" +mkdir -p "${BUILD_PATH}/example_builds" - echo "Building ${EXAMPLE_NAME} for ${IDF_TARGET} as ${ID}..." - mkdir -p "example_builds/${IDF_TARGET}/${ID}" - cp -r "${EXAMPLE_DIR}" "example_builds/${IDF_TARGET}/${ID}" - pushd "example_builds/${IDF_TARGET}/${ID}/${EXAMPLE_NAME}" - # be stricter in the CI build than the default IDF settings - export EXTRA_CFLAGS=${PEDANTIC_CFLAGS} - export EXTRA_CXXFLAGS=${PEDANTIC_CXXFLAGS} +echo "build_examples running for target $IDF_TARGET" - # sdkconfig files are normally not checked into git, but may be present when - # a developer runs this script locally - rm -f sdkconfig +cd ${IDF_PATH} - # If sdkconfig.ci file is present, append it to sdkconfig.defaults, - # replacing environment variables - if [[ -f "$SDKCONFIG_DEFAULTS_CI" ]]; then - cat $SDKCONFIG_DEFAULTS_CI | $IDF_PATH/tools/ci/envsubst.py >> sdkconfig.defaults - fi +# This part of the script produces the same result for all the example build jobs. It may be moved to a separate stage +# (pre-build) later, then the build jobs will receive ${BUILD_LIST_JSON} file as an artifact. - # build non-verbose first - local BUILDLOG=${LOG_PATH}/ex_${ID}_log.txt - touch ${BUILDLOG} +# If changing the work-dir or build-dir format, remember to update the "artifacts" in gitlab-ci configs, and IDFApp.py. - if [ "$EXAMPLE_NAME" != "idf_as_lib" ]; then - idf.py fullclean >>${BUILDLOG} 2>&1 && - idf.py build >>${BUILDLOG} 2>&1 - else - rm -rf build && - ./build-esp32.sh >>${BUILDLOG} 2>&1 - fi || - { - RESULT=$?; FAILED_EXAMPLES+=" ${EXAMPLE_NAME}" ; - } +${IDF_PATH}/tools/find_apps.py examples \ + -vv \ + --format json \ + --build-system cmake \ + --target ${IDF_TARGET} \ + --recursive \ + --exclude examples/build_system/idf_as_lib \ + --work-dir "${BUILD_PATH}/@f/@w/@t" \ + --build-dir build \ + --build-log "${LOG_PATH}/@f.txt" \ + --output ${ALL_BUILD_LIST_JSON} \ + --config 'sdkconfig.ci=default' \ + --config 'sdkconfig.ci.*=' \ + --config '=default' \ - cat ${BUILDLOG} - popd +# --config rules above explained: +# 1. If sdkconfig.ci exists, use it build the example with configuration name "default" +# 2. If sdkconfig.ci.* exists, use it to build the "*" configuration +# 3. If none of the above exist, build the default configuration under the name "default" - grep -i "error\|warning" "${BUILDLOG}" 2>&1 >> "${LOG_SUSPECTED}" || : -} +# The part below is where the actual builds happen -EXAMPLE_NUM=0 +${IDF_PATH}/tools/build_apps.py \ + -vv \ + --format json \ + --keep-going \ + --parallel-count ${CI_NODE_TOTAL} \ + --parallel-index ${CI_NODE_INDEX} \ + --output-build-list ${JOB_BUILD_LIST_JSON} \ + ${ALL_BUILD_LIST_JSON}\ -echo "Current job will build example ${START_NUM} - ${END_NUM}" -for EXAMPLE_PATH in ${EXAMPLE_PATHS} -do - if [[ $EXAMPLE_NUM -lt $START_NUM || $EXAMPLE_NUM -ge $END_NUM ]] - then - EXAMPLE_NUM=$(( $EXAMPLE_NUM + 1 )) - continue - fi - echo ">>> example [ ${EXAMPLE_NUM} ] - $EXAMPLE_PATH" - - build_example "${EXAMPLE_NUM}" "${EXAMPLE_PATH}" - - EXAMPLE_NUM=$(( $EXAMPLE_NUM + 1 )) -done - -# show warnings -echo -e "\nFound issues:" - -# Ignore the next messages: -# "error.o" or "-Werror" in compiler's command line -# "reassigning to symbol" or "changes choice state" in sdkconfig -# 'Compiler and toochain versions is not supported' from crosstool_version_check.cmake -IGNORE_WARNS="\ -library/error\.o\ -\|.*error.*\.c\.obj\ -\|\ -Werror\ -\|error\.d\ -\|reassigning to symbol\ -\|changes choice state\ -\|crosstool_version_check\.cmake\ -" - -sort -u "${LOG_SUSPECTED}" | grep -v "${IGNORE_WARNS}" \ - && RESULT=$RESULT_ISSUES \ - || echo -e "\tNone" - -[ -z ${FAILED_EXAMPLES} ] || echo -e "\nThere are errors in the next examples: $FAILED_EXAMPLES" -[ $RESULT -eq 0 ] || echo -e "\nFix all warnings and errors above to pass the test!" - -echo -e "\nReturn code = $RESULT" - -exit $RESULT +# Check for build warnings +${IDF_PATH}/tools/ci/check_build_warnings.py -vv ${JOB_BUILD_LIST_JSON} diff --git a/tools/ci/config/build.yml b/tools/ci/config/build.yml index 3c5ed6091..5f087edbd 100644 --- a/tools/ci/config/build.yml +++ b/tools/ci/config/build.yml @@ -197,17 +197,20 @@ build_examples_make: artifacts: when: always paths: - - build_examples/*/*/*/*/build/*.bin - - build_examples/*/*/*/*/sdkconfig - - build_examples/*/*/*/*/build/*.elf - - build_examples/*/*/*/*/build/*.map - - build_examples/*/*/*/*/build/flasher_args.json - - build_examples/*/*/*/*/build/bootloader/*.bin - - build_examples/*/*/*/*/build/partition_table/*.bin + - build_examples/list.json + - build_examples/list_job_*.json + - build_examples/*/*/*/sdkconfig + - build_examples/*/*/*/build/*.bin + - build_examples/*/*/*/build/*.elf + - build_examples/*/*/*/build/*.map + - build_examples/*/*/*/build/flasher_args.json + - build_examples/*/*/*/build/bootloader/*.bin + - build_examples/*/*/*/build/partition_table/*.bin - $LOG_PATH expire_in: 3 days variables: - LOG_PATH: "$CI_PROJECT_DIR/log_examples_cmake" + LOG_PATH: "$CI_PROJECT_DIR/log_examples" + BUILD_PATH: "$CI_PROJECT_DIR/build_examples" only: variables: - $BOT_TRIGGER_WITH_LABEL == null @@ -218,10 +221,7 @@ build_examples_make: script: # it's not possible to build 100% out-of-tree and have the "artifacts" # mechanism work, but this is the next best thing - - rm -rf build_examples - - mkdir build_examples - - cd build_examples - # build some of examples + - mkdir -p ${BUILD_PATH} - mkdir -p ${LOG_PATH} - ${IDF_PATH}/tools/ci/build_examples_cmake.sh # Check if the tests demand CMake built binaries. If not, delete them From 30d21adccadb58c9e5ed7f3e072cc670483a772e Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 20 Oct 2019 20:56:12 +0200 Subject: [PATCH 06/11] ci: don't add build_examples_make as a target_test dependency --- tools/ci/config/assign-test.yml | 1 - tools/ci/config/target-test.yml | 1 - 2 files changed, 2 deletions(-) diff --git a/tools/ci/config/assign-test.yml b/tools/ci/config/assign-test.yml index 40826ef7f..ffc7c9f27 100644 --- a/tools/ci/config/assign-test.yml +++ b/tools/ci/config/assign-test.yml @@ -8,7 +8,6 @@ assign_test: # we have a lot build example jobs. now we don't use dependencies, just download all artificats of build stage. dependencies: - build_ssc - - build_esp_idf_tests_make - build_esp_idf_tests_cmake variables: TEST_FW_PATH: "$CI_PROJECT_DIR/tools/tiny-test-fw" diff --git a/tools/ci/config/target-test.yml b/tools/ci/config/target-test.yml index 59d362c3a..9a90a7963 100644 --- a/tools/ci/config/target-test.yml +++ b/tools/ci/config/target-test.yml @@ -21,7 +21,6 @@ - $BOT_LABEL_EXAMPLE_TEST dependencies: - assign_test - - build_examples_make - build_examples_cmake_esp32 artifacts: when: always From ebd7004a31607bc2bc9dbb4d71ee3e5329fcf9f9 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 17 Oct 2019 16:16:33 +0200 Subject: [PATCH 07/11] examples: update wifi/iperf to use the new builder --- examples/wifi/iperf/iperf_test.py | 60 +++++-------------- ...{sdkconfig.defaults.00 => sdkconfig.ci.00} | 0 ...{sdkconfig.defaults.01 => sdkconfig.ci.01} | 0 ...{sdkconfig.defaults.02 => sdkconfig.ci.02} | 0 ...{sdkconfig.defaults.03 => sdkconfig.ci.03} | 0 ...{sdkconfig.defaults.04 => sdkconfig.ci.04} | 0 ...{sdkconfig.defaults.05 => sdkconfig.ci.05} | 0 ...{sdkconfig.defaults.06 => sdkconfig.ci.06} | 0 ...{sdkconfig.defaults.07 => sdkconfig.ci.07} | 0 ...{sdkconfig.defaults.99 => sdkconfig.ci.99} | 0 10 files changed, 14 insertions(+), 46 deletions(-) rename examples/wifi/iperf/{sdkconfig.defaults.00 => sdkconfig.ci.00} (100%) rename examples/wifi/iperf/{sdkconfig.defaults.01 => sdkconfig.ci.01} (100%) rename examples/wifi/iperf/{sdkconfig.defaults.02 => sdkconfig.ci.02} (100%) rename examples/wifi/iperf/{sdkconfig.defaults.03 => sdkconfig.ci.03} (100%) rename examples/wifi/iperf/{sdkconfig.defaults.04 => sdkconfig.ci.04} (100%) rename examples/wifi/iperf/{sdkconfig.defaults.05 => sdkconfig.ci.05} (100%) rename examples/wifi/iperf/{sdkconfig.defaults.06 => sdkconfig.ci.06} (100%) rename examples/wifi/iperf/{sdkconfig.defaults.07 => sdkconfig.ci.07} (100%) rename examples/wifi/iperf/{sdkconfig.defaults.99 => sdkconfig.ci.99} (100%) diff --git a/examples/wifi/iperf/iperf_test.py b/examples/wifi/iperf/iperf_test.py index bc67e240f..b6af1a62a 100644 --- a/examples/wifi/iperf/iperf_test.py +++ b/examples/wifi/iperf/iperf_test.py @@ -467,31 +467,6 @@ class IperfTestUtility(object): return ret -def build_iperf_with_config(config_name): - """ - we need to build iperf example with different configurations. - - :param config_name: sdkconfig we want to build - """ - - # switch to iperf example path before build when we're running test with Runner - example_path = os.path.dirname(__file__) - cwd = os.getcwd() - if cwd != example_path and example_path: - os.chdir(example_path) - try: - subprocess.check_call("make clean > /dev/null", shell=True) - subprocess.check_call(["cp", "sdkconfig.defaults.{}".format(config_name), "sdkconfig.defaults"]) - subprocess.check_call(["rm", "-f", "sdkconfig"]) - subprocess.check_call("make defconfig > /dev/null", shell=True) - # save sdkconfig to generate config comparision report - subprocess.check_call(["cp", "sdkconfig", "sdkconfig.{}".format(config_name)]) - subprocess.check_call("make -j5 > /dev/null", shell=True) - subprocess.check_call("make print_flash_cmd | tail -n 1 > build/download.config", shell=True) - finally: - os.chdir(cwd) - - @IDF.idf_example_test(env_tag="Example_ShieldBox_Basic", category="stress") def test_wifi_throughput_with_different_configs(env, extra_data): """ @@ -512,13 +487,12 @@ def test_wifi_throughput_with_different_configs(env, extra_data): sdkconfig_files = dict() for config_name in CONFIG_NAME_PATTERN.findall(config_names_raw): - # 1. build config - build_iperf_with_config(config_name) + # 1. get the config sdkconfig_files[config_name] = os.path.join(os.path.dirname(__file__), - "sdkconfig.{}".format(config_name)) + "sdkconfig.ci.{}".format(config_name)) # 2. get DUT and download - dut = env.get_dut("iperf", "examples/wifi/iperf", dut_class=ESP32DUT) + dut = env.get_dut("iperf", "examples/wifi/iperf", dut_class=ESP32DUT, app_config_name=config_name) dut.start_app() dut.expect("esp32>") @@ -572,15 +546,12 @@ def test_wifi_throughput_vs_rssi(env, extra_data): "udp_rx": TestResult("udp", "rx", BEST_PERFORMANCE_CONFIG), } - # 1. build config - build_iperf_with_config(BEST_PERFORMANCE_CONFIG) - - # 2. get DUT and download - dut = env.get_dut("iperf", "examples/wifi/iperf", dut_class=ESP32DUT) + # 1. get DUT and download + dut = env.get_dut("iperf", "examples/wifi/iperf", dut_class=ESP32DUT, app_config_name=BEST_PERFORMANCE_CONFIG) dut.start_app() dut.expect("esp32>") - # 3. run test for each required att value + # 2. run test for each required att value for ap_info in ap_list: test_utility = IperfTestUtility(dut, BEST_PERFORMANCE_CONFIG, ap_info["ssid"], ap_info["password"], pc_nic_ip, pc_iperf_log_file, test_result) @@ -598,10 +569,10 @@ def test_wifi_throughput_vs_rssi(env, extra_data): assert Attenuator.set_att(att_port, atten_val) is True test_utility.run_all_cases(atten_val) - # 4. check test results + # 3. check test results env.close_dut("iperf") - # 5. generate report + # 4. generate report report = ThroughputVsRssiReport(os.path.join(env.log_path, "ThroughputVsRssiReport"), test_result) report.generate_report() @@ -621,15 +592,12 @@ def test_wifi_throughput_basic(env, extra_data): "password": env.get_variable("ap_password"), } - # 1. build iperf with best config - build_iperf_with_config(BEST_PERFORMANCE_CONFIG) - - # 2. get DUT - dut = env.get_dut("iperf", "examples/wifi/iperf", dut_class=ESP32DUT) + # 1. get DUT + dut = env.get_dut("iperf", "examples/wifi/iperf", dut_class=ESP32DUT, app_config_name=BEST_PERFORMANCE_CONFIG) dut.start_app() dut.expect("esp32>") - # 3. preparing + # 2. preparing test_result = { "tcp_tx": TestResult("tcp", "tx", BEST_PERFORMANCE_CONFIG), "tcp_rx": TestResult("tcp", "rx", BEST_PERFORMANCE_CONFIG), @@ -640,11 +608,11 @@ def test_wifi_throughput_basic(env, extra_data): test_utility = IperfTestUtility(dut, BEST_PERFORMANCE_CONFIG, ap_info["ssid"], ap_info["password"], pc_nic_ip, pc_iperf_log_file, test_result) - # 4. run test for TCP Tx, Rx and UDP Tx, Rx + # 3. run test for TCP Tx, Rx and UDP Tx, Rx for _ in range(RETRY_COUNT_FOR_BEST_PERFORMANCE): test_utility.run_all_cases(0) - # 5. log performance and compare with pass standard + # 4. log performance and compare with pass standard performance_items = [] for throughput_type in test_result: IDF.log_performance("{}_throughput".format(throughput_type), @@ -652,7 +620,7 @@ def test_wifi_throughput_basic(env, extra_data): performance_items.append(["{}_throughput".format(throughput_type), "{:.02f} Mbps".format(test_result[throughput_type].get_best_throughput())]) - # save to report + # 5. save to report TinyFW.JunitReport.update_performance(performance_items) # do check after logging, otherwise test will exit immediately if check fail, some performance can't be logged. for throughput_type in test_result: diff --git a/examples/wifi/iperf/sdkconfig.defaults.00 b/examples/wifi/iperf/sdkconfig.ci.00 similarity index 100% rename from examples/wifi/iperf/sdkconfig.defaults.00 rename to examples/wifi/iperf/sdkconfig.ci.00 diff --git a/examples/wifi/iperf/sdkconfig.defaults.01 b/examples/wifi/iperf/sdkconfig.ci.01 similarity index 100% rename from examples/wifi/iperf/sdkconfig.defaults.01 rename to examples/wifi/iperf/sdkconfig.ci.01 diff --git a/examples/wifi/iperf/sdkconfig.defaults.02 b/examples/wifi/iperf/sdkconfig.ci.02 similarity index 100% rename from examples/wifi/iperf/sdkconfig.defaults.02 rename to examples/wifi/iperf/sdkconfig.ci.02 diff --git a/examples/wifi/iperf/sdkconfig.defaults.03 b/examples/wifi/iperf/sdkconfig.ci.03 similarity index 100% rename from examples/wifi/iperf/sdkconfig.defaults.03 rename to examples/wifi/iperf/sdkconfig.ci.03 diff --git a/examples/wifi/iperf/sdkconfig.defaults.04 b/examples/wifi/iperf/sdkconfig.ci.04 similarity index 100% rename from examples/wifi/iperf/sdkconfig.defaults.04 rename to examples/wifi/iperf/sdkconfig.ci.04 diff --git a/examples/wifi/iperf/sdkconfig.defaults.05 b/examples/wifi/iperf/sdkconfig.ci.05 similarity index 100% rename from examples/wifi/iperf/sdkconfig.defaults.05 rename to examples/wifi/iperf/sdkconfig.ci.05 diff --git a/examples/wifi/iperf/sdkconfig.defaults.06 b/examples/wifi/iperf/sdkconfig.ci.06 similarity index 100% rename from examples/wifi/iperf/sdkconfig.defaults.06 rename to examples/wifi/iperf/sdkconfig.ci.06 diff --git a/examples/wifi/iperf/sdkconfig.defaults.07 b/examples/wifi/iperf/sdkconfig.ci.07 similarity index 100% rename from examples/wifi/iperf/sdkconfig.defaults.07 rename to examples/wifi/iperf/sdkconfig.ci.07 diff --git a/examples/wifi/iperf/sdkconfig.defaults.99 b/examples/wifi/iperf/sdkconfig.ci.99 similarity index 100% rename from examples/wifi/iperf/sdkconfig.defaults.99 rename to examples/wifi/iperf/sdkconfig.ci.99 From dbae5c93f0424f3fd625079d21fd64e8e8f280e6 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Sun, 20 Oct 2019 21:07:49 +0200 Subject: [PATCH 08/11] examples: fix loadable elf test --- examples/get-started/hello_world/loadable_elf_example_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/get-started/hello_world/loadable_elf_example_test.py b/examples/get-started/hello_world/loadable_elf_example_test.py index 71c2b60cd..61972d365 100644 --- a/examples/get-started/hello_world/loadable_elf_example_test.py +++ b/examples/get-started/hello_world/loadable_elf_example_test.py @@ -120,7 +120,7 @@ def test_examples_loadable_elf(env, extra_data): idf_path = os.environ['IDF_PATH'] rel_project_path = os.path.join('examples', 'get-started', 'hello_world') proj_path = os.path.join(idf_path, rel_project_path) - example = IDF.Example(rel_project_path) + example = IDF.Example(rel_project_path, target="esp32") sdkconfig = example.get_sdkconfig() elf_path = os.path.join(example.get_binary_path(rel_project_path), 'hello-world.elf') esp_log_path = os.path.join(proj_path, 'esp.log') From 871ea650f6961ee9e077a8a8500347502a3023ec Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Thu, 7 Nov 2019 19:39:27 +0100 Subject: [PATCH 09/11] examples: fix sdkconfig warnings --- .../bluedroid/ble/ble_ancs/sdkconfig.defaults | 4 ++-- .../ble/ble_eddystone/sdkconfig.defaults | 4 ++-- .../ble/ble_hid_device_demo/sdkconfig.defaults | 4 ++-- .../bluedroid/ble/ble_ibeacon/sdkconfig.defaults | 4 ++-- .../ble/ble_spp_client/sdkconfig.defaults | 4 ++-- .../ble/ble_spp_server/sdkconfig.defaults | 4 ++-- .../throughput_client/sdkconfig.defaults | 4 ++-- .../throughput_server/sdkconfig.defaults | 4 ++-- .../bluedroid/ble/blufi/sdkconfig.defaults | 4 ++-- .../bluedroid/ble/gatt_client/sdkconfig.defaults | 4 ++-- .../ble/gatt_security_client/sdkconfig.defaults | 4 ++-- .../ble/gatt_security_server/sdkconfig.defaults | 4 ++-- .../bluedroid/ble/gatt_server/sdkconfig.defaults | 4 ++-- .../gatt_server_service_table/sdkconfig.defaults | 4 ++-- .../ble/gattc_multi_connect/sdkconfig.defaults | 4 ++-- .../classic_bt/a2dp_sink/sdkconfig.defaults | 4 ++-- .../classic_bt/a2dp_source/sdkconfig.defaults | 4 ++-- .../classic_bt/bt_discovery/sdkconfig.defaults | 4 ++-- .../bt_spp_acceptor/sdkconfig.defaults | 4 ++-- .../bt_spp_initiator/sdkconfig.defaults | 4 ++-- .../bt_spp_vfs_acceptor/sdkconfig.defaults | 4 ++-- .../bt_spp_vfs_initiator/sdkconfig.defaults | 4 ++-- .../coex/a2dp_gatts_coex/sdkconfig.defaults | 4 ++-- .../coex/gattc_gatts_coex/sdkconfig.defaults | 4 ++-- .../hci/controller_hci_uart/sdkconfig.defaults | 4 ++-- .../controller_vhci_ble_adv/sdkconfig.defaults | 4 ++-- .../ble_mesh_node/sdkconfig.defaults | 8 ++++---- .../ble_mesh_provisioner/sdkconfig.defaults | 8 ++++---- .../ble_mesh_fast_prov_client/sdkconfig.defaults | 8 ++++---- .../ble_mesh_fast_prov_server/sdkconfig.defaults | 8 ++++---- .../onoff_client/sdkconfig.defaults | 12 ++++++------ .../onoff_server/sdkconfig.defaults | 8 ++++---- .../ble_mesh_provisioner/sdkconfig.defaults | 8 ++++---- .../fast_prov_vendor_model/sdkconfig.defaults | 4 ++-- .../ble_mesh_wifi_coexist/sdkconfig.defaults | 16 ++++++++-------- .../bluetooth/nimble/blecent/sdkconfig.defaults | 6 +++--- .../bluetooth/nimble/blehr/sdkconfig.defaults | 6 +++--- .../bluetooth/nimble/blemesh/sdkconfig.defaults | 6 +++--- .../bluetooth/nimble/bleprph/sdkconfig.defaults | 6 +++--- examples/get-started/hello_world/sdkconfig.ci | 6 +++--- .../provisioning/ble_prov/sdkconfig.defaults | 4 ++-- examples/provisioning/manager/sdkconfig.defaults | 4 ++-- examples/system/himem/sdkconfig.defaults | 2 +- .../sysview_tracing_heap_log/sdkconfig.defaults | 2 +- .../system/unit_test/test/sdkconfig.defaults | 2 +- examples/wifi/iperf/sdkconfig.ci.00 | 4 ++-- examples/wifi/iperf/sdkconfig.ci.01 | 8 ++++---- examples/wifi/iperf/sdkconfig.ci.02 | 8 ++++---- examples/wifi/iperf/sdkconfig.ci.03 | 8 ++++---- examples/wifi/iperf/sdkconfig.ci.04 | 8 ++++---- examples/wifi/iperf/sdkconfig.ci.05 | 8 ++++---- examples/wifi/iperf/sdkconfig.ci.06 | 6 +++--- examples/wifi/iperf/sdkconfig.ci.07 | 8 ++++---- examples/wifi/iperf/sdkconfig.ci.99 | 8 ++++---- 54 files changed, 147 insertions(+), 147 deletions(-) diff --git a/examples/bluetooth/bluedroid/ble/ble_ancs/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/ble_ancs/sdkconfig.defaults index 8dbe56f4f..ee53a228d 100644 --- a/examples/bluetooth/bluedroid/ble/ble_ancs/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/ble_ancs/sdkconfig.defaults @@ -2,5 +2,5 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n diff --git a/examples/bluetooth/bluedroid/ble/ble_eddystone/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/ble_eddystone/sdkconfig.defaults index f0f9acf9f..00fb52113 100644 --- a/examples/bluetooth/bluedroid/ble/ble_eddystone/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/ble_eddystone/sdkconfig.defaults @@ -2,5 +2,5 @@ # and WiFi disabled by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n diff --git a/examples/bluetooth/bluedroid/ble/ble_hid_device_demo/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/ble_hid_device_demo/sdkconfig.defaults index 8dbe56f4f..ee53a228d 100644 --- a/examples/bluetooth/bluedroid/ble/ble_hid_device_demo/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/ble_hid_device_demo/sdkconfig.defaults @@ -2,5 +2,5 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n diff --git a/examples/bluetooth/bluedroid/ble/ble_ibeacon/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/ble_ibeacon/sdkconfig.defaults index f0f9acf9f..00fb52113 100644 --- a/examples/bluetooth/bluedroid/ble/ble_ibeacon/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/ble_ibeacon/sdkconfig.defaults @@ -2,5 +2,5 @@ # and WiFi disabled by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n diff --git a/examples/bluetooth/bluedroid/ble/ble_spp_client/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/ble_spp_client/sdkconfig.defaults index f0f9acf9f..00fb52113 100644 --- a/examples/bluetooth/bluedroid/ble/ble_spp_client/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/ble_spp_client/sdkconfig.defaults @@ -2,5 +2,5 @@ # and WiFi disabled by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n diff --git a/examples/bluetooth/bluedroid/ble/ble_spp_server/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/ble_spp_server/sdkconfig.defaults index ee02dcb06..a6ee02f1d 100644 --- a/examples/bluetooth/bluedroid/ble/ble_spp_server/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/ble_spp_server/sdkconfig.defaults @@ -6,8 +6,8 @@ # CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n # # ESP32-specific config # diff --git a/examples/bluetooth/bluedroid/ble/ble_throughput/throughput_client/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/ble_throughput/throughput_client/sdkconfig.defaults index 5d486b83f..00cfa32ec 100644 --- a/examples/bluetooth/bluedroid/ble/ble_throughput/throughput_client/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/ble_throughput/throughput_client/sdkconfig.defaults @@ -2,8 +2,8 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_CTRL_BLE_MAX_CONN=9 CONFIG_GATTS_NOTIFY_THROUGHPUT=y CONFIG_BTDM_MODEM_SLEEP=n diff --git a/examples/bluetooth/bluedroid/ble/ble_throughput/throughput_server/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/ble_throughput/throughput_server/sdkconfig.defaults index b007cab14..3c869dae0 100644 --- a/examples/bluetooth/bluedroid/ble/ble_throughput/throughput_server/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/ble_throughput/throughput_server/sdkconfig.defaults @@ -2,8 +2,8 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_CTRL_BLE_MAX_CONN=9 CONFIG_EXAMPLE_GATTS_NOTIFY_THROUGHPUT=y CONFIG_BTDM_MODEM_SLEEP=n diff --git a/examples/bluetooth/bluedroid/ble/blufi/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/blufi/sdkconfig.defaults index aba8be090..dcadf58ee 100644 --- a/examples/bluetooth/bluedroid/ble/blufi/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/blufi/sdkconfig.defaults @@ -6,8 +6,8 @@ # CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_CTRL_PINNED_TO_CORE_0=y CONFIG_BTDM_CTRL_PINNED_TO_CORE_1=n CONFIG_BTDM_CTRL_PINNED_TO_CORE=0 diff --git a/examples/bluetooth/bluedroid/ble/gatt_client/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/gatt_client/sdkconfig.defaults index 8dbe56f4f..ee53a228d 100644 --- a/examples/bluetooth/bluedroid/ble/gatt_client/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/gatt_client/sdkconfig.defaults @@ -2,5 +2,5 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n diff --git a/examples/bluetooth/bluedroid/ble/gatt_security_client/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/gatt_security_client/sdkconfig.defaults index f0f9acf9f..00fb52113 100644 --- a/examples/bluetooth/bluedroid/ble/gatt_security_client/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/gatt_security_client/sdkconfig.defaults @@ -2,5 +2,5 @@ # and WiFi disabled by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n diff --git a/examples/bluetooth/bluedroid/ble/gatt_security_server/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/gatt_security_server/sdkconfig.defaults index 8dbe56f4f..ee53a228d 100644 --- a/examples/bluetooth/bluedroid/ble/gatt_security_server/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/gatt_security_server/sdkconfig.defaults @@ -2,5 +2,5 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n diff --git a/examples/bluetooth/bluedroid/ble/gatt_server/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/gatt_server/sdkconfig.defaults index 8dbe56f4f..ee53a228d 100644 --- a/examples/bluetooth/bluedroid/ble/gatt_server/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/gatt_server/sdkconfig.defaults @@ -2,5 +2,5 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n diff --git a/examples/bluetooth/bluedroid/ble/gatt_server_service_table/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/gatt_server_service_table/sdkconfig.defaults index e8587bbc2..97761eb9d 100644 --- a/examples/bluetooth/bluedroid/ble/gatt_server_service_table/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/gatt_server_service_table/sdkconfig.defaults @@ -6,8 +6,8 @@ # CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n # # ESP32-specific config diff --git a/examples/bluetooth/bluedroid/ble/gattc_multi_connect/sdkconfig.defaults b/examples/bluetooth/bluedroid/ble/gattc_multi_connect/sdkconfig.defaults index 0f7207aee..249325cce 100644 --- a/examples/bluetooth/bluedroid/ble/gattc_multi_connect/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/ble/gattc_multi_connect/sdkconfig.defaults @@ -2,6 +2,6 @@ # and WiFi disabled by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_CTRL_BLE_MAX_CONN=9 diff --git a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/sdkconfig.defaults b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/sdkconfig.defaults index e27427a3b..52869c8bb 100644 --- a/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/classic_bt/a2dp_sink/sdkconfig.defaults @@ -1,9 +1,9 @@ # Override some defaults so BT stack is enabled and # Classic BT is enabled and BT_DRAM_RELEASE is disabled CONFIG_BT_ENABLED=y -CONFIG_BTDM_CTRL_MODE_BLE_ONLY= +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=n CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=y -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BT_BLUEDROID_ENABLED=y CONFIG_BT_CLASSIC_ENABLED=y CONFIG_BT_A2DP_ENABLE=y diff --git a/examples/bluetooth/bluedroid/classic_bt/a2dp_source/sdkconfig.defaults b/examples/bluetooth/bluedroid/classic_bt/a2dp_source/sdkconfig.defaults index c7adef6a5..e87de5c3b 100644 --- a/examples/bluetooth/bluedroid/classic_bt/a2dp_source/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/classic_bt/a2dp_source/sdkconfig.defaults @@ -1,9 +1,9 @@ # Override some defaults so BT stack is enabled and # Classic BT is enabled CONFIG_BT_ENABLED=y -CONFIG_BTDM_CTRL_MODE_BLE_ONLY= +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=n CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=y -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BT_BLUEDROID_ENABLED=y CONFIG_BT_CLASSIC_ENABLED=y CONFIG_BT_A2DP_ENABLE=y diff --git a/examples/bluetooth/bluedroid/classic_bt/bt_discovery/sdkconfig.defaults b/examples/bluetooth/bluedroid/classic_bt/bt_discovery/sdkconfig.defaults index 00e3d9971..356b30e95 100644 --- a/examples/bluetooth/bluedroid/classic_bt/bt_discovery/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/classic_bt/bt_discovery/sdkconfig.defaults @@ -1,9 +1,9 @@ # Override some defaults so BT stack is enabled and # Classic BT is enabled and BT_DRAM_RELEASE is disabled CONFIG_BT_ENABLED=y -CONFIG_BTDM_CTRL_MODE_BLE_ONLY= +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=n CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=y -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BT_CLASSIC_ENABLED=y CONFIG_BT_A2DP_ENABLE=n CONFIG_BT_BLE_ENABLED=n diff --git a/examples/bluetooth/bluedroid/classic_bt/bt_spp_acceptor/sdkconfig.defaults b/examples/bluetooth/bluedroid/classic_bt/bt_spp_acceptor/sdkconfig.defaults index ea64364f5..a30359952 100644 --- a/examples/bluetooth/bluedroid/classic_bt/bt_spp_acceptor/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/classic_bt/bt_spp_acceptor/sdkconfig.defaults @@ -1,9 +1,9 @@ # Override some defaults so BT stack is enabled # and WiFi disabled by default in this example CONFIG_BT_ENABLED=y -CONFIG_BTDM_CTRL_MODE_BLE_ONLY= +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=n CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=y -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BT_CLASSIC_ENABLED=y CONFIG_WIFI_ENABLED=n CONFIG_BT_SPP_ENABLED=y diff --git a/examples/bluetooth/bluedroid/classic_bt/bt_spp_initiator/sdkconfig.defaults b/examples/bluetooth/bluedroid/classic_bt/bt_spp_initiator/sdkconfig.defaults index ea64364f5..a30359952 100644 --- a/examples/bluetooth/bluedroid/classic_bt/bt_spp_initiator/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/classic_bt/bt_spp_initiator/sdkconfig.defaults @@ -1,9 +1,9 @@ # Override some defaults so BT stack is enabled # and WiFi disabled by default in this example CONFIG_BT_ENABLED=y -CONFIG_BTDM_CTRL_MODE_BLE_ONLY= +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=n CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=y -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BT_CLASSIC_ENABLED=y CONFIG_WIFI_ENABLED=n CONFIG_BT_SPP_ENABLED=y diff --git a/examples/bluetooth/bluedroid/classic_bt/bt_spp_vfs_acceptor/sdkconfig.defaults b/examples/bluetooth/bluedroid/classic_bt/bt_spp_vfs_acceptor/sdkconfig.defaults index ea64364f5..a30359952 100644 --- a/examples/bluetooth/bluedroid/classic_bt/bt_spp_vfs_acceptor/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/classic_bt/bt_spp_vfs_acceptor/sdkconfig.defaults @@ -1,9 +1,9 @@ # Override some defaults so BT stack is enabled # and WiFi disabled by default in this example CONFIG_BT_ENABLED=y -CONFIG_BTDM_CTRL_MODE_BLE_ONLY= +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=n CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=y -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BT_CLASSIC_ENABLED=y CONFIG_WIFI_ENABLED=n CONFIG_BT_SPP_ENABLED=y diff --git a/examples/bluetooth/bluedroid/classic_bt/bt_spp_vfs_initiator/sdkconfig.defaults b/examples/bluetooth/bluedroid/classic_bt/bt_spp_vfs_initiator/sdkconfig.defaults index ea64364f5..a30359952 100644 --- a/examples/bluetooth/bluedroid/classic_bt/bt_spp_vfs_initiator/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/classic_bt/bt_spp_vfs_initiator/sdkconfig.defaults @@ -1,9 +1,9 @@ # Override some defaults so BT stack is enabled # and WiFi disabled by default in this example CONFIG_BT_ENABLED=y -CONFIG_BTDM_CTRL_MODE_BLE_ONLY= +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=n CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=y -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BT_CLASSIC_ENABLED=y CONFIG_WIFI_ENABLED=n CONFIG_BT_SPP_ENABLED=y diff --git a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/sdkconfig.defaults b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/sdkconfig.defaults index ca97b3124..ee81cabed 100644 --- a/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/coex/a2dp_gatts_coex/sdkconfig.defaults @@ -1,8 +1,8 @@ # Override some defaults so BT stack is enabled and # Classic BT is enabled and BT_DRAM_RELEASE is disabled CONFIG_BT_ENABLED=y -CONFIG_BTDM_CTRL_MODE_BLE_ONLY= -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=n +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n CONFIG_BTDM_CTRL_MODE_BTDM=y CONFIG_BTDM_CTRL_PINNED_TO_CORE_0=y CONFIG_BTDM_CTRL_PINNED_TO_CORE_1=n diff --git a/examples/bluetooth/bluedroid/coex/gattc_gatts_coex/sdkconfig.defaults b/examples/bluetooth/bluedroid/coex/gattc_gatts_coex/sdkconfig.defaults index 8dbe56f4f..ee53a228d 100644 --- a/examples/bluetooth/bluedroid/coex/gattc_gatts_coex/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/coex/gattc_gatts_coex/sdkconfig.defaults @@ -2,5 +2,5 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n diff --git a/examples/bluetooth/bluedroid/hci/controller_hci_uart/sdkconfig.defaults b/examples/bluetooth/bluedroid/hci/controller_hci_uart/sdkconfig.defaults index 13c28e405..f4ece755b 100644 --- a/examples/bluetooth/bluedroid/hci/controller_hci_uart/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/hci/controller_hci_uart/sdkconfig.defaults @@ -5,8 +5,8 @@ # BT config # CONFIG_BT_ENABLED=y -CONFIG_BTDM_CTRL_MODE_BLE_ONLY= -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= +CONFIG_BTDM_CTRL_MODE_BLE_ONLY=n +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n CONFIG_BTDM_CTRL_MODE_BTDM=y CONFIG_BTDM_CTRL_BLE_MAX_CONN=9 CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN=7 diff --git a/examples/bluetooth/bluedroid/hci/controller_vhci_ble_adv/sdkconfig.defaults b/examples/bluetooth/bluedroid/hci/controller_vhci_ble_adv/sdkconfig.defaults index b3e403222..3bad2fdee 100644 --- a/examples/bluetooth/bluedroid/hci/controller_vhci_ble_adv/sdkconfig.defaults +++ b/examples/bluetooth/bluedroid/hci/controller_vhci_ble_adv/sdkconfig.defaults @@ -6,5 +6,5 @@ # CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n diff --git a/examples/bluetooth/esp_ble_mesh/ble_mesh_console/ble_mesh_node/sdkconfig.defaults b/examples/bluetooth/esp_ble_mesh/ble_mesh_console/ble_mesh_node/sdkconfig.defaults index 5920b6a5d..c017190ad 100644 --- a/examples/bluetooth/esp_ble_mesh/ble_mesh_console/ble_mesh_node/sdkconfig.defaults +++ b/examples/bluetooth/esp_ble_mesh/ble_mesh_console/ble_mesh_node/sdkconfig.defaults @@ -5,8 +5,8 @@ CONFIG_ESPTOOLPY_BAUD_921600B=y CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B=y CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_MODEM_SLEEP=n CONFIG_BTDM_BLE_SCAN_DUPL=y CONFIG_BTDM_SCAN_DUPL_TYPE=2 @@ -42,7 +42,7 @@ CONFIG_BLE_MESH_RX_SEG_MSG_COUNT=1 CONFIG_BLE_MESH_RX_SDU_MAX=384 CONFIG_BLE_MESH_TX_SEG_MAX=32 CONFIG_BLE_MESH_RELAY=y -CONFIG_BLE_MESH_LOW_POWER= -CONFIG_BLE_MESH_FRIEND= +CONFIG_BLE_MESH_LOW_POWER=n +CONFIG_BLE_MESH_FRIEND=n CONFIG_BLE_MESH_CFG_CLI=y CONFIG_BT_BTU_TASK_STACK_SIZE=4512 diff --git a/examples/bluetooth/esp_ble_mesh/ble_mesh_console/ble_mesh_provisioner/sdkconfig.defaults b/examples/bluetooth/esp_ble_mesh/ble_mesh_console/ble_mesh_provisioner/sdkconfig.defaults index 18210534d..2cfcfa14a 100644 --- a/examples/bluetooth/esp_ble_mesh/ble_mesh_console/ble_mesh_provisioner/sdkconfig.defaults +++ b/examples/bluetooth/esp_ble_mesh/ble_mesh_console/ble_mesh_provisioner/sdkconfig.defaults @@ -2,8 +2,8 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_MODEM_SLEEP=n CONFIG_BTDM_BLE_SCAN_DUPL=y CONFIG_BTDM_SCAN_DUPL_TYPE=2 @@ -29,8 +29,8 @@ CONFIG_BLE_MESH_NET_BUF_POOL_USAGE=y CONFIG_BLE_MESH_PB_GATT=y CONFIG_BLE_MESH_GATT_PROXY_SERVER=y CONFIG_BLE_MESH_RELAY=y -CONFIG_BLE_MESH_LOW_POWER= -CONFIG_BLE_MESH_FRIEND= +CONFIG_BLE_MESH_LOW_POWER=n +CONFIG_BLE_MESH_FRIEND=n CONFIG_BLE_MESH_MSG_CACHE_SIZE=10 CONFIG_BLE_MESH_ADV_BUF_COUNT=60 CONFIG_BLE_MESH_TX_SEG_MSG_COUNT=6 diff --git a/examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/sdkconfig.defaults b/examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/sdkconfig.defaults index b1a37395f..9412f7d91 100644 --- a/examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/sdkconfig.defaults +++ b/examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_client/sdkconfig.defaults @@ -2,8 +2,8 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_MODEM_SLEEP=n CONFIG_BTDM_BLE_SCAN_DUPL=y CONFIG_BTDM_SCAN_DUPL_TYPE=2 @@ -30,8 +30,8 @@ CONFIG_BLE_MESH_NET_BUF_POOL_USAGE=y CONFIG_BLE_MESH_PB_GATT=y CONFIG_BLE_MESH_GATT_PROXY_SERVER=n CONFIG_BLE_MESH_RELAY=y -CONFIG_BLE_MESH_LOW_POWER= -CONFIG_BLE_MESH_FRIEND= +CONFIG_BLE_MESH_LOW_POWER=n +CONFIG_BLE_MESH_FRIEND=n CONFIG_BT_BTU_TASK_STACK_SIZE=4512 CONFIG_BLE_MESH_CFG_CLI=y CONFIG_BLE_MESH_GENERIC_ONOFF_CLI=y diff --git a/examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/sdkconfig.defaults b/examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/sdkconfig.defaults index 41a148bdf..970540d62 100644 --- a/examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/sdkconfig.defaults +++ b/examples/bluetooth/esp_ble_mesh/ble_mesh_fast_provision/ble_mesh_fast_prov_server/sdkconfig.defaults @@ -2,8 +2,8 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_MODEM_SLEEP=n CONFIG_BTDM_BLE_SCAN_DUPL=y CONFIG_BTDM_SCAN_DUPL_TYPE=2 @@ -38,8 +38,8 @@ CONFIG_BLE_MESH_MODEL_GROUP_COUNT=3 CONFIG_BLE_MESH_PB_GATT=y CONFIG_BLE_MESH_GATT_PROXY_SERVER=y CONFIG_BLE_MESH_RELAY=y -CONFIG_BLE_MESH_LOW_POWER= -CONFIG_BLE_MESH_FRIEND= +CONFIG_BLE_MESH_LOW_POWER=n +CONFIG_BLE_MESH_FRIEND=n CONFIG_BT_BTU_TASK_STACK_SIZE=4512 CONFIG_BLE_MESH_CFG_CLI=y CONFIG_BLE_MESH_CRPL=60 diff --git a/examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/sdkconfig.defaults b/examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/sdkconfig.defaults index 58f6fe820..6a5db41ee 100644 --- a/examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/sdkconfig.defaults +++ b/examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_client/sdkconfig.defaults @@ -2,8 +2,8 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_MODEM_SLEEP=n CONFIG_BTDM_BLE_SCAN_DUPL=y CONFIG_BTDM_SCAN_DUPL_TYPE=2 @@ -26,7 +26,7 @@ CONFIG_BLE_MESH_PB_GATT=y CONFIG_BLE_MESH_GATT_PROXY_SERVER=y CONFIG_BLE_MESH_NODE_ID_TIMEOUT=60 CONFIG_BLE_MESH_PROXY_FILTER_SIZE=1 -CONFIG_BLE_MESH_IV_UPDATE_TEST= +CONFIG_BLE_MESH_IV_UPDATE_TEST=n CONFIG_BLE_MESH_SUBNET_COUNT=1 CONFIG_BLE_MESH_APP_KEY_COUNT=1 CONFIG_BLE_MESH_MODEL_KEY_COUNT=1 @@ -40,8 +40,8 @@ CONFIG_BLE_MESH_RX_SEG_MSG_COUNT=1 CONFIG_BLE_MESH_RX_SDU_MAX=384 CONFIG_BLE_MESH_TX_SEG_MAX=32 CONFIG_BLE_MESH_RELAY=y -CONFIG_BLE_MESH_LOW_POWER= -CONFIG_BLE_MESH_FRIEND= -CONFIG_BLE_MESH_CFG_CLI= +CONFIG_BLE_MESH_LOW_POWER=n +CONFIG_BLE_MESH_FRIEND=n +CONFIG_BLE_MESH_CFG_CLI=n CONFIG_BLE_MESH_GENERIC_ONOFF_CLI=y CONFIG_BT_BTU_TASK_STACK_SIZE=4512 diff --git a/examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/sdkconfig.defaults b/examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/sdkconfig.defaults index 2d34f548b..0883ed0b6 100644 --- a/examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/sdkconfig.defaults +++ b/examples/bluetooth/esp_ble_mesh/ble_mesh_node/onoff_server/sdkconfig.defaults @@ -2,8 +2,8 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_MODEM_SLEEP=n CONFIG_BTDM_BLE_SCAN_DUPL=y CONFIG_BTDM_SCAN_DUPL_TYPE=2 @@ -39,7 +39,7 @@ CONFIG_BLE_MESH_RX_SEG_MSG_COUNT=1 CONFIG_BLE_MESH_RX_SDU_MAX=384 CONFIG_BLE_MESH_TX_SEG_MAX=32 CONFIG_BLE_MESH_RELAY=y -CONFIG_BLE_MESH_LOW_POWER= -CONFIG_BLE_MESH_FRIEND= +CONFIG_BLE_MESH_LOW_POWER=n +CONFIG_BLE_MESH_FRIEND=n CONFIG_BLE_MESH_CFG_CLI=y CONFIG_BT_BTU_TASK_STACK_SIZE=4512 diff --git a/examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/sdkconfig.defaults b/examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/sdkconfig.defaults index e62771fe6..cabb4af85 100644 --- a/examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/sdkconfig.defaults +++ b/examples/bluetooth/esp_ble_mesh/ble_mesh_provisioner/sdkconfig.defaults @@ -2,8 +2,8 @@ # by default in this example CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_MODEM_SLEEP=n CONFIG_BTDM_BLE_SCAN_DUPL=y CONFIG_BTDM_SCAN_DUPL_TYPE=2 @@ -30,8 +30,8 @@ CONFIG_BLE_MESH_NET_BUF_POOL_USAGE=y CONFIG_BLE_MESH_PB_GATT=y CONFIG_BLE_MESH_GATT_PROXY_SERVER=n CONFIG_BLE_MESH_RELAY=y -CONFIG_BLE_MESH_LOW_POWER= -CONFIG_BLE_MESH_FRIEND= +CONFIG_BLE_MESH_LOW_POWER=n +CONFIG_BLE_MESH_FRIEND=n CONFIG_BLE_MESH_ADV_BUF_COUNT=60 CONFIG_BLE_MESH_TX_SEG_MSG_COUNT=6 CONFIG_BLE_MESH_RX_SEG_MSG_COUNT=6 diff --git a/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_models/fast_prov_vendor_model/sdkconfig.defaults b/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_models/fast_prov_vendor_model/sdkconfig.defaults index 5eb9cdb3b..5ebe2b8c9 100644 --- a/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_models/fast_prov_vendor_model/sdkconfig.defaults +++ b/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_models/fast_prov_vendor_model/sdkconfig.defaults @@ -18,8 +18,8 @@ CONFIG_BLE_MESH_NET_BUF_POOL_USAGE=y CONFIG_BLE_MESH_PB_GATT=y CONFIG_BLE_MESH_GATT_PROXY_SERVER=y CONFIG_BLE_MESH_RELAY=y -CONFIG_BLE_MESH_LOW_POWER= -CONFIG_BLE_MESH_FRIEND= +CONFIG_BLE_MESH_LOW_POWER=n +CONFIG_BLE_MESH_FRIEND=n CONFIG_BT_BTU_TASK_STACK_SIZE=4512 CONFIG_BLE_MESH_CFG_CLI=y CONFIG_BLE_MESH_CRPL=60 diff --git a/examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/sdkconfig.defaults b/examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/sdkconfig.defaults index e3288b90b..087afa8a3 100644 --- a/examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/sdkconfig.defaults +++ b/examples/bluetooth/esp_ble_mesh/ble_mesh_wifi_coexist/sdkconfig.defaults @@ -6,8 +6,8 @@ CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 CONFIG_MEMMAP_SMP=y CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BTDM_MODEM_SLEEP=n CONFIG_BTDM_BLE_SCAN_DUPL=y CONFIG_BTDM_SCAN_DUPL_TYPE=2 @@ -38,8 +38,8 @@ CONFIG_BLE_MESH_NET_BUF_POOL_USAGE=y CONFIG_BLE_MESH_PB_GATT=y CONFIG_BLE_MESH_GATT_PROXY_SERVER=y CONFIG_BLE_MESH_RELAY=y -CONFIG_BLE_MESH_LOW_POWER= -CONFIG_BLE_MESH_FRIEND= +CONFIG_BLE_MESH_LOW_POWER=n +CONFIG_BLE_MESH_FRIEND=n CONFIG_BT_BTU_TASK_STACK_SIZE=4512 CONFIG_BLE_MESH_CFG_CLI=y CONFIG_BLE_MESH_GENERIC_ONOFF_CLI=y @@ -63,18 +63,18 @@ CONFIG_ESP32_WIFI_TX_BA_WIN=32 CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP32_WIFI_RX_BA_WIN=32 -CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_UNICORE=n CONFIG_FREERTOS_HZ=1000 -CONFIG_ESP_INT_WDT= -CONFIG_ESP_TASK_WDT= +CONFIG_ESP_INT_WDT=n +CONFIG_ESP_TASK_WDT=n CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 CONFIG_LWIP_TCP_WND_DEFAULT=65534 CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 -CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC=n CONFIG_ESPTOOLPY_FLASHMODE_QIO=y CONFIG_ESPTOOLPY_FLASHFREQ_40M=y diff --git a/examples/bluetooth/nimble/blecent/sdkconfig.defaults b/examples/bluetooth/nimble/blecent/sdkconfig.defaults index 4fa07777f..c829fc5c0 100644 --- a/examples/bluetooth/nimble/blecent/sdkconfig.defaults +++ b/examples/bluetooth/nimble/blecent/sdkconfig.defaults @@ -6,7 +6,7 @@ # CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= -CONFIG_BT_BLUEDROID_ENABLED= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n CONFIG_BT_NIMBLE_ENABLED=y diff --git a/examples/bluetooth/nimble/blehr/sdkconfig.defaults b/examples/bluetooth/nimble/blehr/sdkconfig.defaults index 4fa07777f..c829fc5c0 100644 --- a/examples/bluetooth/nimble/blehr/sdkconfig.defaults +++ b/examples/bluetooth/nimble/blehr/sdkconfig.defaults @@ -6,7 +6,7 @@ # CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= -CONFIG_BT_BLUEDROID_ENABLED= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n CONFIG_BT_NIMBLE_ENABLED=y diff --git a/examples/bluetooth/nimble/blemesh/sdkconfig.defaults b/examples/bluetooth/nimble/blemesh/sdkconfig.defaults index 7c8e90fad..991dda58d 100644 --- a/examples/bluetooth/nimble/blemesh/sdkconfig.defaults +++ b/examples/bluetooth/nimble/blemesh/sdkconfig.defaults @@ -6,8 +6,8 @@ # CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= -CONFIG_BT_BLUEDROID_ENABLED= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n CONFIG_BT_NIMBLE_ENABLED=y CONFIG_BT_NIMBLE_MESH=y diff --git a/examples/bluetooth/nimble/bleprph/sdkconfig.defaults b/examples/bluetooth/nimble/bleprph/sdkconfig.defaults index 4fa07777f..c829fc5c0 100644 --- a/examples/bluetooth/nimble/bleprph/sdkconfig.defaults +++ b/examples/bluetooth/nimble/bleprph/sdkconfig.defaults @@ -6,7 +6,7 @@ # CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= -CONFIG_BT_BLUEDROID_ENABLED= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n +CONFIG_BT_BLUEDROID_ENABLED=n CONFIG_BT_NIMBLE_ENABLED=y diff --git a/examples/get-started/hello_world/sdkconfig.ci b/examples/get-started/hello_world/sdkconfig.ci index c8b9cae75..f180aef23 100644 --- a/examples/get-started/hello_world/sdkconfig.ci +++ b/examples/get-started/hello_world/sdkconfig.ci @@ -1,6 +1,6 @@ CONFIG_APP_BUILD_TYPE_ELF_RAM=y -CONFIG_VFS_SUPPORT_TERMIOS= +CONFIG_VFS_SUPPORT_TERMIOS=n CONFIG_NEWLIB_NANO_FORMAT=y CONFIG_ESP32_PANIC_PRINT_HALT=y -CONFIG_ESP32_DEBUG_STUBS_ENABLE= -CONFIG_ESP_ERR_TO_NAME_LOOKUP= +CONFIG_ESP32_DEBUG_STUBS_ENABLE=n +CONFIG_ESP_ERR_TO_NAME_LOOKUP=n diff --git a/examples/provisioning/ble_prov/sdkconfig.defaults b/examples/provisioning/ble_prov/sdkconfig.defaults index e28cc0506..37eeb5f8e 100644 --- a/examples/provisioning/ble_prov/sdkconfig.defaults +++ b/examples/provisioning/ble_prov/sdkconfig.defaults @@ -1,8 +1,8 @@ # Override some defaults so BT stack is enabled and CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n # Binary is larger than default size CONFIG_PARTITION_TABLE_CUSTOM=y diff --git a/examples/provisioning/manager/sdkconfig.defaults b/examples/provisioning/manager/sdkconfig.defaults index b8548ff9d..9125e679d 100644 --- a/examples/provisioning/manager/sdkconfig.defaults +++ b/examples/provisioning/manager/sdkconfig.defaults @@ -1,8 +1,8 @@ # Override some defaults so BT stack is enabled and CONFIG_BT_ENABLED=y CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y -CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY= -CONFIG_BTDM_CTRL_MODE_BTDM= +CONFIG_BTDM_CTRL_MODE_BR_EDR_ONLY=n +CONFIG_BTDM_CTRL_MODE_BTDM=n CONFIG_BT_NIMBLE_ENABLED=y ## For Bluedroid as binary is larger than default size diff --git a/examples/system/himem/sdkconfig.defaults b/examples/system/himem/sdkconfig.defaults index b08e7fa95..545334af9 100644 --- a/examples/system/himem/sdkconfig.defaults +++ b/examples/system/himem/sdkconfig.defaults @@ -1,6 +1,6 @@ CONFIG_ESP32_SPIRAM_SUPPORT=y CONFIG_SPIRAM_BOOT_INIT=y -CONFIG_SPIRAM_IGNORE_NOTFOUND= +CONFIG_SPIRAM_IGNORE_NOTFOUND=n CONFIG_SPIRAM_USE_MALLOC=y CONFIG_SPIRAM_TYPE_AUTO=y CONFIG_SPIRAM_SIZE=-1 diff --git a/examples/system/sysview_tracing_heap_log/sdkconfig.defaults b/examples/system/sysview_tracing_heap_log/sdkconfig.defaults index 26ca10d1d..abe211ddf 100644 --- a/examples/system/sysview_tracing_heap_log/sdkconfig.defaults +++ b/examples/system/sysview_tracing_heap_log/sdkconfig.defaults @@ -23,6 +23,6 @@ CONFIG_SYSVIEW_EVT_IDLE_ENABLE=y CONFIG_SYSVIEW_EVT_TIMER_ENTER_ENABLE=y CONFIG_SYSVIEW_EVT_TIMER_EXIT_ENABLE=y # Disable color output in logs -CONFIG_LOG_COLORS= +CONFIG_LOG_COLORS=n # Enable heap tracing to host CONFIG_HEAP_TRACING_TOHOST=y diff --git a/examples/system/unit_test/test/sdkconfig.defaults b/examples/system/unit_test/test/sdkconfig.defaults index 11ea46136..a1f2ef6f8 100644 --- a/examples/system/unit_test/test/sdkconfig.defaults +++ b/examples/system/unit_test/test/sdkconfig.defaults @@ -1 +1 @@ -CONFIG_ESP_TASK_WDT= +CONFIG_ESP_TASK_WDT=n diff --git a/examples/wifi/iperf/sdkconfig.ci.00 b/examples/wifi/iperf/sdkconfig.ci.00 index 438fe641b..ca2a31cf6 100644 --- a/examples/wifi/iperf/sdkconfig.ci.00 +++ b/examples/wifi/iperf/sdkconfig.ci.00 @@ -2,5 +2,5 @@ CONFIG_MEMMAP_SMP=y CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096 -CONFIG_ESP_INT_WDT= -CONFIG_ESP_TASK_WDT= +CONFIG_ESP_INT_WDT=n +CONFIG_ESP_TASK_WDT=n diff --git a/examples/wifi/iperf/sdkconfig.ci.01 b/examples/wifi/iperf/sdkconfig.ci.01 index 6393e8d34..0cea3afaa 100644 --- a/examples/wifi/iperf/sdkconfig.ci.01 +++ b/examples/wifi/iperf/sdkconfig.ci.01 @@ -1,11 +1,11 @@ CONFIG_MEMMAP_SMP=y -CONFIG_ESP_INT_WDT= -CONFIG_ESP_TASK_WDT= +CONFIG_ESP_INT_WDT=n +CONFIG_ESP_TASK_WDT=n CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096 -CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_UNICORE=n CONFIG_FREERTOS_HZ=1000 CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=12 @@ -21,5 +21,5 @@ CONFIG_LWIP_TCP_WND_DEFAULT=11488 CONFIG_LWIP_TCP_RECVMBOX_SIZE=12 CONFIG_LWIP_UDP_RECVMBOX_SIZE=12 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=48 -CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC=n diff --git a/examples/wifi/iperf/sdkconfig.ci.02 b/examples/wifi/iperf/sdkconfig.ci.02 index be98dffad..0d3476911 100644 --- a/examples/wifi/iperf/sdkconfig.ci.02 +++ b/examples/wifi/iperf/sdkconfig.ci.02 @@ -1,11 +1,11 @@ CONFIG_MEMMAP_SMP=y -CONFIG_ESP_INT_WDT= -CONFIG_ESP_TASK_WDT= +CONFIG_ESP_INT_WDT=n +CONFIG_ESP_TASK_WDT=n CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096 -CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_UNICORE=n CONFIG_FREERTOS_HZ=1000 CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=16 @@ -21,5 +21,5 @@ CONFIG_LWIP_TCP_WND_DEFAULT=11488 CONFIG_LWIP_TCP_RECVMBOX_SIZE=12 CONFIG_LWIP_UDP_RECVMBOX_SIZE=12 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=48 -CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC=n diff --git a/examples/wifi/iperf/sdkconfig.ci.03 b/examples/wifi/iperf/sdkconfig.ci.03 index ac93ca610..521d0a19d 100644 --- a/examples/wifi/iperf/sdkconfig.ci.03 +++ b/examples/wifi/iperf/sdkconfig.ci.03 @@ -1,11 +1,11 @@ CONFIG_MEMMAP_SMP=y -CONFIG_ESP_INT_WDT= -CONFIG_ESP_TASK_WDT= +CONFIG_ESP_INT_WDT=n +CONFIG_ESP_TASK_WDT=n CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096 -CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_UNICORE=n CONFIG_FREERTOS_HZ=1000 CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=16 @@ -21,5 +21,5 @@ CONFIG_LWIP_TCP_WND_DEFAULT=32768 CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 -CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC=n diff --git a/examples/wifi/iperf/sdkconfig.ci.04 b/examples/wifi/iperf/sdkconfig.ci.04 index 8805c8a3c..4aaeca925 100644 --- a/examples/wifi/iperf/sdkconfig.ci.04 +++ b/examples/wifi/iperf/sdkconfig.ci.04 @@ -1,11 +1,11 @@ CONFIG_MEMMAP_SMP=y -CONFIG_ESP_INT_WDT= -CONFIG_ESP_TASK_WDT= +CONFIG_ESP_INT_WDT=n +CONFIG_ESP_TASK_WDT=n CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096 -CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_UNICORE=n CONFIG_FREERTOS_HZ=1000 CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=16 @@ -21,5 +21,5 @@ CONFIG_LWIP_TCP_WND_DEFAULT=65535 CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 -CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC=n diff --git a/examples/wifi/iperf/sdkconfig.ci.05 b/examples/wifi/iperf/sdkconfig.ci.05 index cb287b13d..27ca6f088 100644 --- a/examples/wifi/iperf/sdkconfig.ci.05 +++ b/examples/wifi/iperf/sdkconfig.ci.05 @@ -1,11 +1,11 @@ CONFIG_MEMMAP_SMP=y -CONFIG_ESP_INT_WDT= -CONFIG_ESP_TASK_WDT= +CONFIG_ESP_INT_WDT=n +CONFIG_ESP_TASK_WDT=n CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=4096 -CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_UNICORE=n CONFIG_FREERTOS_HZ=1000 CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=16 @@ -21,7 +21,7 @@ CONFIG_LWIP_TCP_WND_DEFAULT=65534 CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 -CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC=n CONFIG_ESPTOOLPY_FLASHMODE_QIO=y CONFIG_ESPTOOLPY_FLASHFREQ_80M=y diff --git a/examples/wifi/iperf/sdkconfig.ci.06 b/examples/wifi/iperf/sdkconfig.ci.06 index 1b35b695e..6d47f8f85 100644 --- a/examples/wifi/iperf/sdkconfig.ci.06 +++ b/examples/wifi/iperf/sdkconfig.ci.06 @@ -11,15 +11,15 @@ CONFIG_ESP32_WIFI_RX_BA_WIN=32 CONFIG_FREERTOS_UNICORE=y CONFIG_FREERTOS_HZ=1000 -CONFIG_ESP_INT_WDT= -CONFIG_ESP_TASK_WDT= +CONFIG_ESP_INT_WDT=n +CONFIG_ESP_TASK_WDT=n CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 CONFIG_LWIP_TCP_WND_DEFAULT=65534 CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 -CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC=n CONFIG_ESPTOOLPY_FLASHMODE_QIO=y CONFIG_ESPTOOLPY_FLASHFREQ_80M=y diff --git a/examples/wifi/iperf/sdkconfig.ci.07 b/examples/wifi/iperf/sdkconfig.ci.07 index 4fc230161..f251e0a2d 100644 --- a/examples/wifi/iperf/sdkconfig.ci.07 +++ b/examples/wifi/iperf/sdkconfig.ci.07 @@ -12,18 +12,18 @@ CONFIG_ESP32_WIFI_TX_BA_WIN=32 CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP32_WIFI_RX_BA_WIN=32 -CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_UNICORE=n CONFIG_FREERTOS_HZ=1000 -CONFIG_ESP_INT_WDT= -CONFIG_ESP_TASK_WDT= +CONFIG_ESP_INT_WDT=n +CONFIG_ESP_TASK_WDT=n CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 CONFIG_LWIP_TCP_WND_DEFAULT=65534 CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 -CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC=n CONFIG_ESPTOOLPY_FLASHMODE_QIO=y CONFIG_ESPTOOLPY_FLASHFREQ_80M=y diff --git a/examples/wifi/iperf/sdkconfig.ci.99 b/examples/wifi/iperf/sdkconfig.ci.99 index c7e50345b..52c69eb3d 100644 --- a/examples/wifi/iperf/sdkconfig.ci.99 +++ b/examples/wifi/iperf/sdkconfig.ci.99 @@ -12,18 +12,18 @@ CONFIG_ESP32_WIFI_TX_BA_WIN=32 CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP32_WIFI_RX_BA_WIN=32 -CONFIG_FREERTOS_UNICORE= +CONFIG_FREERTOS_UNICORE=n CONFIG_FREERTOS_HZ=1000 -CONFIG_ESP_INT_WDT= -CONFIG_ESP_TASK_WDT= +CONFIG_ESP_INT_WDT=n +CONFIG_ESP_TASK_WDT=n CONFIG_LWIP_TCP_SND_BUF_DEFAULT=65534 CONFIG_LWIP_TCP_WND_DEFAULT=65534 CONFIG_LWIP_TCP_RECVMBOX_SIZE=64 CONFIG_LWIP_UDP_RECVMBOX_SIZE=64 CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64 -CONFIG_LWIP_ETHARP_TRUST_IP_MAC= +CONFIG_LWIP_ETHARP_TRUST_IP_MAC=n CONFIG_ESPTOOLPY_FLASHMODE_QIO=y CONFIG_ESPTOOLPY_FLASHFREQ_80M=y From d0e1edcd534bf7165fee94a5f0b7d060ff5ae889 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Fri, 18 Oct 2019 19:26:57 +0200 Subject: [PATCH 10/11] examples: add 2 CI build/test configurations for system/console --- examples/system/console/example_test.py | 29 +++++++++++++++++++ .../console/main/console_example_main.c | 7 +++++ examples/system/console/sdkconfig.ci.history | 1 + .../system/console/sdkconfig.ci.nohistory | 1 + 4 files changed, 38 insertions(+) create mode 100644 examples/system/console/example_test.py create mode 100644 examples/system/console/sdkconfig.ci.history create mode 100644 examples/system/console/sdkconfig.ci.nohistory diff --git a/examples/system/console/example_test.py b/examples/system/console/example_test.py new file mode 100644 index 000000000..23b25ef00 --- /dev/null +++ b/examples/system/console/example_test.py @@ -0,0 +1,29 @@ +from __future__ import print_function +import os +import sys + +try: + import IDF +except ImportError: + test_fw_path = os.getenv('TEST_FW_PATH') + if test_fw_path and test_fw_path not in sys.path: + sys.path.insert(0, test_fw_path) + import IDF + + +@IDF.idf_example_test(env_tag='Example_WIFI') +def test_examples_system_console(env, extra_data): + dut = env.get_dut('console_example', 'examples/system/console', app_config_name='history') + print("Using binary path: {}".format(dut.app.binary_path)) + dut.start_app() + dut.expect("Command history enabled") + env.close_dut(dut.name) + + dut = env.get_dut('console_example', 'examples/system/console', app_config_name='nohistory') + print("Using binary path: {}".format(dut.app.binary_path)) + dut.start_app() + dut.expect("Command history disabled") + + +if __name__ == '__main__': + test_examples_system_console() diff --git a/examples/system/console/main/console_example_main.c b/examples/system/console/main/console_example_main.c index 2348ac12e..0255da410 100644 --- a/examples/system/console/main/console_example_main.c +++ b/examples/system/console/main/console_example_main.c @@ -59,6 +59,10 @@ static void initialize_nvs(void) static void initialize_console(void) { + /* Drain stdout before reconfiguring it */ + fflush(stdout); + fsync(fileno(stdout)); + /* Disable buffering on stdin */ setvbuf(stdin, NULL, _IONBF, 0); @@ -121,6 +125,9 @@ void app_main(void) #if CONFIG_STORE_HISTORY initialize_filesystem(); + ESP_LOGI(TAG, "Command history enabled"); +#else + ESP_LOGI(TAG, "Command history disabled"); #endif initialize_console(); diff --git a/examples/system/console/sdkconfig.ci.history b/examples/system/console/sdkconfig.ci.history new file mode 100644 index 000000000..bcd6e9beb --- /dev/null +++ b/examples/system/console/sdkconfig.ci.history @@ -0,0 +1 @@ +CONFIG_STORE_HISTORY=y diff --git a/examples/system/console/sdkconfig.ci.nohistory b/examples/system/console/sdkconfig.ci.nohistory new file mode 100644 index 000000000..1b149540f --- /dev/null +++ b/examples/system/console/sdkconfig.ci.nohistory @@ -0,0 +1 @@ +CONFIG_STORE_HISTORY=n From 910f49942ed0b3f516c184ffe6d71b92a233aab0 Mon Sep 17 00:00:00 2001 From: Ivan Grokhotkov Date: Tue, 19 Nov 2019 12:22:52 +0100 Subject: [PATCH 11/11] examples: fix test function name in cpp_rtti example --- examples/system/cpp_rtti/example_test.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/system/cpp_rtti/example_test.py b/examples/system/cpp_rtti/example_test.py index 8d0d9d7f7..af63c98d4 100644 --- a/examples/system/cpp_rtti/example_test.py +++ b/examples/system/cpp_rtti/example_test.py @@ -16,7 +16,7 @@ except ImportError: @IDF.idf_example_test(env_tag='Example_WIFI') -def test_real_time_stats_example(env, extra_data): +def test_cpp_rtti_example(env, extra_data): dut = env.get_dut('cpp_rtti', 'examples/system/cpp_rtti') dut.start_app() @@ -34,4 +34,4 @@ def test_real_time_stats_example(env, extra_data): if __name__ == '__main__': - test_real_time_stats_example() + test_cpp_rtti_example()