diff --git a/tools/ci/check-executable.sh b/tools/ci/check-executable.sh index 35b1b7704..eca5225b0 100755 --- a/tools/ci/check-executable.sh +++ b/tools/ci/check-executable.sh @@ -2,9 +2,16 @@ # This script finds executable files in the repository, excluding some directories, # then prints the list of all files which are not in executable-list.txt. # Returns with error if this list is non-empty. +# Also checks if executable-list.txt is sorted and has no duplicates. + +set -o errexit # Exit if command failed. +set -o pipefail # Exit if pipe failed. +set -o nounset # Exit if variable not set. + cd $IDF_PATH +in_list=tools/ci/executable-list.txt tmp_list=$(mktemp) out_list=$(mktemp) @@ -27,7 +34,7 @@ find . -type d \( \ | sed "s|^\./||" > $tmp_list # this looks for lines present in tmp_list but not in executable-list.txt -comm -13 <(cat tools/ci/executable-list.txt | sed -n "/^#/!p" | sort) <(sort $tmp_list) > $out_list +comm -13 <(cat $in_list | sed -n "/^#/!p" | sort) <(sort $tmp_list) > $out_list ret=0 if [ -s $out_list ]; then @@ -42,6 +49,17 @@ if [ -s $out_list ]; then echo "" fi +if ! diff <(cat $in_list | sed -n "/^#/!p" | sort | uniq) $in_list; then + echo "$in_list is not sorted or has duplicate entries" + ret=2 +fi + +for filename in $(cat $in_list | sed -n "/^#/!p"); do + if [ ! -f "$filename" ]; then + echo "Warning: file '$filename' is present in '$in_list', but does not exist" + fi +done + rm $tmp_list rm $out_list diff --git a/tools/ci/executable-list.txt b/tools/ci/executable-list.txt index 14071ab2e..3324c758a 100644 --- a/tools/ci/executable-list.txt +++ b/tools/ci/executable-list.txt @@ -1,39 +1,49 @@ -# Some tools -components/app_update/gen_empty_partition.py -tools/elf_to_ld.sh +components/app_update/otatool.py +components/efuse/efuse_table_gen.py +components/efuse/test_efuse_host/efuse_tests.py components/espcoredump/espcoredump.py +components/espcoredump/test/test_espcoredump.py +components/espcoredump/test/test_espcoredump.sh components/heap/test_multi_heap_host/test_all_configs.sh components/idf_test/unit_test/TestCaseScript/IDFUnitTest/__init__.py components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py -components/efuse/efuse_table_gen.py -components/efuse/test_efuse_host/efuse_tests.py components/partition_table/gen_esp32part.py components/partition_table/parttool.py -components/app_update/gen_empty_partition.py -components/app_update/otatool.py components/partition_table/test_gen_esp32part_host/gen_esp32part_tests.py -components/ulp/esp32ulp_mapgen.py components/spiffs/spiffsgen.py +components/ulp/esp32ulp_mapgen.py docs/check_doc_warnings.sh docs/check_lang_folder_sync.sh -docs/gen-kconfig-doc.py +docs/gen-dxd.py docs/gen-version-specific-includes.py +examples/build_system/cmake/idf_as_lib/build-esp32.sh +examples/build_system/cmake/idf_as_lib/build.sh +examples/build_system/cmake/idf_as_lib/run-esp32.sh +examples/build_system/cmake/idf_as_lib/run.sh +examples/storage/parttool/parttool_example.py +examples/system/ota/otatool/otatool_example.py +tools/check_kconfigs.py +tools/check_python_dependencies.py tools/ci/apply_bot_filter.py 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_examples_cmake_make.sh +tools/ci/check_ut_cmake_make.sh tools/ci/checkout_project_ref.py tools/ci/envsubst.py tools/ci/get-full-sources.sh tools/ci/mirror-submodule-update.sh tools/ci/mirror-synchronize.sh +tools/ci/multirun_with_pyenv.sh tools/ci/push_to_github.sh tools/ci/test_build_system.sh tools/ci/test_build_system_cmake.sh tools/ci/test_configure_ci_environment.sh tools/cmake/convert_to_cmake.py tools/cmake/run_cmake_lint.sh +tools/elf_to_ld.sh tools/esp_app_trace/logtrace_proc.py tools/esp_app_trace/sysviewtrace_proc.py tools/esp_app_trace/test/logtrace/test.sh @@ -44,40 +54,19 @@ tools/idf.py tools/idf_monitor.py tools/idf_size.py tools/kconfig/check.sh -tools/kconfig/conf tools/kconfig/lxdialog/check-lxdialog.sh -tools/kconfig/mconf tools/kconfig/merge_config.sh tools/kconfig/streamline_config.pl -tools/mass_mfg/mfg_gen.py -tools/test_idf_monitor/run_test_idf_monitor.py -tools/unit-test-app/unit_test.py -tools/windows/eclipse_make.sh -tools/ci/build_examples_cmake.sh -tools/ci/test_build_system_cmake.sh -tools/ci/check_examples_cmake_make.sh -tools/ci/check_ut_cmake_make.sh -tools/cmake/convert_to_cmake.py -tools/cmake/run_cmake_lint.sh -tools/idf.py tools/kconfig_new/confgen.py tools/kconfig_new/confserver.py tools/kconfig_new/test/test_confserver.py -tools/windows/tool_setup/build_installer.sh -tools/test_idf_size/test.sh -tools/check_python_dependencies.py -docs/gen-dxd.py -tools/ci/multirun_with_pyenv.sh -components/espcoredump/test/test_espcoredump.py -components/espcoredump/test/test_espcoredump.sh tools/ldgen/ldgen.py tools/ldgen/test/test_fragments.py tools/ldgen/test/test_generation.py -examples/build_system/cmake/idf_as_lib/build-esp32.sh -examples/build_system/cmake/idf_as_lib/build.sh -examples/build_system/cmake/idf_as_lib/run-esp32.sh -examples/build_system/cmake/idf_as_lib/run.sh -examples/storage/parttool/parttool_example.py -examples/system/ota/otatool/otatool_example.py -tools/check_kconfigs.py +tools/mass_mfg/mfg_gen.py tools/test_check_kconfigs.py +tools/test_idf_monitor/run_test_idf_monitor.py +tools/test_idf_size/test.sh +tools/unit-test-app/unit_test.py +tools/windows/eclipse_make.sh +tools/windows/tool_setup/build_installer.sh