From a089e0d6800ad20b090baa32ae033571f93bf198 Mon Sep 17 00:00:00 2001 From: David Cermak Date: Tue, 7 Mar 2023 08:27:54 +0100 Subject: [PATCH] fix(esp_modem): run CI build job for all targets Also * removed IDFv4.1 from tests * added common build_apps.py utility for finding/building apps --- .github/workflows/target-test.yml | 54 ++++++----------- ci/build_apps.py | 60 +++++++++++++++++++ .../esp_modem/examples/.build-test-rules.yml | 7 +++ .../examples/ap_to_pppos/main/CMakeLists.txt | 4 +- .../examples/ap_to_pppos/main/ap_to_pppos.c | 4 +- .../{sdkconfig.ci.usb => sdkconfig.ci.usb_s2} | 1 + .../sdkconfig.ci.usb_s3} | 1 + .../examples/pppos_client/sdkconfig.ci.sim800 | 1 + .../examples/pppos_client/sdkconfig.ci.usb_s2 | 2 + .../examples/pppos_client/sdkconfig.ci.usb_s3 | 2 + 10 files changed, 97 insertions(+), 39 deletions(-) create mode 100644 ci/build_apps.py create mode 100644 components/esp_modem/examples/.build-test-rules.yml rename components/esp_modem/examples/modem_console/{sdkconfig.ci.usb => sdkconfig.ci.usb_s2} (55%) rename components/esp_modem/examples/{pppos_client/sdkconfig.ci.usb => modem_console/sdkconfig.ci.usb_s3} (55%) create mode 100644 components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_s2 create mode 100644 components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_s3 diff --git a/.github/workflows/target-test.yml b/.github/workflows/target-test.yml index f201d3921..32afc636b 100644 --- a/.github/workflows/target-test.yml +++ b/.github/workflows/target-test.yml @@ -6,56 +6,38 @@ jobs: build_esp_modem: strategy: matrix: - idf_ver: ["latest", "release-v4.1", "release-v4.2", "release-v4.3", "release-v4.4", "release-v5.0"] + idf_ver: ["latest", "release-v4.2", "release-v4.3", "release-v4.4", "release-v5.0"] example: ["pppos_client", "modem_console", "ap_to_pppos", "simple_cmux_client"] - idf_target: ["esp32"] exclude: - - idf_ver: "release-v4.1" - example: modem_console - - idf_ver: "release-v4.1" - example: ap_to_pppos - - idf_ver: "release-v4.1" - example: simple_cmux_client - idf_ver: "release-v4.2" example: simple_cmux_client - - runs-on: ubuntu-20.04 - container: espressif/idf:${{ matrix.idf_ver }} - steps: - - name: Checkout esp-protocols - uses: actions/checkout@master - with: - path: esp-protocols - - name: Build ${{ matrix.example }} with IDF-${{ matrix.idf_ver }} for ${{ matrix.idf_target }} - env: - IDF_TARGET: ${{ matrix.idf_target }} - shell: bash - run: | - . ${IDF_PATH}/export.sh - cd $GITHUB_WORKSPACE/esp-protocols/components/esp_modem/examples/${{ matrix.example }} - idf.py build - - build_esp_modem_usb: - strategy: - matrix: - idf_ver: ["latest", "release-v4.4", "release-v5.0"] - example: ["modem_console", "pppos_client"] - idf_target: ["esp32s2", "esp32s3"] + include: + - idf_ver: "release-v4.2" + skip_config: usb + - idf_ver: "release-v4.3" + skip_config: usb + - idf_ver: "release-v5.0" + example: "simple_cmux_client" + warning: "Warning: The smallest app partition is nearly full" runs-on: ubuntu-20.04 container: espressif/idf:${{ matrix.idf_ver }} steps: - name: Checkout esp-protocols uses: actions/checkout@v3 - - name: Build ${{ matrix.example }} with IDF-${{ matrix.idf_ver }} for ${{ matrix.idf_target }} - working-directory: components/esp_modem/examples/${{ matrix.example }} + with: + path: protocols + - if: ${{ matrix.skip_config }} + run: rm -f $GITHUB_WORKSPACE/protocols/components/esp_modem/examples/${{ matrix.example }}/sdkconfig.ci.${{ matrix.skip_config }}* + - name: Build ${{ matrix.example }} with IDF-${{ matrix.idf_ver }} env: - IDF_TARGET: ${{ matrix.idf_target }} + EXPECTED_WARNING: ${{ matrix.warning }} shell: bash run: | . ${IDF_PATH}/export.sh - cat sdkconfig.ci.usb >> sdkconfig.defaults - idf.py build + python -m pip install idf-build-apps + cd $GITHUB_WORKSPACE/protocols + python ./ci/build_apps.py components/esp_modem/examples/${{ matrix.example }} build_mdns: strategy: diff --git a/ci/build_apps.py b/ci/build_apps.py new file mode 100644 index 000000000..a6e577977 --- /dev/null +++ b/ci/build_apps.py @@ -0,0 +1,60 @@ +# SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD +# SPDX-License-Identifier: Apache-2.0 +""" +This file is used in CI for esp-protocols build tests +""" + +import argparse +import os +import sys +from pathlib import Path + +from idf_build_apps import build_apps, find_apps, setup_logging +from idf_build_apps.constants import SUPPORTED_TARGETS + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description='Build all projects', + formatter_class=argparse.ArgumentDefaultsHelpFormatter, + ) + parser.add_argument('paths', nargs='+', help='Paths to the apps to build.') + parser.add_argument( + '-t', + '--target', + default='all', + help='Build apps for given target', + ) + args = parser.parse_args() + + IDF_PATH = os.environ['IDF_PATH'] + + print(args.paths) + setup_logging(2) + apps = find_apps( + args.paths, + recursive=True, + target=args.target, + build_dir='build_@t_@w', + config_rules_str=[ + 'sdkconfig.ci=default', 'sdkconfig.ci.*=', '=default' + ], + build_log_path='build_log.txt', + size_json_path='size.json', + check_warnings=True, + preserve=True, + manifest_files=[ + str(p) for p in Path('.').glob('**/.build-test-rules.yml') + ], + default_build_targets=SUPPORTED_TARGETS, + manifest_rootpath='.', + ) + + for app in apps: + print(app) + + sys.exit( + build_apps(apps, + dry_run=False, + keep_going=False, + ignore_warning_strs=os.environ['EXPECTED_WARNING'] + if 'EXPECTED_WARNING' in os.environ else None)) diff --git a/components/esp_modem/examples/.build-test-rules.yml b/components/esp_modem/examples/.build-test-rules.yml new file mode 100644 index 000000000..a757003a2 --- /dev/null +++ b/components/esp_modem/examples/.build-test-rules.yml @@ -0,0 +1,7 @@ +components/esp_modem/examples/ap_to_pppos: + disable: + - if: IDF_TARGET in ["esp32h2"] + +components/esp_modem/examples/modem_console: + disable: + - if: IDF_TARGET in ["esp32h2"] diff --git a/components/esp_modem/examples/ap_to_pppos/main/CMakeLists.txt b/components/esp_modem/examples/ap_to_pppos/main/CMakeLists.txt index ae3dbac78..6b3386eb5 100644 --- a/components/esp_modem/examples/ap_to_pppos/main/CMakeLists.txt +++ b/components/esp_modem/examples/ap_to_pppos/main/CMakeLists.txt @@ -7,4 +7,6 @@ endif() idf_component_register(SRCS "ap_to_pppos.c" ${NETWORK_DCE} INCLUDE_DIRS ".") -target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-format") + +# Ignore strict prototypes, as the network_dce.h can used in both C and C++ compilation +target_compile_options(${COMPONENT_LIB} PRIVATE "-Wno-strict-prototypes") diff --git a/components/esp_modem/examples/ap_to_pppos/main/ap_to_pppos.c b/components/esp_modem/examples/ap_to_pppos/main/ap_to_pppos.c index c0547a7e7..22ea76311 100644 --- a/components/esp_modem/examples/ap_to_pppos/main/ap_to_pppos.c +++ b/components/esp_modem/examples/ap_to_pppos/main/ap_to_pppos.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Unlicense OR CC0-1.0 */ @@ -38,7 +38,7 @@ static const int DISCONNECT_BIT = BIT1; static void on_ip_event(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) { - ESP_LOGD(TAG, "IP event! %d", event_id); + ESP_LOGD(TAG, "IP event! %" PRId32, event_id); if (event_id == IP_EVENT_PPP_GOT_IP) { esp_netif_dns_info_t dns_info; ip_event_got_ip_t *event = (ip_event_got_ip_t *)event_data; diff --git a/components/esp_modem/examples/modem_console/sdkconfig.ci.usb b/components/esp_modem/examples/modem_console/sdkconfig.ci.usb_s2 similarity index 55% rename from components/esp_modem/examples/modem_console/sdkconfig.ci.usb rename to components/esp_modem/examples/modem_console/sdkconfig.ci.usb_s2 index ae535ca26..6166fa34d 100644 --- a/components/esp_modem/examples/modem_console/sdkconfig.ci.usb +++ b/components/esp_modem/examples/modem_console/sdkconfig.ci.usb_s2 @@ -1 +1,2 @@ +CONFIG_IDF_TARGET="esp32s2" CONFIG_EXAMPLE_SERIAL_CONFIG_USB=y diff --git a/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb b/components/esp_modem/examples/modem_console/sdkconfig.ci.usb_s3 similarity index 55% rename from components/esp_modem/examples/pppos_client/sdkconfig.ci.usb rename to components/esp_modem/examples/modem_console/sdkconfig.ci.usb_s3 index ae535ca26..f000b0370 100644 --- a/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb +++ b/components/esp_modem/examples/modem_console/sdkconfig.ci.usb_s3 @@ -1 +1,2 @@ +CONFIG_IDF_TARGET="esp32s3" CONFIG_EXAMPLE_SERIAL_CONFIG_USB=y diff --git a/components/esp_modem/examples/pppos_client/sdkconfig.ci.sim800 b/components/esp_modem/examples/pppos_client/sdkconfig.ci.sim800 index e06bbd229..c82ef823f 100644 --- a/components/esp_modem/examples/pppos_client/sdkconfig.ci.sim800 +++ b/components/esp_modem/examples/pppos_client/sdkconfig.ci.sim800 @@ -1,3 +1,4 @@ +CONFIG_IDF_TARGET="esp32c3" # Override some defaults to enable PPP CONFIG_LWIP_PPP_SUPPORT=y CONFIG_LWIP_PPP_NOTIFY_PHASE_SUPPORT=y diff --git a/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_s2 b/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_s2 new file mode 100644 index 000000000..6166fa34d --- /dev/null +++ b/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_s2 @@ -0,0 +1,2 @@ +CONFIG_IDF_TARGET="esp32s2" +CONFIG_EXAMPLE_SERIAL_CONFIG_USB=y diff --git a/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_s3 b/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_s3 new file mode 100644 index 000000000..f000b0370 --- /dev/null +++ b/components/esp_modem/examples/pppos_client/sdkconfig.ci.usb_s3 @@ -0,0 +1,2 @@ +CONFIG_IDF_TARGET="esp32s3" +CONFIG_EXAMPLE_SERIAL_CONFIG_USB=y